Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Multichain Info
No addresses found
Loading...
Loading
Contract Name:
GoatAppMulticall
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
/** *Submitted for verification at Optimistic.Etherscan.io on 2022-09-05 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; interface IToken { function allowance(address, address) external view returns(uint256); function getEthBalance(address) external view returns (uint256); function balanceOf(address) external view returns(uint256); } interface IGoatStrategy { function paused() external view returns (bool); } interface IGoatVault { function balance() external view returns (uint256); function getPricePerFullShare() external view returns (uint256); function strategy() external view returns (IGoatStrategy); } interface IGoatBoost { function totalSupply() external view returns (uint256); function periodFinish() external view returns (uint256); function rewardRate() external view returns (uint256); function balanceOf(address) external view returns (uint256); function earned(address) external view returns (uint256); function isPreStake() external view returns (bool); } struct BoostInfo { uint256 totalSupply; uint256 rewardRate; uint256 periodFinish; bool isPreStake; } struct VaultInfo { uint256 balance; uint256 pricePerFullShare; address strategy; bool paused; } struct GovVaultInfo { uint256 totalSupply; } struct GovVaultBalanceInfo { uint256 balance; uint256 rewards; } struct BoostBalanceInfo { uint256 balance; uint256 rewards; } struct AllowanceInfo { uint[] allowances; } contract GoatAppMulticall { function getVaultInfo(address[] calldata vaults) external view returns (VaultInfo[] memory) { VaultInfo[] memory results = new VaultInfo[](vaults.length); for (uint i = 0; i < vaults.length; i++) { IGoatVault vault = IGoatVault(vaults[i]); IGoatStrategy strat = vault.strategy(); bool paused; try strat.paused() returns (bool _paused) { paused = _paused; } catch { paused = false; } results[i] = VaultInfo( vault.balance(), vault.getPricePerFullShare(), address(strat), paused ); } return results; } function getBoostInfo(address[] calldata boosts) external view returns (BoostInfo[] memory) { BoostInfo[] memory results = new BoostInfo[](boosts.length); for (uint i = 0; i < boosts.length; i++) { IGoatBoost boost = IGoatBoost(boosts[i]); uint256 periodFinish = boost.periodFinish(); bool isPreStake; try boost.isPreStake() returns (bool _isPreStake) { isPreStake = _isPreStake; } catch { isPreStake = periodFinish == 0; } results[i] = BoostInfo( boost.totalSupply(), boost.rewardRate(), periodFinish, isPreStake ); } return results; } function getGovVaultInfo(address[] calldata govVaults) external view returns (GovVaultInfo[] memory) { GovVaultInfo[] memory results = new GovVaultInfo[](govVaults.length); for (uint i = 0; i < govVaults.length; i++) { IGoatBoost govVault = IGoatBoost(govVaults[i]); results[i] = GovVaultInfo( govVault.totalSupply() ); } return results; } function getTokenBalances(address[] calldata tokens, address owner) external view returns (uint256[] memory) { uint256[] memory results = new uint256[](tokens.length); for (uint i = 0; i < tokens.length; i++) { IToken token = IToken(tokens[i]); results[i] = token.balanceOf(owner); } return results; } function getBoostOrGovBalance(address[] calldata boosts, address owner) external view returns (BoostBalanceInfo[] memory) { BoostBalanceInfo[] memory results = new BoostBalanceInfo[](boosts.length); for (uint i = 0; i < boosts.length; i++) { IGoatBoost boost = IGoatBoost(boosts[i]); results[i] = BoostBalanceInfo( boost.balanceOf(owner), boost.earned(owner) ); } return results; } function getGovVaultBalance(address[] calldata govVaults, address owner) external view returns (GovVaultBalanceInfo[] memory) { GovVaultBalanceInfo[] memory results = new GovVaultBalanceInfo[](govVaults.length); for (uint i = 0; i < govVaults.length; i++) { IGoatBoost govVault = IGoatBoost(govVaults[i]); results[i] = GovVaultBalanceInfo( govVault.balanceOf(owner), govVault.earned(owner) ); } return results; } function getAllowances(address[] calldata tokens, address[][] calldata spenders, address owner) external view returns (AllowanceInfo[] memory) { AllowanceInfo[] memory results = new AllowanceInfo[](tokens.length); for (uint i = 0; i < tokens.length; i++) { IToken token = IToken(tokens[i]); address[] calldata tokenSpenders = spenders[i]; results[i] = AllowanceInfo( new uint256[](tokenSpenders.length) ); for (uint j = 0; j < tokenSpenders.length; j++) { results[i].allowances[j] = token.allowance(owner, tokenSpenders[j]); } } return results; } function getAllowancesFlat(address[] calldata tokens, address[][] calldata spenders, address owner) external view returns (uint256[] memory) { uint totalLength; for(uint i = 0; i < spenders.length; i++) { totalLength += spenders[i].length; } uint256[] memory results = new uint256[](totalLength); uint maxAcum; for (uint i = 0; i < tokens.length; i++) { IToken token = IToken(tokens[i]); address[] calldata tokenSpenders = spenders[i]; for (uint j = 0; j < tokenSpenders.length; j++) { results[maxAcum++] = token.allowance(owner, tokenSpenders[j]); } } return results; } }
{ "remappings": [ "forge-std/=lib/forge-std/src/", "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "@openzeppelin-4/contracts/=lib/openzeppelin-contracts-4/contracts/", "@layerzero/=lib/solidity-examples/contracts/", "@xerc20/=lib/xERC20/", "ds-test/=lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts-4/lib/erc4626-tests/", "openzeppelin-contracts-4/=lib/openzeppelin-contracts-4/", "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "openzeppelin/=lib/openzeppelin-contracts-4/contracts/", "solidity-examples/=lib/solidity-examples/contracts/", "solmate/=lib/solmate/src/", "xERC20/=lib/xERC20/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "paris", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address[][]","name":"spenders","type":"address[][]"},{"internalType":"address","name":"owner","type":"address"}],"name":"getAllowances","outputs":[{"components":[{"internalType":"uint256[]","name":"allowances","type":"uint256[]"}],"internalType":"struct AllowanceInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address[][]","name":"spenders","type":"address[][]"},{"internalType":"address","name":"owner","type":"address"}],"name":"getAllowancesFlat","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"boosts","type":"address[]"}],"name":"getBoostInfo","outputs":[{"components":[{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"rewardRate","type":"uint256"},{"internalType":"uint256","name":"periodFinish","type":"uint256"},{"internalType":"bool","name":"isPreStake","type":"bool"}],"internalType":"struct BoostInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"boosts","type":"address[]"},{"internalType":"address","name":"owner","type":"address"}],"name":"getBoostOrGovBalance","outputs":[{"components":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"rewards","type":"uint256"}],"internalType":"struct BoostBalanceInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"govVaults","type":"address[]"},{"internalType":"address","name":"owner","type":"address"}],"name":"getGovVaultBalance","outputs":[{"components":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"rewards","type":"uint256"}],"internalType":"struct GovVaultBalanceInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"govVaults","type":"address[]"}],"name":"getGovVaultInfo","outputs":[{"components":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"internalType":"struct GovVaultInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address","name":"owner","type":"address"}],"name":"getTokenBalances","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"vaults","type":"address[]"}],"name":"getVaultInfo","outputs":[{"components":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"pricePerFullShare","type":"uint256"},{"internalType":"address","name":"strategy","type":"address"},{"internalType":"bool","name":"paused","type":"bool"}],"internalType":"struct VaultInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50611621806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806391284ade1161005b57806391284ade14610116578063bb43630e14610136578063c3fae36214610156578063cd1b4c181461017657600080fd5b80634eebcc5c1461008d5780637c56685b146100b657806389165a1b146100d6578063901f65cf146100f6575b600080fd5b6100a061009b366004611145565b610189565b6040516100ad919061119b565b60405180910390f35b6100c96100c43660046111f2565b610346565b6040516100ad9190611233565b6100e96100e436600461128c565b6105ec565b6040516100ad919061134a565b6101096101043660046111f2565b61083b565b6040516100ad91906113b4565b610129610124366004611145565b610971565b6040516100ad91906113f9565b6101496101443660046111f2565b610b25565b6040516100ad9190611443565b610169610164366004611145565b610dbe565b6040516100ad91906114a5565b61016961018436600461128c565b610ed8565b60606000836001600160401b038111156101a5576101a56114bf565b6040519080825280602002602001820160405280156101ea57816020015b60408051808201909152600080825260208201528152602001906001900390816101c35790505b50905060005b8481101561033d57600086868381811061020c5761020c6114d5565b905060200201602081019061022191906114eb565b60408051808201918290526370a0823160e01b9091526001600160a01b03878116604483015291925090819083166370a0823160648301602060405180830381865afa158015610275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102999190611508565b81526040516246613160e11b81526001600160a01b038881166004830152602090920191841690628cc26290602401602060405180830381865afa1580156102e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103099190611508565b81525083838151811061031e5761031e6114d5565b602002602001018190525050808061033590611537565b9150506101f0565b50949350505050565b60606000826001600160401b03811115610362576103626114bf565b6040519080825280602002602001820160405280156103c057816020015b6103ad60405180608001604052806000815260200160008152602001600081526020016000151581525090565b8152602001906001900390816103805790505b50905060005b838110156105e25760008585838181106103e2576103e26114d5565b90506020020160208101906103f791906114eb565b90506000816001600160a01b031663ebe2b12b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045d9190611508565b90506000826001600160a01b031663b99c4c976040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156104bb575060408051601f3d908101601f191682019092526104b891810190611550565b60015b6104c7575080156104ca565b90505b6040518060800160405280846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610513573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105379190611508565b8152602001846001600160a01b0316637b0a47ee6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561057a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059e9190611508565b81526020018381526020018215158152508585815181106105c1576105c16114d5565b602002602001018190525050505080806105da90611537565b9150506103c6565b5090505b92915050565b60606000856001600160401b03811115610608576106086114bf565b60405190808252806020026020018201604052801561064857816020015b6040805160208101909152606081528152602001906001900390816106265790505b50905060005b8681101561083057600088888381811061066a5761066a6114d5565b905060200201602081019061067f91906114eb565b9050366000888885818110610696576106966114d5565b90506020028101906106a89190611572565b915091506040518060200160405280838390506001600160401b038111156106d2576106d26114bf565b6040519080825280602002602001820160405280156106fb578160200160208202803683370190505b50815250858581518110610711576107116114d5565b602002602001018190525060005b8181101561081957836001600160a01b031663dd62ed3e89858585818110610749576107496114d5565b905060200201602081019061075e91906114eb565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156107a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cd9190611508565b8686815181106107df576107df6114d5565b60200260200101516000015182815181106107fc576107fc6114d5565b60209081029190910101528061081181611537565b91505061071f565b50505050808061082890611537565b91505061064e565b509695505050505050565b60606000826001600160401b03811115610857576108576114bf565b60405190808252806020026020018201604052801561089757816020015b6040805160208101909152600081528152602001906001900390816108755790505b50905060005b838110156105e25760008585838181106108b9576108b96114d5565b90506020020160208101906108ce91906114eb565b90506040518060200160405280826001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610919573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093d9190611508565b815250838381518110610952576109526114d5565b602002602001018190525050808061096990611537565b91505061089d565b60606000836001600160401b0381111561098d5761098d6114bf565b6040519080825280602002602001820160405280156109d257816020015b60408051808201909152600080825260208201528152602001906001900390816109ab5790505b50905060005b8481101561033d5760008686838181106109f4576109f46114d5565b9050602002016020810190610a0991906114eb565b60408051808201918290526370a0823160e01b9091526001600160a01b03878116604483015291925090819083166370a0823160648301602060405180830381865afa158015610a5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a819190611508565b81526040516246613160e11b81526001600160a01b038881166004830152602090920191841690628cc26290602401602060405180830381865afa158015610acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af19190611508565b815250838381518110610b0657610b066114d5565b6020026020010181905250508080610b1d90611537565b9150506109d8565b60606000826001600160401b03811115610b4157610b416114bf565b604051908082528060200260200182016040528015610b9357816020015b604080516080810182526000808252602080830182905292820181905260608201528252600019909201910181610b5f5790505b50905060005b838110156105e2576000858583818110610bb557610bb56114d5565b9050602002016020810190610bca91906114eb565b90506000816001600160a01b031663a8c62e766040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3091906115bb565b90506000816001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610c8e575060408051601f3d908101601f19168201909252610c8b91810190611550565b60015b610c9a57506000610c9d565b90505b6040518060800160405280846001600160a01b031663b69ef8a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0a9190611508565b8152602001846001600160a01b03166377c7b8fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d719190611508565b8152602001836001600160a01b03168152602001821515815250858581518110610d9d57610d9d6114d5565b60200260200101819052505050508080610db690611537565b915050610b99565b60606000836001600160401b03811115610dda57610dda6114bf565b604051908082528060200260200182016040528015610e03578160200160208202803683370190505b50905060005b8481101561033d576000868683818110610e2557610e256114d5565b9050602002016020810190610e3a91906114eb565b6040516370a0823160e01b81526001600160a01b038781166004830152919250908216906370a0823190602401602060405180830381865afa158015610e84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea89190611508565b838381518110610eba57610eba6114d5565b60209081029190910101525080610ed081611537565b915050610e09565b60606000805b84811015610f2957858582818110610ef857610ef86114d5565b9050602002810190610f0a9190611572565b610f159150836115d8565b915080610f2181611537565b915050610ede565b506000816001600160401b03811115610f4457610f446114bf565b604051908082528060200260200182016040528015610f6d578160200160208202803683370190505b5090506000805b888110156110d45760008a8a83818110610f9057610f906114d5565b9050602002016020810190610fa591906114eb565b90503660008a8a85818110610fbc57610fbc6114d5565b9050602002810190610fce9190611572565b9150915060005b818110156110bd57836001600160a01b031663dd62ed3e8b858585818110610fff57610fff6114d5565b905060200201602081019061101491906114eb565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561105f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110839190611508565b878761108e81611537565b9850815181106110a0576110a06114d5565b6020908102919091010152806110b581611537565b915050610fd5565b5050505080806110cc90611537565b915050610f74565b509098975050505050505050565b60008083601f8401126110f457600080fd5b5081356001600160401b0381111561110b57600080fd5b6020830191508360208260051b850101111561112657600080fd5b9250929050565b6001600160a01b038116811461114257600080fd5b50565b60008060006040848603121561115a57600080fd5b83356001600160401b0381111561117057600080fd5b61117c868287016110e2565b90945092505060208401356111908161112d565b809150509250925092565b602080825282518282018190526000919060409081850190868401855b828110156111e5576111d584835180518252602090810151910152565b92840192908501906001016111b8565b5091979650505050505050565b6000806020838503121561120557600080fd5b82356001600160401b0381111561121b57600080fd5b611227858286016110e2565b90969095509350505050565b602080825282518282018190526000919060409081850190868401855b828110156111e5578151805185528681015187860152858101518686015260609081015115159085015260809093019290850190600101611250565b6000806000806000606086880312156112a457600080fd5b85356001600160401b03808211156112bb57600080fd5b6112c789838a016110e2565b909750955060208801359150808211156112e057600080fd5b506112ed888289016110e2565b90945092505060408601356113018161112d565b809150509295509295909350565b600081518084526020808501945080840160005b8381101561133f57815187529582019590820190600101611323565b509495945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156113a757878503603f190184528151518686526113948787018261130f565b9550509285019290850190600101611371565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b818110156113ed57835151835292840192918401916001016113d0565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b828110156111e55761143384835180518252602090810151910152565b9284019290850190600101611416565b602080825282518282018190526000919060409081850190868401855b828110156111e5578151805185528681015187860152858101516001600160a01b03168686015260609081015115159085015260809093019290850190600101611460565b6020815260006114b8602083018461130f565b9392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000602082840312156114fd57600080fd5b81356114b88161112d565b60006020828403121561151a57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161154957611549611521565b5060010190565b60006020828403121561156257600080fd5b815180151581146114b857600080fd5b6000808335601e1984360301811261158957600080fd5b8301803591506001600160401b038211156115a357600080fd5b6020019150600581901b360382131561112657600080fd5b6000602082840312156115cd57600080fd5b81516114b88161112d565b808201808211156105e6576105e661152156fea264697066735822122012390d760ca38065491d213711d15cf64af52dbd66fd0b8adfa8ed0280cc557364736f6c63430008140033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100885760003560e01c806391284ade1161005b57806391284ade14610116578063bb43630e14610136578063c3fae36214610156578063cd1b4c181461017657600080fd5b80634eebcc5c1461008d5780637c56685b146100b657806389165a1b146100d6578063901f65cf146100f6575b600080fd5b6100a061009b366004611145565b610189565b6040516100ad919061119b565b60405180910390f35b6100c96100c43660046111f2565b610346565b6040516100ad9190611233565b6100e96100e436600461128c565b6105ec565b6040516100ad919061134a565b6101096101043660046111f2565b61083b565b6040516100ad91906113b4565b610129610124366004611145565b610971565b6040516100ad91906113f9565b6101496101443660046111f2565b610b25565b6040516100ad9190611443565b610169610164366004611145565b610dbe565b6040516100ad91906114a5565b61016961018436600461128c565b610ed8565b60606000836001600160401b038111156101a5576101a56114bf565b6040519080825280602002602001820160405280156101ea57816020015b60408051808201909152600080825260208201528152602001906001900390816101c35790505b50905060005b8481101561033d57600086868381811061020c5761020c6114d5565b905060200201602081019061022191906114eb565b60408051808201918290526370a0823160e01b9091526001600160a01b03878116604483015291925090819083166370a0823160648301602060405180830381865afa158015610275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102999190611508565b81526040516246613160e11b81526001600160a01b038881166004830152602090920191841690628cc26290602401602060405180830381865afa1580156102e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103099190611508565b81525083838151811061031e5761031e6114d5565b602002602001018190525050808061033590611537565b9150506101f0565b50949350505050565b60606000826001600160401b03811115610362576103626114bf565b6040519080825280602002602001820160405280156103c057816020015b6103ad60405180608001604052806000815260200160008152602001600081526020016000151581525090565b8152602001906001900390816103805790505b50905060005b838110156105e25760008585838181106103e2576103e26114d5565b90506020020160208101906103f791906114eb565b90506000816001600160a01b031663ebe2b12b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045d9190611508565b90506000826001600160a01b031663b99c4c976040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156104bb575060408051601f3d908101601f191682019092526104b891810190611550565b60015b6104c7575080156104ca565b90505b6040518060800160405280846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610513573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105379190611508565b8152602001846001600160a01b0316637b0a47ee6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561057a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059e9190611508565b81526020018381526020018215158152508585815181106105c1576105c16114d5565b602002602001018190525050505080806105da90611537565b9150506103c6565b5090505b92915050565b60606000856001600160401b03811115610608576106086114bf565b60405190808252806020026020018201604052801561064857816020015b6040805160208101909152606081528152602001906001900390816106265790505b50905060005b8681101561083057600088888381811061066a5761066a6114d5565b905060200201602081019061067f91906114eb565b9050366000888885818110610696576106966114d5565b90506020028101906106a89190611572565b915091506040518060200160405280838390506001600160401b038111156106d2576106d26114bf565b6040519080825280602002602001820160405280156106fb578160200160208202803683370190505b50815250858581518110610711576107116114d5565b602002602001018190525060005b8181101561081957836001600160a01b031663dd62ed3e89858585818110610749576107496114d5565b905060200201602081019061075e91906114eb565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156107a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cd9190611508565b8686815181106107df576107df6114d5565b60200260200101516000015182815181106107fc576107fc6114d5565b60209081029190910101528061081181611537565b91505061071f565b50505050808061082890611537565b91505061064e565b509695505050505050565b60606000826001600160401b03811115610857576108576114bf565b60405190808252806020026020018201604052801561089757816020015b6040805160208101909152600081528152602001906001900390816108755790505b50905060005b838110156105e25760008585838181106108b9576108b96114d5565b90506020020160208101906108ce91906114eb565b90506040518060200160405280826001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610919573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093d9190611508565b815250838381518110610952576109526114d5565b602002602001018190525050808061096990611537565b91505061089d565b60606000836001600160401b0381111561098d5761098d6114bf565b6040519080825280602002602001820160405280156109d257816020015b60408051808201909152600080825260208201528152602001906001900390816109ab5790505b50905060005b8481101561033d5760008686838181106109f4576109f46114d5565b9050602002016020810190610a0991906114eb565b60408051808201918290526370a0823160e01b9091526001600160a01b03878116604483015291925090819083166370a0823160648301602060405180830381865afa158015610a5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a819190611508565b81526040516246613160e11b81526001600160a01b038881166004830152602090920191841690628cc26290602401602060405180830381865afa158015610acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af19190611508565b815250838381518110610b0657610b066114d5565b6020026020010181905250508080610b1d90611537565b9150506109d8565b60606000826001600160401b03811115610b4157610b416114bf565b604051908082528060200260200182016040528015610b9357816020015b604080516080810182526000808252602080830182905292820181905260608201528252600019909201910181610b5f5790505b50905060005b838110156105e2576000858583818110610bb557610bb56114d5565b9050602002016020810190610bca91906114eb565b90506000816001600160a01b031663a8c62e766040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3091906115bb565b90506000816001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610c8e575060408051601f3d908101601f19168201909252610c8b91810190611550565b60015b610c9a57506000610c9d565b90505b6040518060800160405280846001600160a01b031663b69ef8a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0a9190611508565b8152602001846001600160a01b03166377c7b8fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d719190611508565b8152602001836001600160a01b03168152602001821515815250858581518110610d9d57610d9d6114d5565b60200260200101819052505050508080610db690611537565b915050610b99565b60606000836001600160401b03811115610dda57610dda6114bf565b604051908082528060200260200182016040528015610e03578160200160208202803683370190505b50905060005b8481101561033d576000868683818110610e2557610e256114d5565b9050602002016020810190610e3a91906114eb565b6040516370a0823160e01b81526001600160a01b038781166004830152919250908216906370a0823190602401602060405180830381865afa158015610e84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea89190611508565b838381518110610eba57610eba6114d5565b60209081029190910101525080610ed081611537565b915050610e09565b60606000805b84811015610f2957858582818110610ef857610ef86114d5565b9050602002810190610f0a9190611572565b610f159150836115d8565b915080610f2181611537565b915050610ede565b506000816001600160401b03811115610f4457610f446114bf565b604051908082528060200260200182016040528015610f6d578160200160208202803683370190505b5090506000805b888110156110d45760008a8a83818110610f9057610f906114d5565b9050602002016020810190610fa591906114eb565b90503660008a8a85818110610fbc57610fbc6114d5565b9050602002810190610fce9190611572565b9150915060005b818110156110bd57836001600160a01b031663dd62ed3e8b858585818110610fff57610fff6114d5565b905060200201602081019061101491906114eb565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561105f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110839190611508565b878761108e81611537565b9850815181106110a0576110a06114d5565b6020908102919091010152806110b581611537565b915050610fd5565b5050505080806110cc90611537565b915050610f74565b509098975050505050505050565b60008083601f8401126110f457600080fd5b5081356001600160401b0381111561110b57600080fd5b6020830191508360208260051b850101111561112657600080fd5b9250929050565b6001600160a01b038116811461114257600080fd5b50565b60008060006040848603121561115a57600080fd5b83356001600160401b0381111561117057600080fd5b61117c868287016110e2565b90945092505060208401356111908161112d565b809150509250925092565b602080825282518282018190526000919060409081850190868401855b828110156111e5576111d584835180518252602090810151910152565b92840192908501906001016111b8565b5091979650505050505050565b6000806020838503121561120557600080fd5b82356001600160401b0381111561121b57600080fd5b611227858286016110e2565b90969095509350505050565b602080825282518282018190526000919060409081850190868401855b828110156111e5578151805185528681015187860152858101518686015260609081015115159085015260809093019290850190600101611250565b6000806000806000606086880312156112a457600080fd5b85356001600160401b03808211156112bb57600080fd5b6112c789838a016110e2565b909750955060208801359150808211156112e057600080fd5b506112ed888289016110e2565b90945092505060408601356113018161112d565b809150509295509295909350565b600081518084526020808501945080840160005b8381101561133f57815187529582019590820190600101611323565b509495945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156113a757878503603f190184528151518686526113948787018261130f565b9550509285019290850190600101611371565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b818110156113ed57835151835292840192918401916001016113d0565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b828110156111e55761143384835180518252602090810151910152565b9284019290850190600101611416565b602080825282518282018190526000919060409081850190868401855b828110156111e5578151805185528681015187860152858101516001600160a01b03168686015260609081015115159085015260809093019290850190600101611460565b6020815260006114b8602083018461130f565b9392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000602082840312156114fd57600080fd5b81356114b88161112d565b60006020828403121561151a57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161154957611549611521565b5060010190565b60006020828403121561156257600080fd5b815180151581146114b857600080fd5b6000808335601e1984360301811261158957600080fd5b8301803591506001600160401b038211156115a357600080fd5b6020019150600581901b360382131561112657600080fd5b6000602082840312156115cd57600080fd5b81516114b88161112d565b808201808211156105e6576105e661152156fea264697066735822122012390d760ca38065491d213711d15cf64af52dbd66fd0b8adfa8ed0280cc557364736f6c63430008140033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.