Add throttle interface
This commit is contained in:
parent
db35d389ec
commit
b1c03932ad
30
README.md
30
README.md
@ -654,6 +654,36 @@ Use cases of sealing include:
|
||||
|
||||
<https://git.grassecon.net/cicnet/erc20-demurrage-token.git>
|
||||
|
||||
### Throttle
|
||||
|
||||
An backend contract to limit access to a resource by time.
|
||||
|
||||
The smart contract managing the resource calls ‘have(address)‘ on this
|
||||
contract to check if it can be made use of at the current point in time.
|
||||
This also implements [ACL](#acl).
|
||||
|
||||
When the resource is made use of, it calls ‘poke(address)‘ method to
|
||||
register when it has been made use of.
|
||||
|
||||
#### ERC165 Interface identifier
|
||||
|
||||
8f5bc7bf
|
||||
|
||||
#### Solidity interface definition
|
||||
|
||||
interface IThrottle {
|
||||
// Returns true if the given address is authorized to make use of the resource at the current moment.
|
||||
// Implements ACL
|
||||
function have(address _address) external view returns(bool);
|
||||
|
||||
// Must be called when the resource is being used.
|
||||
function poke(address _address) external returns(bool);
|
||||
}
|
||||
|
||||
#### Reference implementation
|
||||
|
||||
<git://holbrook.no/eth-faucet.git> (PeriodSimple contract)
|
||||
|
||||
### TokenLimit
|
||||
|
||||
Define limits of value amounts of tokens that individual addresses can
|
||||
|
@ -1,3 +1,4 @@
|
||||
@anchor{acl}
|
||||
@subsection ACL
|
||||
|
||||
A simple Access Control List definition that returns true of false depending on whether an signatory (address) is allowed to operate in a given context.
|
||||
|
@ -76,6 +76,8 @@ The following well-known solidity interfaces are partially implemented in CIC na
|
||||
|
||||
@include seal.sol.texi
|
||||
|
||||
@include throttle.sol.texi
|
||||
|
||||
@include tokenlimit.sol.texi
|
||||
|
||||
@include tokenquote.sol.texi
|
||||
|
20
doc/texinfo/throttle.sol.texi
Normal file
20
doc/texinfo/throttle.sol.texi
Normal file
@ -0,0 +1,20 @@
|
||||
@subsection Throttle
|
||||
|
||||
An backend contract to limit access to a resource by time.
|
||||
|
||||
The smart contract managing the resource calls `have(address)` on this contract to check if it can be made use of at the current point in time. This also implements @ref{acl, ACL}.
|
||||
|
||||
When the resource is made use of, it calls `poke(address)` method to register when it has been made use of.
|
||||
|
||||
|
||||
@subsubsection ERC165 Interface identifier
|
||||
|
||||
@include ../../build/Throttle.interface
|
||||
|
||||
@subsubsection Solidity interface definition
|
||||
|
||||
@include ../../build/contract_Throttle.texi
|
||||
|
||||
@subsubsection Reference implementation
|
||||
|
||||
@uref{git://holbrook.no/eth-faucet.git,} (PeriodSimple contract)
|
@ -654,6 +654,36 @@ Use cases of sealing include:
|
||||
|
||||
<https://git.grassecon.net/cicnet/erc20-demurrage-token.git>
|
||||
|
||||
### Throttle
|
||||
|
||||
An backend contract to limit access to a resource by time.
|
||||
|
||||
The smart contract managing the resource calls ‘have(address)‘ on this
|
||||
contract to check if it can be made use of at the current point in time.
|
||||
This also implements [ACL](#acl).
|
||||
|
||||
When the resource is made use of, it calls ‘poke(address)‘ method to
|
||||
register when it has been made use of.
|
||||
|
||||
#### ERC165 Interface identifier
|
||||
|
||||
8f5bc7bf
|
||||
|
||||
#### Solidity interface definition
|
||||
|
||||
interface IThrottle {
|
||||
// Returns true if the given address is authorized to make use of the resource at the current moment.
|
||||
// Implements ACL
|
||||
function have(address _address) external view returns(bool);
|
||||
|
||||
// Must be called when the resource is being used.
|
||||
function poke(address _address) external returns(bool);
|
||||
}
|
||||
|
||||
#### Reference implementation
|
||||
|
||||
<git://holbrook.no/eth-faucet.git> (PeriodSimple contract)
|
||||
|
||||
### TokenLimit
|
||||
|
||||
Define limits of value amounts of tokens that individual addresses can
|
||||
|
14
solidity/Throttle.sol
Normal file
14
solidity/Throttle.sol
Normal file
@ -0,0 +1,14 @@
|
||||
pragma solidity >=0.6.12;
|
||||
|
||||
// Author: Louis Holbrook <dev@holbrook.no> 0826EDA1702D1E87C6E2875121D2E7BB88C2A746
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
// File-version: 1
|
||||
|
||||
interface IThrottle {
|
||||
// Returns true if the given address is authorized to make use of the resource at the current moment.
|
||||
// Implements ACL
|
||||
function have(address _address) external view returns(bool);
|
||||
|
||||
// Must be called when the resource is being used.
|
||||
function poke(address _address) external returns(bool);
|
||||
}
|
Loading…
Reference in New Issue
Block a user