fluid-contracts-public/deployments/mainnet/MerkleDistributor.json

938 lines
116 KiB
JSON
Raw Normal View History

{
"address": "0x1d3D6d38Da24E9Ff3B17693f6971CAe62c3AA1DE",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "owner_",
"type": "address"
},
{
"internalType": "address",
"name": "proposer_",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "InvalidCycle",
"type": "error"
},
{
"inputs": [],
"name": "InvalidParams",
"type": "error"
},
{
"inputs": [],
"name": "InvalidProof",
"type": "error"
},
{
"inputs": [],
"name": "NothingToClaim",
"type": "error"
},
{
"inputs": [],
"name": "Unauthorized",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "cycle",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "fToken",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "LogClaimed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "cycle",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "root",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "contentHash",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "LogRootProposed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "cycle",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "root",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "contentHash",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "LogRootUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "proposer",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "isProposer",
"type": "bool"
}
],
"name": "LogUpdateProposer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Unpaused",
"type": "event"
},
{
"inputs": [],
"name": "TOKEN",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "root_",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "contentHash_",
"type": "bytes32"
},
{
"internalType": "uint40",
"name": "cycle_",
"type": "uint40"
},
{
"internalType": "uint40",
"name": "startBlock_",
"type": "uint40"
},
{
"internalType": "uint40",
"name": "endBlock_",
"type": "uint40"
}
],
"name": "approveRoot",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient_",
"type": "address"
},
{
"internalType": "uint256",
"name": "cumulativeAmount_",
"type": "uint256"
},
{
"internalType": "address",
"name": "fToken_",
"type": "address"
},
{
"internalType": "uint256",
"name": "cycle_",
"type": "uint256"
},
{
"internalType": "bytes32[]",
"name": "merkleProof_",
"type": "bytes32[]"
}
],
"name": "claim",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "claimed",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "currentMerkleCycle",
"outputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "merkleRoot",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "merkleContentHash",
"type": "bytes32"
},
{
"internalType": "uint40",
"name": "cycle",
"type": "uint40"
},
{
"internalType": "uint40",
"name": "timestamp",
"type": "uint40"
},
{
"internalType": "uint40",
"name": "publishBlock",
"type": "uint40"
},
{
"internalType": "uint40",
"name": "startBlock",
"type": "uint40"
},
{
"internalType": "uint40",
"name": "endBlock",
"type": "uint40"
}
],
"internalType": "struct Structs.MerkleCycle",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient_",
"type": "address"
},
{
"internalType": "uint256",
"name": "cumulativeAmount_",
"type": "uint256"
},
{
"internalType": "address",
"name": "fToken_",
"type": "address"
},
{
"internalType": "uint256",
"name": "cycle_",
"type": "uint256"
}
],
"name": "encodeClaim",
"outputs": [
{
"internalType": "bytes",
"name": "encoded_",
"type": "bytes"
},
{
"internalType": "bytes32",
"name": "hash_",
"type": "bytes32"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "hasPendingRoot",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "proposer_",
"type": "address"
}
],
"name": "isProposer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "paused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pendingMerkleCycle",
"outputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "merkleRoot",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "merkleContentHash",
"type": "bytes32"
},
{
"internalType": "uint40",
"name": "cycle",
"type": "uint40"
},
{
"internalType": "uint40",
"name": "timestamp",
"type": "uint40"
},
{
"internalType": "uint40",
"name": "publishBlock",
"type": "uint40"
},
{
"internalType": "uint40",
"name": "startBlock",
"type": "uint40"
},
{
"internalType": "uint40",
"name": "endBlock",
"type": "uint40"
}
],
"internalType": "struct Structs.MerkleCycle",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "previousMerkleRoot",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "root_",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "contentHash_",
"type": "bytes32"
},
{
"internalType": "uint40",
"name": "cycle_",
"type": "uint40"
},
{
"internalType": "uint40",
"name": "startBlock_",
"type": "uint40"
},
{
"internalType": "uint40",
"name": "endBlock_",
"type": "uint40"
}
],
"name": "proposeRoot",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "targets_",
"type": "address[]"
},
{
"internalType": "bytes[]",
"name": "calldatas_",
"type": "bytes[]"
}
],
"name": "spell",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "unpause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "proposer_",
"type": "address"
},
{
"internalType": "bool",
"name": "isProposer_",
"type": "bool"
}
],
"name": "updateProposer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"transactionHash": "0x4e586454f43ecd05af2954882d71f2c412f393a98d0508ac0c135570deb370b5",
"receipt": {
"to": "0x4e59b44847b379578588920cA78FbF26c0B4956C",
"from": "0x0Ed35B1609Ec45c7079E80d11149a52717e4859A",
"contractAddress": null,
"transactionIndex": 186,
"gasUsed": "1861270",
"logsBloom": "0x00000000000000000000800000000000000000000000000000800000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000001002000000000000000000000000000000002020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000020000000800000000000100000000000000000000000000000400000000000000000",
"blockHash": "0xbd11be07630a7756044f64821465f29f2bde0ccdba898d9fc5f57ad96fe577fe",
"transactionHash": "0x4e586454f43ecd05af2954882d71f2c412f393a98d0508ac0c135570deb370b5",
"logs": [
{
"transactionIndex": 186,
"blockNumber": 19967148,
"transactionHash": "0x4e586454f43ecd05af2954882d71f2c412f393a98d0508ac0c135570deb370b5",
"address": "0x1d3D6d38Da24E9Ff3B17693f6971CAe62c3AA1DE",
"topics": [
"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
"0x0000000000000000000000000000000000000000000000000000000000000000",
"0x0000000000000000000000004f6f977acdd1177dcd81ab83074855ecb9c2d49e"
],
"data": "0x",
"logIndex": 397,
"blockHash": "0xbd11be07630a7756044f64821465f29f2bde0ccdba898d9fc5f57ad96fe577fe"
},
{
"transactionIndex": 186,
"blockNumber": 19967148,
"transactionHash": "0x4e586454f43ecd05af2954882d71f2c412f393a98d0508ac0c135570deb370b5",
"address": "0x1d3D6d38Da24E9Ff3B17693f6971CAe62c3AA1DE",
"topics": [
"0x780d738f356a91be5dfe8ffb87990c655a36b3430a233c71a209eb1e9a1a1a75"
],
"data": "0x0000000000000000000000003be5c671b20649dca5d916b5698328d54bdaaf880000000000000000000000000000000000000000000000000000000000000001",
"logIndex": 398,
"blockHash": "0xbd11be07630a7756044f64821465f29f2bde0ccdba898d9fc5f57ad96fe577fe"
}
],
"blockNumber": 19967148,
"cumulativeGasUsed": "18399901",
"status": 1,
"byzantium": true
},
"args": [
"0x4F6F977aCDD1177DCD81aB83074855EcB9C2D49e",
"0x3BE5C671b20649DCA5D916b5698328D54BdAAf88"
],
"numDeployments": 1,
"solcInputHash": "91ec4623211a499f3072c159cba643b0",
"metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidCycle\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidParams\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NothingToClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cycle\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"LogClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cycle\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"contentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"LogRootProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cycle\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"contentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"LogRootUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isProposer\",\"type\":\"bool\"}],\"name\":\"LogUpdateProposer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"TOKEN\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"root_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"contentHash_\",\"type\":\"bytes32\"},{\"internalType\":\"uint40\",\"name\":\"cycle_\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"startBlock_\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"endBlock_\",\"type\":\"uint40\"}],\"name\":\"approveRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cumulativeAmount_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"fToken_\",\
"bytecode": "0x60806040523480156200001157600080fd5b506040516200218d3803806200218d83398101604081905262000034916200015f565b600080546001600160a01b0319166001600160a01b038416908117825560405184928392917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506000805460ff60a01b19169055816001600160a01b038116620000b657604051635435b28960e11b815260040160405180910390fd5b816001600160a01b038116620000df57604051635435b28960e11b815260040160405180910390fd5b6001600160a01b038316600081815260016020818152604092839020805460ff19168317905582519384528301527f780d738f356a91be5dfe8ffb87990c655a36b3430a233c71a209eb1e9a1a1a75910160405180910390a15050505062000197565b80516001600160a01b03811681146200015a57600080fd5b919050565b600080604083850312156200017357600080fd5b6200017e8362000142565b91506200018e6020840162000142565b90509250929050565b611fe680620001a76000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806374ec29a0116100b25780638da5cb5b11610081578063c81eec6611610066578063c81eec6614610460578063caf3791e14610529578063f2fde38b1461053257600080fd5b80638da5cb5b1461042d5780639d01a27d1461044d57600080fd5b806374ec29a0146103bf57806382bc4aaf146103d257806382bfefc8146103e55780638456cb591461042557600080fd5b80632f37a774116101095780633f4ba83a116100ee5780633f4ba83a146103815780634617c06a146103895780635c975abb1461039c57600080fd5b80632f37a7741461035657806335c1dd991461036e57600080fd5b80630c9cbf0e1461013b57806312d18ed6146101795780632274c5cd1461018e57806329cec05e146102c0575b600080fd5b610166610149366004611987565b600960209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61018c6101873660046119ba565b610545565b005b6102576040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152506040805160e0810182526005548152600654602082015260075464ffffffffff80821693830193909352650100000000008104831660608301526a01000000000000000000008104831660808301526f010000000000000000000000000000008104831660a083015274010000000000000000000000000000000000000000900490911660c082015290565b6040516101709190600060e0820190508251825260208301516020830152604083015164ffffffffff80821660408501528060608601511660608501528060808601511660808501528060a08601511660a08501528060c08601511660c0850152505092915050565b6103486102ce366004611a63565b6040805173ffffffffffffffffffffffffffffffffffffffff938416602080830191909152959093168382015260608301919091526080808301939093528051808303909301835260a08201815282518385012060c0808401919091528151808403909101815260e0909201905280519201919091209091565b604051610170929190611b15565b61035e61080a565b6040519015158152602001610170565b61018c61037c366004611b4c565b610836565b61018c610b70565b61018c610397366004611b4c565b610bfb565b60005474010000000000000000000000000000000000000000900460ff1661035e565b61035e6103cd366004611ba3565b610e6c565b61018c6103e0366004611d67565b610ec0565b610400736f40d4a6237c257fff2db00fa0510deeecd303eb81565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610170565b61018c610fa1565b6000546104009073ffffffffffffffffffffffffffffffffffffffff1681565b61018c61045b366004611e38565b61102a565b6102576040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152506040805160e0810182526002548152600354602082015260045464ffffffffff80821693830193909352650100000000008104831660608301526a01000000000000000000008104831660808301526f010000000000000000000000000000008104831660a083015274010000000000000000000000000000000000000000900490911660c082015290565b61016660085481565b61018c610540366004611ba3565b611188565b61054d611279565b60045464ffffffffff168381148061057957506000811180156105795750610576600182611e9e565b84145b6105af576040517f9b8febfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8088166020830152891691810191909152606081018590526080810187905260009060a001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050610690848480806020026020016040
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101365760003560e01c806374ec29a0116100b25780638da5cb5b11610081578063c81eec6611610066578063c81eec6614610460578063caf3791e14610529578063f2fde38b1461053257600080fd5b80638da5cb5b1461042d5780639d01a27d1461044d57600080fd5b806374ec29a0146103bf57806382bc4aaf146103d257806382bfefc8146103e55780638456cb591461042557600080fd5b80632f37a774116101095780633f4ba83a116100ee5780633f4ba83a146103815780634617c06a146103895780635c975abb1461039c57600080fd5b80632f37a7741461035657806335c1dd991461036e57600080fd5b80630c9cbf0e1461013b57806312d18ed6146101795780632274c5cd1461018e57806329cec05e146102c0575b600080fd5b610166610149366004611987565b600960209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61018c6101873660046119ba565b610545565b005b6102576040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152506040805160e0810182526005548152600654602082015260075464ffffffffff80821693830193909352650100000000008104831660608301526a01000000000000000000008104831660808301526f010000000000000000000000000000008104831660a083015274010000000000000000000000000000000000000000900490911660c082015290565b6040516101709190600060e0820190508251825260208301516020830152604083015164ffffffffff80821660408501528060608601511660608501528060808601511660808501528060a08601511660a08501528060c08601511660c0850152505092915050565b6103486102ce366004611a63565b6040805173ffffffffffffffffffffffffffffffffffffffff938416602080830191909152959093168382015260608301919091526080808301939093528051808303909301835260a08201815282518385012060c0808401919091528151808403909101815260e0909201905280519201919091209091565b604051610170929190611b15565b61035e61080a565b6040519015158152602001610170565b61018c61037c366004611b4c565b610836565b61018c610b70565b61018c610397366004611b4c565b610bfb565b60005474010000000000000000000000000000000000000000900460ff1661035e565b61035e6103cd366004611ba3565b610e6c565b61018c6103e0366004611d67565b610ec0565b610400736f40d4a6237c257fff2db00fa0510deeecd303eb81565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610170565b61018c610fa1565b6000546104009073ffffffffffffffffffffffffffffffffffffffff1681565b61018c61045b366004611e38565b61102a565b6102576040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152506040805160e0810182526002548152600354602082015260045464ffffffffff80821693830193909352650100000000008104831660608301526a01000000000000000000008104831660808301526f010000000000000000000000000000008104831660a083015274010000000000000000000000000000000000000000900490911660c082015290565b61016660085481565b61018c610540366004611ba3565b611188565b61054d611279565b60045464ffffffffff168381148061057957506000811180156105795750610576600182611e9e565b84145b6105af576040517f9b8febfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8088166020830152891691810191909152606081018590526080810187905260009060a001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050610690848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505087851490506106865760085461068a565b6002545b836112fe565b6106c6576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600960209081526040808320938a168352929052908120546107059089611e9e565b905080600003610741576040517f969bf72800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808a166000908152600960209081526040808320938b16835292905220889055610795736f40d4a6237c257fff2db00fa0510deeecd303eb8a83611314565b6040805173ffffffffffffffffffffffffffffffffffffffff8b8116825260208201849052818301899052891660608201524260808201524360a082015290517fe3cb74c4f6ae065f9508dfb15b98c41cad69168caffe847b56ce21bf
"devdoc": {
"events": {
"Paused(address)": {
"details": "Emitted when the pause is triggered by `account`."
},
"Unpaused(address)": {
"details": "Emitted when the pause is lifted by `account`."
}
},
"kind": "dev",
"methods": {
"paused()": {
"details": "Returns true if the contract is paused, and false otherwise."
},
"spell(address[],bytes[])": {
"details": "open payload method for admin to resolve emergency cases"
},
"updateProposer(address,bool)": {
"params": {
"isProposer_": "Whether or not the address should be an allowed proposer",
"proposer_": "The address to update"
}
}
},
"version": 1
},
"userdoc": {
"events": {
"LogClaimed(address,uint256,uint256,address,uint256,uint256)": {
"notice": "Emitted when a `user` claims `amount` via a valid merkle proof"
},
"LogRootProposed(uint256,bytes32,bytes32,uint256,uint256)": {
"notice": "Emitted when a new cycle root hash is proposed"
},
"LogRootUpdated(uint256,bytes32,bytes32,uint256,uint256)": {
"notice": "Emitted when a new cycle root hash is approved by the owner and becomes the new active root"
},
"LogUpdateProposer(address,bool)": {
"notice": "Emitted when an address is added or removed from the allowed proposers"
}
},
"kind": "user",
"methods": {
"approveRoot(bytes32,bytes32,uint40,uint40,uint40)": {
"notice": "Approve the current pending root and content hash"
},
"claimed(address,address)": {
"notice": "total claimed amount per user address and fToken. user => fToken => claimed amount"
},
"currentMerkleCycle()": {
"notice": "merkle root data related to current cycle (proposed and approved)."
},
"hasPendingRoot()": {
"notice": "checks if there is a proposed root waiting to be approved"
},
"isProposer(address)": {
"notice": "checks if the `proposer_` is an allowed root proposer"
},
"pause()": {
"notice": "Pause contract functionality of new roots and claiming"
},
"pendingMerkleCycle()": {
"notice": "merkle root data related to pending cycle (proposed but not yet approved)."
},
"previousMerkleRoot()": {
"notice": "merkle root of the previous cycle"
},
"proposeRoot(bytes32,bytes32,uint40,uint40,uint40)": {
"notice": "Propose a new root and content hash, which will be stored as pending until approved"
},
"unpause()": {
"notice": "Unpause contract functionality of new roots and claiming"
},
"updateProposer(address,bool)": {
"notice": "Updates an address status as a root proposer"
}
},
"version": 1
},
"storageLayout": {
"storage": [
{
"astId": 10661,
"contract": "contracts/protocols/lending/merkleDistributor/main.sol:FluidMerkleDistributor",
"label": "owner",
"offset": 0,
"slot": "0",
"type": "t_address"
},
{
"astId": 17,
"contract": "contracts/protocols/lending/merkleDistributor/main.sol:FluidMerkleDistributor",
"label": "_paused",
"offset": 20,
"slot": "0",
"type": "t_bool"
},
{
"astId": 10404,
"contract": "contracts/protocols/lending/merkleDistributor/main.sol:FluidMerkleDistributor",
"label": "_proposers",
"offset": 0,
"slot": "1",
"type": "t_mapping(t_address,t_bool)"
},
{
"astId": 10408,
"contract": "contracts/protocols/lending/merkleDistributor/main.sol:FluidMerkleDistributor",
"label": "_currentMerkleCycle",
"offset": 0,
"slot": "2",
"type": "t_struct(MerkleCycle)10373_storage"
},
{
"astId": 10412,
"contract": "contracts/protocols/lending/merkleDistributor/main.sol:FluidMerkleDistributor",
"label": "_pendingMerkleCycle",
"offset": 0,
"slot": "5",
"type": "t_struct(MerkleCycle)10373_storage"
},
{
"astId": 10415,
"contract": "contracts/protocols/lending/merkleDistributor/main.sol:FluidMerkleDistributor",
"label": "previousMerkleRoot",
"offset": 0,
"slot": "8",
"type": "t_bytes32"
},
{
"astId": 10422,
"contract": "contracts/protocols/lending/merkleDistributor/main.sol:FluidMerkleDistributor",
"label": "claimed",
"offset": 0,
"slot": "9",
"type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
}
],
"types": {
"t_address": {
"encoding": "inplace",
"label": "address",
"numberOfBytes": "20"
},
"t_bool": {
"encoding": "inplace",
"label": "bool",
"numberOfBytes": "1"
},
"t_bytes32": {
"encoding": "inplace",
"label": "bytes32",
"numberOfBytes": "32"
},
"t_mapping(t_address,t_bool)": {
"encoding": "mapping",
"key": "t_address",
"label": "mapping(address => bool)",
"numberOfBytes": "32",
"value": "t_bool"
},
"t_mapping(t_address,t_mapping(t_address,t_uint256))": {
"encoding": "mapping",
"key": "t_address",
"label": "mapping(address => mapping(address => uint256))",
"numberOfBytes": "32",
"value": "t_mapping(t_address,t_uint256)"
},
"t_mapping(t_address,t_uint256)": {
"encoding": "mapping",
"key": "t_address",
"label": "mapping(address => uint256)",
"numberOfBytes": "32",
"value": "t_uint256"
},
"t_struct(MerkleCycle)10373_storage": {
"encoding": "inplace",
"label": "struct Structs.MerkleCycle",
"members": [
{
"astId": 10360,
"contract": "contracts/protocols/lending/merkleDistributor/main.sol:FluidMerkleDistributor",
"label": "merkleRoot",
"offset": 0,
"slot": "0",
"type": "t_bytes32"
},
{
"astId": 10362,
"contract": "contracts/protocols/lending/merkleDistributor/main.sol:FluidMerkleDistributor",
"label": "merkleContentHash",
"offset": 0,
"slot": "1",
"type": "t_bytes32"
},
{
"astId": 10364,
"contract": "contracts/protocols/lending/merkleDistributor/main.sol:FluidMerkleDistributor",
"label": "cycle",
"offset": 0,
"slot": "2",
"type": "t_uint40"
},
{
"astId": 10366,
"contract": "contracts/protocols/lending/merkleDistributor/main.sol:FluidMerkleDistributor",
"label": "timestamp",
"offset": 5,
"slot": "2",
"type": "t_uint40"
},
{
"astId": 10368,
"contract": "contracts/protocols/lending/merkleDistributor/main.sol:FluidMerkleDistributor",
"label": "publishBlock",
"offset": 10,
"slot": "2",
"type": "t_uint40"
},
{
"astId": 10370,
"contract": "contracts/protocols/lending/merkleDistributor/main.sol:FluidMerkleDistributor",
"label": "startBlock",
"offset": 15,
"slot": "2",
"type": "t_uint40"
},
{
"astId": 10372,
"contract": "contracts/protocols/lending/merkleDistributor/main.sol:FluidMerkleDistributor",
"label": "endBlock",
"offset": 20,
"slot": "2",
"type": "t_uint40"
}
],
"numberOfBytes": "96"
},
"t_uint256": {
"encoding": "inplace",
"label": "uint256",
"numberOfBytes": "32"
},
"t_uint40": {
"encoding": "inplace",
"label": "uint40",
"numberOfBytes": "5"
}
}
}
}