diff --git a/app/tests/db/__init__.py b/app/datasources/abis/__init__.py similarity index 100% rename from app/tests/db/__init__.py rename to app/datasources/abis/__init__.py diff --git a/app/datasources/abis/aave.py b/app/datasources/abis/aave.py new file mode 100644 index 0000000..0050e6e --- /dev/null +++ b/app/datasources/abis/aave.py @@ -0,0 +1,2777 @@ +aave_a_token = [ + { + "inputs": [ + { + "internalType": "contract LendingPoolAddressesProvider", + "name": "_addressesProvider", + "type": "address", + }, + {"internalType": "address", "name": "_underlyingAsset", "type": "address"}, + { + "internalType": "uint8", + "name": "_underlyingAssetDecimals", + "type": "uint8", + }, + {"internalType": "string", "name": "_name", "type": "string"}, + {"internalType": "string", "name": "_symbol", "type": "string"}, + ], + "payable": False, + "stateMutability": "nonpayable", + "type": "constructor", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "owner", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "spender", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "value", + "type": "uint256", + }, + ], + "name": "Approval", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "_from", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "_to", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_value", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_fromBalanceIncrease", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_toBalanceIncrease", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_fromIndex", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_toIndex", + "type": "uint256", + }, + ], + "name": "BalanceTransfer", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "_from", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_value", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_fromBalanceIncrease", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_fromIndex", + "type": "uint256", + }, + ], + "name": "BurnOnLiquidation", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "_from", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "_to", + "type": "address", + }, + ], + "name": "InterestRedirectionAllowanceChanged", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "_from", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "_to", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_redirectedBalance", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_fromBalanceIncrease", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_fromIndex", + "type": "uint256", + }, + ], + "name": "InterestStreamRedirected", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "_from", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_value", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_fromBalanceIncrease", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_fromIndex", + "type": "uint256", + }, + ], + "name": "MintOnDeposit", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "_from", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_value", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_fromBalanceIncrease", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_fromIndex", + "type": "uint256", + }, + ], + "name": "Redeem", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "_targetAddress", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_targetBalanceIncrease", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_targetIndex", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_redirectedBalanceAdded", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_redirectedBalanceRemoved", + "type": "uint256", + }, + ], + "name": "RedirectedBalanceUpdated", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "from", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "to", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "value", + "type": "uint256", + }, + ], + "name": "Transfer", + "type": "event", + }, + { + "constant": True, + "inputs": [], + "name": "UINT_MAX_VALUE", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [ + {"internalType": "address", "name": "owner", "type": "address"}, + {"internalType": "address", "name": "spender", "type": "address"}, + ], + "name": "allowance", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "spender", "type": "address"}, + {"internalType": "uint256", "name": "value", "type": "uint256"}, + ], + "name": "approve", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "decimals", + "outputs": [{"internalType": "uint8", "name": "", "type": "uint8"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "spender", "type": "address"}, + {"internalType": "uint256", "name": "subtractedValue", "type": "uint256"}, + ], + "name": "decreaseAllowance", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "spender", "type": "address"}, + {"internalType": "uint256", "name": "addedValue", "type": "uint256"}, + ], + "name": "increaseAllowance", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "name", + "outputs": [{"internalType": "string", "name": "", "type": "string"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "symbol", + "outputs": [{"internalType": "string", "name": "", "type": "string"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "recipient", "type": "address"}, + {"internalType": "uint256", "name": "amount", "type": "uint256"}, + ], + "name": "transfer", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "sender", "type": "address"}, + {"internalType": "address", "name": "recipient", "type": "address"}, + {"internalType": "uint256", "name": "amount", "type": "uint256"}, + ], + "name": "transferFrom", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "underlyingAssetAddress", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "_to", "type": "address"}], + "name": "redirectInterestStream", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_from", "type": "address"}, + {"internalType": "address", "name": "_to", "type": "address"}, + ], + "name": "redirectInterestStreamOf", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "_to", "type": "address"}], + "name": "allowInterestRedirectionTo", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "uint256", "name": "_amount", "type": "uint256"}], + "name": "redeem", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_account", "type": "address"}, + {"internalType": "uint256", "name": "_amount", "type": "uint256"}, + ], + "name": "mintOnDeposit", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_account", "type": "address"}, + {"internalType": "uint256", "name": "_value", "type": "uint256"}, + ], + "name": "burnOnLiquidation", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_from", "type": "address"}, + {"internalType": "address", "name": "_to", "type": "address"}, + {"internalType": "uint256", "name": "_value", "type": "uint256"}, + ], + "name": "transferOnLiquidation", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_user", "type": "address"}], + "name": "balanceOf", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_user", "type": "address"}], + "name": "principalBalanceOf", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "totalSupply", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [ + {"internalType": "address", "name": "_user", "type": "address"}, + {"internalType": "uint256", "name": "_amount", "type": "uint256"}, + ], + "name": "isTransferAllowed", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_user", "type": "address"}], + "name": "getUserIndex", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_user", "type": "address"}], + "name": "getInterestRedirectionAddress", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_user", "type": "address"}], + "name": "getRedirectedBalance", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, +] +aave_lending_pool = [ + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "_reserve", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "_user", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_amount", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_borrowRateMode", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_borrowRate", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_originationFee", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_borrowBalanceIncrease", + "type": "uint256", + }, + { + "indexed": True, + "internalType": "uint16", + "name": "_referral", + "type": "uint16", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_timestamp", + "type": "uint256", + }, + ], + "name": "Borrow", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "_reserve", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "_user", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_amount", + "type": "uint256", + }, + { + "indexed": True, + "internalType": "uint16", + "name": "_referral", + "type": "uint16", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_timestamp", + "type": "uint256", + }, + ], + "name": "Deposit", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "_target", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "_reserve", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_amount", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_totalFee", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_protocolFee", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_timestamp", + "type": "uint256", + }, + ], + "name": "FlashLoan", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "_collateral", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "_reserve", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "_user", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_purchaseAmount", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_liquidatedCollateralAmount", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_accruedBorrowInterest", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "address", + "name": "_liquidator", + "type": "address", + }, + { + "indexed": False, + "internalType": "bool", + "name": "_receiveAToken", + "type": "bool", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_timestamp", + "type": "uint256", + }, + ], + "name": "LiquidationCall", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "_collateral", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "_reserve", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "_user", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_feeLiquidated", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_liquidatedCollateralForFee", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_timestamp", + "type": "uint256", + }, + ], + "name": "OriginationFeeLiquidated", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "_reserve", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "_user", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_newStableRate", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_borrowBalanceIncrease", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_timestamp", + "type": "uint256", + }, + ], + "name": "RebalanceStableBorrowRate", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "_reserve", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "_user", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_amount", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_timestamp", + "type": "uint256", + }, + ], + "name": "RedeemUnderlying", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "_reserve", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "_user", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "_repayer", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_amountMinusFees", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_fees", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_borrowBalanceIncrease", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_timestamp", + "type": "uint256", + }, + ], + "name": "Repay", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "_reserve", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "_user", + "type": "address", + }, + ], + "name": "ReserveUsedAsCollateralDisabled", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "_reserve", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "_user", + "type": "address", + }, + ], + "name": "ReserveUsedAsCollateralEnabled", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "_reserve", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "_user", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_newRateMode", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_newRate", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_borrowBalanceIncrease", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "_timestamp", + "type": "uint256", + }, + ], + "name": "Swap", + "type": "event", + }, + { + "constant": True, + "inputs": [], + "name": "LENDINGPOOL_REVISION", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "UINT_MAX_VALUE", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "addressesProvider", + "outputs": [ + { + "internalType": "contract LendingPoolAddressesProvider", + "name": "", + "type": "address", + } + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "core", + "outputs": [ + {"internalType": "contract LendingPoolCore", "name": "", "type": "address"} + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "dataProvider", + "outputs": [ + { + "internalType": "contract LendingPoolDataProvider", + "name": "", + "type": "address", + } + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "parametersProvider", + "outputs": [ + { + "internalType": "contract LendingPoolParametersProvider", + "name": "", + "type": "address", + } + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + { + "internalType": "contract LendingPoolAddressesProvider", + "name": "_addressesProvider", + "type": "address", + } + ], + "name": "initialize", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "uint256", "name": "_amount", "type": "uint256"}, + {"internalType": "uint16", "name": "_referralCode", "type": "uint16"}, + ], + "name": "deposit", + "outputs": [], + "payable": True, + "stateMutability": "payable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address payable", "name": "_user", "type": "address"}, + {"internalType": "uint256", "name": "_amount", "type": "uint256"}, + { + "internalType": "uint256", + "name": "_aTokenBalanceAfterRedeem", + "type": "uint256", + }, + ], + "name": "redeemUnderlying", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "uint256", "name": "_amount", "type": "uint256"}, + {"internalType": "uint256", "name": "_interestRateMode", "type": "uint256"}, + {"internalType": "uint16", "name": "_referralCode", "type": "uint16"}, + ], + "name": "borrow", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "uint256", "name": "_amount", "type": "uint256"}, + { + "internalType": "address payable", + "name": "_onBehalfOf", + "type": "address", + }, + ], + "name": "repay", + "outputs": [], + "payable": True, + "stateMutability": "payable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "swapBorrowRateMode", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + ], + "name": "rebalanceStableBorrowRate", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "bool", "name": "_useAsCollateral", "type": "bool"}, + ], + "name": "setUserUseReserveAsCollateral", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_collateral", "type": "address"}, + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + {"internalType": "uint256", "name": "_purchaseAmount", "type": "uint256"}, + {"internalType": "bool", "name": "_receiveAToken", "type": "bool"}, + ], + "name": "liquidationCall", + "outputs": [], + "payable": True, + "stateMutability": "payable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_receiver", "type": "address"}, + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "uint256", "name": "_amount", "type": "uint256"}, + {"internalType": "bytes", "name": "_params", "type": "bytes"}, + ], + "name": "flashLoan", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveConfigurationData", + "outputs": [ + {"internalType": "uint256", "name": "ltv", "type": "uint256"}, + { + "internalType": "uint256", + "name": "liquidationThreshold", + "type": "uint256", + }, + {"internalType": "uint256", "name": "liquidationBonus", "type": "uint256"}, + { + "internalType": "address", + "name": "interestRateStrategyAddress", + "type": "address", + }, + { + "internalType": "bool", + "name": "usageAsCollateralEnabled", + "type": "bool", + }, + {"internalType": "bool", "name": "borrowingEnabled", "type": "bool"}, + {"internalType": "bool", "name": "stableBorrowRateEnabled", "type": "bool"}, + {"internalType": "bool", "name": "isActive", "type": "bool"}, + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveData", + "outputs": [ + {"internalType": "uint256", "name": "totalLiquidity", "type": "uint256"}, + { + "internalType": "uint256", + "name": "availableLiquidity", + "type": "uint256", + }, + { + "internalType": "uint256", + "name": "totalBorrowsStable", + "type": "uint256", + }, + { + "internalType": "uint256", + "name": "totalBorrowsVariable", + "type": "uint256", + }, + {"internalType": "uint256", "name": "liquidityRate", "type": "uint256"}, + { + "internalType": "uint256", + "name": "variableBorrowRate", + "type": "uint256", + }, + {"internalType": "uint256", "name": "stableBorrowRate", "type": "uint256"}, + { + "internalType": "uint256", + "name": "averageStableBorrowRate", + "type": "uint256", + }, + {"internalType": "uint256", "name": "utilizationRate", "type": "uint256"}, + {"internalType": "uint256", "name": "liquidityIndex", "type": "uint256"}, + { + "internalType": "uint256", + "name": "variableBorrowIndex", + "type": "uint256", + }, + {"internalType": "address", "name": "aTokenAddress", "type": "address"}, + {"internalType": "uint40", "name": "lastUpdateTimestamp", "type": "uint40"}, + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_user", "type": "address"}], + "name": "getUserAccountData", + "outputs": [ + {"internalType": "uint256", "name": "totalLiquidityETH", "type": "uint256"}, + { + "internalType": "uint256", + "name": "totalCollateralETH", + "type": "uint256", + }, + {"internalType": "uint256", "name": "totalBorrowsETH", "type": "uint256"}, + {"internalType": "uint256", "name": "totalFeesETH", "type": "uint256"}, + { + "internalType": "uint256", + "name": "availableBorrowsETH", + "type": "uint256", + }, + { + "internalType": "uint256", + "name": "currentLiquidationThreshold", + "type": "uint256", + }, + {"internalType": "uint256", "name": "ltv", "type": "uint256"}, + {"internalType": "uint256", "name": "healthFactor", "type": "uint256"}, + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + ], + "name": "getUserReserveData", + "outputs": [ + { + "internalType": "uint256", + "name": "currentATokenBalance", + "type": "uint256", + }, + { + "internalType": "uint256", + "name": "currentBorrowBalance", + "type": "uint256", + }, + { + "internalType": "uint256", + "name": "principalBorrowBalance", + "type": "uint256", + }, + {"internalType": "uint256", "name": "borrowRateMode", "type": "uint256"}, + {"internalType": "uint256", "name": "borrowRate", "type": "uint256"}, + {"internalType": "uint256", "name": "liquidityRate", "type": "uint256"}, + {"internalType": "uint256", "name": "originationFee", "type": "uint256"}, + { + "internalType": "uint256", + "name": "variableBorrowIndex", + "type": "uint256", + }, + { + "internalType": "uint256", + "name": "lastUpdateTimestamp", + "type": "uint256", + }, + { + "internalType": "bool", + "name": "usageAsCollateralEnabled", + "type": "bool", + }, + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "getReserves", + "outputs": [{"internalType": "address[]", "name": "", "type": "address[]"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, +] +aave_lending_pool_addresses_provider = [ + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "newAddress", + "type": "address", + } + ], + "name": "EthereumAddressUpdated", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "newAddress", + "type": "address", + } + ], + "name": "FeeProviderUpdated", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "newAddress", + "type": "address", + } + ], + "name": "LendingPoolConfiguratorUpdated", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "newAddress", + "type": "address", + } + ], + "name": "LendingPoolCoreUpdated", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "newAddress", + "type": "address", + } + ], + "name": "LendingPoolDataProviderUpdated", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "newAddress", + "type": "address", + } + ], + "name": "LendingPoolLiquidationManagerUpdated", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "newAddress", + "type": "address", + } + ], + "name": "LendingPoolManagerUpdated", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "newAddress", + "type": "address", + } + ], + "name": "LendingPoolParametersProviderUpdated", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "newAddress", + "type": "address", + } + ], + "name": "LendingPoolUpdated", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "newAddress", + "type": "address", + } + ], + "name": "LendingRateOracleUpdated", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "previousOwner", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "newOwner", + "type": "address", + }, + ], + "name": "OwnershipTransferred", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "newAddress", + "type": "address", + } + ], + "name": "PriceOracleUpdated", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": False, + "internalType": "bytes32", + "name": "id", + "type": "bytes32", + }, + { + "indexed": True, + "internalType": "address", + "name": "newAddress", + "type": "address", + }, + ], + "name": "ProxyCreated", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "newAddress", + "type": "address", + } + ], + "name": "TokenDistributorUpdated", + "type": "event", + }, + { + "constant": True, + "inputs": [{"internalType": "bytes32", "name": "_key", "type": "bytes32"}], + "name": "getAddress", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "isOwner", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "owner", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "newOwner", "type": "address"}], + "name": "transferOwnership", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "getLendingPool", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "_pool", "type": "address"}], + "name": "setLendingPoolImpl", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "getLendingPoolCore", + "outputs": [{"internalType": "address payable", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_lendingPoolCore", "type": "address"} + ], + "name": "setLendingPoolCoreImpl", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "getLendingPoolConfigurator", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_configurator", "type": "address"} + ], + "name": "setLendingPoolConfiguratorImpl", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "getLendingPoolDataProvider", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "_provider", "type": "address"}], + "name": "setLendingPoolDataProviderImpl", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "getLendingPoolParametersProvider", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + { + "internalType": "address", + "name": "_parametersProvider", + "type": "address", + } + ], + "name": "setLendingPoolParametersProviderImpl", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "getFeeProvider", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_feeProvider", "type": "address"} + ], + "name": "setFeeProviderImpl", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "getLendingPoolLiquidationManager", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "_manager", "type": "address"}], + "name": "setLendingPoolLiquidationManager", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "getLendingPoolManager", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + { + "internalType": "address", + "name": "_lendingPoolManager", + "type": "address", + } + ], + "name": "setLendingPoolManager", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "getPriceOracle", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_priceOracle", "type": "address"} + ], + "name": "setPriceOracle", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "getLendingRateOracle", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_lendingRateOracle", "type": "address"} + ], + "name": "setLendingRateOracle", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "getTokenDistributor", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_tokenDistributor", "type": "address"} + ], + "name": "setTokenDistributor", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, +] +aave_lending_pool_core = [ + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "reserve", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "liquidityRate", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "stableBorrowRate", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "variableBorrowRate", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "liquidityIndex", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "variableBorrowIndex", + "type": "uint256", + }, + ], + "name": "ReserveUpdated", + "type": "event", + }, + {"payable": True, "stateMutability": "payable", "type": "fallback"}, + { + "constant": True, + "inputs": [], + "name": "CORE_REVISION", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "addressesProvider", + "outputs": [ + { + "internalType": "contract LendingPoolAddressesProvider", + "name": "", + "type": "address", + } + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "lendingPoolAddress", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "name": "reservesList", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + { + "internalType": "contract LendingPoolAddressesProvider", + "name": "_addressesProvider", + "type": "address", + } + ], + "name": "initialize", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + {"internalType": "uint256", "name": "_amount", "type": "uint256"}, + {"internalType": "bool", "name": "_isFirstDeposit", "type": "bool"}, + ], + "name": "updateStateOnDeposit", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + {"internalType": "uint256", "name": "_amountRedeemed", "type": "uint256"}, + {"internalType": "bool", "name": "_userRedeemedEverything", "type": "bool"}, + ], + "name": "updateStateOnRedeem", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + { + "internalType": "uint256", + "name": "_availableLiquidityBefore", + "type": "uint256", + }, + {"internalType": "uint256", "name": "_income", "type": "uint256"}, + {"internalType": "uint256", "name": "_protocolFee", "type": "uint256"}, + ], + "name": "updateStateOnFlashLoan", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + {"internalType": "uint256", "name": "_amountBorrowed", "type": "uint256"}, + {"internalType": "uint256", "name": "_borrowFee", "type": "uint256"}, + { + "internalType": "enum CoreLibrary.InterestRateMode", + "name": "_rateMode", + "type": "uint8", + }, + ], + "name": "updateStateOnBorrow", + "outputs": [ + {"internalType": "uint256", "name": "", "type": "uint256"}, + {"internalType": "uint256", "name": "", "type": "uint256"}, + ], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + { + "internalType": "uint256", + "name": "_paybackAmountMinusFees", + "type": "uint256", + }, + { + "internalType": "uint256", + "name": "_originationFeeRepaid", + "type": "uint256", + }, + {"internalType": "uint256", "name": "_balanceIncrease", "type": "uint256"}, + {"internalType": "bool", "name": "_repaidWholeLoan", "type": "bool"}, + ], + "name": "updateStateOnRepay", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + { + "internalType": "uint256", + "name": "_principalBorrowBalance", + "type": "uint256", + }, + { + "internalType": "uint256", + "name": "_compoundedBorrowBalance", + "type": "uint256", + }, + {"internalType": "uint256", "name": "_balanceIncrease", "type": "uint256"}, + { + "internalType": "enum CoreLibrary.InterestRateMode", + "name": "_currentRateMode", + "type": "uint8", + }, + ], + "name": "updateStateOnSwapRate", + "outputs": [ + { + "internalType": "enum CoreLibrary.InterestRateMode", + "name": "", + "type": "uint8", + }, + {"internalType": "uint256", "name": "", "type": "uint256"}, + ], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_principalReserve", "type": "address"}, + { + "internalType": "address", + "name": "_collateralReserve", + "type": "address", + }, + {"internalType": "address", "name": "_user", "type": "address"}, + { + "internalType": "uint256", + "name": "_amountToLiquidate", + "type": "uint256", + }, + { + "internalType": "uint256", + "name": "_collateralToLiquidate", + "type": "uint256", + }, + {"internalType": "uint256", "name": "_feeLiquidated", "type": "uint256"}, + { + "internalType": "uint256", + "name": "_liquidatedCollateralForFee", + "type": "uint256", + }, + {"internalType": "uint256", "name": "_balanceIncrease", "type": "uint256"}, + { + "internalType": "bool", + "name": "_liquidatorReceivesAToken", + "type": "bool", + }, + ], + "name": "updateStateOnLiquidation", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + {"internalType": "uint256", "name": "_balanceIncrease", "type": "uint256"}, + ], + "name": "updateStateOnRebalance", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + {"internalType": "bool", "name": "_useAsCollateral", "type": "bool"}, + ], + "name": "setUserUseReserveAsCollateral", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address payable", "name": "_user", "type": "address"}, + {"internalType": "uint256", "name": "_amount", "type": "uint256"}, + ], + "name": "transferToUser", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_token", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + {"internalType": "uint256", "name": "_amount", "type": "uint256"}, + {"internalType": "address", "name": "_destination", "type": "address"}, + ], + "name": "transferToFeeCollectionAddress", + "outputs": [], + "payable": True, + "stateMutability": "payable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_token", "type": "address"}, + {"internalType": "uint256", "name": "_amount", "type": "uint256"}, + {"internalType": "address", "name": "_destination", "type": "address"}, + ], + "name": "liquidateFee", + "outputs": [], + "payable": True, + "stateMutability": "payable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address payable", "name": "_user", "type": "address"}, + {"internalType": "uint256", "name": "_amount", "type": "uint256"}, + ], + "name": "transferToReserve", + "outputs": [], + "payable": True, + "stateMutability": "payable", + "type": "function", + }, + { + "constant": True, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + ], + "name": "getUserBasicReserveData", + "outputs": [ + {"internalType": "uint256", "name": "", "type": "uint256"}, + {"internalType": "uint256", "name": "", "type": "uint256"}, + {"internalType": "uint256", "name": "", "type": "uint256"}, + {"internalType": "bool", "name": "", "type": "bool"}, + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + {"internalType": "uint256", "name": "_amount", "type": "uint256"}, + ], + "name": "isUserAllowedToBorrowAtStable", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + ], + "name": "getUserUnderlyingAssetBalance", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveInterestRateStrategyAddress", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveATokenAddress", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveAvailableLiquidity", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveTotalLiquidity", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveNormalizedIncome", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveTotalBorrows", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveTotalBorrowsStable", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveTotalBorrowsVariable", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveLiquidationThreshold", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveLiquidationBonus", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveCurrentVariableBorrowRate", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveCurrentStableBorrowRate", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveCurrentAverageStableBorrowRate", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveCurrentLiquidityRate", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveLiquidityCumulativeIndex", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveVariableBorrowsCumulativeIndex", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveConfiguration", + "outputs": [ + {"internalType": "uint256", "name": "", "type": "uint256"}, + {"internalType": "uint256", "name": "", "type": "uint256"}, + {"internalType": "uint256", "name": "", "type": "uint256"}, + {"internalType": "bool", "name": "", "type": "bool"}, + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveDecimals", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "isReserveBorrowingEnabled", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "isReserveUsageAsCollateralEnabled", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveIsStableBorrowRateEnabled", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveIsActive", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveIsFreezed", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveLastUpdate", + "outputs": [{"internalType": "uint40", "name": "timestamp", "type": "uint40"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "getReserveUtilizationRate", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "getReserves", + "outputs": [{"internalType": "address[]", "name": "", "type": "address[]"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + ], + "name": "isUserUseReserveAsCollateralEnabled", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + ], + "name": "getUserOriginationFee", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + ], + "name": "getUserCurrentBorrowRateMode", + "outputs": [ + { + "internalType": "enum CoreLibrary.InterestRateMode", + "name": "", + "type": "uint8", + } + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + ], + "name": "getUserCurrentStableBorrowRate", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + ], + "name": "getUserBorrowBalances", + "outputs": [ + {"internalType": "uint256", "name": "", "type": "uint256"}, + {"internalType": "uint256", "name": "", "type": "uint256"}, + {"internalType": "uint256", "name": "", "type": "uint256"}, + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + ], + "name": "getUserVariableBorrowCumulativeIndex", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_user", "type": "address"}, + ], + "name": "getUserLastUpdate", + "outputs": [ + {"internalType": "uint256", "name": "timestamp", "type": "uint256"} + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [], + "name": "refreshConfiguration", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "address", "name": "_aTokenAddress", "type": "address"}, + {"internalType": "uint256", "name": "_decimals", "type": "uint256"}, + { + "internalType": "address", + "name": "_interestRateStrategyAddress", + "type": "address", + }, + ], + "name": "initReserve", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + { + "internalType": "address", + "name": "_rateStrategyAddress", + "type": "address", + }, + ], + "name": "setReserveInterestRateStrategyAddress", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + { + "internalType": "bool", + "name": "_stableBorrowRateEnabled", + "type": "bool", + }, + ], + "name": "enableBorrowingOnReserve", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "disableBorrowingOnReserve", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + { + "internalType": "uint256", + "name": "_baseLTVasCollateral", + "type": "uint256", + }, + { + "internalType": "uint256", + "name": "_liquidationThreshold", + "type": "uint256", + }, + {"internalType": "uint256", "name": "_liquidationBonus", "type": "uint256"}, + ], + "name": "enableReserveAsCollateral", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "disableReserveAsCollateral", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "enableReserveStableBorrowRate", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "disableReserveStableBorrowRate", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "activateReserve", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "deactivateReserve", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "freezeReserve", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "_reserve", "type": "address"}], + "name": "unfreezeReserve", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "uint256", "name": "_ltv", "type": "uint256"}, + ], + "name": "setReserveBaseLTVasCollateral", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "uint256", "name": "_threshold", "type": "uint256"}, + ], + "name": "setReserveLiquidationThreshold", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "uint256", "name": "_bonus", "type": "uint256"}, + ], + "name": "setReserveLiquidationBonus", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_reserve", "type": "address"}, + {"internalType": "uint256", "name": "_decimals", "type": "uint256"}, + ], + "name": "setReserveDecimals", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, +] diff --git a/app/datasources/abis/admin_upgradeability_proxy.py b/app/datasources/abis/admin_upgradeability_proxy.py new file mode 100644 index 0000000..17ef38c --- /dev/null +++ b/app/datasources/abis/admin_upgradeability_proxy.py @@ -0,0 +1,110 @@ +initializable_admin_upgradeability_proxy_abi = [ + { + "anonymous": False, + "inputs": [ + { + "indexed": False, + "internalType": "address", + "name": "previousAdmin", + "type": "address", + }, + { + "indexed": False, + "internalType": "address", + "name": "newAdmin", + "type": "address", + }, + ], + "name": "AdminChanged", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "implementation", + "type": "address", + } + ], + "name": "Upgraded", + "type": "event", + }, + {"payable": True, "stateMutability": "payable", "type": "fallback"}, + { + "constant": False, + "inputs": [], + "name": "admin", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "newAdmin", "type": "address"}], + "name": "changeAdmin", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [], + "name": "implementation", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_logic", "type": "address"}, + {"internalType": "address", "name": "_admin", "type": "address"}, + {"internalType": "bytes", "name": "_data", "type": "bytes"}, + ], + "name": "initialize", + "outputs": [], + "payable": True, + "stateMutability": "payable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_logic", "type": "address"}, + {"internalType": "bytes", "name": "_data", "type": "bytes"}, + ], + "name": "initialize", + "outputs": [], + "payable": True, + "stateMutability": "payable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "newImplementation", "type": "address"} + ], + "name": "upgradeTo", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "newImplementation", "type": "address"}, + {"internalType": "bytes", "name": "data", "type": "bytes"}, + ], + "name": "upgradeToAndCall", + "outputs": [], + "payable": True, + "stateMutability": "payable", + "type": "function", + }, +] diff --git a/app/datasources/abis/balancer.py b/app/datasources/abis/balancer.py new file mode 100644 index 0000000..b303e3e --- /dev/null +++ b/app/datasources/abis/balancer.py @@ -0,0 +1,344 @@ +balancer_bactions = [ + { + "constant": False, + "inputs": [ + {"internalType": "contract BFactory", "name": "factory", "type": "address"}, + {"internalType": "address[]", "name": "tokens", "type": "address[]"}, + {"internalType": "uint256[]", "name": "balances", "type": "uint256[]"}, + {"internalType": "uint256[]", "name": "denorms", "type": "uint256[]"}, + {"internalType": "uint256", "name": "swapFee", "type": "uint256"}, + {"internalType": "bool", "name": "finalize", "type": "bool"}, + ], + "name": "create", + "outputs": [ + {"internalType": "contract BPool", "name": "pool", "type": "address"} + ], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "contract BPool", "name": "pool", "type": "address"} + ], + "name": "finalize", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "contract BPool", "name": "pool", "type": "address"}, + {"internalType": "uint256", "name": "poolAmountOut", "type": "uint256"}, + {"internalType": "uint256[]", "name": "maxAmountsIn", "type": "uint256[]"}, + ], + "name": "joinPool", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "contract BPool", "name": "pool", "type": "address"}, + {"internalType": "address", "name": "tokenIn", "type": "address"}, + {"internalType": "uint256", "name": "tokenAmountIn", "type": "uint256"}, + {"internalType": "uint256", "name": "minPoolAmountOut", "type": "uint256"}, + ], + "name": "joinswapExternAmountIn", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "contract BPool", "name": "pool", "type": "address"}, + {"internalType": "address", "name": "newController", "type": "address"}, + ], + "name": "setController", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "contract BPool", "name": "pool", "type": "address"}, + {"internalType": "bool", "name": "publicSwap", "type": "bool"}, + ], + "name": "setPublicSwap", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "contract BPool", "name": "pool", "type": "address"}, + {"internalType": "uint256", "name": "newFee", "type": "uint256"}, + ], + "name": "setSwapFee", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "contract BPool", "name": "pool", "type": "address"}, + {"internalType": "address[]", "name": "tokens", "type": "address[]"}, + {"internalType": "uint256[]", "name": "balances", "type": "uint256[]"}, + {"internalType": "uint256[]", "name": "denorms", "type": "uint256[]"}, + ], + "name": "setTokens", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, +] + +balancer_exchange_proxy = [ + { + "inputs": [{"internalType": "address", "name": "_weth", "type": "address"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "constructor", + }, + { + "anonymous": True, + "inputs": [ + { + "indexed": True, + "internalType": "bytes4", + "name": "sig", + "type": "bytes4", + }, + { + "indexed": True, + "internalType": "address", + "name": "caller", + "type": "address", + }, + { + "indexed": False, + "internalType": "bytes", + "name": "data", + "type": "bytes", + }, + ], + "name": "LOG_CALL", + "type": "event", + }, + {"payable": True, "stateMutability": "payable", "type": "fallback"}, + { + "constant": False, + "inputs": [ + { + "components": [ + {"internalType": "address", "name": "pool", "type": "address"}, + { + "internalType": "uint256", + "name": "tokenInParam", + "type": "uint256", + }, + { + "internalType": "uint256", + "name": "tokenOutParam", + "type": "uint256", + }, + {"internalType": "uint256", "name": "maxPrice", "type": "uint256"}, + ], + "internalType": "struct ExchangeProxy.Swap[]", + "name": "swaps", + "type": "tuple[]", + }, + {"internalType": "address", "name": "tokenOut", "type": "address"}, + {"internalType": "uint256", "name": "minTotalAmountOut", "type": "uint256"}, + ], + "name": "batchEthInSwapExactIn", + "outputs": [ + {"internalType": "uint256", "name": "totalAmountOut", "type": "uint256"} + ], + "payable": True, + "stateMutability": "payable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + { + "components": [ + {"internalType": "address", "name": "pool", "type": "address"}, + { + "internalType": "uint256", + "name": "tokenInParam", + "type": "uint256", + }, + { + "internalType": "uint256", + "name": "tokenOutParam", + "type": "uint256", + }, + {"internalType": "uint256", "name": "maxPrice", "type": "uint256"}, + ], + "internalType": "struct ExchangeProxy.Swap[]", + "name": "swaps", + "type": "tuple[]", + }, + {"internalType": "address", "name": "tokenOut", "type": "address"}, + ], + "name": "batchEthInSwapExactOut", + "outputs": [ + {"internalType": "uint256", "name": "totalAmountIn", "type": "uint256"} + ], + "payable": True, + "stateMutability": "payable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + { + "components": [ + {"internalType": "address", "name": "pool", "type": "address"}, + { + "internalType": "uint256", + "name": "tokenInParam", + "type": "uint256", + }, + { + "internalType": "uint256", + "name": "tokenOutParam", + "type": "uint256", + }, + {"internalType": "uint256", "name": "maxPrice", "type": "uint256"}, + ], + "internalType": "struct ExchangeProxy.Swap[]", + "name": "swaps", + "type": "tuple[]", + }, + {"internalType": "address", "name": "tokenIn", "type": "address"}, + {"internalType": "uint256", "name": "totalAmountIn", "type": "uint256"}, + {"internalType": "uint256", "name": "minTotalAmountOut", "type": "uint256"}, + ], + "name": "batchEthOutSwapExactIn", + "outputs": [ + {"internalType": "uint256", "name": "totalAmountOut", "type": "uint256"} + ], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + { + "components": [ + {"internalType": "address", "name": "pool", "type": "address"}, + { + "internalType": "uint256", + "name": "tokenInParam", + "type": "uint256", + }, + { + "internalType": "uint256", + "name": "tokenOutParam", + "type": "uint256", + }, + {"internalType": "uint256", "name": "maxPrice", "type": "uint256"}, + ], + "internalType": "struct ExchangeProxy.Swap[]", + "name": "swaps", + "type": "tuple[]", + }, + {"internalType": "address", "name": "tokenIn", "type": "address"}, + {"internalType": "uint256", "name": "maxTotalAmountIn", "type": "uint256"}, + ], + "name": "batchEthOutSwapExactOut", + "outputs": [ + {"internalType": "uint256", "name": "totalAmountIn", "type": "uint256"} + ], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + { + "components": [ + {"internalType": "address", "name": "pool", "type": "address"}, + { + "internalType": "uint256", + "name": "tokenInParam", + "type": "uint256", + }, + { + "internalType": "uint256", + "name": "tokenOutParam", + "type": "uint256", + }, + {"internalType": "uint256", "name": "maxPrice", "type": "uint256"}, + ], + "internalType": "struct ExchangeProxy.Swap[]", + "name": "swaps", + "type": "tuple[]", + }, + {"internalType": "address", "name": "tokenIn", "type": "address"}, + {"internalType": "address", "name": "tokenOut", "type": "address"}, + {"internalType": "uint256", "name": "totalAmountIn", "type": "uint256"}, + {"internalType": "uint256", "name": "minTotalAmountOut", "type": "uint256"}, + ], + "name": "batchSwapExactIn", + "outputs": [ + {"internalType": "uint256", "name": "totalAmountOut", "type": "uint256"} + ], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + { + "components": [ + {"internalType": "address", "name": "pool", "type": "address"}, + { + "internalType": "uint256", + "name": "tokenInParam", + "type": "uint256", + }, + { + "internalType": "uint256", + "name": "tokenOutParam", + "type": "uint256", + }, + {"internalType": "uint256", "name": "maxPrice", "type": "uint256"}, + ], + "internalType": "struct ExchangeProxy.Swap[]", + "name": "swaps", + "type": "tuple[]", + }, + {"internalType": "address", "name": "tokenIn", "type": "address"}, + {"internalType": "address", "name": "tokenOut", "type": "address"}, + {"internalType": "uint256", "name": "maxTotalAmountIn", "type": "uint256"}, + ], + "name": "batchSwapExactOut", + "outputs": [ + {"internalType": "uint256", "name": "totalAmountIn", "type": "uint256"} + ], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, +] diff --git a/app/datasources/abis/chainlink.py b/app/datasources/abis/chainlink.py new file mode 100644 index 0000000..5ed5c37 --- /dev/null +++ b/app/datasources/abis/chainlink.py @@ -0,0 +1,5 @@ +import json + +chainlink_token_abi = json.loads( + '[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"transferAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"data","type":"bytes"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]' +) diff --git a/app/utils/abis.py b/app/datasources/abis/compound.py similarity index 85% rename from app/utils/abis.py rename to app/datasources/abis/compound.py index ed1b4bb..b5b2ed8 100644 --- a/app/utils/abis.py +++ b/app/datasources/abis/compound.py @@ -1,16 +1,3 @@ -import json - -gnosis_protocol_abi = json.loads( - '[{"constant":true,"inputs":[],"name":"IMPROVEMENT_DENOMINATOR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getSecondsRemainingInBatch","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getEncodedOrders","outputs":[{"name":"elements","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"buyToken","type":"uint16"},{"name":"sellToken","type":"uint16"},{"name":"validUntil","type":"uint32"},{"name":"buyAmount","type":"uint128"},{"name":"sellAmount","type":"uint128"}],"name":"placeOrder","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"batchId","type":"uint32"},{"name":"claimedObjectiveValue","type":"uint256"},{"name":"owners","type":"address[]"},{"name":"orderIds","type":"uint16[]"},{"name":"buyVolumes","type":"uint128[]"},{"name":"prices","type":"uint128[]"},{"name":"tokenIdsForPrice","type":"uint16[]"}],"name":"submitSolution","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint16"}],"name":"tokenIdToAddressMap","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"requestWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"FEE_FOR_LISTING_TOKEN_IN_OWL","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"previousPageUser","type":"address"},{"name":"pageSize","type":"uint16"}],"name":"getUsersPaginated","outputs":[{"name":"users","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"orderIds","type":"uint16[]"}],"name":"cancelOrders","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"AMOUNT_MINIMUM","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"buyTokens","type":"uint16[]"},{"name":"sellTokens","type":"uint16[]"},{"name":"validFroms","type":"uint32[]"},{"name":"validUntils","type":"uint32[]"},{"name":"buyAmounts","type":"uint128[]"},{"name":"sellAmounts","type":"uint128[]"}],"name":"placeValidFromOrders","outputs":[{"name":"orderIds","type":"uint16[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint16"}],"name":"currentPrices","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"getEncodedUserOrders","outputs":[{"name":"elements","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"orders","outputs":[{"name":"buyToken","type":"uint16"},{"name":"sellToken","type":"uint16"},{"name":"validFrom","type":"uint32"},{"name":"validUntil","type":"uint32"},{"name":"priceNumerator","type":"uint128"},{"name":"priceDenominator","type":"uint128"},{"name":"usedAmount","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"UNLIMITED_ORDER_AMOUNT","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numTokens","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"lastCreditBatchId","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"previousPageUser","type":"address"},{"name":"previousPageUserOffset","type":"uint16"},{"name":"pageSize","type":"uint16"}],"name":"getEncodedUsersPaginated","outputs":[{"name":"elements","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"hasToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"latestSolution","outputs":[{"name":"batchId","type":"uint32"},{"name":"solutionSubmitter","type":"address"},{"name":"feeReward","type":"uint256"},{"name":"objectiveValue","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"},{"name":"token","type":"address"}],"name":"getPendingDeposit","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"cancellations","type":"uint16[]"},{"name":"buyTokens","type":"uint16[]"},{"name":"sellTokens","type":"uint16[]"},{"name":"validFroms","type":"uint32[]"},{"name":"validUntils","type":"uint32[]"},{"name":"buyAmounts","type":"uint128[]"},{"name":"sellAmounts","type":"uint128[]"}],"name":"replaceOrders","outputs":[{"name":"","type":"uint16[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"},{"name":"token","type":"address"}],"name":"getPendingWithdraw","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"batchId","type":"uint32"}],"name":"acceptingSolutions","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"addToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"},{"name":"token","type":"address"}],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FEE_DENOMINATOR","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ENCODED_AUCTION_ELEMENT_WIDTH","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BATCH_TIME","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentBatchId","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"},{"name":"offset","type":"uint16"},{"name":"pageSize","type":"uint16"}],"name":"getEncodedUserOrdersPaginated","outputs":[{"name":"elements","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"tokenAddressToIdMap","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"batchId","type":"uint32"}],"name":"requestFutureWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"},{"name":"token","type":"address"}],"name":"hasValidWithdrawRequest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_TOKENS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"token","type":"address"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MAX_TOUCHED_ORDERS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentObjectiveValue","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"maxTokens","type":"uint256"},{"name":"_feeToken","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"index","type":"uint16"},{"indexed":true,"name":"buyToken","type":"uint16"},{"indexed":true,"name":"sellToken","type":"uint16"},{"indexed":false,"name":"validFrom","type":"uint32"},{"indexed":false,"name":"validUntil","type":"uint32"},{"indexed":false,"name":"priceNumerator","type":"uint128"},{"indexed":false,"name":"priceDenominator","type":"uint128"}],"name":"OrderPlacement","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"id","type":"uint16"}],"name":"TokenListing","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"id","type":"uint16"}],"name":"OrderCancellation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"id","type":"uint16"}],"name":"OrderDeletion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"orderId","type":"uint16"},{"indexed":true,"name":"sellToken","type":"uint16"},{"indexed":false,"name":"buyToken","type":"uint16"},{"indexed":false,"name":"executedSellAmount","type":"uint128"},{"indexed":false,"name":"executedBuyAmount","type":"uint128"}],"name":"Trade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"orderId","type":"uint16"},{"indexed":true,"name":"sellToken","type":"uint16"},{"indexed":false,"name":"buyToken","type":"uint16"},{"indexed":false,"name":"executedSellAmount","type":"uint128"},{"indexed":false,"name":"executedBuyAmount","type":"uint128"}],"name":"TradeReversion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"submitter","type":"address"},{"indexed":false,"name":"utility","type":"uint256"},{"indexed":false,"name":"disregardedUtility","type":"uint256"},{"indexed":false,"name":"burntFees","type":"uint256"},{"indexed":false,"name":"lastAuctionBurntFees","type":"uint256"},{"indexed":false,"name":"prices","type":"uint128[]"},{"indexed":false,"name":"tokenIdsForPrice","type":"uint16[]"}],"name":"SolutionSubmission","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":true,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"batchId","type":"uint32"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":true,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"batchId","type":"uint32"}],"name":"WithdrawRequest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":true,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"}]' -) - -fleet_factory_deterministic_abi = json.loads( - '[{"constant":true,"inputs":[],"name":"proxyFactory","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"size","type":"uint256"},{"name":"template","type":"address"},{"name":"saltNonce","type":"uint256"}],"name":"deployFleetWithNonce","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_proxyFactory","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"fleet","type":"address[]"}],"name":"FleetDeployed","type":"event"}]' -) -fleet_factory_abi = json.loads( - '[{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"size","type":"uint256"},{"name":"template","type":"address"}],"name":"deployFleet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"proxyFactory","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_proxyFactory","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"fleet","type":"address[]"}],"name":"FleetDeployed","type":"event"}]' -) - ctoken_abi = [ { "inputs": [ diff --git a/app/datasources/abis/gnosis_protocol.py b/app/datasources/abis/gnosis_protocol.py new file mode 100644 index 0000000..01adac7 --- /dev/null +++ b/app/datasources/abis/gnosis_protocol.py @@ -0,0 +1,13 @@ +# flake8: noqa E501 +import json + +gnosis_protocol_abi = json.loads( + '[{"constant":true,"inputs":[],"name":"IMPROVEMENT_DENOMINATOR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getSecondsRemainingInBatch","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getEncodedOrders","outputs":[{"name":"elements","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"buyToken","type":"uint16"},{"name":"sellToken","type":"uint16"},{"name":"validUntil","type":"uint32"},{"name":"buyAmount","type":"uint128"},{"name":"sellAmount","type":"uint128"}],"name":"placeOrder","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"batchId","type":"uint32"},{"name":"claimedObjectiveValue","type":"uint256"},{"name":"owners","type":"address[]"},{"name":"orderIds","type":"uint16[]"},{"name":"buyVolumes","type":"uint128[]"},{"name":"prices","type":"uint128[]"},{"name":"tokenIdsForPrice","type":"uint16[]"}],"name":"submitSolution","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint16"}],"name":"tokenIdToAddressMap","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"requestWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"FEE_FOR_LISTING_TOKEN_IN_OWL","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"previousPageUser","type":"address"},{"name":"pageSize","type":"uint16"}],"name":"getUsersPaginated","outputs":[{"name":"users","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"orderIds","type":"uint16[]"}],"name":"cancelOrders","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"AMOUNT_MINIMUM","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"buyTokens","type":"uint16[]"},{"name":"sellTokens","type":"uint16[]"},{"name":"validFroms","type":"uint32[]"},{"name":"validUntils","type":"uint32[]"},{"name":"buyAmounts","type":"uint128[]"},{"name":"sellAmounts","type":"uint128[]"}],"name":"placeValidFromOrders","outputs":[{"name":"orderIds","type":"uint16[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint16"}],"name":"currentPrices","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"getEncodedUserOrders","outputs":[{"name":"elements","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"orders","outputs":[{"name":"buyToken","type":"uint16"},{"name":"sellToken","type":"uint16"},{"name":"validFrom","type":"uint32"},{"name":"validUntil","type":"uint32"},{"name":"priceNumerator","type":"uint128"},{"name":"priceDenominator","type":"uint128"},{"name":"usedAmount","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"UNLIMITED_ORDER_AMOUNT","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numTokens","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"lastCreditBatchId","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"previousPageUser","type":"address"},{"name":"previousPageUserOffset","type":"uint16"},{"name":"pageSize","type":"uint16"}],"name":"getEncodedUsersPaginated","outputs":[{"name":"elements","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"hasToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"latestSolution","outputs":[{"name":"batchId","type":"uint32"},{"name":"solutionSubmitter","type":"address"},{"name":"feeReward","type":"uint256"},{"name":"objectiveValue","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"},{"name":"token","type":"address"}],"name":"getPendingDeposit","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"cancellations","type":"uint16[]"},{"name":"buyTokens","type":"uint16[]"},{"name":"sellTokens","type":"uint16[]"},{"name":"validFroms","type":"uint32[]"},{"name":"validUntils","type":"uint32[]"},{"name":"buyAmounts","type":"uint128[]"},{"name":"sellAmounts","type":"uint128[]"}],"name":"replaceOrders","outputs":[{"name":"","type":"uint16[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"},{"name":"token","type":"address"}],"name":"getPendingWithdraw","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"batchId","type":"uint32"}],"name":"acceptingSolutions","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"addToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"},{"name":"token","type":"address"}],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FEE_DENOMINATOR","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ENCODED_AUCTION_ELEMENT_WIDTH","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BATCH_TIME","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentBatchId","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"},{"name":"offset","type":"uint16"},{"name":"pageSize","type":"uint16"}],"name":"getEncodedUserOrdersPaginated","outputs":[{"name":"elements","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"tokenAddressToIdMap","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"batchId","type":"uint32"}],"name":"requestFutureWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"},{"name":"token","type":"address"}],"name":"hasValidWithdrawRequest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_TOKENS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"token","type":"address"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MAX_TOUCHED_ORDERS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentObjectiveValue","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"maxTokens","type":"uint256"},{"name":"_feeToken","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"index","type":"uint16"},{"indexed":true,"name":"buyToken","type":"uint16"},{"indexed":true,"name":"sellToken","type":"uint16"},{"indexed":false,"name":"validFrom","type":"uint32"},{"indexed":false,"name":"validUntil","type":"uint32"},{"indexed":false,"name":"priceNumerator","type":"uint128"},{"indexed":false,"name":"priceDenominator","type":"uint128"}],"name":"OrderPlacement","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"id","type":"uint16"}],"name":"TokenListing","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"id","type":"uint16"}],"name":"OrderCancellation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"id","type":"uint16"}],"name":"OrderDeletion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"orderId","type":"uint16"},{"indexed":true,"name":"sellToken","type":"uint16"},{"indexed":false,"name":"buyToken","type":"uint16"},{"indexed":false,"name":"executedSellAmount","type":"uint128"},{"indexed":false,"name":"executedBuyAmount","type":"uint128"}],"name":"Trade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"orderId","type":"uint16"},{"indexed":true,"name":"sellToken","type":"uint16"},{"indexed":false,"name":"buyToken","type":"uint16"},{"indexed":false,"name":"executedSellAmount","type":"uint128"},{"indexed":false,"name":"executedBuyAmount","type":"uint128"}],"name":"TradeReversion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"submitter","type":"address"},{"indexed":false,"name":"utility","type":"uint256"},{"indexed":false,"name":"disregardedUtility","type":"uint256"},{"indexed":false,"name":"burntFees","type":"uint256"},{"indexed":false,"name":"lastAuctionBurntFees","type":"uint256"},{"indexed":false,"name":"prices","type":"uint128[]"},{"indexed":false,"name":"tokenIdsForPrice","type":"uint16[]"}],"name":"SolutionSubmission","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":true,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"batchId","type":"uint32"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":true,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"batchId","type":"uint32"}],"name":"WithdrawRequest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":true,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"}]' +) + +fleet_factory_deterministic_abi = json.loads( + '[{"constant":true,"inputs":[],"name":"proxyFactory","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"size","type":"uint256"},{"name":"template","type":"address"},{"name":"saltNonce","type":"uint256"}],"name":"deployFleetWithNonce","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_proxyFactory","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"fleet","type":"address[]"}],"name":"FleetDeployed","type":"event"}]' +) +fleet_factory_abi = json.loads( + '[{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"size","type":"uint256"},{"name":"template","type":"address"}],"name":"deployFleet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"proxyFactory","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_proxyFactory","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"fleet","type":"address[]"}],"name":"FleetDeployed","type":"event"}]' +) diff --git a/app/datasources/abis/idle.py b/app/datasources/abis/idle.py new file mode 100644 index 0000000..16afc03 --- /dev/null +++ b/app/datasources/abis/idle.py @@ -0,0 +1,742 @@ +idle_token_v3 = [ + { + "inputs": [ + {"internalType": "string", "name": "_name", "type": "string"}, + {"internalType": "string", "name": "_symbol", "type": "string"}, + {"internalType": "uint8", "name": "_decimals", "type": "uint8"}, + {"internalType": "address", "name": "_token", "type": "address"}, + {"internalType": "address", "name": "_cToken", "type": "address"}, + {"internalType": "address", "name": "_iToken", "type": "address"}, + {"internalType": "address", "name": "_rebalancer", "type": "address"}, + {"internalType": "address", "name": "_priceCalculator", "type": "address"}, + {"internalType": "address", "name": "_idleCompound", "type": "address"}, + {"internalType": "address", "name": "_idleFulcrum", "type": "address"}, + ], + "payable": False, + "stateMutability": "nonpayable", + "type": "constructor", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "owner", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "spender", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "value", + "type": "uint256", + }, + ], + "name": "Approval", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "previousOwner", + "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": True, + "internalType": "address", + "name": "account", + "type": "address", + } + ], + "name": "PauserAdded", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "account", + "type": "address", + } + ], + "name": "PauserRemoved", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "from", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "to", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "value", + "type": "uint256", + }, + ], + "name": "Transfer", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": False, + "internalType": "address", + "name": "account", + "type": "address", + } + ], + "name": "Unpaused", + "type": "event", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "account", "type": "address"}], + "name": "addPauser", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "name": "allAvailableTokens", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [ + {"internalType": "address", "name": "owner", "type": "address"}, + {"internalType": "address", "name": "spender", "type": "address"}, + ], + "name": "allowance", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "spender", "type": "address"}, + {"internalType": "uint256", "name": "amount", "type": "uint256"}, + ], + "name": "approve", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "account", "type": "address"}], + "name": "balanceOf", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "decimals", + "outputs": [{"internalType": "uint8", "name": "", "type": "uint8"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "spender", "type": "address"}, + {"internalType": "uint256", "name": "subtractedValue", "type": "uint256"}, + ], + "name": "decreaseAllowance", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "fee", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "feeAddress", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "gst2", + "outputs": [ + {"internalType": "contract GasToken", "name": "", "type": "address"} + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "iToken", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "spender", "type": "address"}, + {"internalType": "uint256", "name": "addedValue", "type": "uint256"}, + ], + "name": "increaseAllowance", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "isNewProtocolDelayed", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "isOwner", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "account", "type": "address"}], + "name": "isPauser", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "isRiskAdjusted", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "name": "lastAllocations", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "lastITokenPrice", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "manualPlay", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "name", + "outputs": [{"internalType": "string", "name": "", "type": "string"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "owner", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [], + "name": "pause", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "paused", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "priceCalculator", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "", "type": "address"}], + "name": "protocolWrappers", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "rebalancer", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "", "type": "address"}], + "name": "releaseTimes", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [], + "name": "renouncePauser", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "symbol", + "outputs": [{"internalType": "string", "name": "", "type": "string"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "token", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "tokenDecimals", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "totalSupply", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "newOwner", "type": "address"}], + "name": "transferOwnership", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [], + "name": "unpause", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "", "type": "address"}], + "name": "userAvgPrices", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_rebalancer", "type": "address"} + ], + "name": "setRebalancer", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_priceCalculator", "type": "address"} + ], + "name": "setPriceCalculator", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_token", "type": "address"}, + {"internalType": "address", "name": "_wrapper", "type": "address"}, + ], + "name": "setProtocolWrapper", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "bool", "name": "_manualPlay", "type": "bool"}], + "name": "setManualPlay", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "bool", "name": "_isRiskAdjusted", "type": "bool"}], + "name": "setIsRiskAdjusted", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [], + "name": "delayNewProtocols", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "uint256", "name": "_fee", "type": "uint256"}], + "name": "setFee", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_feeAddress", "type": "address"} + ], + "name": "setFeeAddress", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "uint256[]", "name": "_amounts", "type": "uint256[]"} + ], + "name": "setGasParams", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "tokenPrice", + "outputs": [{"internalType": "uint256", "name": "price", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "getAPRs", + "outputs": [ + {"internalType": "address[]", "name": "addresses", "type": "address[]"}, + {"internalType": "uint256[]", "name": "aprs", "type": "uint256[]"}, + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "getAvgAPR", + "outputs": [{"internalType": "uint256", "name": "avgApr", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "sender", "type": "address"}, + {"internalType": "address", "name": "recipient", "type": "address"}, + {"internalType": "uint256", "name": "amount", "type": "uint256"}, + ], + "name": "transferFrom", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "recipient", "type": "address"}, + {"internalType": "uint256", "name": "amount", "type": "uint256"}, + ], + "name": "transfer", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "uint256", "name": "_amount", "type": "uint256"}, + {"internalType": "bool", "name": "_skipWholeRebalance", "type": "bool"}, + ], + "name": "mintIdleToken", + "outputs": [ + {"internalType": "uint256", "name": "mintedTokens", "type": "uint256"} + ], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "uint256", "name": "_amount", "type": "uint256"}, + {"internalType": "uint256[]", "name": "", "type": "uint256[]"}, + ], + "name": "mintIdleToken", + "outputs": [ + {"internalType": "uint256", "name": "mintedTokens", "type": "uint256"} + ], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "uint256", "name": "_amount", "type": "uint256"}, + {"internalType": "bool", "name": "_skipRebalance", "type": "bool"}, + {"internalType": "uint256[]", "name": "", "type": "uint256[]"}, + ], + "name": "redeemIdleToken", + "outputs": [ + {"internalType": "uint256", "name": "redeemedTokens", "type": "uint256"} + ], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "uint256", "name": "_amount", "type": "uint256"}], + "name": "redeemInterestBearingTokens", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + { + "internalType": "uint256[]", + "name": "_newAllocations", + "type": "uint256[]", + } + ], + "name": "openRebalance", + "outputs": [ + {"internalType": "bool", "name": "", "type": "bool"}, + {"internalType": "uint256", "name": "avgApr", "type": "uint256"}, + ], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [], + "name": "rebalanceWithGST", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [], + "name": "rebalance", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "uint256", "name": "", "type": "uint256"}, + {"internalType": "uint256[]", "name": "", "type": "uint256[]"}, + ], + "name": "rebalance", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "getCurrentAllocations", + "outputs": [ + { + "internalType": "address[]", + "name": "tokenAddresses", + "type": "address[]", + }, + {"internalType": "uint256[]", "name": "amounts", "type": "uint256[]"}, + {"internalType": "uint256", "name": "total", "type": "uint256"}, + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, +] diff --git a/app/datasources/abis/maker_dao.py b/app/datasources/abis/maker_dao.py new file mode 100644 index 0000000..d953929 --- /dev/null +++ b/app/datasources/abis/maker_dao.py @@ -0,0 +1,343 @@ +import json + +maker_dao_abis = [ + json.loads( + '[{"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "tokenAddress", "type": "address"}, {"indexed": false, "internalType": "address", "name": "to", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256"}, {"indexed": true, "internalType": "bytes", "name": "paymentReference", "type": "bytes"}, {"indexed": false, "internalType": "uint256", "name": "feeAmount", "type": "uint256"}, {"indexed": false, "internalType": "address", "name": "feeAddress", "type": "address"}], "name": "TransferWithReferenceAndFee", "type": "event"}, {"payable": true, "stateMutability": "payable", "type": "fallback"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_tokenAddress", "type": "address"}, {"internalType": "address", "name": "_to", "type": "address"}, {"internalType": "uint256", "name": "_amount", "type": "uint256"}, {"internalType": "bytes", "name": "_paymentReference", "type": "bytes"}, {"internalType": "uint256", "name": "_feeAmount", "type": "uint256"}, {"internalType": "address", "name": "_feeAddress", "type": "address"}], "name": "transferFromWithReferenceAndFee", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "address", "name": "vat", "type": "address"}, {"internalType": "address", "name": "dai", "type": "address"}], "name": "newDaiJoin", "outputs": [{"internalType": "contract DaiJoin", "name": "daiJoin", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "uint256", "name": "supply", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Approval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "dst", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Transfer", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "guy", "type": "address"}], "name": "allowance", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "approve", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "src", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "decimals", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "name", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "symbol", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "totalSupply", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transfer", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transferFrom", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "contract DSValue", "name": "value", "type": "address"}, {"internalType": "bytes32", "name": "wut", "type": "bytes32"}], "name": "doPoke", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "contract DSValue", "name": "value", "type": "address"}], "name": "doVoid", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "vat_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"constant": true, "inputs": [], "name": "base", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "drip", "outputs": [{"internalType": "uint256", "name": "rate", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "address", "name": "data", "type": "address"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "ilks", "outputs": [{"internalType": "uint256", "name": "duty", "type": "uint256"}, {"internalType": "uint256", "name": "rho", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "init", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "vat", "outputs": [{"internalType": "contract VatLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "vow", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "address", "name": "end", "type": "address"}], "name": "cage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "address", "name": "to", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "dripAndFile", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "dripAndFile", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "address", "name": "data", "type": "address"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "address", "name": "data", "type": "address"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "init", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "address", "name": "to", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "pause", "type": "address"}, {"internalType": "address", "name": "newAuthority", "type": "address"}], "name": "setAuthority", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "pause", "type": "address"}, {"internalType": "address", "name": "newAuthority", "type": "address"}, {"internalType": "uint256", "name": "newDelay", "type": "uint256"}], "name": "setAuthorityAndDelay", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "pause", "type": "address"}, {"internalType": "uint256", "name": "newDelay", "type": "uint256"}], "name": "setDelay", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "cat_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "flip", "type": "address"}, {"indexed": false, "internalType": "address", "name": "cat", "type": "address"}], "name": "Deny", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "flip", "type": "address"}, {"indexed": false, "internalType": "address", "name": "usr", "type": "address"}], "name": "Rely", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "oldAuthority", "type": "address"}, {"indexed": false, "internalType": "address", "name": "newAuthority", "type": "address"}], "name": "SetAuthority", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "oldOwner", "type": "address"}, {"indexed": false, "internalType": "address", "name": "newOwner", "type": "address"}], "name": "SetOwner", "type": "event"}, {"constant": true, "inputs": [], "name": "authority", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "cat", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "flip", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "flip", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "authority_", "type": "address"}], "name": "setAuthority", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "owner_", "type": "address"}], "name": "setOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "vat_", "type": "address"}, {"internalType": "address", "name": "dai_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"constant": false, "inputs": [], "name": "cage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "dai", "outputs": [{"internalType": "contract DSTokenLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "exit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "join", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "live", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "vat", "outputs": [{"internalType": "contract VatLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "uint256", "name": "supply", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Approval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "dst", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Transfer", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "guy", "type": "address"}], "name": "allowance", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "approve", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "src", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "name", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "symbol", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "totalSupply", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transfer", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transferFrom", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "vat_", "type": "address"}, {"internalType": "address", "name": "flapper_", "type": "address"}, {"internalType": "address", "name": "flopper_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"constant": true, "inputs": [], "name": "Ash", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "Sin", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "bump", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "cage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "dump", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "tab", "type": "uint256"}], "name": "fess", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "address", "name": "data", "type": "address"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "flap", "outputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "flapper", "outputs": [{"internalType": "contract FlapLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "era", "type": "uint256"}], "name": "flog", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "flop", "outputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "flopper", "outputs": [{"internalType": "contract FlopLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "rad", "type": "uint256"}], "name": "heal", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "hump", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "rad", "type": "uint256"}], "name": "kiss", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "live", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "name": "sin", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "sump", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "vat", "outputs": [{"internalType": "contract VatLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "wait", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "vat_", "type": "address"}, {"internalType": "bytes32", "name": "ilk_", "type": "bytes32"}, {"internalType": "address", "name": "gem_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"constant": false, "inputs": [], "name": "cage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "dec", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "exit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "gem", "outputs": [{"internalType": "contract GemLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "ilk", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "join", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "live", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "vat", "outputs": [{"internalType": "contract VatLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "uint256", "name": "supply", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Approval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "dst", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Transfer", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "guy", "type": "address"}], "name": "allowance", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "approve", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "src", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "decimals", "outputs": [{"internalType": "uint8", "name": "", "type": "uint8"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "name", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "symbol", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "totalSupply", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transfer", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transferFrom", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "usr", "type": "address"}], "name": "LogDeny", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "usr", "type": "address"}], "name": "LogRely", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "newRoot", "type": "address"}], "name": "LogSetRoot", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}, {"internalType": "bytes4", "name": "sig", "type": "bytes4"}], "name": "canCall", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "root", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "setRoot", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}, {"internalType": "bytes32", "name": "", "type": "bytes32"}, {"internalType": "bytes32", "name": "", "type": "bytes32"}, {"internalType": "uint256", "name": "", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}, {"internalType": "bytes32", "name": "", "type": "bytes32"}, {"internalType": "uint256", "name": "", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}, {"internalType": "bytes32", "name": "", "type": "bytes32"}, {"internalType": "bytes32", "name": "", "type": "bytes32"}, {"internalType": "address", "name": "", "type": "address"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}, {"internalType": "uint256", "name": "", "type": "uint256"}], "name": "setAuthorityAndDelay", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "vat_", "type": "address"}, {"internalType": "address", "name": "gem_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "uint256", "name": "id", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "lot", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "bid", "type": "uint256"}], "name": "Kick", "type": "event"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"constant": true, "inputs": [], "name": "beg", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "name": "bids", "outputs": [{"internalType": "uint256", "name": "bid", "type": "uint256"}, {"internalType": "uint256", "name": "lot", "type": "uint256"}, {"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint48", "name": "tic", "type": "uint48"}, {"internalType": "uint48", "name": "end", "type": "uint48"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "rad", "type": "uint256"}], "name": "cage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}], "name": "deal", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "gem", "outputs": [{"internalType": "contract GemLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "lot", "type": "uint256"}, {"internalType": "uint256", "name": "bid", "type": "uint256"}], "name": "kick", "outputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "kicks", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "live", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "tau", "outputs": [{"internalType": "uint48", "name": "", "type": "uint48"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}, {"internalType": "uint256", "name": "lot", "type": "uint256"}, {"internalType": "uint256", "name": "bid", "type": "uint256"}], "name": "tend", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}], "name": "tick", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "ttl", "outputs": [{"internalType": "uint48", "name": "", "type": "uint48"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "vat", "outputs": [{"internalType": "contract VatLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}], "name": "yank", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "vat_", "type": "address"}, {"internalType": "bytes32", "name": "ilk_", "type": "bytes32"}, {"internalType": "address", "name": "gem_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"constant": false, "inputs": [], "name": "cage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "dec", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "exit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "gem", "outputs": [{"internalType": "contract GemLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "ilk", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "implementations", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "urn", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "join", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "live", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "implementation", "type": "address"}, {"internalType": "uint256", "name": "permitted", "type": "uint256"}], "name": "setImplementation", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "vat", "outputs": [{"internalType": "contract VatLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "address", "name": "vat", "type": "address"}], "name": "newSpotter", "outputs": [{"internalType": "contract Spotter", "name": "spotter", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "contract DSChief", "name": "chief_", "type": "address"}, {"internalType": "contract DSToken", "name": "gov_", "type": "address"}, {"internalType": "contract DSToken", "name": "iou_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "approveGov", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "approveIou", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "amt", "type": "uint256"}], "name": "doChiefFree", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "amt", "type": "uint256"}], "name": "doChiefLock", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "amt", "type": "uint256"}], "name": "doProxyFree", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "doProxyFreeAll", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "amt", "type": "uint256"}], "name": "doProxyLock", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address[]", "name": "yays", "type": "address[]"}], "name": "doProxyVote", "outputs": [{"internalType": "bytes32", "name": "slate", "type": "bytes32"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "slate", "type": "bytes32"}], "name": "doProxyVote", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "amt", "type": "uint256"}], "name": "doTransfer", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "proxy", "outputs": [{"internalType": "contract VoteProxy", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "contract VoteProxy", "name": "proxy_", "type": "address"}], "name": "setProxy", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "contract VatFab", "name": "vatFab_", "type": "address"}, {"internalType": "contract JugFab", "name": "jugFab_", "type": "address"}, {"internalType": "contract VowFab", "name": "vowFab_", "type": "address"}, {"internalType": "contract CatFab", "name": "catFab_", "type": "address"}, {"internalType": "contract DaiFab", "name": "daiFab_", "type": "address"}, {"internalType": "contract DaiJoinFab", "name": "daiJoinFab_", "type": "address"}, {"internalType": "contract FlapFab", "name": "flapFab_", "type": "address"}, {"internalType": "contract FlopFab", "name": "flopFab_", "type": "address"}, {"internalType": "contract FlipFab", "name": "flipFab_", "type": "address"}, {"internalType": "contract SpotFab", "name": "spotFab_", "type": "address"}, {"internalType": "contract PotFab", "name": "potFab_", "type": "address"}, {"internalType": "contract EndFab", "name": "endFab_", "type": "address"}, {"internalType": "contract ESMFab", "name": "esmFab_", "type": "address"}, {"internalType": "contract PauseFab", "name": "pauseFab_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "authority", "type": "address"}], "name": "LogSetAuthority", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "owner", "type": "address"}], "name": "LogSetOwner", "type": "event"}, {"constant": true, "inputs": [], "name": "authority", "outputs": [{"internalType": "contract DSAuthority", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "cat", "outputs": [{"internalType": "contract Cat", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "catFab", "outputs": [{"internalType": "contract CatFab", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "dai", "outputs": [{"internalType": "contract Dai", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "daiFab", "outputs": [{"internalType": "contract DaiFab", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "daiJoin", "outputs": [{"internalType": "contract DaiJoin", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "daiJoinFab", "outputs": [{"internalType": "contract DaiJoinFab", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "gov", "type": "address"}], "name": "deployAuctions", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "address", "name": "join", "type": "address"}, {"internalType": "address", "name": "pip", "type": "address"}], "name": "deployCollateral", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "chainId", "type": "uint256"}], "name": "deployDai", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "deployLiquidator", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "delay", "type": "uint256"}, {"internalType": "address", "name": "authority", "type": "address"}], "name": "deployPause", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "gov", "type": "address"}, {"internalType": "address", "name": "pit", "type": "address"}, {"internalType": "uint256", "name": "min", "type": "uint256"}], "name": "deployShutdown", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "deployTaxation", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "deployVat", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "end", "outputs": [{"internalType": "contract End", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "endFab", "outputs": [{"internalType": "contract EndFab", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "esm", "outputs": [{"internalType": "contract ESM", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "esmFab", "outputs": [{"internalType": "contract ESMFab", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "flap", "outputs": [{"internalType": "contract Flapper", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "flapFab", "outputs": [{"internalType": "contract FlapFab", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "flipFab", "outputs": [{"internalType": "contract FlipFab", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "flop", "outputs": [{"internalType": "contract Flopper", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "flopFab", "outputs": [{"internalType": "contract FlopFab", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "ilks", "outputs": [{"internalType": "contract Flipper", "name": "flip", "type": "address"}, {"internalType": "address", "name": "join", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "jug", "outputs": [{"internalType": "contract Jug", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "jugFab", "outputs": [{"internalType": "contract JugFab", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "pause", "outputs": [{"internalType": "contract DSPause", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "pauseFab", "outputs": [{"internalType": "contract PauseFab", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "pot", "outputs": [{"internalType": "contract Pot", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "potFab", "outputs": [{"internalType": "contract PotFab", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "releaseAuth", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "releaseAuthFlip", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "contract DSAuthority", "name": "authority_", "type": "address"}], "name": "setAuthority", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "owner_", "type": "address"}], "name": "setOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "spotFab", "outputs": [{"internalType": "contract SpotFab", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "spotter", "outputs": [{"internalType": "contract Spotter", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "step", "outputs": [{"internalType": "uint8", "name": "", "type": "uint8"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "vat", "outputs": [{"internalType": "contract Vat", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "vatFab", "outputs": [{"internalType": "contract VatFab", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "vow", "outputs": [{"internalType": "contract Vow", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "vowFab", "outputs": [{"internalType": "contract VowFab", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "contract DSChief", "name": "chief_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "cold", "type": "address"}, {"indexed": true, "internalType": "address", "name": "hot", "type": "address"}, {"indexed": true, "internalType": "address", "name": "voteProxy", "type": "address"}], "name": "LinkConfirmed", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "cold", "type": "address"}, {"indexed": true, "internalType": "address", "name": "hot", "type": "address"}], "name": "LinkRequested", "type": "event"}, {"constant": false, "inputs": [{"internalType": "address", "name": "cold", "type": "address"}], "name": "approveLink", "outputs": [{"internalType": "contract VoteProxy", "name": "voteProxy", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "breakLink", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "chief", "outputs": [{"internalType": "contract DSChief", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "coldMap", "outputs": [{"internalType": "contract VoteProxy", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "hasProxy", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "hotMap", "outputs": [{"internalType": "contract VoteProxy", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "hot", "type": "address"}], "name": "initiateLink", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "linkRequests", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "linkSelf", "outputs": [{"internalType": "contract VoteProxy", "name": "voteProxy", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "uint256", "name": "supply", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Approval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "dst", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Transfer", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "guy", "type": "address"}], "name": "allowance", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "approve", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "src", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "decimals", "outputs": [{"internalType": "uint8", "name": "", "type": "uint8"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "implementation", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "name", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newImplementation", "type": "address"}], "name": "setImplementation", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "symbol", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "totalSupply", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transfer", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transferFrom", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"components": [{"internalType": "address", "name": "target", "type": "address"}, {"internalType": "bytes", "name": "callData", "type": "bytes"}], "internalType": "struct Multicall.Call[]", "name": "calls", "type": "tuple[]"}], "name": "aggregate", "outputs": [{"internalType": "uint256", "name": "blockNumber", "type": "uint256"}, {"internalType": "bytes[]", "name": "returnData", "type": "bytes[]"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "uint256", "name": "blockNumber", "type": "uint256"}], "name": "getBlockHash", "outputs": [{"internalType": "bytes32", "name": "blockHash", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "getCurrentBlockCoinbase", "outputs": [{"internalType": "address", "name": "coinbase", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "getCurrentBlockDifficulty", "outputs": [{"internalType": "uint256", "name": "difficulty", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "getCurrentBlockGasLimit", "outputs": [{"internalType": "uint256", "name": "gaslimit", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "getCurrentBlockTimestamp", "outputs": [{"internalType": "uint256", "name": "timestamp", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "addr", "type": "address"}], "name": "getEthBalance", "outputs": [{"internalType": "uint256", "name": "balance", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "getLastBlockHash", "outputs": [{"internalType": "bytes32", "name": "blockHash", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "address", "name": "vat", "type": "address"}, {"internalType": "address", "name": "gov", "type": "address"}], "name": "newFlop", "outputs": [{"internalType": "contract Flopper", "name": "flop", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "factory_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"constant": false, "inputs": [], "name": "build", "outputs": [{"internalType": "address payable", "name": "proxy", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "owner", "type": "address"}], "name": "build", "outputs": [{"internalType": "address payable", "name": "proxy", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "proxies", "outputs": [{"internalType": "contract DSProxy", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "address", "name": "apt", "type": "address"}, {"internalType": "address", "name": "urn", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "daiJoin_join", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Approval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "dst", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Deposit", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "dst", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Transfer", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Withdrawal", "type": "event"}, {"payable": true, "stateMutability": "payable", "type": "fallback"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}], "name": "allowance", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "approve", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "decimals", "outputs": [{"internalType": "uint8", "name": "", "type": "uint8"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "deposit", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [], "name": "name", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "symbol", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "totalSupply", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transfer", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transferFrom", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "withdraw", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "address", "name": "vat", "type": "address"}], "name": "newCat", "outputs": [{"internalType": "contract Cat", "name": "cat", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "sender", "type": "address"}, {"indexed": true, "internalType": "address", "name": "owner", "type": "address"}, {"indexed": false, "internalType": "address", "name": "proxy", "type": "address"}, {"indexed": false, "internalType": "address", "name": "cache", "type": "address"}], "name": "Created", "type": "event"}, {"constant": false, "inputs": [], "name": "build", "outputs": [{"internalType": "address payable", "name": "proxy", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "owner", "type": "address"}], "name": "build", "outputs": [{"internalType": "address payable", "name": "proxy", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "cache", "outputs": [{"internalType": "contract DSProxyCache", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "isProxy", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "uint256", "name": "chainId_", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Approval", "type": "event"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "dst", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Transfer", "type": "event"}, {"constant": true, "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}], "name": "allowance", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "approve", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "burn", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "decimals", "outputs": [{"internalType": "uint8", "name": "", "type": "uint8"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "mint", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "move", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "name", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "nonces", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "holder", "type": "address"}, {"internalType": "address", "name": "spender", "type": "address"}, {"internalType": "uint256", "name": "nonce", "type": "uint256"}, {"internalType": "uint256", "name": "expiry", "type": "uint256"}, {"internalType": "bool", "name": "allowed", "type": "bool"}, {"internalType": "uint8", "name": "v", "type": "uint8"}, {"internalType": "bytes32", "name": "r", "type": "bytes32"}, {"internalType": "bytes32", "name": "s", "type": "bytes32"}], "name": "permit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "pull", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "push", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "symbol", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "totalSupply", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transfer", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transferFrom", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "version", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"constant": true, "inputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}], "name": "bids", "outputs": [{"internalType": "uint256", "name": "bid", "type": "uint256"}, {"internalType": "uint256", "name": "lot", "type": "uint256"}, {"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint48", "name": "tic", "type": "uint48"}, {"internalType": "uint48", "name": "end", "type": "uint48"}, {"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "address", "name": "gal", "type": "address"}, {"internalType": "uint256", "name": "tab", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}], "name": "yank", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "address", "name": "urn", "type": "address"}, {"internalType": "address", "name": "gal", "type": "address"}, {"internalType": "uint256", "name": "tab", "type": "uint256"}, {"internalType": "uint256", "name": "lot", "type": "uint256"}, {"internalType": "uint256", "name": "bid", "type": "uint256"}], "name": "kick", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"constant": true, "inputs": [{"internalType": "bytes", "name": "_code", "type": "bytes"}], "name": "read", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes", "name": "_code", "type": "bytes"}], "name": "write", "outputs": [{"internalType": "address", "name": "target", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"constant": true, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "guy", "type": "address"}], "name": "getCdpsAsc", "outputs": [{"internalType": "uint256[]", "name": "ids", "type": "uint256[]"}, {"internalType": "address[]", "name": "urns", "type": "address[]"}, {"internalType": "bytes32[]", "name": "ilks", "type": "bytes32[]"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "guy", "type": "address"}], "name": "getCdpsDesc", "outputs": [{"internalType": "uint256[]", "name": "ids", "type": "uint256[]"}, {"internalType": "address[]", "name": "urns", "type": "address[]"}, {"internalType": "bytes32[]", "name": "ilks", "type": "bytes32[]"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"payable": false, "stateMutability": "nonpayable", "type": "fallback"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "address", "name": "vat", "type": "address"}], "name": "newJug", "outputs": [{"internalType": "contract Jug", "name": "jug", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"constant": true, "inputs": [], "name": "get", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "uint256", "name": "_val", "type": "uint256"}], "name": "getAdd", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "getAnd10", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}, {"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "_val", "type": "uint256"}], "name": "set", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Approval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "dst", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Deposit", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "dst", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Transfer", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Withdrawal", "type": "event"}, {"payable": true, "stateMutability": "payable", "type": "fallback"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}], "name": "allowance", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "approve", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "decimals", "outputs": [{"internalType": "uint8", "name": "", "type": "uint8"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "deposit", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "exit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "join", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [], "name": "name", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "symbol", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "totalSupply", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transfer", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transferFrom", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "withdraw", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "foo", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "bar", "type": "bytes32"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}, {"indexed": false, "internalType": "bytes", "name": "fax", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "authority", "type": "address"}], "name": "LogSetAuthority", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "owner", "type": "address"}], "name": "LogSetOwner", "type": "event"}, {"constant": true, "inputs": [], "name": "authority", "outputs": [{"internalType": "contract DSAuthority", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "peek", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}, {"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "wut", "type": "bytes32"}], "name": "poke", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "read", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "contract DSAuthority", "name": "authority_", "type": "address"}], "name": "setAuthority", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "owner_", "type": "address"}], "name": "setOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "void", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "authority", "type": "address"}], "name": "LogSetAuthority", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "owner", "type": "address"}], "name": "LogSetOwner", "type": "event"}, {"constant": true, "inputs": [], "name": "authority", "outputs": [{"internalType": "contract DSAuthority", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "cap1", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "cap2", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "flag1", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "flag2", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "contract DSAuthority", "name": "authority_", "type": "address"}], "name": "setAuthority", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "owner_", "type": "address"}], "name": "setOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "vat_", "type": "address"}, {"internalType": "address", "name": "gem_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "uint256", "name": "id", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "lot", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "bid", "type": "uint256"}, {"indexed": true, "internalType": "address", "name": "gal", "type": "address"}], "name": "Kick", "type": "event"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"constant": true, "inputs": [], "name": "beg", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "name": "bids", "outputs": [{"internalType": "uint256", "name": "bid", "type": "uint256"}, {"internalType": "uint256", "name": "lot", "type": "uint256"}, {"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint48", "name": "tic", "type": "uint48"}, {"internalType": "uint48", "name": "end", "type": "uint48"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "cage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}], "name": "deal", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}, {"internalType": "uint256", "name": "lot", "type": "uint256"}, {"internalType": "uint256", "name": "bid", "type": "uint256"}], "name": "dent", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "gem", "outputs": [{"internalType": "contract GemLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "gal", "type": "address"}, {"internalType": "uint256", "name": "lot", "type": "uint256"}, {"internalType": "uint256", "name": "bid", "type": "uint256"}], "name": "kick", "outputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "kicks", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "live", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "pad", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "tau", "outputs": [{"internalType": "uint48", "name": "", "type": "uint48"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}], "name": "tick", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "ttl", "outputs": [{"internalType": "uint48", "name": "", "type": "uint48"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "vat", "outputs": [{"internalType": "contract VatLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "vow", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}], "name": "yank", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Approval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "dst", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Transfer", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "guy", "type": "address"}], "name": "allowance", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "approve", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "totalSupply", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transfer", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transferFrom", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "contract DSChief", "name": "_chief", "type": "address"}, {"internalType": "address", "name": "_cold", "type": "address"}, {"internalType": "address", "name": "_hot", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"constant": true, "inputs": [], "name": "chief", "outputs": [{"internalType": "contract DSChief", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "cold", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "free", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "freeAll", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "gov", "outputs": [{"internalType": "contract DSToken", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "hot", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "iou", "outputs": [{"internalType": "contract DSToken", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "lock", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "slate", "type": "bytes32"}], "name": "vote", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address[]", "name": "yays", "type": "address[]"}], "name": "vote", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "address", "name": "vat", "type": "address"}, {"internalType": "address", "name": "gov", "type": "address"}], "name": "newFlap", "outputs": [{"internalType": "contract Flapper", "name": "flap", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "contract DSToken", "name": "token_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"constant": true, "inputs": [{"internalType": "address", "name": "owner", "type": "address"}, {"internalType": "address", "name": "spender", "type": "address"}], "name": "doAllowance", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "doApprove", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "recipient", "type": "address"}, {"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "doApprove", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "who", "type": "address"}], "name": "doBalanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "doBurn", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "doBurn", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "doMint", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "doMint", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "doMove", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "doPull", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "doPush", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "name", "type": "bytes32"}], "name": "doSetName", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "to", "type": "address"}, {"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "doTransfer", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "from", "type": "address"}, {"internalType": "address", "name": "to", "type": "address"}, {"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "doTransferFrom", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "contract FlipperMom", "name": "mom_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"constant": false, "inputs": [{"internalType": "address", "name": "flip", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "flip", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newAuthority", "type": "address"}], "name": "setAuthority", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newOwner", "type": "address"}], "name": "setOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "bytes32", "name": "symbol_", "type": "bytes32"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Approval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Burn", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "authority", "type": "address"}], "name": "LogSetAuthority", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "owner", "type": "address"}], "name": "LogSetOwner", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Mint", "type": "event"}, {"anonymous": false, "inputs": [], "name": "Start", "type": "event"}, {"anonymous": false, "inputs": [], "name": "Stop", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "dst", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Transfer", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}], "name": "allowance", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "approve", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "approve", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "authority", "outputs": [{"internalType": "contract DSAuthority", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "burn", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "burn", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "decimals", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "mint", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "mint", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "move", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "name", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "pull", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "push", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "contract DSAuthority", "name": "authority_", "type": "address"}], "name": "setAuthority", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "name_", "type": "bytes32"}], "name": "setName", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "owner_", "type": "address"}], "name": "setOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "start", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "stop", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "stopped", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "symbol", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "totalSupply", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transfer", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transferFrom", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "contract MkrAuthority", "name": "authority_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "burn", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "burn", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "mint", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "notMintOrBurn", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "setRoot", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "vat_", "type": "address"}, {"internalType": "address", "name": "cat_", "type": "address"}, {"internalType": "address", "name": "spot_", "type": "address"}], "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "AddIlk", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "usr", "type": "address"}], "name": "Deny", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "NameError", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "usr", "type": "address"}], "name": "Rely", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "RemoveIlk", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "SymbolError", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "UpdateIlk", "type": "event"}, {"inputs": [{"internalType": "address", "name": "adapter", "type": "address"}], "name": "add", "outputs": [], "stateMutability": "nonpayable", "type": "function"}, {"inputs": [], "name": "cat", "outputs": [{"internalType": "contract CatLike", "name": "", "type": "address"}], "stateMutability": "view", "type": "function"}, {"inputs": [], "name": "count", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "stateMutability": "view", "type": "function"}, {"inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "dec", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "stateMutability": "view", "type": "function"}, {"inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "deny", "outputs": [], "stateMutability": "nonpayable", "type": "function"}, {"inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "stateMutability": "nonpayable", "type": "function"}, {"inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "string", "name": "data", "type": "string"}], "name": "file", "outputs": [], "stateMutability": "nonpayable", "type": "function"}, {"inputs": [{"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "address", "name": "data", "type": "address"}], "name": "file", "outputs": [], "stateMutability": "nonpayable", "type": "function"}, {"inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "address", "name": "data", "type": "address"}], "name": "file", "outputs": [], "stateMutability": "nonpayable", "type": "function"}, {"inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "flip", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "stateMutability": "view", "type": "function"}, {"inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "gem", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "stateMutability": "view", "type": "function"}, {"inputs": [{"internalType": "uint256", "name": "pos", "type": "uint256"}], "name": "get", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "stateMutability": "view", "type": "function"}, {"inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "ilkData", "outputs": [{"internalType": "uint256", "name": "pos", "type": "uint256"}, {"internalType": "address", "name": "gem", "type": "address"}, {"internalType": "address", "name": "pip", "type": "address"}, {"internalType": "address", "name": "join", "type": "address"}, {"internalType": "address", "name": "flip", "type": "address"}, {"internalType": "uint256", "name": "dec", "type": "uint256"}, {"internalType": "string", "name": "name", "type": "string"}, {"internalType": "string", "name": "symbol", "type": "string"}], "stateMutability": "view", "type": "function"}, {"inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "info", "outputs": [{"internalType": "string", "name": "name", "type": "string"}, {"internalType": "string", "name": "symbol", "type": "string"}, {"internalType": "uint256", "name": "dec", "type": "uint256"}, {"internalType": "address", "name": "gem", "type": "address"}, {"internalType": "address", "name": "pip", "type": "address"}, {"internalType": "address", "name": "join", "type": "address"}, {"internalType": "address", "name": "flip", "type": "address"}], "stateMutability": "view", "type": "function"}, {"inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "join", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "stateMutability": "view", "type": "function"}, {"inputs": [], "name": "list", "outputs": [{"internalType": "bytes32[]", "name": "", "type": "bytes32[]"}], "stateMutability": "view", "type": "function"}, {"inputs": [{"internalType": "uint256", "name": "start", "type": "uint256"}, {"internalType": "uint256", "name": "end", "type": "uint256"}], "name": "list", "outputs": [{"internalType": "bytes32[]", "name": "", "type": "bytes32[]"}], "stateMutability": "view", "type": "function"}, {"inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "name", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "stateMutability": "view", "type": "function"}, {"inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "pip", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "stateMutability": "view", "type": "function"}, {"inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "pos", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "stateMutability": "view", "type": "function"}, {"inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "rely", "outputs": [], "stateMutability": "nonpayable", "type": "function"}, {"inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "remove", "outputs": [], "stateMutability": "nonpayable", "type": "function"}, {"inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "removeAuth", "outputs": [], "stateMutability": "nonpayable", "type": "function"}, {"inputs": [], "name": "spot", "outputs": [{"internalType": "contract SpotLike", "name": "", "type": "address"}], "stateMutability": "view", "type": "function"}, {"inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "symbol", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "stateMutability": "view", "type": "function"}, {"inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "update", "outputs": [], "stateMutability": "nonpayable", "type": "function"}, {"inputs": [], "name": "vat", "outputs": [{"internalType": "contract VatLike", "name": "", "type": "address"}], "stateMutability": "view", "type": "function"}, {"inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "uint256", "name": "supply", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "dst", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Transfer", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "src", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "decimals", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "name", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "symbol", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "totalSupply", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transfer", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "authorized_caller_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"constant": true, "inputs": [], "name": "authorized_caller", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}, {"internalType": "bytes4", "name": "", "type": "bytes4"}], "name": "canCall", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "target", "type": "address"}, {"indexed": false, "internalType": "bool", "name": "exact", "type": "bool"}], "name": "eventListener", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "log_bytes32", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes32", "name": "key", "type": "bytes32"}, {"indexed": false, "internalType": "address", "name": "val", "type": "address"}], "name": "log_named_address", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes32", "name": "key", "type": "bytes32"}, {"indexed": false, "internalType": "bytes32", "name": "val", "type": "bytes32"}], "name": "log_named_bytes32", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes32", "name": "key", "type": "bytes32"}, {"indexed": false, "internalType": "int256", "name": "val", "type": "int256"}, {"indexed": false, "internalType": "uint256", "name": "decimals", "type": "uint256"}], "name": "log_named_decimal_int", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes32", "name": "key", "type": "bytes32"}, {"indexed": false, "internalType": "uint256", "name": "val", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "decimals", "type": "uint256"}], "name": "log_named_decimal_uint", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes32", "name": "key", "type": "bytes32"}, {"indexed": false, "internalType": "int256", "name": "val", "type": "int256"}], "name": "log_named_int", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes32", "name": "key", "type": "bytes32"}, {"indexed": false, "internalType": "string", "name": "val", "type": "string"}], "name": "log_named_string", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes32", "name": "key", "type": "bytes32"}, {"indexed": false, "internalType": "uint256", "name": "val", "type": "uint256"}], "name": "log_named_uint", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes", "name": "", "type": "bytes"}], "name": "logs", "type": "event"}, {"constant": true, "inputs": [], "name": "IS_TEST", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "end", "type": "address"}], "name": "cage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "from", "type": "address"}, {"internalType": "address", "name": "to", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "deploy", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "deployKeepAuth", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "dripAndFile", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "dripAndFile", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "failed", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "from", "type": "address"}, {"internalType": "address", "name": "to", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newAuthority", "type": "address"}], "name": "setAuthority", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newAuthority", "type": "address"}, {"internalType": "uint256", "name": "newDelay", "type": "uint256"}], "name": "setAuthorityAndDelay", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "newDelay", "type": "uint256"}], "name": "setDelay", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "setUp", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "address", "name": "gov", "type": "address"}, {"internalType": "address", "name": "end", "type": "address"}, {"internalType": "address", "name": "pit", "type": "address"}, {"internalType": "uint256", "name": "min", "type": "uint256"}], "name": "newESM", "outputs": [{"internalType": "contract ESM", "name": "esm", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "address", "name": "vat", "type": "address"}, {"internalType": "address", "name": "cat", "type": "address"}, {"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "newFlip", "outputs": [{"internalType": "contract Flipper", "name": "flip", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "contract DSToken", "name": "GOV", "type": "address"}, {"internalType": "contract DSToken", "name": "IOU", "type": "address"}, {"internalType": "uint256", "name": "MAX_YAYS", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "bytes32", "name": "slate", "type": "bytes32"}], "name": "Etch", "type": "event"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "foo", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "bar", "type": "bytes32"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}, {"indexed": false, "internalType": "bytes", "name": "fax", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "authority", "type": "address"}], "name": "LogSetAuthority", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "owner", "type": "address"}], "name": "LogSetOwner", "type": "event"}, {"constant": true, "inputs": [], "name": "GOV", "outputs": [{"internalType": "contract DSToken", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "IOU", "outputs": [{"internalType": "contract DSToken", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "MAX_YAYS", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "approvals", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "authority", "outputs": [{"internalType": "contract DSAuthority", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "caller", "type": "address"}, {"internalType": "address", "name": "code", "type": "address"}, {"internalType": "bytes4", "name": "sig", "type": "bytes4"}], "name": "canCall", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "deposits", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address[]", "name": "yays", "type": "address[]"}], "name": "etch", "outputs": [{"internalType": "bytes32", "name": "slate", "type": "bytes32"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "free", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "code", "type": "address"}, {"internalType": "bytes4", "name": "sig", "type": "bytes4"}], "name": "getCapabilityRoles", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "who", "type": "address"}], "name": "getUserRoles", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "uint8", "name": "role", "type": "uint8"}], "name": "hasUserRole", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "hat", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "code", "type": "address"}, {"internalType": "bytes4", "name": "sig", "type": "bytes4"}], "name": "isCapabilityPublic", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "who", "type": "address"}], "name": "isUserRoot", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "whom", "type": "address"}], "name": "lift", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "lock", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "contract DSAuthority", "name": "authority_", "type": "address"}], "name": "setAuthority", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "owner_", "type": "address"}], "name": "setOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "code", "type": "address"}, {"internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"internalType": "bool", "name": "enabled", "type": "bool"}], "name": "setPublicCapability", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint8", "name": "role", "type": "uint8"}, {"internalType": "address", "name": "code", "type": "address"}, {"internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"internalType": "bool", "name": "enabled", "type": "bool"}], "name": "setRoleCapability", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bool", "name": "enabled", "type": "bool"}], "name": "setRootUser", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "uint8", "name": "role", "type": "uint8"}, {"internalType": "bool", "name": "enabled", "type": "bool"}], "name": "setUserRole", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}, {"internalType": "uint256", "name": "", "type": "uint256"}], "name": "slates", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "slate", "type": "bytes32"}], "name": "vote", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address[]", "name": "yays", "type": "address[]"}], "name": "vote", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "votes", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "address", "name": "end", "type": "address"}], "name": "cage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "from", "type": "address"}, {"internalType": "address", "name": "to", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "dripAndFile", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "dripAndFile", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "from", "type": "address"}, {"internalType": "address", "name": "to", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newAuthority", "type": "address"}], "name": "setAuthority", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newAuthority", "type": "address"}, {"internalType": "uint256", "name": "newDelay", "type": "uint256"}], "name": "setAuthorityAndDelay", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "newDelay", "type": "uint256"}], "name": "setDelay", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "authority", "type": "address"}], "name": "LogSetAuthority", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "owner", "type": "address"}], "name": "LogSetOwner", "type": "event"}, {"constant": true, "inputs": [], "name": "authority", "outputs": [{"internalType": "contract DSAuthority", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "caller", "type": "address"}, {"internalType": "address", "name": "code", "type": "address"}, {"internalType": "bytes4", "name": "sig", "type": "bytes4"}], "name": "canCall", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "code", "type": "address"}, {"internalType": "bytes4", "name": "sig", "type": "bytes4"}], "name": "getCapabilityRoles", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "who", "type": "address"}], "name": "getUserRoles", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "uint8", "name": "role", "type": "uint8"}], "name": "hasUserRole", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "code", "type": "address"}, {"internalType": "bytes4", "name": "sig", "type": "bytes4"}], "name": "isCapabilityPublic", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "who", "type": "address"}], "name": "isUserRoot", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "contract DSAuthority", "name": "authority_", "type": "address"}], "name": "setAuthority", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "owner_", "type": "address"}], "name": "setOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "code", "type": "address"}, {"internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"internalType": "bool", "name": "enabled", "type": "bool"}], "name": "setPublicCapability", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint8", "name": "role", "type": "uint8"}, {"internalType": "address", "name": "code", "type": "address"}, {"internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"internalType": "bool", "name": "enabled", "type": "bool"}], "name": "setRoleCapability", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bool", "name": "enabled", "type": "bool"}], "name": "setRootUser", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "who", "type": "address"}, {"internalType": "uint8", "name": "role", "type": "uint8"}, {"internalType": "bool", "name": "enabled", "type": "bool"}], "name": "setUserRole", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"constant": true, "inputs": [], "name": "authority", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "osms", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "authority_", "type": "address"}], "name": "setAuthority", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "address", "name": "osm", "type": "address"}], "name": "setOsm", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "owner_", "type": "address"}], "name": "setOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "stop", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Approval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Exit", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "dst", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Join", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "dst", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Transfer", "type": "event"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "address", "name": "ethJoin", "type": "address"}, {"internalType": "address", "name": "end", "type": "address"}, {"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "cashETH", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "gemJoin", "type": "address"}, {"internalType": "address", "name": "end", "type": "address"}, {"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "cashGem", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "apt", "type": "address"}, {"internalType": "address", "name": "urn", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "daiJoin_join", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "ethJoin", "type": "address"}, {"internalType": "address", "name": "end", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}], "name": "freeETH", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "gemJoin", "type": "address"}, {"internalType": "address", "name": "end", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}], "name": "freeGem", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "daiJoin", "type": "address"}, {"internalType": "address", "name": "end", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "pack", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "uint256", "name": "delay_", "type": "uint256"}, {"internalType": "address", "name": "owner_", "type": "address"}, {"internalType": "address", "name": "authority_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "foo", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "bar", "type": "bytes32"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}, {"indexed": false, "internalType": "bytes", "name": "fax", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "authority", "type": "address"}], "name": "LogSetAuthority", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "owner", "type": "address"}], "name": "LogSetOwner", "type": "event"}, {"constant": true, "inputs": [], "name": "authority", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "delay", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "bytes32", "name": "tag", "type": "bytes32"}, {"internalType": "bytes", "name": "fax", "type": "bytes"}, {"internalType": "uint256", "name": "eta", "type": "uint256"}], "name": "drop", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "bytes32", "name": "tag", "type": "bytes32"}, {"internalType": "bytes", "name": "fax", "type": "bytes"}, {"internalType": "uint256", "name": "eta", "type": "uint256"}], "name": "exec", "outputs": [{"internalType": "bytes", "name": "out", "type": "bytes"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "plans", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "bytes32", "name": "tag", "type": "bytes32"}, {"internalType": "bytes", "name": "fax", "type": "bytes"}, {"internalType": "uint256", "name": "eta", "type": "uint256"}], "name": "plot", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "proxy", "outputs": [{"internalType": "contract DSPauseProxy", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "authority_", "type": "address"}], "name": "setAuthority", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "delay_", "type": "uint256"}], "name": "setDelay", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "owner_", "type": "address"}], "name": "setOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"constant": true, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "bytes4", "name": "sig", "type": "bytes4"}], "name": "canCall", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"constant": true, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "bytes4", "name": "sig", "type": "bytes4"}], "name": "canCall", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "bytes4", "name": "sig", "type": "bytes4"}], "name": "permit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "foo", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "bar", "type": "bytes32"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}, {"indexed": false, "internalType": "bytes", "name": "fax", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "authority", "type": "address"}], "name": "LogSetAuthority", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "owner", "type": "address"}], "name": "LogSetOwner", "type": "event"}, {"constant": true, "inputs": [], "name": "authority", "outputs": [{"internalType": "contract DSAuthority", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "contract DSAuthority", "name": "authority_", "type": "address"}], "name": "setAuthority", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "owner_", "type": "address"}], "name": "setOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [], "name": "newVat", "outputs": [{"internalType": "contract Vat", "name": "vat", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "vat_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "address", "name": "own", "type": "address"}, {"indexed": true, "internalType": "uint256", "name": "cdp", "type": "uint256"}], "name": "NewCdp", "type": "event"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "uint256", "name": "ok", "type": "uint256"}], "name": "cdpAllow", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "uint256", "name": "", "type": "uint256"}, {"internalType": "address", "name": "", "type": "address"}], "name": "cdpCan", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "cdpi", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "count", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}], "name": "enter", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "first", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "flux", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "flux", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "int256", "name": "dink", "type": "int256"}, {"internalType": "int256", "name": "dart", "type": "int256"}], "name": "frob", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "address", "name": "dst", "type": "address"}], "name": "give", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "name": "ilks", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "last", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "name": "list", "outputs": [{"internalType": "uint256", "name": "prev", "type": "uint256"}, {"internalType": "uint256", "name": "next", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "rad", "type": "uint256"}], "name": "move", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "address", "name": "usr", "type": "address"}], "name": "open", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "name": "owns", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "address", "name": "dst", "type": "address"}], "name": "quit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "cdpSrc", "type": "uint256"}, {"internalType": "uint256", "name": "cdpDst", "type": "uint256"}], "name": "shift", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "uint256", "name": "ok", "type": "uint256"}], "name": "urnAllow", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}], "name": "urnCan", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "name": "urns", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "vat", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "vat_", "type": "address"}, {"internalType": "bytes32", "name": "ilk_", "type": "bytes32"}, {"internalType": "address", "name": "gem_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"constant": false, "inputs": [], "name": "cage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "dec", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "exit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "gem", "outputs": [{"internalType": "contract GemLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "ilk", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "urn", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "join", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "live", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "vat", "outputs": [{"internalType": "contract VatLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"inputs": [], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg3", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"constant": true, "inputs": [], "name": "Line", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "cage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}], "name": "can", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "dai", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "debt", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "flux", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "i", "type": "bytes32"}, {"internalType": "address", "name": "u", "type": "address"}, {"internalType": "int256", "name": "rate", "type": "int256"}], "name": "fold", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "int256", "name": "dink", "type": "int256"}, {"internalType": "int256", "name": "dart", "type": "int256"}], "name": "fork", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "i", "type": "bytes32"}, {"internalType": "address", "name": "u", "type": "address"}, {"internalType": "address", "name": "v", "type": "address"}, {"internalType": "address", "name": "w", "type": "address"}, {"internalType": "int256", "name": "dink", "type": "int256"}, {"internalType": "int256", "name": "dart", "type": "int256"}], "name": "frob", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}, {"internalType": "address", "name": "", "type": "address"}], "name": "gem", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "i", "type": "bytes32"}, {"internalType": "address", "name": "u", "type": "address"}, {"internalType": "address", "name": "v", "type": "address"}, {"internalType": "address", "name": "w", "type": "address"}, {"internalType": "int256", "name": "dink", "type": "int256"}, {"internalType": "int256", "name": "dart", "type": "int256"}], "name": "grab", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "rad", "type": "uint256"}], "name": "heal", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "hope", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "ilks", "outputs": [{"internalType": "uint256", "name": "Art", "type": "uint256"}, {"internalType": "uint256", "name": "rate", "type": "uint256"}, {"internalType": "uint256", "name": "spot", "type": "uint256"}, {"internalType": "uint256", "name": "line", "type": "uint256"}, {"internalType": "uint256", "name": "dust", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "init", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "live", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "rad", "type": "uint256"}], "name": "move", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "nope", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "sin", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "int256", "name": "wad", "type": "int256"}], "name": "slip", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "u", "type": "address"}, {"internalType": "address", "name": "v", "type": "address"}, {"internalType": "uint256", "name": "rad", "type": "uint256"}], "name": "suck", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}, {"internalType": "address", "name": "", "type": "address"}], "name": "urns", "outputs": [{"internalType": "uint256", "name": "ink", "type": "uint256"}, {"internalType": "uint256", "name": "art", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "vice", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"inputs": [], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "amt", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}], "name": "done", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "gem", "type": "address"}, {"internalType": "address[]", "name": "addrs", "type": "address[]"}], "name": "gulp", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "gem", "type": "address"}], "name": "gulp", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "hope", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "list", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "nope", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "gem", "type": "address"}, {"internalType": "uint256", "name": "amt_", "type": "uint256"}], "name": "setAmt", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "contract ERC20Like", "name": "gem", "type": "address"}], "name": "shut", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "address", "name": "gem", "type": "address"}], "name": "undo", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "address", "name": "apt", "type": "address"}, {"internalType": "address", "name": "urn", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "daiJoin_join", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "daiJoin", "type": "address"}, {"internalType": "address", "name": "pot", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "exit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "daiJoin", "type": "address"}, {"internalType": "address", "name": "pot", "type": "address"}], "name": "exitAll", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "daiJoin", "type": "address"}, {"internalType": "address", "name": "pot", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "join", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "pot_", "type": "address"}, {"internalType": "address", "name": "daiJoin_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "dst", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Exit", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "dst", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Join", "type": "event"}, {"constant": true, "inputs": [], "name": "dai", "outputs": [{"internalType": "contract GemLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "daiBalance", "outputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "daiJoin", "outputs": [{"internalType": "contract JoinLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "exit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "dst", "type": "address"}], "name": "exitAll", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "join", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "pieOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "pot", "outputs": [{"internalType": "contract PotLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "supply", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "creator", "type": "address"}, {"indexed": false, "internalType": "address", "name": "token", "type": "address"}], "name": "LogMake", "type": "event"}, {"constant": false, "inputs": [], "name": "make", "outputs": [{"internalType": "contract WETH9_", "name": "result", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Approval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "dst", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Transfer", "type": "event"}]' + ), + json.loads( + '[{"inputs": [], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "amt", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}], "name": "done", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "gem", "type": "address"}, {"internalType": "address[]", "name": "addrs", "type": "address[]"}], "name": "gulp", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "gem", "type": "address"}], "name": "gulp", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "gem", "type": "address"}, {"internalType": "uint256", "name": "amt_", "type": "uint256"}], "name": "setAmt", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "contract ERC20Like", "name": "gem", "type": "address"}], "name": "shut", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "contract DSChief", "name": "chief_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"constant": false, "inputs": [{"internalType": "contract DSToken", "name": "token", "type": "address"}, {"internalType": "address", "name": "recipient", "type": "address"}, {"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "approve", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address[]", "name": "guys", "type": "address[]"}], "name": "etch", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "amt", "type": "uint256"}], "name": "free", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "candidate", "type": "address"}], "name": "lift", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "amt", "type": "uint256"}], "name": "lock", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "amt", "type": "uint256"}], "name": "tryFree", "outputs": [{"internalType": "bool", "name": "ok", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "id", "type": "bytes32"}], "name": "vote", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address[]", "name": "guys", "type": "address[]"}], "name": "vote", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "contract DSToken", "name": "GOV_", "type": "address"}, {"internalType": "contract DSToken", "name": "IOU_", "type": "address"}, {"internalType": "uint256", "name": "MAX_YAYS_", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "bytes32", "name": "slate", "type": "bytes32"}], "name": "Etch", "type": "event"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "foo", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "bar", "type": "bytes32"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}, {"indexed": false, "internalType": "bytes", "name": "fax", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "authority", "type": "address"}], "name": "LogSetAuthority", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "owner", "type": "address"}], "name": "LogSetOwner", "type": "event"}, {"constant": true, "inputs": [], "name": "GOV", "outputs": [{"internalType": "contract DSToken", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "IOU", "outputs": [{"internalType": "contract DSToken", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "MAX_YAYS", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "approvals", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "authority", "outputs": [{"internalType": "contract DSAuthority", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "deposits", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address[]", "name": "yays", "type": "address[]"}], "name": "etch", "outputs": [{"internalType": "bytes32", "name": "slate", "type": "bytes32"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "free", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "hat", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "whom", "type": "address"}], "name": "lift", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "lock", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "contract DSAuthority", "name": "authority_", "type": "address"}], "name": "setAuthority", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "owner_", "type": "address"}], "name": "setOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}, {"internalType": "uint256", "name": "", "type": "uint256"}], "name": "slates", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "slate", "type": "bytes32"}], "name": "vote", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address[]", "name": "yays", "type": "address[]"}], "name": "vote", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "votes", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "contract VoteProxyFactory", "name": "voteProxyFactory_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"constant": false, "inputs": [{"internalType": "address", "name": "cold", "type": "address"}], "name": "doApproveLink", "outputs": [{"internalType": "contract VoteProxy", "name": "", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "doBreakLink", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "hot", "type": "address"}], "name": "doInitiateLink", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "doLinkSelf", "outputs": [{"internalType": "contract VoteProxy", "name": "", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_proxy", "type": "address"}, {"internalType": "contract DSToken", "name": "_token", "type": "address"}], "name": "proxyApprove", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "contract VoteProxy", "name": "_proxy", "type": "address"}, {"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "proxyFree", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "contract VoteProxy", "name": "_proxy", "type": "address"}, {"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "proxyLock", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "tryBreakLink", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "contract WETH9", "name": "_weth", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"payable": true, "stateMutability": "payable", "type": "fallback"}, {"constant": false, "inputs": [{"internalType": "contract Guy", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "approve", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "exit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "join", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "contract Guy", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transfer", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "contract Guy", "name": "src", "type": "address"}, {"internalType": "contract Guy", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transfer", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "address", "name": "vat", "type": "address"}, {"internalType": "address", "name": "flap", "type": "address"}, {"internalType": "address", "name": "flop", "type": "address"}], "name": "newVow", "outputs": [{"internalType": "contract Vow", "name": "vow", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "contract OsmMom", "name": "mom_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newAuthority", "type": "address"}], "name": "setAuthority", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "address", "name": "osm", "type": "address"}], "name": "setOsm", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newOwner", "type": "address"}], "name": "setOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "stop", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "vat", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "token", "type": "address"}], "name": "name", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "stateMutability": "view", "type": "function"}, {"inputs": [{"internalType": "address", "name": "token", "type": "address"}], "name": "symbol", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [], "name": "newEnd", "outputs": [{"internalType": "contract End", "name": "end", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "cat_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "flip", "type": "address"}, {"indexed": false, "internalType": "address", "name": "usr", "type": "address"}], "name": "Deny", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "flip", "type": "address"}, {"indexed": false, "internalType": "address", "name": "usr", "type": "address"}], "name": "Rely", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "oldAuthority", "type": "address"}, {"indexed": false, "internalType": "address", "name": "newAuthority", "type": "address"}], "name": "SetAuthority", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "uint256", "name": "oldDelay", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "newDelay", "type": "uint256"}], "name": "SetDelay", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "oldOwner", "type": "address"}, {"indexed": false, "internalType": "address", "name": "newOwner", "type": "address"}], "name": "SetOwner", "type": "event"}, {"constant": true, "inputs": [], "name": "authority", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "cat", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "delay", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "flip", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "flip", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "authority_", "type": "address"}], "name": "setAuthority", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "delay_", "type": "uint256"}], "name": "setDelay", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "owner_", "type": "address"}], "name": "setOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "authority", "type": "address"}], "name": "LogSetAuthority", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "owner", "type": "address"}], "name": "LogSetOwner", "type": "event"}, {"constant": true, "inputs": [], "name": "authority", "outputs": [{"internalType": "contract DSAuthority", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "contract DSAuthority", "name": "authority_", "type": "address"}], "name": "setAuthority", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "owner_", "type": "address"}], "name": "setOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "vat_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"indexed": false, "internalType": "bytes32", "name": "val", "type": "bytes32"}, {"indexed": false, "internalType": "uint256", "name": "spot", "type": "uint256"}], "name": "Poke", "type": "event"}, {"constant": false, "inputs": [], "name": "cage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "address", "name": "pip_", "type": "address"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "ilks", "outputs": [{"internalType": "contract PipLike", "name": "pip", "type": "address"}, {"internalType": "uint256", "name": "mat", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "live", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "par", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "poke", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "vat", "outputs": [{"internalType": "contract VatLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "vat_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"indexed": true, "internalType": "address", "name": "urn", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "ink", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "art", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "tab", "type": "uint256"}, {"indexed": false, "internalType": "address", "name": "flip", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "id", "type": "uint256"}], "name": "Bite", "type": "event"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "address", "name": "urn", "type": "address"}], "name": "bite", "outputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "box", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "cage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "rad", "type": "uint256"}], "name": "claw", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "address", "name": "data", "type": "address"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "address", "name": "flip", "type": "address"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "ilks", "outputs": [{"internalType": "address", "name": "flip", "type": "address"}, {"internalType": "uint256", "name": "chop", "type": "uint256"}, {"internalType": "uint256", "name": "dunk", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "litter", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "live", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "vat", "outputs": [{"internalType": "contract VatLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "vow", "outputs": [{"internalType": "contract VowLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"inputs": [], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "bytes", "name": "fax", "type": "bytes"}], "name": "exec", "outputs": [{"internalType": "bytes", "name": "out", "type": "bytes"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "address", "name": "vat", "type": "address"}], "name": "newPot", "outputs": [{"internalType": "contract Pot", "name": "pot", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "vat_", "type": "address"}, {"internalType": "address", "name": "cat_", "type": "address"}, {"internalType": "bytes32", "name": "ilk_", "type": "bytes32"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "uint256", "name": "id", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "lot", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "bid", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "tab", "type": "uint256"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "address", "name": "gal", "type": "address"}], "name": "Kick", "type": "event"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"constant": true, "inputs": [], "name": "beg", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "name": "bids", "outputs": [{"internalType": "uint256", "name": "bid", "type": "uint256"}, {"internalType": "uint256", "name": "lot", "type": "uint256"}, {"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint48", "name": "tic", "type": "uint48"}, {"internalType": "uint48", "name": "end", "type": "uint48"}, {"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "address", "name": "gal", "type": "address"}, {"internalType": "uint256", "name": "tab", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "cat", "outputs": [{"internalType": "contract CatLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}], "name": "deal", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}, {"internalType": "uint256", "name": "lot", "type": "uint256"}, {"internalType": "uint256", "name": "bid", "type": "uint256"}], "name": "dent", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "address", "name": "data", "type": "address"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "ilk", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "address", "name": "gal", "type": "address"}, {"internalType": "uint256", "name": "tab", "type": "uint256"}, {"internalType": "uint256", "name": "lot", "type": "uint256"}, {"internalType": "uint256", "name": "bid", "type": "uint256"}], "name": "kick", "outputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "kicks", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "tau", "outputs": [{"internalType": "uint48", "name": "", "type": "uint48"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}, {"internalType": "uint256", "name": "lot", "type": "uint256"}, {"internalType": "uint256", "name": "bid", "type": "uint256"}], "name": "tend", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}], "name": "tick", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "ttl", "outputs": [{"internalType": "uint48", "name": "", "type": "uint48"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "vat", "outputs": [{"internalType": "contract VatLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "id", "type": "uint256"}], "name": "yank", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "contract DSToken", "name": "token_", "type": "address"}, {"internalType": "contract RestrictedTokenFaucet", "name": "faucet_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"constant": false, "inputs": [], "name": "doGulp", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "doHope", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "doNope", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "tok", "type": "address"}, {"internalType": "uint256", "name": "amt", "type": "uint256"}], "name": "doSetAmt", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "doShut", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "doUndo", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [], "name": "cage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "ilks", "outputs": [{"internalType": "contract PipLike", "name": "pip", "type": "address"}, {"internalType": "uint256", "name": "mat", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "par", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "vat_", "type": "address"}, {"internalType": "bytes32", "name": "ilk_", "type": "bytes32"}, {"internalType": "address", "name": "gem_", "type": "address"}, {"internalType": "uint256", "name": "decimals", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"constant": false, "inputs": [], "name": "cage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "dec", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "exit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "gem", "outputs": [{"internalType": "contract GemLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "ilk", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "urn", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "join", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "live", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "vat", "outputs": [{"internalType": "contract VatLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "src_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "bytes32", "name": "val", "type": "bytes32"}], "name": "LogValue", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "bud", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src_", "type": "address"}], "name": "change", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address[]", "name": "a", "type": "address[]"}], "name": "diss", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "a", "type": "address"}], "name": "diss", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "hop", "outputs": [{"internalType": "uint16", "name": "", "type": "uint16"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address[]", "name": "a", "type": "address[]"}], "name": "kiss", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "a", "type": "address"}], "name": "kiss", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "pass", "outputs": [{"internalType": "bool", "name": "ok", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "peek", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}, {"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "peep", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}, {"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "poke", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "read", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "src", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "start", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint16", "name": "ts", "type": "uint16"}], "name": "step", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "stop", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "stopped", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "void", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "zzz", "outputs": [{"internalType": "uint64", "name": "", "type": "uint64"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "uint256", "name": "supply", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Approval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "dst", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Transfer", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "guy", "type": "address"}], "name": "allowance", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "approve", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "src", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "decimals", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "name", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "symbol", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "totalSupply", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transfer", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transferFrom", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "uint256", "name": "chainId", "type": "uint256"}], "name": "newDai", "outputs": [{"internalType": "contract Dai", "name": "dai", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "vat_", "type": "address"}, {"internalType": "bytes32", "name": "ilk_", "type": "bytes32"}, {"internalType": "address", "name": "gem_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"constant": false, "inputs": [], "name": "cage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "dec", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "exit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "gem", "outputs": [{"internalType": "contract GemLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "ilk", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "implementations", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "join", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "live", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "implementation", "type": "address"}, {"internalType": "uint256", "name": "permitted", "type": "uint256"}], "name": "setImplementation", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "vat", "outputs": [{"internalType": "contract VatLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "uint256", "name": "delay", "type": "uint256"}, {"internalType": "address", "name": "owner", "type": "address"}, {"internalType": "address", "name": "authority", "type": "address"}], "name": "newPause", "outputs": [{"internalType": "contract DSPause", "name": "pause", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "vat_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"constant": true, "inputs": [], "name": "Pie", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "cage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "chi", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "drip", "outputs": [{"internalType": "uint256", "name": "tmp", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "dsr", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "exit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "address", "name": "addr", "type": "address"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "join", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "live", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "pie", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "rho", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "vat", "outputs": [{"internalType": "contract VatLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "vow", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "uint256", "name": "_initialSupply", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "owner", "type": "address"}, {"indexed": true, "internalType": "address", "name": "spender", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "value", "type": "uint256"}], "name": "Approval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": false, "internalType": "address", "name": "newAddress", "type": "address"}], "name": "Deprecate", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "from", "type": "address"}, {"indexed": true, "internalType": "address", "name": "to", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "value", "type": "uint256"}], "name": "Transfer", "type": "event"}, {"constant": true, "inputs": [], "name": "MAX_UINT", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "_owner", "type": "address"}, {"internalType": "address", "name": "_spender", "type": "address"}], "name": "allowance", "outputs": [{"internalType": "uint256", "name": "remaining", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}], "name": "allowed", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_spender", "type": "address"}, {"internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "approve", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "_owner", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "balance", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "balances", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "basisPointsRate", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "_basisPointsRate", "type": "uint256"}, {"internalType": "uint256", "name": "_maximumFee", "type": "uint256"}], "name": "changeFees", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "decimals", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_upgradedAddress", "type": "address"}], "name": "deprecate", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "deprecated", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "maximumFee", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "name", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "symbol", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_to", "type": "address"}, {"internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "transfer", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_from", "type": "address"}, {"internalType": "address", "name": "_to", "type": "address"}, {"internalType": "uint256", "name": "_value", "type": "uint256"}], "name": "transferFrom", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "upgradedAddress", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "withdraw", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"constant": true, "inputs": [], "name": "fail", "outputs": [], "payable": false, "stateMutability": "pure", "type": "function"}, {"constant": true, "inputs": [], "name": "get48Bytes", "outputs": [{"internalType": "bytes", "name": "result", "type": "bytes"}], "payable": false, "stateMutability": "pure", "type": "function"}, {"constant": true, "inputs": [], "name": "getBytes32", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "pure", "type": "function"}, {"constant": true, "inputs": [], "name": "getBytes32AndUint", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}, {"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "pure", "type": "function"}, {"constant": true, "inputs": [{"internalType": "uint256", "name": "amount", "type": "uint256"}], "name": "getMultipleValues", "outputs": [{"internalType": "bytes32[]", "name": "result", "type": "bytes32[]"}], "payable": false, "stateMutability": "pure", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "uint256", "name": "supply", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Approval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "dst", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Transfer", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "guy", "type": "address"}], "name": "allowance", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "approve", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "src", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "decimals", "outputs": [{"internalType": "uint8", "name": "", "type": "uint8"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "erc20Impl", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "name", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "newImplementation", "type": "address"}], "name": "setImplementation", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "symbol", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "totalSupply", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transfer", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transferFrom", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "gem_", "type": "address"}, {"internalType": "address", "name": "end_", "type": "address"}, {"internalType": "address", "name": "pit_", "type": "address"}, {"internalType": "uint256", "name": "min_", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"constant": true, "inputs": [], "name": "Sum", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "end", "outputs": [{"internalType": "contract EndLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "fire", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "fired", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "gem", "outputs": [{"internalType": "contract GemLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "join", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "min", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "pit", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "sum", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "_cacheAddr", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "foo", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "bar", "type": "bytes32"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}, {"indexed": false, "internalType": "bytes", "name": "fax", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "authority", "type": "address"}], "name": "LogSetAuthority", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "owner", "type": "address"}], "name": "LogSetOwner", "type": "event"}, {"payable": true, "stateMutability": "payable", "type": "fallback"}, {"constant": true, "inputs": [], "name": "authority", "outputs": [{"internalType": "contract DSAuthority", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "cache", "outputs": [{"internalType": "contract DSProxyCache", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_target", "type": "address"}, {"internalType": "bytes", "name": "_data", "type": "bytes"}], "name": "execute", "outputs": [{"internalType": "bytes", "name": "response", "type": "bytes"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes", "name": "_code", "type": "bytes"}, {"internalType": "bytes", "name": "_data", "type": "bytes"}], "name": "execute", "outputs": [{"internalType": "address", "name": "target", "type": "address"}, {"internalType": "bytes", "name": "response", "type": "bytes"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "contract DSAuthority", "name": "authority_", "type": "address"}], "name": "setAuthority", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "_cacheAddr", "type": "address"}], "name": "setCache", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "owner_", "type": "address"}], "name": "setOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "authority", "type": "address"}], "name": "LogSetAuthority", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "owner", "type": "address"}], "name": "LogSetOwner", "type": "event"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "address", "name": "pause", "type": "address"}, {"internalType": "address", "name": "actions", "type": "address"}, {"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "dripAndFile", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "pause", "type": "address"}, {"internalType": "address", "name": "actions", "type": "address"}, {"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "dripAndFile", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "pause", "type": "address"}, {"internalType": "address", "name": "actions", "type": "address"}, {"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "pause", "type": "address"}, {"internalType": "address", "name": "actions", "type": "address"}, {"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "pause", "type": "address"}, {"internalType": "address", "name": "actions", "type": "address"}, {"internalType": "address", "name": "who", "type": "address"}, {"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "address", "name": "data", "type": "address"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "pause", "type": "address"}, {"internalType": "address", "name": "actions", "type": "address"}, {"internalType": "address", "name": "who", "type": "address"}, {"internalType": "address", "name": "to", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "pause", "type": "address"}, {"internalType": "address", "name": "actions", "type": "address"}, {"internalType": "address", "name": "newAuthority", "type": "address"}, {"internalType": "uint256", "name": "newDelay", "type": "uint256"}], "name": "setAuthorityAndDelay", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "vat_", "type": "address"}, {"internalType": "bytes32", "name": "ilk_", "type": "bytes32"}, {"internalType": "address", "name": "gem_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "bags", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "cage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "dec", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "exit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "gem", "outputs": [{"internalType": "contract GemLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "ilk", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "urn", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "join", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "live", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "make", "outputs": [{"internalType": "address", "name": "bag", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "make", "outputs": [{"internalType": "address", "name": "bag", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "vat", "outputs": [{"internalType": "contract VatLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Approval", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Burn", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "authority", "type": "address"}], "name": "LogSetAuthority", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "owner", "type": "address"}], "name": "LogSetOwner", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "guy", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Mint", "type": "event"}, {"anonymous": false, "inputs": [], "name": "Start", "type": "event"}, {"anonymous": false, "inputs": [], "name": "Stop", "type": "event"}, {"anonymous": false, "inputs": [{"indexed": true, "internalType": "address", "name": "src", "type": "address"}, {"indexed": true, "internalType": "address", "name": "dst", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "Transfer", "type": "event"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}, {"internalType": "address", "name": "", "type": "address"}], "name": "allowance", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "approve", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "approve", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "authority", "outputs": [{"internalType": "contract DSAuthority", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "burn", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "burn", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "decimals", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "mint", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "mint", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "move", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "name", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "owner", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "pull", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "push", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "contract DSAuthority", "name": "authority_", "type": "address"}], "name": "setAuthority", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "name_", "type": "bytes32"}], "name": "setName", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "owner_", "type": "address"}], "name": "setOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "start", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [], "name": "stop", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "stopped", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "symbol", "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "totalSupply", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transfer", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "src", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "transferFrom", "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "contract DSToken", "name": "gov", "type": "address"}, {"internalType": "uint256", "name": "MAX_YAYS", "type": "uint256"}], "name": "newChief", "outputs": [{"internalType": "contract DSChief", "name": "chief", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"anonymous": true, "inputs": [{"indexed": true, "internalType": "bytes4", "name": "sig", "type": "bytes4"}, {"indexed": true, "internalType": "address", "name": "usr", "type": "address"}, {"indexed": true, "internalType": "bytes32", "name": "arg1", "type": "bytes32"}, {"indexed": true, "internalType": "bytes32", "name": "arg2", "type": "bytes32"}, {"indexed": false, "internalType": "bytes", "name": "data", "type": "bytes"}], "name": "LogNote", "type": "event"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "Art", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "bag", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "cage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "cage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "cash", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "cat", "outputs": [{"internalType": "contract CatLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "debt", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "deny", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "uint256", "name": "data", "type": "uint256"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "what", "type": "bytes32"}, {"internalType": "address", "name": "data", "type": "address"}], "name": "file", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "fix", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "flow", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}], "name": "free", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "gap", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "live", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}, {"internalType": "address", "name": "", "type": "address"}], "name": "out", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "pack", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "pot", "outputs": [{"internalType": "contract PotLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "guy", "type": "address"}], "name": "rely", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "address", "name": "urn", "type": "address"}], "name": "skim", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "uint256", "name": "id", "type": "uint256"}], "name": "skip", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "spot", "outputs": [{"internalType": "contract Spotty", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], "name": "tag", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [], "name": "thaw", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "vat", "outputs": [{"internalType": "contract VatLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "vow", "outputs": [{"internalType": "contract VowLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "wait", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [{"internalType": "address", "name": "", "type": "address"}], "name": "wards", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "when", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), + json.loads( + '[{"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "uint256", "name": "ok", "type": "uint256"}], "name": "cdpAllow", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "apt", "type": "address"}, {"internalType": "address", "name": "urn", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "daiJoin_join", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "jug", "type": "address"}, {"internalType": "address", "name": "daiJoin", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "draw", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "src", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}], "name": "enter", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "apt", "type": "address"}, {"internalType": "address", "name": "urn", "type": "address"}], "name": "ethJoin_join", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "ethJoin", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "exitETH", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "gemJoin", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "uint256", "name": "amt", "type": "uint256"}], "name": "exitGem", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "flux", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "ethJoin", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "freeETH", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "gemJoin", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "uint256", "name": "amt", "type": "uint256"}], "name": "freeGem", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "int256", "name": "dink", "type": "int256"}, {"internalType": "int256", "name": "dart", "type": "int256"}], "name": "frob", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "apt", "type": "address"}, {"internalType": "address", "name": "urn", "type": "address"}, {"internalType": "uint256", "name": "amt", "type": "uint256"}, {"internalType": "bool", "name": "transferFrom", "type": "bool"}], "name": "gemJoin_join", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "address", "name": "usr", "type": "address"}], "name": "give", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "proxyRegistry", "type": "address"}, {"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "address", "name": "dst", "type": "address"}], "name": "giveToProxy", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "obj", "type": "address"}, {"internalType": "address", "name": "usr", "type": "address"}], "name": "hope", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "ethJoin", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}], "name": "lockETH", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "jug", "type": "address"}, {"internalType": "address", "name": "ethJoin", "type": "address"}, {"internalType": "address", "name": "daiJoin", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "uint256", "name": "wadD", "type": "uint256"}], "name": "lockETHAndDraw", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "gemJoin", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "uint256", "name": "amt", "type": "uint256"}, {"internalType": "bool", "name": "transferFrom", "type": "bool"}], "name": "lockGem", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "jug", "type": "address"}, {"internalType": "address", "name": "gemJoin", "type": "address"}, {"internalType": "address", "name": "daiJoin", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "uint256", "name": "amtC", "type": "uint256"}, {"internalType": "uint256", "name": "wadD", "type": "uint256"}, {"internalType": "bool", "name": "transferFrom", "type": "bool"}], "name": "lockGemAndDraw", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "gemJoin", "type": "address"}], "name": "makeGemBag", "outputs": [{"internalType": "address", "name": "bag", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "rad", "type": "uint256"}], "name": "move", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "obj", "type": "address"}, {"internalType": "address", "name": "usr", "type": "address"}], "name": "nope", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "address", "name": "usr", "type": "address"}], "name": "open", "outputs": [{"internalType": "uint256", "name": "cdp", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "jug", "type": "address"}, {"internalType": "address", "name": "ethJoin", "type": "address"}, {"internalType": "address", "name": "daiJoin", "type": "address"}, {"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "uint256", "name": "wadD", "type": "uint256"}], "name": "openLockETHAndDraw", "outputs": [{"internalType": "uint256", "name": "cdp", "type": "uint256"}], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "jug", "type": "address"}, {"internalType": "address", "name": "gntJoin", "type": "address"}, {"internalType": "address", "name": "daiJoin", "type": "address"}, {"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "uint256", "name": "amtC", "type": "uint256"}, {"internalType": "uint256", "name": "wadD", "type": "uint256"}], "name": "openLockGNTAndDraw", "outputs": [{"internalType": "address", "name": "bag", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "jug", "type": "address"}, {"internalType": "address", "name": "gemJoin", "type": "address"}, {"internalType": "address", "name": "daiJoin", "type": "address"}, {"internalType": "bytes32", "name": "ilk", "type": "bytes32"}, {"internalType": "uint256", "name": "amtC", "type": "uint256"}, {"internalType": "uint256", "name": "wadD", "type": "uint256"}, {"internalType": "bool", "name": "transferFrom", "type": "bool"}], "name": "openLockGemAndDraw", "outputs": [{"internalType": "uint256", "name": "cdp", "type": "uint256"}], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "address", "name": "dst", "type": "address"}], "name": "quit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "ethJoin", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "address", "name": "owner", "type": "address"}], "name": "safeLockETH", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "gemJoin", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "uint256", "name": "amt", "type": "uint256"}, {"internalType": "bool", "name": "transferFrom", "type": "bool"}, {"internalType": "address", "name": "owner", "type": "address"}], "name": "safeLockGem", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "daiJoin", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}, {"internalType": "address", "name": "owner", "type": "address"}], "name": "safeWipe", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "daiJoin", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "address", "name": "owner", "type": "address"}], "name": "safeWipeAll", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "uint256", "name": "cdpSrc", "type": "uint256"}, {"internalType": "uint256", "name": "cdpOrg", "type": "uint256"}], "name": "shift", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "gem", "type": "address"}, {"internalType": "address", "name": "dst", "type": "address"}, {"internalType": "uint256", "name": "amt", "type": "uint256"}], "name": "transfer", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "uint256", "name": "ok", "type": "uint256"}], "name": "urnAllow", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "daiJoin", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "wipe", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "daiJoin", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}], "name": "wipeAll", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "ethJoin", "type": "address"}, {"internalType": "address", "name": "daiJoin", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "uint256", "name": "wadC", "type": "uint256"}], "name": "wipeAllAndFreeETH", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "gemJoin", "type": "address"}, {"internalType": "address", "name": "daiJoin", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "uint256", "name": "amtC", "type": "uint256"}], "name": "wipeAllAndFreeGem", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "ethJoin", "type": "address"}, {"internalType": "address", "name": "daiJoin", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "uint256", "name": "wadC", "type": "uint256"}, {"internalType": "uint256", "name": "wadD", "type": "uint256"}], "name": "wipeAndFreeETH", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "manager", "type": "address"}, {"internalType": "address", "name": "gemJoin", "type": "address"}, {"internalType": "address", "name": "daiJoin", "type": "address"}, {"internalType": "uint256", "name": "cdp", "type": "uint256"}, {"internalType": "uint256", "name": "amtC", "type": "uint256"}, {"internalType": "uint256", "name": "wadD", "type": "uint256"}], "name": "wipeAndFreeGem", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}]' + ), + json.loads( + '[{"inputs": [{"internalType": "address", "name": "lad_", "type": "address"}, {"internalType": "address", "name": "gem_", "type": "address"}], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {"constant": true, "inputs": [], "name": "ada", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": false, "inputs": [{"internalType": "address", "name": "usr", "type": "address"}, {"internalType": "uint256", "name": "wad", "type": "uint256"}], "name": "exit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function"}, {"constant": true, "inputs": [], "name": "gem", "outputs": [{"internalType": "contract GemLike", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}, {"constant": true, "inputs": [], "name": "lad", "outputs": [{"internalType": "address", "name": "", "type": "address"}], "payable": false, "stateMutability": "view", "type": "function"}]' + ), +] diff --git a/app/datasources/abis/open_zeppelin.py b/app/datasources/abis/open_zeppelin.py new file mode 100644 index 0000000..5169b8d --- /dev/null +++ b/app/datasources/abis/open_zeppelin.py @@ -0,0 +1,232 @@ +open_zeppelin_admin_upgradeability_proxy = [ + { + "inputs": [ + {"internalType": "address", "name": "_logic", "type": "address"}, + {"internalType": "address", "name": "_admin", "type": "address"}, + {"internalType": "bytes", "name": "_data", "type": "bytes"}, + ], + "payable": True, + "stateMutability": "payable", + "type": "constructor", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": False, + "internalType": "address", + "name": "previousAdmin", + "type": "address", + }, + { + "indexed": False, + "internalType": "address", + "name": "newAdmin", + "type": "address", + }, + ], + "name": "AdminChanged", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "implementation", + "type": "address", + } + ], + "name": "Upgraded", + "type": "event", + }, + {"payable": True, "stateMutability": "payable", "type": "fallback"}, + { + "constant": False, + "inputs": [], + "name": "admin", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "newAdmin", "type": "address"}], + "name": "changeAdmin", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [], + "name": "implementation", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "newImplementation", "type": "address"} + ], + "name": "upgradeTo", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "newImplementation", "type": "address"}, + {"internalType": "bytes", "name": "data", "type": "bytes"}, + ], + "name": "upgradeToAndCall", + "outputs": [], + "payable": True, + "stateMutability": "payable", + "type": "function", + }, +] + +open_zeppelin_proxy_admin = [ + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "previousOwner", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "newOwner", + "type": "address", + }, + ], + "name": "OwnershipTransferred", + "type": "event", + }, + { + "constant": False, + "inputs": [ + { + "internalType": "contract AdminUpgradeabilityProxy", + "name": "proxy", + "type": "address", + }, + {"internalType": "address", "name": "newAdmin", "type": "address"}, + ], + "name": "changeProxyAdmin", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [ + { + "internalType": "contract AdminUpgradeabilityProxy", + "name": "proxy", + "type": "address", + } + ], + "name": "getProxyAdmin", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [ + { + "internalType": "contract AdminUpgradeabilityProxy", + "name": "proxy", + "type": "address", + } + ], + "name": "getProxyImplementation", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "isOwner", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "owner", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "newOwner", "type": "address"}], + "name": "transferOwnership", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + { + "internalType": "contract AdminUpgradeabilityProxy", + "name": "proxy", + "type": "address", + }, + {"internalType": "address", "name": "implementation", "type": "address"}, + ], + "name": "upgrade", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + { + "internalType": "contract AdminUpgradeabilityProxy", + "name": "proxy", + "type": "address", + }, + {"internalType": "address", "name": "implementation", "type": "address"}, + {"internalType": "bytes", "name": "data", "type": "bytes"}, + ], + "name": "upgradeAndCall", + "outputs": [], + "payable": True, + "stateMutability": "payable", + "type": "function", + }, +] diff --git a/app/datasources/abis/request.py b/app/datasources/abis/request.py new file mode 100644 index 0000000..459571b --- /dev/null +++ b/app/datasources/abis/request.py @@ -0,0 +1,249 @@ +request_erc20_proxy = [ + { + "anonymous": False, + "inputs": [ + { + "indexed": False, + "internalType": "address", + "name": "tokenAddress", + "type": "address", + }, + { + "indexed": False, + "internalType": "address", + "name": "to", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "amount", + "type": "uint256", + }, + { + "indexed": True, + "internalType": "bytes", + "name": "paymentReference", + "type": "bytes", + }, + ], + "name": "TransferWithReference", + "type": "event", + }, + {"payable": True, "stateMutability": "payable", "type": "fallback"}, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_tokenAddress", "type": "address"}, + {"internalType": "address", "name": "_to", "type": "address"}, + {"internalType": "uint256", "name": "_amount", "type": "uint256"}, + {"internalType": "bytes", "name": "_paymentReference", "type": "bytes"}, + ], + "name": "transferFromWithReference", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, +] +request_erc20_swap_to_pay = [ + { + "inputs": [ + { + "internalType": "address", + "name": "_swapRouterAddress", + "type": "address", + }, + { + "internalType": "address", + "name": "_paymentProxyAddress", + "type": "address", + }, + ], + "payable": False, + "stateMutability": "nonpayable", + "type": "constructor", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "previousOwner", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "newOwner", + "type": "address", + }, + ], + "name": "OwnershipTransferred", + "type": "event", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_erc20Address", "type": "address"} + ], + "name": "approvePaymentProxyToSpend", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_erc20Address", "type": "address"} + ], + "name": "approveRouterToSpend", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "owner", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "paymentProxy", + "outputs": [ + {"internalType": "contract IERC20FeeProxy", "name": "", "type": "address"} + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + { + "internalType": "address", + "name": "_paymentProxyAddress", + "type": "address", + } + ], + "name": "setPaymentProxy", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + { + "internalType": "address", + "name": "_newSwapRouterAddress", + "type": "address", + } + ], + "name": "setRouter", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "swapRouter", + "outputs": [ + { + "internalType": "contract IUniswapV2Router02", + "name": "", + "type": "address", + } + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "_to", "type": "address"}, + {"internalType": "uint256", "name": "_amount", "type": "uint256"}, + {"internalType": "uint256", "name": "_amountInMax", "type": "uint256"}, + {"internalType": "address[]", "name": "_path", "type": "address[]"}, + {"internalType": "bytes", "name": "_paymentReference", "type": "bytes"}, + {"internalType": "uint256", "name": "_feeAmount", "type": "uint256"}, + {"internalType": "address", "name": "_feeAddress", "type": "address"}, + {"internalType": "uint256", "name": "_deadline", "type": "uint256"}, + ], + "name": "swapTransferWithReference", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "newOwner", "type": "address"}], + "name": "transferOwnership", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, +] +request_ethereum_proxy = [ + { + "anonymous": False, + "inputs": [ + { + "indexed": False, + "internalType": "address", + "name": "to", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "amount", + "type": "uint256", + }, + { + "indexed": True, + "internalType": "bytes", + "name": "paymentReference", + "type": "bytes", + }, + ], + "name": "TransferWithReference", + "type": "event", + }, + {"payable": True, "stateMutability": "payable", "type": "fallback"}, + { + "constant": False, + "inputs": [ + {"internalType": "address payable", "name": "_to", "type": "address"}, + {"internalType": "bytes", "name": "_paymentReference", "type": "bytes"}, + ], + "name": "transferWithReference", + "outputs": [], + "payable": True, + "stateMutability": "payable", + "type": "function", + }, +] diff --git a/app/datasources/abis/sablier.py b/app/datasources/abis/sablier.py new file mode 100644 index 0000000..1d25449 --- /dev/null +++ b/app/datasources/abis/sablier.py @@ -0,0 +1,1096 @@ +sablier_ctoken_manager = [ + { + "constant": True, + "inputs": [], + "name": "owner", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "isOwner", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "sender", "type": "address"}], + "name": "initialize", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "newOwner", "type": "address"}], + "name": "transferOwnership", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "constructor", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "previousOwner", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "newOwner", + "type": "address", + }, + ], + "name": "OwnershipTransferred", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "tokenAddress", + "type": "address", + } + ], + "name": "DiscardCToken", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "tokenAddress", + "type": "address", + } + ], + "name": "WhitelistCToken", + "type": "event", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "tokenAddress", "type": "address"} + ], + "name": "whitelistCToken", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "tokenAddress", "type": "address"} + ], + "name": "discardCToken", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [ + {"internalType": "address", "name": "tokenAddress", "type": "address"} + ], + "name": "isCToken", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, +] +sablier_payroll = [ + { + "constant": True, + "inputs": [ + {"internalType": "address", "name": "", "type": "address"}, + {"internalType": "uint256", "name": "", "type": "uint256"}, + ], + "name": "relayers", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "sablier", + "outputs": [ + {"internalType": "contract Sablier", "name": "", "type": "address"} + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "getHubAddr", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "bytes", "name": "context", "type": "bytes"}], + "name": "preRelayedCall", + "outputs": [{"internalType": "bytes32", "name": "", "type": "bytes32"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "owner", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "isOwner", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "relayHubVersion", + "outputs": [{"internalType": "string", "name": "", "type": "string"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "nextSalaryId", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "bytes", "name": "context", "type": "bytes"}, + {"internalType": "bool", "name": "success", "type": "bool"}, + {"internalType": "uint256", "name": "actualCharge", "type": "uint256"}, + {"internalType": "bytes32", "name": "preRetVal", "type": "bytes32"}, + ], + "name": "postRelayedCall", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "newOwner", "type": "address"}], + "name": "transferOwnership", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "uint256", + "name": "salaryId", + "type": "uint256", + }, + { + "indexed": True, + "internalType": "uint256", + "name": "streamId", + "type": "uint256", + }, + { + "indexed": True, + "internalType": "address", + "name": "company", + "type": "address", + }, + ], + "name": "CreateSalary", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "uint256", + "name": "salaryId", + "type": "uint256", + }, + { + "indexed": True, + "internalType": "uint256", + "name": "streamId", + "type": "uint256", + }, + { + "indexed": True, + "internalType": "address", + "name": "company", + "type": "address", + }, + ], + "name": "WithdrawFromSalary", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "uint256", + "name": "salaryId", + "type": "uint256", + }, + { + "indexed": True, + "internalType": "uint256", + "name": "streamId", + "type": "uint256", + }, + { + "indexed": True, + "internalType": "address", + "name": "company", + "type": "address", + }, + ], + "name": "CancelSalary", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "oldRelayHub", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "newRelayHub", + "type": "address", + }, + ], + "name": "RelayHubChanged", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "previousOwner", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "newOwner", + "type": "address", + }, + ], + "name": "OwnershipTransferred", + "type": "event", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "trustedSigner", "type": "address"} + ], + "name": "initialize", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "ownerAddress", "type": "address"}, + {"internalType": "address", "name": "signerAddress", "type": "address"}, + {"internalType": "address", "name": "sablierAddress", "type": "address"}, + ], + "name": "initialize", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [], + "name": "initialize", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "relayer", "type": "address"}, + {"internalType": "uint256", "name": "salaryId", "type": "uint256"}, + ], + "name": "whitelistRelayer", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "relayer", "type": "address"}, + {"internalType": "uint256", "name": "salaryId", "type": "uint256"}, + ], + "name": "discardRelayer", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [ + {"internalType": "address", "name": "relay", "type": "address"}, + {"internalType": "address", "name": "from", "type": "address"}, + {"internalType": "bytes", "name": "encodedFunction", "type": "bytes"}, + {"internalType": "uint256", "name": "transactionFee", "type": "uint256"}, + {"internalType": "uint256", "name": "gasPrice", "type": "uint256"}, + {"internalType": "uint256", "name": "gasLimit", "type": "uint256"}, + {"internalType": "uint256", "name": "nonce", "type": "uint256"}, + {"internalType": "bytes", "name": "approvalData", "type": "bytes"}, + {"internalType": "uint256", "name": "", "type": "uint256"}, + ], + "name": "acceptRelayedCall", + "outputs": [ + {"internalType": "uint256", "name": "", "type": "uint256"}, + {"internalType": "bytes", "name": "", "type": "bytes"}, + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "uint256", "name": "salaryId", "type": "uint256"}], + "name": "getSalary", + "outputs": [ + {"internalType": "address", "name": "company", "type": "address"}, + {"internalType": "address", "name": "employee", "type": "address"}, + {"internalType": "uint256", "name": "salary", "type": "uint256"}, + {"internalType": "address", "name": "tokenAddress", "type": "address"}, + {"internalType": "uint256", "name": "startTime", "type": "uint256"}, + {"internalType": "uint256", "name": "stopTime", "type": "uint256"}, + {"internalType": "uint256", "name": "remainingBalance", "type": "uint256"}, + {"internalType": "uint256", "name": "rate", "type": "uint256"}, + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "employee", "type": "address"}, + {"internalType": "uint256", "name": "salary", "type": "uint256"}, + {"internalType": "address", "name": "tokenAddress", "type": "address"}, + {"internalType": "uint256", "name": "startTime", "type": "uint256"}, + {"internalType": "uint256", "name": "stopTime", "type": "uint256"}, + ], + "name": "createSalary", + "outputs": [{"internalType": "uint256", "name": "salaryId", "type": "uint256"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "employee", "type": "address"}, + {"internalType": "uint256", "name": "salary", "type": "uint256"}, + {"internalType": "address", "name": "tokenAddress", "type": "address"}, + {"internalType": "uint256", "name": "startTime", "type": "uint256"}, + {"internalType": "uint256", "name": "stopTime", "type": "uint256"}, + { + "internalType": "uint256", + "name": "senderSharePercentage", + "type": "uint256", + }, + { + "internalType": "uint256", + "name": "recipientSharePercentage", + "type": "uint256", + }, + ], + "name": "createCompoundingSalary", + "outputs": [{"internalType": "uint256", "name": "salaryId", "type": "uint256"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "uint256", "name": "salaryId", "type": "uint256"}, + {"internalType": "uint256", "name": "amount", "type": "uint256"}, + ], + "name": "withdrawFromSalary", + "outputs": [{"internalType": "bool", "name": "success", "type": "bool"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "uint256", "name": "salaryId", "type": "uint256"}], + "name": "cancelSalary", + "outputs": [{"internalType": "bool", "name": "success", "type": "bool"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, +] +sablier_abi = [ + { + "constant": True, + "inputs": [], + "name": "nextStreamId", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [], + "name": "unpause", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "address", "name": "account", "type": "address"}], + "name": "isPauser", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "paused", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [], + "name": "initialize", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "account", "type": "address"}], + "name": "addPauser", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [], + "name": "pause", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "owner", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "isOwner", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "sender", "type": "address"}], + "name": "initialize", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "cTokenManager", + "outputs": [ + {"internalType": "contract ICTokenManager", "name": "", "type": "address"} + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "fee", + "outputs": [{"internalType": "uint256", "name": "mantissa", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "address", "name": "newOwner", "type": "address"}], + "name": "transferOwnership", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [ + { + "internalType": "address", + "name": "cTokenManagerAddress", + "type": "address", + } + ], + "payable": False, + "stateMutability": "nonpayable", + "type": "constructor", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "uint256", + "name": "streamId", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "exchangeRate", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "senderSharePercentage", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "recipientSharePercentage", + "type": "uint256", + }, + ], + "name": "CreateCompoundingStream", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "uint256", + "name": "streamId", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "senderInterest", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "recipientInterest", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "sablierInterest", + "type": "uint256", + }, + ], + "name": "PayInterest", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "tokenAddress", + "type": "address", + }, + { + "indexed": True, + "internalType": "uint256", + "name": "amount", + "type": "uint256", + }, + ], + "name": "TakeEarnings", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "uint256", + "name": "fee", + "type": "uint256", + } + ], + "name": "UpdateFee", + "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", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "account", + "type": "address", + } + ], + "name": "PauserAdded", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "account", + "type": "address", + } + ], + "name": "PauserRemoved", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "previousOwner", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "newOwner", + "type": "address", + }, + ], + "name": "OwnershipTransferred", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "uint256", + "name": "streamId", + "type": "uint256", + }, + { + "indexed": True, + "internalType": "address", + "name": "sender", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "recipient", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "deposit", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "address", + "name": "tokenAddress", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "startTime", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "stopTime", + "type": "uint256", + }, + ], + "name": "CreateStream", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "uint256", + "name": "streamId", + "type": "uint256", + }, + { + "indexed": True, + "internalType": "address", + "name": "recipient", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "amount", + "type": "uint256", + }, + ], + "name": "WithdrawFromStream", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "uint256", + "name": "streamId", + "type": "uint256", + }, + { + "indexed": True, + "internalType": "address", + "name": "sender", + "type": "address", + }, + { + "indexed": True, + "internalType": "address", + "name": "recipient", + "type": "address", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "senderBalance", + "type": "uint256", + }, + { + "indexed": False, + "internalType": "uint256", + "name": "recipientBalance", + "type": "uint256", + }, + ], + "name": "CancelStream", + "type": "event", + }, + { + "constant": False, + "inputs": [ + {"internalType": "uint256", "name": "feePercentage", "type": "uint256"} + ], + "name": "updateFee", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "tokenAddress", "type": "address"}, + {"internalType": "uint256", "name": "amount", "type": "uint256"}, + ], + "name": "takeEarnings", + "outputs": [], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "uint256", "name": "streamId", "type": "uint256"}], + "name": "getStream", + "outputs": [ + {"internalType": "address", "name": "sender", "type": "address"}, + {"internalType": "address", "name": "recipient", "type": "address"}, + {"internalType": "uint256", "name": "deposit", "type": "uint256"}, + {"internalType": "address", "name": "tokenAddress", "type": "address"}, + {"internalType": "uint256", "name": "startTime", "type": "uint256"}, + {"internalType": "uint256", "name": "stopTime", "type": "uint256"}, + {"internalType": "uint256", "name": "remainingBalance", "type": "uint256"}, + {"internalType": "uint256", "name": "ratePerSecond", "type": "uint256"}, + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "uint256", "name": "streamId", "type": "uint256"}], + "name": "deltaOf", + "outputs": [{"internalType": "uint256", "name": "delta", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [ + {"internalType": "uint256", "name": "streamId", "type": "uint256"}, + {"internalType": "address", "name": "who", "type": "address"}, + ], + "name": "balanceOf", + "outputs": [{"internalType": "uint256", "name": "balance", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "uint256", "name": "streamId", "type": "uint256"}], + "name": "isCompoundingStream", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [{"internalType": "uint256", "name": "streamId", "type": "uint256"}], + "name": "getCompoundingStream", + "outputs": [ + {"internalType": "address", "name": "sender", "type": "address"}, + {"internalType": "address", "name": "recipient", "type": "address"}, + {"internalType": "uint256", "name": "deposit", "type": "uint256"}, + {"internalType": "address", "name": "tokenAddress", "type": "address"}, + {"internalType": "uint256", "name": "startTime", "type": "uint256"}, + {"internalType": "uint256", "name": "stopTime", "type": "uint256"}, + {"internalType": "uint256", "name": "remainingBalance", "type": "uint256"}, + {"internalType": "uint256", "name": "ratePerSecond", "type": "uint256"}, + { + "internalType": "uint256", + "name": "exchangeRateInitial", + "type": "uint256", + }, + { + "internalType": "uint256", + "name": "senderSharePercentage", + "type": "uint256", + }, + { + "internalType": "uint256", + "name": "recipientSharePercentage", + "type": "uint256", + }, + ], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "uint256", "name": "streamId", "type": "uint256"}, + {"internalType": "uint256", "name": "amount", "type": "uint256"}, + ], + "name": "interestOf", + "outputs": [ + {"internalType": "uint256", "name": "senderInterest", "type": "uint256"}, + {"internalType": "uint256", "name": "recipientInterest", "type": "uint256"}, + {"internalType": "uint256", "name": "sablierInterest", "type": "uint256"}, + ], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": True, + "inputs": [ + {"internalType": "address", "name": "tokenAddress", "type": "address"} + ], + "name": "getEarnings", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "recipient", "type": "address"}, + {"internalType": "uint256", "name": "deposit", "type": "uint256"}, + {"internalType": "address", "name": "tokenAddress", "type": "address"}, + {"internalType": "uint256", "name": "startTime", "type": "uint256"}, + {"internalType": "uint256", "name": "stopTime", "type": "uint256"}, + ], + "name": "createStream", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "address", "name": "recipient", "type": "address"}, + {"internalType": "uint256", "name": "deposit", "type": "uint256"}, + {"internalType": "address", "name": "tokenAddress", "type": "address"}, + {"internalType": "uint256", "name": "startTime", "type": "uint256"}, + {"internalType": "uint256", "name": "stopTime", "type": "uint256"}, + { + "internalType": "uint256", + "name": "senderSharePercentage", + "type": "uint256", + }, + { + "internalType": "uint256", + "name": "recipientSharePercentage", + "type": "uint256", + }, + ], + "name": "createCompoundingStream", + "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [ + {"internalType": "uint256", "name": "streamId", "type": "uint256"}, + {"internalType": "uint256", "name": "amount", "type": "uint256"}, + ], + "name": "withdrawFromStream", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, + { + "constant": False, + "inputs": [{"internalType": "uint256", "name": "streamId", "type": "uint256"}], + "name": "cancelStream", + "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], + "payable": False, + "stateMutability": "nonpayable", + "type": "function", + }, +] diff --git a/app/datasources/abis/safe.py b/app/datasources/abis/safe.py new file mode 100644 index 0000000..923136a --- /dev/null +++ b/app/datasources/abis/safe.py @@ -0,0 +1,6 @@ +# flake8: noqa E501 +import json + +safe_allowance_module_abi = json.loads( + '[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"safe","type":"address"},{"indexed":false,"internalType":"address","name":"delegate","type":"address"}],"name":"AddDelegate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"safe","type":"address"},{"indexed":false,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"}],"name":"DeleteAllowance","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"safe","type":"address"},{"indexed":false,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint96","name":"value","type":"uint96"},{"indexed":false,"internalType":"uint16","name":"nonce","type":"uint16"}],"name":"ExecuteAllowanceTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"safe","type":"address"},{"indexed":false,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"address","name":"paymentToken","type":"address"},{"indexed":false,"internalType":"address","name":"paymentReceiver","type":"address"},{"indexed":false,"internalType":"uint96","name":"payment","type":"uint96"}],"name":"PayAllowanceTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"safe","type":"address"},{"indexed":false,"internalType":"address","name":"delegate","type":"address"}],"name":"RemoveDelegate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"safe","type":"address"},{"indexed":false,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"}],"name":"ResetAllowance","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"safe","type":"address"},{"indexed":false,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint96","name":"allowanceAmount","type":"uint96"},{"indexed":false,"internalType":"uint16","name":"resetTime","type":"uint16"}],"name":"SetAllowance","type":"event"},{"inputs":[],"name":"ALLOWANCE_TRANSFER_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NAME","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"addDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowances","outputs":[{"internalType":"uint96","name":"amount","type":"uint96"},{"internalType":"uint96","name":"spent","type":"uint96"},{"internalType":"uint16","name":"resetTimeMin","type":"uint16"},{"internalType":"uint32","name":"lastResetMin","type":"uint32"},{"internalType":"uint16","name":"nonce","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint48","name":"","type":"uint48"}],"name":"delegates","outputs":[{"internalType":"address","name":"delegate","type":"address"},{"internalType":"uint48","name":"prev","type":"uint48"},{"internalType":"uint48","name":"next","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegatesStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegate","type":"address"},{"internalType":"address","name":"token","type":"address"}],"name":"deleteAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract GnosisSafe","name":"safe","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint96","name":"amount","type":"uint96"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint96","name":"payment","type":"uint96"},{"internalType":"address","name":"delegate","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"executeAllowanceTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"safe","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint96","name":"amount","type":"uint96"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint96","name":"payment","type":"uint96"},{"internalType":"uint16","name":"nonce","type":"uint16"}],"name":"generateTransferHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"safe","type":"address"},{"internalType":"uint48","name":"start","type":"uint48"},{"internalType":"uint8","name":"pageSize","type":"uint8"}],"name":"getDelegates","outputs":[{"internalType":"address[]","name":"results","type":"address[]"},{"internalType":"uint48","name":"next","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"safe","type":"address"},{"internalType":"address","name":"delegate","type":"address"},{"internalType":"address","name":"token","type":"address"}],"name":"getTokenAllowance","outputs":[{"internalType":"uint256[5]","name":"","type":"uint256[5]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"safe","type":"address"},{"internalType":"address","name":"delegate","type":"address"}],"name":"getTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegate","type":"address"},{"internalType":"bool","name":"removeAllowances","type":"bool"}],"name":"removeDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegate","type":"address"},{"internalType":"address","name":"token","type":"address"}],"name":"resetAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegate","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint96","name":"allowanceAmount","type":"uint96"},{"internalType":"uint16","name":"resetTimeMin","type":"uint16"},{"internalType":"uint32","name":"resetBaseMin","type":"uint32"}],"name":"setAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]' +) diff --git a/app/datasources/abis/sight.py b/app/datasources/abis/sight.py new file mode 100644 index 0000000..f77f5fd --- /dev/null +++ b/app/datasources/abis/sight.py @@ -0,0 +1,12 @@ +# flake8: noqa E501 +import json + +conditional_token_abi = json.loads( + '[{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"},{"name":"","type":"uint256"}],"name":"payoutNumerators","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"ids","type":"uint256[]"},{"name":"values","type":"uint256[]"},{"name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owners","type":"address[]"},{"name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"operator","type":"address"},{"name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"payoutDenominator","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"id","type":"uint256"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"conditionId","type":"bytes32"},{"indexed":true,"name":"oracle","type":"address"},{"indexed":true,"name":"questionId","type":"bytes32"},{"indexed":false,"name":"outcomeSlotCount","type":"uint256"}],"name":"ConditionPreparation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"conditionId","type":"bytes32"},{"indexed":true,"name":"oracle","type":"address"},{"indexed":true,"name":"questionId","type":"bytes32"},{"indexed":false,"name":"outcomeSlotCount","type":"uint256"},{"indexed":false,"name":"payoutNumerators","type":"uint256[]"}],"name":"ConditionResolution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"stakeholder","type":"address"},{"indexed":false,"name":"collateralToken","type":"address"},{"indexed":true,"name":"parentCollectionId","type":"bytes32"},{"indexed":true,"name":"conditionId","type":"bytes32"},{"indexed":false,"name":"partition","type":"uint256[]"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"PositionSplit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"stakeholder","type":"address"},{"indexed":false,"name":"collateralToken","type":"address"},{"indexed":true,"name":"parentCollectionId","type":"bytes32"},{"indexed":true,"name":"conditionId","type":"bytes32"},{"indexed":false,"name":"partition","type":"uint256[]"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"PositionsMerge","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"redeemer","type":"address"},{"indexed":true,"name":"collateralToken","type":"address"},{"indexed":true,"name":"parentCollectionId","type":"bytes32"},{"indexed":false,"name":"conditionId","type":"bytes32"},{"indexed":false,"name":"indexSets","type":"uint256[]"},{"indexed":false,"name":"payout","type":"uint256"}],"name":"PayoutRedemption","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"operator","type":"address"},{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"operator","type":"address"},{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"ids","type":"uint256[]"},{"indexed":false,"name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"operator","type":"address"},{"indexed":false,"name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"value","type":"string"},{"indexed":true,"name":"id","type":"uint256"}],"name":"URI","type":"event"},{"constant":false,"inputs":[{"name":"oracle","type":"address"},{"name":"questionId","type":"bytes32"},{"name":"outcomeSlotCount","type":"uint256"}],"name":"prepareCondition","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"questionId","type":"bytes32"},{"name":"payouts","type":"uint256[]"}],"name":"reportPayouts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"collateralToken","type":"address"},{"name":"parentCollectionId","type":"bytes32"},{"name":"conditionId","type":"bytes32"},{"name":"partition","type":"uint256[]"},{"name":"amount","type":"uint256"}],"name":"splitPosition","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"collateralToken","type":"address"},{"name":"parentCollectionId","type":"bytes32"},{"name":"conditionId","type":"bytes32"},{"name":"partition","type":"uint256[]"},{"name":"amount","type":"uint256"}],"name":"mergePositions","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"collateralToken","type":"address"},{"name":"parentCollectionId","type":"bytes32"},{"name":"conditionId","type":"bytes32"},{"name":"indexSets","type":"uint256[]"}],"name":"redeemPositions","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"conditionId","type":"bytes32"}],"name":"getOutcomeSlotCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"oracle","type":"address"},{"name":"questionId","type":"bytes32"},{"name":"outcomeSlotCount","type":"uint256"}],"name":"getConditionId","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"parentCollectionId","type":"bytes32"},{"name":"conditionId","type":"bytes32"},{"name":"indexSet","type":"uint256"}],"name":"getCollectionId","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"collateralToken","type":"address"},{"name":"collectionId","type":"bytes32"}],"name":"getPositionId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"}]' +) +market_maker_abi = json.loads( + '[{"constant":true,"inputs":[{"name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"resume","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pmSystem","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"outcomeTokenAmounts","type":"int256[]"},{"name":"collateralLimit","type":"int256"}],"name":"trade","outputs":[{"name":"netCost","type":"int256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"close","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawFees","outputs":[{"name":"fees","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"fundingChange","type":"int256"}],"name":"changeFunding","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"whitelist","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"outcomeTokenCost","type":"uint256"}],"name":"calcMarketFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"collateralToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_operator","type":"address"},{"name":"","type":"address"},{"name":"","type":"uint256[]"},{"name":"","type":"uint256[]"},{"name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"name":"","type":"bytes4"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stage","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"funding","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"conditionIds","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"atomicOutcomeSlotCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fee","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_fee","type":"uint64"}],"name":"changeFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"operator","type":"address"},{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"name":"","type":"bytes4"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"FEE_RANGE","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"initialFunding","type":"uint256"}],"name":"AMMCreated","type":"event"},{"anonymous":false,"inputs":[],"name":"AMMPaused","type":"event"},{"anonymous":false,"inputs":[],"name":"AMMResumed","type":"event"},{"anonymous":false,"inputs":[],"name":"AMMClosed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"fundingChange","type":"int256"}],"name":"AMMFundingChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newFee","type":"uint64"}],"name":"AMMFeeChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"fees","type":"uint256"}],"name":"AMMFeeWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"transactor","type":"address"},{"indexed":false,"name":"outcomeTokenAmounts","type":"int256[]"},{"indexed":false,"name":"outcomeTokenNetCost","type":"int256"},{"indexed":false,"name":"marketFees","type":"uint256"}],"name":"AMMOutcomeTokenTrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"constant":true,"inputs":[{"name":"outcomeTokenAmounts","type":"int256[]"}],"name":"calcNetCost","outputs":[{"name":"netCost","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"outcomeTokenIndex","type":"uint8"}],"name":"calcMarginalPrice","outputs":[{"name":"price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]' +) +market_maker_factory_abi = json.loads( + '[{"constant":true,"inputs":[],"name":"implementationMaster","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"creator","type":"address"},{"indexed":false,"name":"lmsrMarketMaker","type":"address"},{"indexed":false,"name":"pmSystem","type":"address"},{"indexed":false,"name":"collateralToken","type":"address"},{"indexed":false,"name":"conditionIds","type":"bytes32[]"},{"indexed":false,"name":"fee","type":"uint64"},{"indexed":false,"name":"funding","type":"uint256"}],"name":"LMSRMarketMakerCreation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"initialFunding","type":"uint256"}],"name":"AMMCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"target","type":"address"},{"indexed":false,"name":"clone","type":"address"}],"name":"CloneCreated","type":"event"},{"constant":false,"inputs":[{"name":"consData","type":"bytes"}],"name":"cloneConstructor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"pmSystem","type":"address"},{"name":"collateralToken","type":"address"},{"name":"conditionIds","type":"bytes32[]"},{"name":"fee","type":"uint64"},{"name":"whitelist","type":"address"},{"name":"funding","type":"uint256"}],"name":"createLMSRMarketMaker","outputs":[{"name":"lmsrMarketMaker","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]' +) diff --git a/app/datasources/abis/snapshot.py b/app/datasources/abis/snapshot.py new file mode 100644 index 0000000..394e0dd --- /dev/null +++ b/app/datasources/abis/snapshot.py @@ -0,0 +1,79 @@ +snapshot_delegate_registry_abi = [ + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "delegator", + "type": "address", + }, + { + "indexed": True, + "internalType": "bytes32", + "name": "id", + "type": "bytes32", + }, + { + "indexed": True, + "internalType": "address", + "name": "delegate", + "type": "address", + }, + ], + "name": "ClearDelegate", + "type": "event", + }, + { + "anonymous": False, + "inputs": [ + { + "indexed": True, + "internalType": "address", + "name": "delegator", + "type": "address", + }, + { + "indexed": True, + "internalType": "bytes32", + "name": "id", + "type": "bytes32", + }, + { + "indexed": True, + "internalType": "address", + "name": "delegate", + "type": "address", + }, + ], + "name": "SetDelegate", + "type": "event", + }, + { + "inputs": [ + {"internalType": "address", "name": "", "type": "address"}, + {"internalType": "bytes32", "name": "", "type": "bytes32"}, + ], + "name": "delegation", + "outputs": [{"internalType": "address", "name": "", "type": "address"}], + "stateMutability": "view", + "type": "function", + }, + { + "inputs": [ + {"internalType": "bytes32", "name": "id", "type": "bytes32"}, + {"internalType": "address", "name": "delegate", "type": "address"}, + ], + "name": "setDelegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, + { + "inputs": [{"internalType": "bytes32", "name": "id", "type": "bytes32"}], + "name": "clearDelegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function", + }, +] diff --git a/app/datasources/abis/timelock.py b/app/datasources/abis/timelock.py new file mode 100644 index 0000000..6c7c2a7 --- /dev/null +++ b/app/datasources/abis/timelock.py @@ -0,0 +1,5 @@ +import json + +timelock_abi = json.loads( + '[{"inputs":[{"internalType":"address","name":"admin_","type":"address"},{"internalType":"uint256","name":"delay_","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"CancelTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ExecuteTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"NewDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"QueueTransaction","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"GRACE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAXIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin_initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"cancelTransaction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"executeTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"queueTransaction","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"queuedTransactions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"delay_","type":"uint256"}],"name":"setDelay","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"pendingAdmin_","type":"address"}],"name":"setPendingAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]' +) diff --git a/app/datasources/db/models.py b/app/datasources/db/models.py index 3cb03a9..7237eba 100644 --- a/app/datasources/db/models.py +++ b/app/datasources/db/models.py @@ -65,12 +65,35 @@ class AbiSource(SqlQueryBase, SQLModel, table=True): abis: list["Abi"] = Relationship(back_populates="source") + @classmethod + async def get_or_create( + cls, session: AsyncSession, name: str, url: str + ) -> tuple["AbiSource", bool]: + """ + Checks if an AbiSource with the given 'name' and 'url' exists. + If found, returns it with False. If not, creates and returns it with True. + + :param session: The database session. + :param name: The name to check or create. + :param url: The URL to check or create. + :return: A tuple containing the AbiSource object and a boolean indicating + whether it was created (True) or already exists (False). + """ + query = select(cls).where(cls.name == name, cls.url == url) + results = await session.exec(query) + if result := results.first(): + return result, False + else: + new_item = cls(name=name, url=url) + await new_item.create(session) + return new_item, True + class Abi(SqlQueryBase, TimeStampedSQLModel, table=True): id: int | None = Field(default=None, primary_key=True) abi_hash: bytes | None = Field(nullable=False, index=True, unique=True) relevance: int | None = Field(nullable=False, default=0) - abi_json: dict = Field(default_factory=dict, sa_column=Column(JSON)) + abi_json: list[dict] | dict = Field(default_factory=dict, sa_column=Column(JSON)) source_id: int | None = Field( nullable=False, default=None, foreign_key="abisource.id" ) @@ -93,6 +116,30 @@ async def create(self, session): self.abi_hash = get_md5_abi_hash(self.abi_json) return await self._save(session) + @classmethod + async def get_abi( + cls, + session: AsyncSession, + abi_json: list[dict] | dict, + ): + """ + Checks if an Abi exists based on the 'abi_json' by its calculated 'abi_hash'. + If it exists, returns the existing Abi. If not, + returns None. + + :param session: The database session. + :param abi_json: The ABI JSON to check. + :return: The Abi object if it exists, or None if it doesn't. + """ + abi_hash = get_md5_abi_hash(abi_json) + query = select(cls).where(cls.abi_hash == abi_hash) + result = await session.exec(query) + + if existing_abi := result.first(): + return existing_abi + + return None + class Project(SqlQueryBase, SQLModel, table=True): id: int | None = Field(default=None, primary_key=True) diff --git a/app/main.py b/app/main.py index 8cf22e6..15a5150 100644 --- a/app/main.py +++ b/app/main.py @@ -8,6 +8,7 @@ from .datasources.queue.exceptions import QueueProviderUnableToConnectException from .datasources.queue.queue_provider import QueueProvider from .routers import about, admin, contracts, default +from .services.abis import AbiService from .services.events import EventsService @@ -20,6 +21,7 @@ async def lifespan(app: FastAPI): """ queue_provider = QueueProvider() consume_task = None + abi_service = AbiService() try: loop = asyncio.get_running_loop() try: @@ -31,6 +33,7 @@ async def lifespan(app: FastAPI): consume_task = asyncio.create_task( queue_provider.consume(events_service.process_event) ) + await abi_service.load_local_abis_in_database() yield finally: if consume_task: diff --git a/app/services/abis.py b/app/services/abis.py new file mode 100644 index 0000000..6b90188 --- /dev/null +++ b/app/services/abis.py @@ -0,0 +1,179 @@ +from typing import Sequence, cast + +from safe_eth.eth.contracts import ( + get_erc20_contract, + get_erc721_contract, + get_kyber_network_proxy_contract, + get_multi_send_contract, + get_safe_to_l2_migration_contract, + get_safe_V0_0_1_contract, + get_safe_V1_0_0_contract, + get_safe_V1_1_1_contract, + get_safe_V1_3_0_contract, + get_safe_V1_4_1_contract, + get_uniswap_exchange_contract, +) +from sqlmodel.ext.asyncio.session import AsyncSession +from web3 import Web3 +from web3.types import ABIEvent, ABIFunction + +from app.datasources.abis.aave import ( + aave_a_token, + aave_lending_pool, + aave_lending_pool_addresses_provider, + aave_lending_pool_core, +) +from app.datasources.abis.admin_upgradeability_proxy import ( + initializable_admin_upgradeability_proxy_abi, +) +from app.datasources.abis.balancer import balancer_bactions, balancer_exchange_proxy +from app.datasources.abis.chainlink import chainlink_token_abi +from app.datasources.abis.compound import comptroller_abi, ctoken_abi +from app.datasources.abis.gnosis_protocol import ( + fleet_factory_abi, + fleet_factory_deterministic_abi, + gnosis_protocol_abi, +) +from app.datasources.abis.idle import idle_token_v3 +from app.datasources.abis.maker_dao import maker_dao_abis +from app.datasources.abis.open_zeppelin import ( + open_zeppelin_admin_upgradeability_proxy, + open_zeppelin_proxy_admin, +) +from app.datasources.abis.request import ( + request_erc20_proxy, + request_erc20_swap_to_pay, + request_ethereum_proxy, +) +from app.datasources.abis.sablier import ( + sablier_abi, + sablier_ctoken_manager, + sablier_payroll, +) +from app.datasources.abis.safe import safe_allowance_module_abi +from app.datasources.abis.sight import ( + conditional_token_abi, + market_maker_abi, + market_maker_factory_abi, +) +from app.datasources.abis.snapshot import snapshot_delegate_registry_abi +from app.datasources.abis.timelock import timelock_abi +from app.datasources.db.database import database_session +from app.datasources.db.models import Abi, AbiSource + + +class AbiService: + + def __init__(self): + self.dummy_w3 = Web3() + + @staticmethod + async def _store_abis_in_database( + session: AsyncSession, + abi_jsons: list[Sequence[ABIFunction | ABIEvent]], + relevance: int, + abi_source: AbiSource, + ) -> None: + for abi_json in abi_jsons: + abi = await Abi.get_abi(session, cast(list[dict], abi_json)) + if abi is None: + await Abi( + abi_json=abi_json, source_id=abi_source.id, relevance=relevance + ).create(session) + + @database_session + async def load_local_abis_in_database(self, session: AsyncSession) -> None: + abi_source, _ = await AbiSource.get_or_create( + session, "localstorage", "decoder-service" + ) + await self._store_abis_in_database( + session, self.get_safe_contracts_abis(), 100, abi_source + ) + await self._store_abis_in_database( + session, self.get_erc_abis() + self.get_safe_abis(), 90, abi_source + ) + await self._store_abis_in_database( + session, self.get_third_parties_abis(), 50, abi_source + ) + + def get_safe_contracts_abis(self) -> list[Sequence[ABIFunction | ABIEvent]]: + return [ + get_safe_V0_0_1_contract(self.dummy_w3).abi, + get_safe_V1_0_0_contract(self.dummy_w3).abi, + get_safe_V1_1_1_contract(self.dummy_w3).abi, + get_safe_V1_3_0_contract(self.dummy_w3).abi, + get_safe_V1_4_1_contract(self.dummy_w3).abi, + ] + + def get_safe_abis(self) -> list[Sequence[ABIFunction | ABIEvent]]: + return [ + get_multi_send_contract(self.dummy_w3).abi, + get_safe_to_l2_migration_contract(self.dummy_w3).abi, + safe_allowance_module_abi, + ] + + def get_erc_abis(self) -> list[Sequence[ABIFunction | ABIEvent]]: + return [ + get_erc721_contract(self.dummy_w3).abi, + get_erc20_contract(self.dummy_w3).abi, + ] + + def get_third_parties_abis(self) -> list[Sequence[ABIFunction | ABIEvent]]: + aave_contracts = [ + aave_a_token, + aave_lending_pool, + aave_lending_pool_addresses_provider, + aave_lending_pool_core, + ] + balancer_contracts = [balancer_bactions, balancer_exchange_proxy] + chainlink_contracts = [chainlink_token_abi] + compound_contracts = [ctoken_abi, comptroller_abi] + exchanges = [ + get_uniswap_exchange_contract(self.dummy_w3).abi, + get_kyber_network_proxy_contract(self.dummy_w3).abi, + ] + gnosis_protocol = [ + gnosis_protocol_abi, + fleet_factory_deterministic_abi, + fleet_factory_abi, + ] + idle_contracts = [idle_token_v3] + initializable_admin_upgradeability_proxy_contracts = [ + initializable_admin_upgradeability_proxy_abi + ] + maker_dao_contracts = maker_dao_abis + open_zeppelin_contracts = [ + open_zeppelin_admin_upgradeability_proxy, + open_zeppelin_proxy_admin, + ] + request_contracts = [ + request_erc20_proxy, + request_erc20_swap_to_pay, + request_ethereum_proxy, + ] + sablier_contracts = [sablier_ctoken_manager, sablier_payroll, sablier_abi] + sight_contracts = [ + conditional_token_abi, + market_maker_abi, + market_maker_factory_abi, + ] + snapshot_contracts = [snapshot_delegate_registry_abi] + timelock_contracts = [timelock_abi] + + return ( + aave_contracts + + balancer_contracts + + chainlink_contracts + + compound_contracts + + exchanges + + gnosis_protocol + + idle_contracts + + initializable_admin_upgradeability_proxy_contracts + + maker_dao_contracts + + open_zeppelin_contracts + + request_contracts + + sablier_contracts + + sight_contracts + + snapshot_contracts + + timelock_contracts + ) diff --git a/app/utils/__init__.py b/app/tests/datasources/db/__init__.py similarity index 100% rename from app/utils/__init__.py rename to app/tests/datasources/db/__init__.py diff --git a/app/tests/db/db_async_conn.py b/app/tests/datasources/db/db_async_conn.py similarity index 100% rename from app/tests/db/db_async_conn.py rename to app/tests/datasources/db/db_async_conn.py diff --git a/app/tests/db/test_model.py b/app/tests/datasources/db/test_model.py similarity index 82% rename from app/tests/db/test_model.py rename to app/tests/datasources/db/test_model.py index 124cc23..c3e6e2a 100644 --- a/app/tests/db/test_model.py +++ b/app/tests/datasources/db/test_model.py @@ -2,7 +2,8 @@ from app.datasources.db.database import database_session from app.datasources.db.models import Abi, AbiSource, Contract, Project -from app.tests.db.db_async_conn import DbAsyncConn + +from .db_async_conn import DbAsyncConn class TestModel(DbAsyncConn): @@ -59,6 +60,8 @@ async def test_abi_get_abis_sorted_by_relevance(self, session: AsyncSession): ] source = AbiSource(name="A Test Source", url="https://test.com") await source.create(session) + abi_by_abi_json = await Abi.get_abi(session, abi_jsons[0]) + self.assertIsNone(abi_by_abi_json) abi = Abi( abi_hash=b"A Test Abi", abi_json=abi_jsons[0], @@ -66,6 +69,8 @@ async def test_abi_get_abis_sorted_by_relevance(self, session: AsyncSession): source_id=source.id, ) await abi.create(session) + abi_by_abi_json = await Abi.get_abi(session, abi_jsons[0]) + self.assertEqual(abi_by_abi_json, abi) abi = Abi( abi_hash=b"A Test Abi2", abi_json=abi_jsons[1], @@ -95,6 +100,20 @@ async def test_abi_source(self, session: AsyncSession): self.assertEqual(result[0], abi) self.assertEqual(result[0].source, abi_source) + abi_source = AbiSource(name="A Test Source2", url="https://test-2.com") + created_abi_source, created = await AbiSource.get_or_create( + session, name="A Test Source2", url="https://test-2.com" + ) + self.assertEqual(created_abi_source.name, abi_source.name) + self.assertEqual(created_abi_source.url, abi_source.url) + self.assertTrue(created) + retrieved_abi_source, created = await AbiSource.get_or_create( + session, name="A Test Source2", url="https://test-2.com" + ) + self.assertEqual(retrieved_abi_source.name, abi_source.name) + self.assertEqual(retrieved_abi_source.url, abi_source.url) + self.assertFalse(created) + @database_session async def test_timestamped_model(self, session: AsyncSession): contract = Contract(address=b"a", name="A test contract", chain_id=1) diff --git a/app/tests/routers/test_contracts.py b/app/tests/routers/test_contracts.py index 2ae5407..fca7195 100644 --- a/app/tests/routers/test_contracts.py +++ b/app/tests/routers/test_contracts.py @@ -6,7 +6,7 @@ from ...datasources.db.database import database_session from ...datasources.db.models import Abi, AbiSource, Contract from ...main import app -from ..db.db_async_conn import DbAsyncConn +from ..datasources.db.db_async_conn import DbAsyncConn from ..mocks.abi_mock import mock_abi_json diff --git a/app/tests/services/test_abis.py b/app/tests/services/test_abis.py new file mode 100644 index 0000000..7b987b5 --- /dev/null +++ b/app/tests/services/test_abis.py @@ -0,0 +1,48 @@ +from collections import Counter + +from sqlmodel.ext.asyncio.session import AsyncSession + +from ...datasources.db.database import database_session +from ...datasources.db.models import Abi, AbiSource +from ...services.abis import AbiService +from ...tests.datasources.db.db_async_conn import DbAsyncConn + + +class TestAbiService(DbAsyncConn): + + async def asyncSetUp(self): + await super().asyncSetUp() + self.abi_service = AbiService() + + @database_session + async def test_load_local_abis_in_database(self, session: AsyncSession): + self.assertEqual(await AbiSource.get_all(session), []) + self.assertEqual(await Abi.get_all(session), []) + + await self.abi_service.load_local_abis_in_database() + self.assertEqual(len(await AbiSource.get_all(session)), 1) + abis = await Abi.get_all(session) + self.assertEqual(len(abis), 152) + relevance_counts = Counter(abi.relevance for abi in abis) + self.assertEqual(relevance_counts[100], 5) + self.assertEqual(relevance_counts[90], 5) + self.assertEqual(relevance_counts[50], 142) + + await self.abi_service.load_local_abis_in_database() + self.assertEqual(len(await Abi.get_all(session)), 152) + + def test_get_safe_contracts_abis(self): + abis = self.abi_service.get_safe_contracts_abis() + self.assertEqual(len(abis), 5) + + def test_get_safe_abis(self): + abis = self.abi_service.get_safe_abis() + self.assertEqual(len(abis), 3) + + def test_get_erc_abis(self): + abis = self.abi_service.get_erc_abis() + self.assertEqual(len(abis), 2) + + def test_get_third_parties_abis(self): + abis = self.abi_service.get_third_parties_abis() + self.assertEqual(len(abis), 142) diff --git a/app/tests/services/test_data_decoder.py b/app/tests/services/test_data_decoder.py index 8b9926c..47317f3 100644 --- a/app/tests/services/test_data_decoder.py +++ b/app/tests/services/test_data_decoder.py @@ -15,6 +15,13 @@ from web3 import Web3 from web3.types import ABI +from app.datasources.abis.compound import comptroller_abi, ctoken_abi +from app.datasources.abis.gnosis_protocol import ( + fleet_factory_abi, + fleet_factory_deterministic_abi, + gnosis_protocol_abi, +) + from ...datasources.db.database import database_session from ...datasources.db.models import Abi, AbiSource, Contract from ...services.data_decoder import ( @@ -23,14 +30,7 @@ UnexpectedProblemDecoding, get_data_decoder_service, ) -from ...utils.abis import ( - comptroller_abi, - ctoken_abi, - fleet_factory_abi, - fleet_factory_deterministic_abi, - gnosis_protocol_abi, -) -from ..db.db_async_conn import DbAsyncConn +from ..datasources.db.db_async_conn import DbAsyncConn from .mocks_data_decoder import ( exec_transaction_data_mock, exec_transaction_decoded_mock,