This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function findSelectors(bytecode) { | |
// We look for: | |
// * PUSH4 (0x63) | |
// * 8 bytes (the selector itself) | |
// * 2 optional bytes (a possible DUP, this is inserted when optimizations are enabled) | |
// * EQ (0x14) | |
// * One of: | |
// - PUSH1 (0x60) + 2 bytes (the jump destination) | |
// - PUSH2 (0x61) + 4 bytes (the jump destination) | |
// * JUMPI (0x57) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pragma solidity ^0.6.0; | |
import "./IAccessControl.sol"; | |
import "../utils/EnumerableSet.sol"; | |
abstract contract AccessControl is IAccessControl { | |
using EnumerableSet for EnumerableSet.AddressSet; | |
struct Role { | |
EnumerableSet.AddressSet members; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
### Keybase proof | |
I hereby claim: | |
* I am nventuro on github. | |
* I am nventuro (https://keybase.io/nventuro) on keybase. | |
* I have a public key ASClzIFtw6qKY5IUkHFMgNU1sSSHllBAD-9SfBjqZld8awo | |
To claim this, I am signing this object: |