0 txs
5.9k calls
constructor
constructor()
functions
absoluteThreshold
viewfunction absoluteThreshold() view returns (uint16)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
oracle
viewfunction oracle() view returns (address)
QUORUM_MANAGER_ROLE
viewfunction QUORUM_MANAGER_ROLE() view returns (bytes32)
recordHashByBlockAndSender
viewfunction recordHashByBlockAndSender(uint64 blockNumber, address sender) view returns (bytes32)
recordHashCountByBlock
viewfunction recordHashCountByBlock(uint64 block, bytes32 recordHash) view returns (uint256)
relativeThresholdBasisPoints
viewfunction relativeThresholdBasisPoints() view returns (uint16)
REPORTER_MODIFIER_ROLE
viewfunction REPORTER_MODIFIER_ROLE() view returns (bytes32)
reporterRecordHashesByBlock
viewfunction reporterRecordHashesByBlock(uint64 block, address reporter) view returns (bytes32 recordHash)
SERVICE_ORACLE_REPORTER
viewfunction SERVICE_ORACLE_REPORTER() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
targetReportWindowBlocks
viewfunction targetReportWindowBlocks() view returns (uint64)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(tuple init)
receiveRecord
nonpayablefunction receiveRecord(tuple record)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setQuorumThresholds
nonpayablefunction setQuorumThresholds(uint16 absoluteThreshold_, uint16 relativeThresholdBasisPoints_)
setTargetReportWindowBlocks
nonpayablefunction setTargetReportWindowBlocks(uint64 newTargetReportWindowBlocks)
events
Initialized
event Initialized(uint8 version)
OracleRecordReceivedError
event OracleRecordReceivedError(bytes reason)
ProtocolConfigChanged
event ProtocolConfigChanged(bytes4 indexed setterSelector, string setterSignature, bytes value)
ReportQuorumReached
event ReportQuorumReached(uint64 indexed block)
ReportReceived
event ReportReceived(uint64 indexed block, address indexed reporter, bytes32 indexed recordHash, (uint64 updateStartBlock, uint64 updateEndBlock, uint64 currentNumValidatorsNotWithdrawable, uint64 cumulativeNumValidatorsWithdrawable, uint128 windowWithdrawnPrincipalAmount, uint128 windowWithdrawnRewardAmount, uint128 currentTotalValidatorBalance, uint128 cumulativeProcessedDepositAmount) record)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
errors
AlreadyReporter
error AlreadyReporter()
InvalidReporter
error InvalidReporter()
RelativeThresholdExceedsOne
error RelativeThresholdExceedsOne()
creation bytecode
0x608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6123ac80620000ed6000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80639010d07c116100e3578063ca15c8731161008c578063d547741f11610066578063d547741f1461047b578063f2f3a74c1461048e578063f8a60cf9146104a857600080fd5b8063ca15c87314610412578063cca1532d14610425578063cfde05461461044c57600080fd5b8063a217fddf116100bd578063a217fddf146103d0578063ab980d94146103d8578063c6b861b9146103ff57600080fd5b80639010d07c1461032857806391d148541461033b5780639c067b3a1461038157600080fd5b80632f2ff15d1161014557806350148afa1161011f57806350148afa146102a3578063574e4a5a146102b65780637dc0d1d0146102e357600080fd5b80632f2ff15d14610268578063318e8d9d1461027d57806336568abe1461029057600080fd5b806312758f481161017657806312758f48146101f35780631e8d53621461021a578063248a9ca31461024557600080fd5b806301ffc9a7146101925780630abc7d01146101ba575b600080fd5b6101a56101a0366004611a9f565b6104bb565b60405190151581526020015b60405180910390f35b6101e56101c8366004611b07565b60cb60209081526000928352604080842090915290825290205481565b6040519081526020016101b1565b6101e57fbacb44b817b3c26b3f0ebf2047441abbd1fb7d1925f6bcd8181c28334b10d23181565b6101e5610228366004611b55565b60ca60209081526000928352604080842090915290825290205481565b6101e5610253366004611b8e565b60009081526065602052604090206001015490565b61027b610276366004611ba7565b610517565b005b61027b61028b366004611c7e565b610541565b61027b61029e366004611ba7565b610875565b61027b6102b1366004611da4565b610924565b60cc546102ca9067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101b1565b60c9546103039073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b1565b610303610336366004611dc1565b610a1a565b6101a5610349366004611ba7565b600091825260656020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101e561038f366004611b55565b67ffffffffffffffff8216600090815260ca6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205492915050565b6101e5600081565b6101e57f108f016deb2b2623375e344cf6aedfd098de0555db0c5f551a41c28df1651d0381565b61027b61040d366004611de3565b610a39565b6101e5610420366004611b8e565b610bf7565b6101e57faa35fce2ef9ee0b84f290ae7382aca4092f6602051fe2a490784e88a82fe879d81565b60cc54610468906a0100000000000000000000900461ffff1681565b60405161ffff90911681526020016101b1565b61027b610489366004611ba7565b610c0e565b60cc546104689068010000000000000000900461ffff1681565b61027b6104b6366004611e0e565b610c33565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f000000000000000000000000000000000000000000000000000000001480610511575061051182610d90565b92915050565b60008281526065602052604090206001015461053281610e27565b61053c8383610e34565b505050565b600054610100900460ff16158080156105615750600054600160ff909116105b8061057b5750303b15801561057b575060005460ff166001145b61060c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561066a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610672610e56565b815161068090600090610e34565b6106ae7faa35fce2ef9ee0b84f290ae7382aca4092f6602051fe2a490784e88a82fe879d8360200151610e34565b6106f87fbacb44b817b3c26b3f0ebf2047441abbd1fb7d1925f6bcd8181c28334b10d2317faa35fce2ef9ee0b84f290ae7382aca4092f6602051fe2a490784e88a82fe879d610eef565b6107267f108f016deb2b2623375e344cf6aedfd098de0555db0c5f551a41c28df1651d038360400151610e34565b608082015160c980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905560608201515160005b818110156107d9576107c77fbacb44b817b3c26b3f0ebf2047441abbd1fb7d1925f6bcd8181c28334b10d231856060015183815181106107ba576107ba611e41565b6020026020010151610e34565b806107d181611e9f565b915050610778565b505060cc80547fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001668010000000000000960179055801561087157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff8116331461091a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610603565b6108718282610f3a565b7f108f016deb2b2623375e344cf6aedfd098de0555db0c5f551a41c28df1651d0361094e81610e27565b60cc80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff84169081179091556040805160208101929092527f50148afa00000000000000000000000000000000000000000000000000000000917f01d854e8dde9402801a4c6f2840193465752abfad61e0bb7c4258d526ae42e749101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610a0e91611f45565b60405180910390a25050565b6000828152609760205260408120610a329083610f5c565b9392505050565b7fbacb44b817b3c26b3f0ebf2047441abbd1fb7d1925f6bcd8181c28334b10d231610a6381610e27565b6000610a6f3384610f68565b9050610a8a610a846040850160208601611da4565b82611182565b610a9357505050565b610ab5610aa66040850160208601611da4565b67ffffffffffffffff16611228565b15610abf57505050565b610acf6040840160208501611da4565b67ffffffffffffffff167f3bd410bdb5ac41c329fac3039d57b4c75b4cc6c7f1695372640ddbfb24bdfc1a60405160405180910390a260c9546040517fc6b861b900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063c6b861b990610b5b908690600401611fdb565b600060405180830381600087803b158015610b7557600080fd5b505af1925050508015610b86575060015b61053c573d808015610bb4576040519150601f19603f3d011682016040523d82523d6000602084013e610bb9565b606091505b507fd51bed471c9d34c6a4a447b0e7ed674f2e83bc580b81138a01281d050932d7ff81604051610be991906120d2565b60405180910390a150505050565b600081815260976020526040812061051190611413565b600082815260656020526040902060010154610c2981610e27565b61053c8383610f3a565b7f108f016deb2b2623375e344cf6aedfd098de0555db0c5f551a41c28df1651d03610c5d81610e27565b61271061ffff83161115610c9d576040517fd95e41c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805161ffff85811660208301528416818301528151808203830181526060909101918290527ff8a60cf900000000000000000000000000000000000000000000000000000000917f01d854e8dde9402801a4c6f2840193465752abfad61e0bb7c4258d526ae42e7491610d11916120e5565b60405180910390a25060cc80547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff166801000000000000000061ffff948516027fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff16176a01000000000000000000009290931691909102919091179055565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061051157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610511565b610e31813361141d565b50565b610e3e82826114d7565b600082815260976020526040902061053c90826115cb565b600054610100900460ff16610eed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610603565b565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b610f4482826115ed565b600082815260976020526040902061053c90826116a8565b6000610a3283836116ca565b60008082604051602001610f7c9190611fdb565b604051602081830303815290604052805190602001209050808473ffffffffffffffffffffffffffffffffffffffff16846020016020810190610fbf9190611da4565b67ffffffffffffffff167f126c7b81dc1af0747cc236a7f7916c56e921b44c0b17d5a529e53e472f2bdec286604051610ff89190611fdb565b60405180910390a4600060ca816110156040870160208801611da4565b67ffffffffffffffff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff89168252909252902054905080820361106457509050610511565b80156110c857600160cb60006110806040880160208901611da4565b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060008282546110c29190612152565b90915550505b600160cb60006110de6040880160208901611da4565b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060008282546111209190612165565b9091555082905060ca600061113b6040880160208901611da4565b67ffffffffffffffff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff8a16825290925290205550905092915050565b67ffffffffffffffff8216600090815260cb60209081526040808320848452909152812054816111d17fbacb44b817b3c26b3f0ebf2047441abbd1fb7d1925f6bcd8181c28334b10d231610bf7565b60cc5490915068010000000000000000900461ffff16821080159061121f575060cc54611210906a0100000000000000000000900461ffff1682612178565b61121c61271084612178565b10155b95945050505050565b60008160c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f3a009a06040518163ffffffff1660e01b815260040161010060405180830381865afa158015611299573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bd91906121a5565b6020015167ffffffffffffffff16101580610511575060c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aa5180e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611340573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611364919061226f565b8015610511575060c954604080517ea4dcac0000000000000000000000000000000000000000000000000000000081529051849273ffffffffffffffffffffffffffffffffffffffff169162a4dcac916004808301926101009291908290030181865afa1580156113d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fd91906121a5565b6020015167ffffffffffffffff16101592915050565b6000610511825490565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166108715761145d816116f4565b611468836020611713565b604051602001611479929190612291565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610603916004016120d2565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661087157600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561156d3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610a328373ffffffffffffffffffffffffffffffffffffffff8416611956565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff161561087157600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610a328373ffffffffffffffffffffffffffffffffffffffff84166119a5565b60008260000182815481106116e1576116e1611e41565b9060005260206000200154905092915050565b606061051173ffffffffffffffffffffffffffffffffffffffff831660145b60606000611722836002612178565b61172d906002612165565b67ffffffffffffffff81111561174557611745611bcc565b6040519080825280601f01601f19166020018201604052801561176f576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106117a6576117a6611e41565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061180957611809611e41565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000611845846002612178565b611850906001612165565b90505b60018111156118ed577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061189157611891611e41565b1a60f81b8282815181106118a7576118a7611e41565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936118e681612312565b9050611853565b508315610a32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610603565b600081815260018301602052604081205461199d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610511565b506000610511565b60008181526001830160205260408120548015611a8e5760006119c9600183612152565b85549091506000906119dd90600190612152565b9050818114611a425760008660000182815481106119fd576119fd611e41565b9060005260206000200154905080876000018481548110611a2057611a20611e41565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611a5357611a53612347565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610511565b6000915050610511565b5092915050565b600060208284031215611ab157600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610a3257600080fd5b67ffffffffffffffff81168114610e3157600080fd5b8035611b0281611ae1565b919050565b60008060408385031215611b1a57600080fd5b8235611b2581611ae1565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610e3157600080fd5b60008060408385031215611b6857600080fd5b8235611b7381611ae1565b91506020830135611b8381611b33565b809150509250929050565b600060208284031215611ba057600080fd5b5035919050565b60008060408385031215611bba57600080fd5b823591506020830135611b8381611b33565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715611c1e57611c1e611bcc565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c6b57611c6b611bcc565b604052919050565b8035611b0281611b33565b60006020808385031215611c9157600080fd5b823567ffffffffffffffff80821115611ca957600080fd5b9084019060a08287031215611cbd57600080fd5b611cc5611bfb565b8235611cd081611b33565b815282840135611cdf81611b33565b818501526040830135611cf181611b33565b6040820152606083013582811115611d0857600080fd5b8301601f81018813611d1957600080fd5b803583811115611d2b57611d2b611bcc565b8060051b9350611d3c868501611c24565b818152938201860193868101908a861115611d5657600080fd5b928701925b85841015611d805783359250611d7083611b33565b8282529287019290870190611d5b565b606085015250611d9591505060808401611c73565b60808201529695505050505050565b600060208284031215611db657600080fd5b8135610a3281611ae1565b60008060408385031215611dd457600080fd5b50508035926020909101359150565b60006101008284031215611df657600080fd5b50919050565b803561ffff81168114611b0257600080fd5b60008060408385031215611e2157600080fd5b611e2a83611dfc565b9150611e3860208401611dfc565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611ed057611ed0611e70565b5060010190565b60005b83811015611ef2578181015183820152602001611eda565b50506000910152565b60008151808452611f13816020860160208601611ed7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60408152602360408201527f7365745461726765745265706f727457696e646f77426c6f636b732875696e7460608201527f3634290000000000000000000000000000000000000000000000000000000000608082015260a060208201526000610a3260a0830184611efb565b6fffffffffffffffffffffffffffffffff81168114610e3157600080fd5b8035611b0281611fb2565b61010081018235611feb81611ae1565b67ffffffffffffffff908116835260208401359061200882611ae1565b908116602084015260408401359061201f82611ae1565b16604083015261203160608401611af7565b67ffffffffffffffff16606083015261204c60808401611fd0565b6fffffffffffffffffffffffffffffffff16608083015261206f60a08401611fd0565b6fffffffffffffffffffffffffffffffff1660a083015261209260c08401611fd0565b6fffffffffffffffffffffffffffffffff1660c08301526120b560e08401611fd0565b6fffffffffffffffffffffffffffffffff811660e0840152611a98565b602081526000610a326020830184611efb565b60408152602260408201527f73657451756f72756d5468726573686f6c64732875696e7431362c75696e743160608201527f3629000000000000000000000000000000000000000000000000000000000000608082015260a060208201526000610a3260a0830184611efb565b8181038181111561051157610511611e70565b8082018082111561051157610511611e70565b808202811582820484141761051157610511611e70565b8051611b0281611ae1565b8051611b0281611fb2565b60006101008083850312156121b957600080fd5b6040519081019067ffffffffffffffff821181831017156121dc576121dc611bcc565b81604052835191506121ed82611ae1565b8181526121fc6020850161218f565b602082015261220d6040850161218f565b604082015261221e6060850161218f565b606082015261222f6080850161219a565b608082015261224060a0850161219a565b60a082015261225160c0850161219a565b60c082015261226260e0850161219a565b60e0820152949350505050565b60006020828403121561228157600080fd5b81518015158114610a3257600080fd5b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516122c9816017850160208801611ed7565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612306816028840160208801611ed7565b01602801949350505050565b60008161232157612321611e70565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220e567fa8501dc419c7fd5430019f57add9785605652016c3562deca8307d6af3664736f6c63430008140033