Created
October 21, 2019 20:38
-
-
Save onyb/740f366f7ad00e604d27cf9bbe2213d9 to your computer and use it in GitHub Desktop.
Ethereum ABI Decoder - v1
This file contains hidden or 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
| [ | |
| { | |
| "constant": true, | |
| "inputs": [], | |
| "name": "name", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "string" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0x06fdde03" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [ | |
| { | |
| "name": "spender", | |
| "type": "address" | |
| }, | |
| { | |
| "name": "amount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "approve", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "bool" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0x095ea7b3" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [ | |
| { | |
| "name": "repayAmount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "repayBorrow", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0x0e752702" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [], | |
| "name": "reserveFactorMantissa", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0x173b9904" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [ | |
| { | |
| "name": "account", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "borrowBalanceCurrent", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0x17bfdfbc" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [], | |
| "name": "totalSupply", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0x18160ddd" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [], | |
| "name": "exchangeRateStored", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0x182df0f5" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [ | |
| { | |
| "name": "src", | |
| "type": "address" | |
| }, | |
| { | |
| "name": "dst", | |
| "type": "address" | |
| }, | |
| { | |
| "name": "amount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "transferFrom", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "bool" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0x23b872dd" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [ | |
| { | |
| "name": "borrower", | |
| "type": "address" | |
| }, | |
| { | |
| "name": "repayAmount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "repayBorrowBehalf", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0x2608f818" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [], | |
| "name": "pendingAdmin", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "address" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0x26782247" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [], | |
| "name": "decimals", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0x313ce567" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [ | |
| { | |
| "name": "owner", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "balanceOfUnderlying", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0x3af9e669" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [], | |
| "name": "getCash", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0x3b1d21a2" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [ | |
| { | |
| "name": "newComptroller", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "_setComptroller", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0x4576b5db" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [], | |
| "name": "totalBorrows", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0x47bd3718" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [], | |
| "name": "comptroller", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "address" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0x5fe3b567" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [ | |
| { | |
| "name": "reduceAmount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "_reduceReserves", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0x601a0bf1" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [], | |
| "name": "initialExchangeRateMantissa", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0x675d972c" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [], | |
| "name": "accrualBlockNumber", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0x6c540baf" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [], | |
| "name": "underlying", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "address" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0x6f307dc3" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [ | |
| { | |
| "name": "owner", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "balanceOf", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0x70a08231" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [], | |
| "name": "totalBorrowsCurrent", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0x73acee98" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [ | |
| { | |
| "name": "redeemAmount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "redeemUnderlying", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0x852a12e3" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [], | |
| "name": "totalReserves", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0x8f840ddd" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [], | |
| "name": "symbol", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "string" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0x95d89b41" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [ | |
| { | |
| "name": "account", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "borrowBalanceStored", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0x95dd9193" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [ | |
| { | |
| "name": "mintAmount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "mint", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0xa0712d68" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [], | |
| "name": "accrueInterest", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0xa6afed95" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [ | |
| { | |
| "name": "dst", | |
| "type": "address" | |
| }, | |
| { | |
| "name": "amount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "transfer", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "bool" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0xa9059cbb" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [], | |
| "name": "borrowIndex", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0xaa5af0fd" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [], | |
| "name": "supplyRatePerBlock", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0xae9d70b0" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [ | |
| { | |
| "name": "liquidator", | |
| "type": "address" | |
| }, | |
| { | |
| "name": "borrower", | |
| "type": "address" | |
| }, | |
| { | |
| "name": "seizeTokens", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "seize", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0xb2a02ff1" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [ | |
| { | |
| "name": "newPendingAdmin", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "_setPendingAdmin", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0xb71d1a0c" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [], | |
| "name": "exchangeRateCurrent", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0xbd6d894d" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [ | |
| { | |
| "name": "account", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "getAccountSnapshot", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| }, | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| }, | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| }, | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0xc37f68e2" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [ | |
| { | |
| "name": "borrowAmount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "borrow", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0xc5ebeaec" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [ | |
| { | |
| "name": "redeemTokens", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "redeem", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0xdb006a75" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [ | |
| { | |
| "name": "owner", | |
| "type": "address" | |
| }, | |
| { | |
| "name": "spender", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "allowance", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0xdd62ed3e" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [], | |
| "name": "_acceptAdmin", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0xe9c714f2" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [ | |
| { | |
| "name": "newInterestRateModel", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "_setInterestRateModel", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0xf2b3abbd" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [], | |
| "name": "interestRateModel", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "address" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0xf3fdb15a" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [ | |
| { | |
| "name": "borrower", | |
| "type": "address" | |
| }, | |
| { | |
| "name": "repayAmount", | |
| "type": "uint256" | |
| }, | |
| { | |
| "name": "cTokenCollateral", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "liquidateBorrow", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0xf5e3c462" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [], | |
| "name": "admin", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "address" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0xf851a440" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [], | |
| "name": "borrowRatePerBlock", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0xf8f9da28" | |
| }, | |
| { | |
| "constant": false, | |
| "inputs": [ | |
| { | |
| "name": "newReserveFactorMantissa", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "_setReserveFactor", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "function", | |
| "signature": "0xfca7820b" | |
| }, | |
| { | |
| "constant": true, | |
| "inputs": [], | |
| "name": "isCToken", | |
| "outputs": [ | |
| { | |
| "name": "", | |
| "type": "bool" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "view", | |
| "type": "function", | |
| "signature": "0xfe9c44ae" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "name": "underlying_", | |
| "type": "address" | |
| }, | |
| { | |
| "name": "comptroller_", | |
| "type": "address" | |
| }, | |
| { | |
| "name": "interestRateModel_", | |
| "type": "address" | |
| }, | |
| { | |
| "name": "initialExchangeRateMantissa_", | |
| "type": "uint256" | |
| }, | |
| { | |
| "name": "name_", | |
| "type": "string" | |
| }, | |
| { | |
| "name": "symbol_", | |
| "type": "string" | |
| }, | |
| { | |
| "name": "decimals_", | |
| "type": "uint256" | |
| } | |
| ], | |
| "payable": false, | |
| "stateMutability": "nonpayable", | |
| "type": "constructor", | |
| "signature": "constructor" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": false, | |
| "name": "interestAccumulated", | |
| "type": "uint256" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "borrowIndex", | |
| "type": "uint256" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "totalBorrows", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "AccrueInterest", | |
| "type": "event", | |
| "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": false, | |
| "name": "minter", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "mintAmount", | |
| "type": "uint256" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "mintTokens", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "Mint", | |
| "type": "event", | |
| "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": false, | |
| "name": "redeemer", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "redeemAmount", | |
| "type": "uint256" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "redeemTokens", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "Redeem", | |
| "type": "event", | |
| "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": false, | |
| "name": "borrower", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "borrowAmount", | |
| "type": "uint256" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "accountBorrows", | |
| "type": "uint256" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "totalBorrows", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "Borrow", | |
| "type": "event", | |
| "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": false, | |
| "name": "payer", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "borrower", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "repayAmount", | |
| "type": "uint256" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "accountBorrows", | |
| "type": "uint256" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "totalBorrows", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "RepayBorrow", | |
| "type": "event", | |
| "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": false, | |
| "name": "liquidator", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "borrower", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "repayAmount", | |
| "type": "uint256" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "cTokenCollateral", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "seizeTokens", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "LiquidateBorrow", | |
| "type": "event", | |
| "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": false, | |
| "name": "oldPendingAdmin", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "newPendingAdmin", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "NewPendingAdmin", | |
| "type": "event", | |
| "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": false, | |
| "name": "oldAdmin", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "newAdmin", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "NewAdmin", | |
| "type": "event", | |
| "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": false, | |
| "name": "oldComptroller", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "newComptroller", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "NewComptroller", | |
| "type": "event", | |
| "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": false, | |
| "name": "oldInterestRateModel", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "newInterestRateModel", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "NewMarketInterestRateModel", | |
| "type": "event", | |
| "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": false, | |
| "name": "oldReserveFactorMantissa", | |
| "type": "uint256" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "newReserveFactorMantissa", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "NewReserveFactor", | |
| "type": "event", | |
| "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": false, | |
| "name": "admin", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "reduceAmount", | |
| "type": "uint256" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "newTotalReserves", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "ReservesReduced", | |
| "type": "event", | |
| "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": false, | |
| "name": "error", | |
| "type": "uint256" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "info", | |
| "type": "uint256" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "detail", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "Failure", | |
| "type": "event", | |
| "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": true, | |
| "name": "from", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": true, | |
| "name": "to", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "amount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "Transfer", | |
| "type": "event", | |
| "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": true, | |
| "name": "owner", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": true, | |
| "name": "spender", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "name": "amount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "Approval", | |
| "type": "event", | |
| "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" | |
| } | |
| ] |
This file contains hidden or 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
| import json | |
| import re | |
| from pathlib import Path | |
| BASE_DIR = Path(__file__).parent | |
| class Contract: | |
| def __init__(self, name: str): | |
| with open(BASE_DIR / f"{name}.json") as f: | |
| self.abi = json.load(f) | |
| def find_function(self, signature: str): | |
| return next( | |
| ( | |
| el | |
| for el in self.abi | |
| if el["type"] == "function" and el["signature"] == signature | |
| ), | |
| None, | |
| ) | |
| def decode(token, data: str): | |
| contract = Contract(token) | |
| # Convert the hexadecimal data into bytes for easy indexing | |
| data = bytes.fromhex(data.lstrip("0x")) | |
| # The first 4 bytes constitute the signature | |
| signature = f"0x{data[: 4].hex()}" | |
| data = data[4:] | |
| func = contract.find_function(signature) | |
| if not func: | |
| raise ValueError("Encoded function is unrecognized by the ABI") | |
| args_prototype = ",".join( | |
| f"{input_['type']} {input_['name']}" for input_ in func["inputs"] | |
| ) | |
| print( | |
| f"Function prototype for signature {signature}: " | |
| f'{func["name"]}({args_prototype})' | |
| ) | |
| for input_ in func["inputs"]: | |
| if not data: | |
| raise EOFError | |
| matcher = re.match(r"uint(\d+)", input_["type"]) | |
| if not matcher: | |
| raise TypeError | |
| M = int(matcher.group(1)) | |
| # Valid types are uint256, uint8, uint32, etc. | |
| if not (0 < M <= 256 and M % 8 == 0): | |
| raise TypeError | |
| byte_value = data[: M // 8] | |
| int_value = int.from_bytes(byte_value, byteorder="big") | |
| data = data[M // 8 :] | |
| print( | |
| f' >>> name={input_["name"]} type={input_["type"]} value={int_value}' | |
| ) | |
| print() | |
| if __name__ == "__main__": | |
| # mint(uint256 mintAmount) | |
| # mintAmount=1000000000000000000 | |
| decode( | |
| "cDAI", | |
| "0xa0712d680000000000000000000000000000000000000000000000000de0b6b3a7640000", | |
| ) | |
| # mint(uint256 mintAmount) | |
| # mintAmount=3000000000000000000 | |
| decode( | |
| "cDAI", | |
| "0xa0712d6800000000000000000000000000000000000000000000000029a2241af62c0000", | |
| ) | |
| # redeemUnderlying(uint256 redeemAmount) | |
| # redeemAmount=3000022210000000000 | |
| decode( | |
| "cDAI", | |
| "0x852a12e300000000000000000000000000000000000000000000000029a2384e21551400", | |
| ) | |
| # redeem(uint256 redeemTokens) | |
| # redeemTokens=4484139013794 | |
| decode( | |
| "cDAI", | |
| "0xdb006a75000000000000000000000000000000000000000000000000000004140b8356a2", | |
| ) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment