Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xd9Cec614...6bCD4bfE2 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
MigratedReserve
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-08-10 */ // Verified using https://dapp.tools // hevm: flattened sources of src/lender/reserve.sol // SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.5.15 >=0.6.12; ////// lib/tinlake-auth/src/auth.sol // Copyright (C) Centrifuge 2020, based on MakerDAO dss https://github.com/makerdao/dss /* pragma solidity >=0.5.15; */ contract Auth { mapping (address => uint256) public wards; event Rely(address indexed usr); event Deny(address indexed usr); function rely(address usr) external auth { wards[usr] = 1; emit Rely(usr); } function deny(address usr) external auth { wards[usr] = 0; emit Deny(usr); } modifier auth { require(wards[msg.sender] == 1, "not-authorized"); _; } } ////// lib/tinlake-math/src/math.sol // Copyright (C) 2018 Rain <[email protected]> /* pragma solidity >=0.5.15; */ contract Math { uint256 constant ONE = 10 ** 27; function safeAdd(uint x, uint y) public pure returns (uint z) { require((z = x + y) >= x, "safe-add-failed"); } function safeSub(uint x, uint y) public pure returns (uint z) { require((z = x - y) <= x, "safe-sub-failed"); } function safeMul(uint x, uint y) public pure returns (uint z) { require(y == 0 || (z = x * y) / y == x, "safe-mul-failed"); } function safeDiv(uint x, uint y) public pure returns (uint z) { z = x / y; } function rmul(uint x, uint y) public pure returns (uint z) { z = safeMul(x, y) / ONE; } function rdiv(uint x, uint y) public pure returns (uint z) { require(y > 0, "division by zero"); z = safeAdd(safeMul(x, ONE), y / 2) / y; } function rdivup(uint x, uint y) internal pure returns (uint z) { require(y > 0, "division by zero"); // always rounds up z = safeAdd(safeMul(x, ONE), safeSub(y, 1)) / y; } } ////// src/lender/reserve.sol /* pragma solidity >=0.6.12; */ /* import "tinlake-math/math.sol"; */ /* import "tinlake-auth/auth.sol"; */ interface ERC20Like_2 { function balanceOf(address) external view returns (uint256); function transferFrom(address, address, uint) external returns (bool); function mint(address, uint256) external; function burn(address, uint256) external; function totalSupply() external view returns (uint256); function approve(address, uint) external; } interface ShelfLike_3 { function balanceRequest() external returns (bool requestWant, uint256 amount); } interface LendingAdapter_2 { function remainingCredit() external view returns (uint); function draw(uint amount) external; function wipe(uint amount) external; function debt() external returns(uint); function activated() external view returns(bool); } // The reserve keeps track of the currency and the bookkeeping // of the total balance contract Reserve is Math, Auth { ERC20Like_2 public currency; ShelfLike_3 public shelf; // additional currency from lending adapters // for deactivating set to address(0) LendingAdapter_2 public lending; // currency available for borrowing new loans uint256 public currencyAvailable; // address or contract which holds the currency // by default it is address(this) address pot; // total currency in the reserve uint public balance_; event File(bytes32 indexed what, uint amount); event Depend(bytes32 contractName, address addr); constructor(address currency_) { currency = ERC20Like_2(currency_); pot = address(this); currency.approve(pot, type(uint256).max); wards[msg.sender] = 1; emit Rely(msg.sender); } function file(bytes32 what, uint amount) public auth { if (what == "currencyAvailable") { currencyAvailable = amount; } else revert(); emit File(what, amount); } function depend(bytes32 contractName, address addr) public auth { if (contractName == "shelf") { shelf = ShelfLike_3(addr); } else if (contractName == "currency") { currency = ERC20Like_2(addr); if (pot == address(this)) { currency.approve(pot, type(uint256).max); } } else if (contractName == "pot") { pot = addr; } else if (contractName == "lending") { lending = LendingAdapter_2(addr); } else revert(); emit Depend(contractName, addr); } // returns the amount of currency currently in the reserve function totalBalance() public view returns (uint) { return balance_; } // return the amount of currency and the available currency from the lending adapter function totalBalanceAvailable() public view returns (uint) { if(address(lending) == address(0)) { return balance_; } return safeAdd(balance_, lending.remainingCredit()); } // deposits currency in the the reserve function deposit(uint currencyAmount) public auth { if(currencyAmount == 0) return; _deposit(msg.sender, currencyAmount); } // hard deposit guarantees that the currency stays in the reserve function hardDeposit(uint currencyAmount) public auth { _depositAction(msg.sender, currencyAmount); } function _depositAction(address usr, uint currencyAmount) internal { require(currency.transferFrom(usr, pot, currencyAmount), "reserve-deposit-failed"); balance_ = safeAdd(balance_, currencyAmount); } function _deposit(address usr, uint currencyAmount) internal { _depositAction(usr, currencyAmount); if(address(lending) != address(0) && lending.debt() > 0 && lending.activated()) { uint wipeAmount = lending.debt(); uint available = balance_; if(available < wipeAmount) { wipeAmount = available; } lending.wipe(wipeAmount); } } // remove currency from the reserve function payout(uint currencyAmount) public auth { if(currencyAmount == 0) return; _payout(msg.sender, currencyAmount); } function _payoutAction(address usr, uint currencyAmount) internal { require(currency.transferFrom(pot, usr, currencyAmount), "reserve-payout-failed"); balance_ = safeSub(balance_, currencyAmount); } // hard payout guarantees that the currency stays in the reserve function hardPayout(uint currencyAmount) public auth { _payoutAction(msg.sender, currencyAmount); } function _payout(address usr, uint currencyAmount) internal { uint reserveBalance = balance_; if (currencyAmount > reserveBalance && address(lending) != address(0) && lending.activated()) { uint drawAmount = safeSub(currencyAmount, reserveBalance); uint left = lending.remainingCredit(); if(drawAmount > left) { drawAmount = left; } lending.draw(drawAmount); } _payoutAction(usr, currencyAmount); } // balance handles currency requests from the borrower side // currency is moved between shelf and reserve if needed function balance() public { (bool requestWant, uint256 currencyAmount) = shelf.balanceRequest(); if(currencyAmount == 0) { return; } if (requestWant) { require( currencyAvailable >= currencyAmount, "not-enough-currency-reserve" ); currencyAvailable = safeSub(currencyAvailable, currencyAmount); _payout(address(shelf), currencyAmount); return; } _deposit(address(shelf), currencyAmount); } } contract MigratedReserve is Reserve { bool public done; address public migratedFrom; constructor(address currency) Reserve(currency) {} function migrate(address clone_) public auth { require(!done, "migration already finished"); done = true; migratedFrom = clone_; Reserve clone = Reserve(clone_); currencyAvailable = clone.currencyAvailable(); balance_ = clone.balance_(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"currency","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"contractName","type":"bytes32"},{"indexed":false,"internalType":"address","name":"addr","type":"address"}],"name":"Depend","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"File","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Rely","type":"event"},{"inputs":[],"name":"balance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"balance_","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currency","outputs":[{"internalType":"contract ERC20Like_2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currencyAvailable","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":"contractName","type":"bytes32"},{"internalType":"address","name":"addr","type":"address"}],"name":"depend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"currencyAmount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"done","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"file","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"currencyAmount","type":"uint256"}],"name":"hardDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"currencyAmount","type":"uint256"}],"name":"hardPayout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lending","outputs":[{"internalType":"contract LendingAdapter_2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"clone_","type":"address"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migratedFrom","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"currencyAmount","type":"uint256"}],"name":"payout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"rdiv","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"rmul","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"safeAdd","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"safeDiv","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"safeMul","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"safeSub","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"shelf","outputs":[{"internalType":"contract ShelfLike_3","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBalanceAvailable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061018e5760003560e01c8063ae8421e1116100de578063d05c78da11610097578063e12c9eb311610071578063e12c9eb314610673578063e5a6b10f14610691578063e6cb9013146106c5578063fb793214146107115761018e565b8063d05c78da146105db578063d8927c1a14610627578063e1152343146106455761018e565b8063ae8421e11461049b578063b5931f7c146104bb578063b69ef8a814610507578063b6b55f2514610511578063bf353dbb1461053f578063ce5494bb146105975761018e565b8063674570221161014b5780639adc339d116101255780639adc339d1461039f5780639c52a7f1146103ed578063a293d1e814610431578063ad7a672f1461047d5761018e565b806367457022146102f15780637b45fe171461033d57806395e97eee1461036b5761018e565b80630e2286d3146101935780632900e377146101df57806329ae811414610213578063479b9c6c1461024b5780635d96a2ba1461027f57806365fae35e146102ad575b600080fd5b6101c9600480360360408110156101a957600080fd5b81019080803590602001909291908035906020019092919050505061072f565b6040518082815260200191505060405180910390f35b6101e76107e0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102496004803603604081101561022957600080fd5b810190808035906020019092919080359060200190929190505050610806565b005b61025361092f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ab6004803603602081101561029557600080fd5b8101908080359060200190929190505050610955565b005b6102ef600480360360208110156102c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a16565b005b6103276004803603604081101561030757600080fd5b810190808035906020019092919080359060200190929190505050610b54565b6040518082815260200191505060405180910390f35b6103696004803603602081101561035357600080fd5b8101908080359060200190929190505050610b7d565b005b610373610c3e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103eb600480360360408110156103b557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c64565b005b61042f6004803603602081101561040357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611075565b005b6104676004803603604081101561044757600080fd5b8101908080359060200190929190803590602001909291905050506111b3565b6040518082815260200191505060405180910390f35b610485611236565b6040518082815260200191505060405180910390f35b6104a3611240565b60405180821515815260200191505060405180910390f35b6104f1600480360360408110156104d157600080fd5b810190808035906020019092919080359060200190929190505050611253565b6040518082815260200191505060405180910390f35b61050f611267565b005b61053d6004803603602081101561052757600080fd5b8101908080359060200190929190505050611420565b005b6105816004803603602081101561055557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114f0565b6040518082815260200191505060405180910390f35b6105d9600480360360208110156105ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611508565b005b610611600480360360408110156105f157600080fd5b8101908080359060200190929190803590602001909291905050506117b2565b6040518082815260200191505060405180910390f35b61062f611847565b6040518082815260200191505060405180910390f35b6106716004803603602081101561065b57600080fd5b810190808035906020019092919050505061184d565b005b61067b61191d565b6040518082815260200191505060405180910390f35b610699611923565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106fb600480360360408110156106db57600080fd5b810190808035906020019092919080359060200190929190505050611949565b6040518082815260200191505060405180910390f35b6107196119cc565b6040518082815260200191505060405180910390f35b60008082116107a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f6469766973696f6e206279207a65726f0000000000000000000000000000000081525060200191505060405180910390fd5b816107d06107c0856b033b2e3c9fd0803ce80000006117b2565b600285816107ca57fe5b04611949565b816107d757fe5b04905092915050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146108ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f742d617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b7f63757272656e6379417661696c61626c650000000000000000000000000000008214156108ee57806004819055506108f3565b600080fd5b817fe986e40cc8c151830d4f61050f4fb2e4add8567caad2d5f5496f9158e91fe4c7826040518082815260200191505060405180910390a25050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f742d617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b610a133382611ae2565b50565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610aca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f742d617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6060405160405180910390a250565b60006b033b2e3c9fd0803ce8000000610b6d84846117b2565b81610b7457fe5b04905092915050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f742d617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b610c3b3382611c78565b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f742d617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b7f7368656c66000000000000000000000000000000000000000000000000000000821415610d865780600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061101c565b7f63757272656e6379000000000000000000000000000000000000000000000000821415610f385780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610f3357600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610f1a57600080fd5b505af1158015610f2e573d6000803e3d6000fd5b505050505b61101b565b7f706f740000000000000000000000000000000000000000000000000000000000821415610fa65780600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061101a565b7f6c656e64696e67000000000000000000000000000000000000000000000000008214156110145780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611019565b600080fd5b5b5b5b7f6b1c5500aa423d5848c47aefec3615dc13387acaa5bcd947bd971e7c53483cef8282604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f742d617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b60405160405180910390a250565b6000828284039150811115611230576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f736166652d7375622d6661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b92915050565b6000600654905090565b600760009054906101000a900460ff1681565b600081838161125e57fe5b04905092915050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663843f7b896040518163ffffffff1660e01b81526004016040805180830381600087803b1580156112d357600080fd5b505af11580156112e7573d6000803e3d6000fd5b505050506040513d60408110156112fd57600080fd5b81019080805190602001909291908051906020019092919050505091509150600081141561132c57505061141e565b81156113ef578060045410156113aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f6e6f742d656e6f7567682d63757272656e63792d72657365727665000000000081525060200191505060405180910390fd5b6113b6600454826111b3565b6004819055506113e8600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682611e0e565b505061141e565b61141b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612083565b50505b565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146114d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f742d617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b60008114156114e2576114ed565b6114ec3382612083565b5b50565b60006020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146115bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f742d617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b600760009054906101000a900460ff161561163f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6d6967726174696f6e20616c72656164792066696e697368656400000000000081525060200191505060405180910390fd5b6001600760006101000a81548160ff02191690831515021790555080600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008190508073ffffffffffffffffffffffffffffffffffffffff1663e12c9eb36040518163ffffffff1660e01b815260040160206040518083038186803b1580156116e657600080fd5b505afa1580156116fa573d6000803e3d6000fd5b505050506040513d602081101561171057600080fd5b81019080805190602001909291905050506004819055508073ffffffffffffffffffffffffffffffffffffffff1663d8927c1a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561176d57600080fd5b505afa158015611781573d6000803e3d6000fd5b505050506040513d602081101561179757600080fd5b81019080805190602001909291905050506006819055505050565b6000808214806117cf57508282838502925082816117cc57fe5b04145b611841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f736166652d6d756c2d6661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b92915050565b60065481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f742d617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b600081141561190f5761191a565b6119193382611e0e565b5b50565b60045481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008282840191508110156119c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f736166652d6164642d6661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b92915050565b60008073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611a2e576006549050611adf565b611adc600654600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fc9f472c6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9c57600080fd5b505afa158015611ab0573d6000803e3d6000fd5b505050506040513d6020811015611ac657600080fd5b8101908080519060200190929190505050611949565b90505b90565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd83600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611bb557600080fd5b505af1158015611bc9573d6000803e3d6000fd5b505050506040513d6020811015611bdf57600080fd5b8101908080519060200190929190505050611c62576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f726573657276652d6465706f7369742d6661696c65640000000000000000000081525060200191505060405180910390fd5b611c6e60065482611949565b6006819055505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611d4b57600080fd5b505af1158015611d5f573d6000803e3d6000fd5b505050506040513d6020811015611d7557600080fd5b8101908080519060200190929190505050611df8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f726573657276652d7061796f75742d6661696c6564000000000000000000000081525060200191505060405180910390fd5b611e04600654826111b3565b6006819055505050565b600060065490508082118015611e735750600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015611f1e5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663186601ca6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ee257600080fd5b505afa158015611ef6573d6000803e3d6000fd5b505050506040513d6020811015611f0c57600080fd5b81019080805190602001909291905050505b15612074576000611f2f83836111b3565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fc9f472c6040518163ffffffff1660e01b815260040160206040518083038186803b158015611f9b57600080fd5b505afa158015611faf573d6000803e3d6000fd5b505050506040513d6020811015611fc557600080fd5b8101908080519060200190929190505050905080821115611fe4578091505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633b304147836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561205957600080fd5b505af115801561206d573d6000803e3d6000fd5b5050505050505b61207e8383611c78565b505050565b61208d8282611ae2565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561219057506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dca59c16040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561215357600080fd5b505af1158015612167573d6000803e3d6000fd5b505050506040513d602081101561217d57600080fd5b8101908080519060200190929190505050115b801561223b5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663186601ca6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121ff57600080fd5b505afa158015612213573d6000803e3d6000fd5b505050506040513d602081101561222957600080fd5b81019080805190602001909291905050505b1561238c576000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dca59c16040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156122ac57600080fd5b505af11580156122c0573d6000803e3d6000fd5b505050506040513d60208110156122d657600080fd5b8101908080519060200190929190505050905060006006549050818110156122fc578091505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b38a1620836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561237157600080fd5b505af1158015612385573d6000803e3d6000fd5b5050505050505b505056fea2646970667358221220f5bcb72c432000bb0f20c6a0758a734e1d3694187bc9b09edb018714ae6ad3d964736f6c63430007060033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
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.