Add abi signature encoding list

This commit is contained in:
lash 2023-10-29 10:52:11 +00:00
parent b1c03932ad
commit 2836b314f7
Signed by: lash
GPG Key ID: 21D2E7BB88C2A746
5 changed files with 70 additions and 8 deletions

View File

@ -658,16 +658,20 @@ Use cases of sealing include:
An backend contract to limit access to a resource by time. An backend contract to limit access to a resource by time.
The smart contract managing the resource calls have(address) on this 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. contract to check if it can be made use of at the current point in time.
This also implements [ACL](#acl). This also implements [ACL](#acl).
When the resource is made use of, it calls poke(address) method to When the resource is made use of, it calls `poke(address)` method to
register when it has been made use of. register when it has been made use of.
The `next(address)` method returns the timestamp from which the resource
may be used again by the given address. The implementer is permitted to
change the value at any time.
#### ERC165 Interface identifier #### ERC165 Interface identifier
8f5bc7bf 242824a9
#### Solidity interface definition #### Solidity interface definition
@ -676,6 +680,11 @@ register when it has been made use of.
// Implements ACL // Implements ACL
function have(address _address) external view returns(bool); function have(address _address) external view returns(bool);
// Returns the timestamp when the resource may next be used by the given address.
// A return value of 0 or a timestamp before the current timestamp indicates that the resource may used momentarily.
// A return value of max uint265 can be used to indicate that the resource may never be used again by the address.
function next(address _address) external returns(bool);
// Must be called when the resource is being used. // Must be called when the resource is being used.
function poke(address _address) external returns(bool); function poke(address _address) external returns(bool);
} }

View File

@ -2,9 +2,11 @@
An backend contract to limit access to a resource by time. 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}. The smart contract managing the resource calls @code{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. When the resource is made use of, it calls @code{poke(address)} method to register when it has been made use of.
The @code{next(address)} method returns the timestamp from which the resource may be used again by the given address. The implementer is permitted to change the value at any time.
@subsubsection ERC165 Interface identifier @subsubsection ERC165 Interface identifier

View File

@ -658,16 +658,20 @@ Use cases of sealing include:
An backend contract to limit access to a resource by time. An backend contract to limit access to a resource by time.
The smart contract managing the resource calls have(address) on this 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. contract to check if it can be made use of at the current point in time.
This also implements [ACL](#acl). This also implements [ACL](#acl).
When the resource is made use of, it calls poke(address) method to When the resource is made use of, it calls `poke(address)` method to
register when it has been made use of. register when it has been made use of.
The `next(address)` method returns the timestamp from which the resource
may be used again by the given address. The implementer is permitted to
change the value at any time.
#### ERC165 Interface identifier #### ERC165 Interface identifier
8f5bc7bf 242824a9
#### Solidity interface definition #### Solidity interface definition
@ -676,6 +680,11 @@ register when it has been made use of.
// Implements ACL // Implements ACL
function have(address _address) external view returns(bool); function have(address _address) external view returns(bool);
// Returns the timestamp when the resource may next be used by the given address.
// A return value of 0 or a timestamp before the current timestamp indicates that the resource may used momentarily.
// A return value of max uint265 can be used to indicate that the resource may never be used again by the address.
function next(address _address) external returns(bool);
// Must be called when the resource is being used. // Must be called when the resource is being used.
function poke(address _address) external returns(bool); function poke(address _address) external returns(bool);
} }

37
scripts/abilist.py Normal file
View File

@ -0,0 +1,37 @@
# standard imports
import json
import sys
# external imports
import sha3
f = open(sys.argv[1], 'r')
o = json.load(f)
f.close()
ks = []
r = {}
for v in o:
if v['type'] != "function":
continue
name = ''
try:
name = v['name']
except KeyError:
continue
args = []
for vv in v['inputs']:
args.append(vv['type'])
sig = '{}({})'.format(name, ','.join(args))
h = sha3.keccak_256()
h.update(sig.encode('utf-8'))
z = h.digest()
k = z[:4].hex()
#ks.append(k)
r[k] = sig
ks = list(r.keys())
ks.sort()
for k in ks:
print("{}\t{}".format(k, r[k]))

View File

@ -9,6 +9,11 @@ interface IThrottle {
// Implements ACL // Implements ACL
function have(address _address) external view returns(bool); function have(address _address) external view returns(bool);
// Returns the timestamp when the resource may next be used by the given address.
// A return value of 0 or a timestamp before the current timestamp indicates that the resource may used momentarily.
// A return value of max uint265 can be used to indicate that the resource may never be used again by the address.
function next(address _address) external returns(bool);
// Must be called when the resource is being used. // Must be called when the resource is being used.
function poke(address _address) external returns(bool); function poke(address _address) external returns(bool);
} }