mirror of https://github.com/status-im/EIPs.git
Use 32-byte words
This commit is contained in:
parent
881f577abb
commit
734d68b643
|
@ -86,9 +86,9 @@ Implementation note, there are several logical ways to implement this function.
|
||||||
|
|
||||||
### How to Detect if a Contract Implements ERC-165
|
### How to Detect if a Contract Implements ERC-165
|
||||||
|
|
||||||
1. The source contact makes a `STATICCALL` to the destination address with input data: `0x01ffc9a701ffc9a7` and gas 30,000. This corresponds to `contract.supportsInterface("0x01ffc9a7")`.
|
1. The source contact makes a `STATICCALL` to the destination address with input data: `0x01ffc9a700000000000000000000000001ffc9a7` and gas 30,000. This corresponds to `contract.supportsInterface("0x01ffc9a7")`.
|
||||||
2. If the call fails or return false, the destination contract does not implement ERC-165.
|
2. If the call fails or return false, the destination contract does not implement ERC-165.
|
||||||
3. If the call returns true, a second call is made with input data `0x01ffc9a7ffffffff`.
|
3. If the call returns true, a second call is made with input data `0x01ffc9a7000000000000000000000000ffffffff`.
|
||||||
4. If the second call fails or returns true, the destination contract does not implement ERC-165.
|
4. If the second call fails or returns true, the destination contract does not implement ERC-165.
|
||||||
5. Otherwise it implements ERC-165.
|
5. Otherwise it implements ERC-165.
|
||||||
|
|
||||||
|
@ -171,7 +171,7 @@ contract ERC165Cache {
|
||||||
30000, // 30k gas
|
30000, // 30k gas
|
||||||
_contract, // To addr
|
_contract, // To addr
|
||||||
x, // Inputs are stored at location x
|
x, // Inputs are stored at location x
|
||||||
0x8, // Inputs are 8 bytes long
|
0x20, // Inputs are 8 byes long
|
||||||
x, // Store output over input (saves space)
|
x, // Store output over input (saves space)
|
||||||
0x20) // Outputs are 32 bytes long
|
0x20) // Outputs are 32 bytes long
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue