Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x8086Ea75...dced2B438 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
Passthrough for L2
Compiler Version
vyper:0.4.0
Contract Source Code (Vyper language format)
#pragma version ^0.4.0 """ @title Passthrough for L2 @author anon contributor to curve @license MIT @notice passthrough contract who can deposit token rewards to allowed reward_receivers (gauges) """ from ethereum.ercs import IERC20 interface Gauge: def deposit_reward_token(_reward_token: address, _amount: uint256, _epoch: uint256): nonpayable def reward_data(_token: address) -> (address, uint256, uint256, uint256): view def manager() -> address: view FIRST_GUARD: constant(address) = 0x9f499A0B7c14393502207877B17E3748beaCd70B WEEK: public(constant(uint256)) = 7 * 24 * 60 * 60 # 1 week in seconds guards: public(DynArray[address, 10]) # L2 guards non_removable_guards: public(DynArray[address, 2]) # L2 fixed guards distributors: public(DynArray[address, 10]) # L2 distributors reward_receivers: public(DynArray[address, 10]) # L2 reward receivers single_reward_receiver: public(address) single_reward_token: public(address) OWNERSHIP_ADMIN: public(immutable(address)) PARAMETER_ADMIN: public(immutable(address)) name: public(String[128]) event PassthroughDeployed: timestamp: uint256 event SetSingleRewardReceiver: single_reward_receiver: address timestamp: uint256 event SetSingleRewardToken: single_reward_token: address timestamp: uint256 event SetName: name: String[128] timestamp: uint256 event AddGuard: new_guard: address timestamp: uint256 event RemoveGuard: removed_guard: address timestamp: uint256 event AddDistributor: new_distributor: address timestamp: uint256 event RemoveDistributor: removed_distributor: address timestamp: uint256 event SentRewardToken: single_reward_receiver: address reward_token: address amount: uint256 epoch: uint256 timestamp: uint256 event SentReward: single_reward_receiver: address reward_token: address amount: uint256 epoch: uint256 timestamp: uint256 event SentRewardTokenWithReceiver: reward_receiver: address reward_token: address amount: uint256 epoch: uint256 timestamp: uint256 event RewardData: distributor: address period_finish: uint256 rate: uint256 last_update: uint256 timestamp: uint256 @deploy def __init__(_ownership_admin: address, _parameter_admin: address, _reward_receivers: DynArray[address, 10], _guards: DynArray[address, 7], _distributors: DynArray[address, 10]): """ @notice Contract constructor @param _reward_receivers Reward receivers addresses, currently not used anywhere! @param _guards Guards addresses @param _distributors Distributors addresses @dev _reward_receivers are not used anywhere, as the sending reward is gated by the depositor address in the gauge (this contract) """ self.reward_receivers = _reward_receivers self.guards = _guards # add default guards OWNERSHIP_ADMIN = _ownership_admin PARAMETER_ADMIN = _parameter_admin self.guards.append(OWNERSHIP_ADMIN) self.guards.append(PARAMETER_ADMIN) self.guards.append(FIRST_GUARD) self.non_removable_guards.append(OWNERSHIP_ADMIN) self.non_removable_guards.append(PARAMETER_ADMIN) self.distributors = _distributors log PassthroughDeployed(block.timestamp) @external def deposit_reward_token(_reward_token: address, _amount: uint256, _epoch: uint256 = WEEK): """ @notice Deposit reward token @param _reward_token Reward token address @param _amount Amount of reward token to deposit @param _epoch Epoch to deposit reward token, default is 1 week in seconds, min. 3 days in L2 gauges @dev This function is used to deposit reward token to the single reward receiver @dev To use this function, set the single reward receiver first (gauge address) """ assert msg.sender in self.distributors or msg.sender in self.guards, 'only distributors or guards can call this function' assert self.single_reward_receiver != empty(address), 'single reward receiver not set' assert extcall IERC20(_reward_token).transferFrom(msg.sender, self, _amount) assert extcall IERC20(_reward_token).approve(self.single_reward_receiver, _amount) extcall Gauge(self.single_reward_receiver).deposit_reward_token(_reward_token, _amount, _epoch) log SentRewardToken(self.single_reward_receiver, _reward_token, _amount, _epoch, block.timestamp) @external def deposit_reward(_amount: uint256, _epoch: uint256 = WEEK): """ @notice Deposit reward token @param _amount Amount of reward token to deposit @param _epoch Epoch to deposit reward token, default is 1 week in seconds, min, 3 days in L2 gauges @dev This function is used to deposit reward token to the single reward receiver with a fixed reward token @dev To use this function, set the single reward receiver first (gauge address) """ assert msg.sender in self.distributors or msg.sender in self.guards, 'only distributors or guards can call this function' assert self.single_reward_token != empty(address), 'single reward token not set' assert self.single_reward_receiver != empty(address), 'single reward receiver not set' assert extcall IERC20(self.single_reward_token).transferFrom(msg.sender, self, _amount) assert extcall IERC20(self.single_reward_token).approve(self.single_reward_receiver, _amount) extcall Gauge(self.single_reward_receiver).deposit_reward_token(self.single_reward_token, _amount, _epoch) log SentReward(self.single_reward_receiver, self.single_reward_token, _amount, _epoch, block.timestamp) @external def set_single_reward_receiver(_single_reward_receiver: address): """ @notice Set the single reward receiver @param _single_reward_receiver The address of the single reward receiver @dev This can be used to set a single reward receiver to have the deposit_reward_token() @dev function the same interface as in a gauge """ assert msg.sender in self.guards, 'only guards can call this function' self.single_reward_receiver = _single_reward_receiver log SetSingleRewardReceiver(_single_reward_receiver, block.timestamp) @external def set_single_reward_token(_single_reward_token: address): """ @notice Set the single reward token @param _single_reward_token The address of the single reward token @dev This can be used to set a single reward token to have the deposit_reward() @dev function the same interface as in a gauge """ assert msg.sender in self.guards, 'only guards can call this function' self.single_reward_token = _single_reward_token log SetSingleRewardToken(_single_reward_token, block.timestamp) @external def deposit_reward_token_with_receiver(_reward_receiver: address, _reward_token: address, _amount: uint256, _epoch: uint256 = WEEK): """ @notice Deposit reward token @param _reward_receiver Reward receiver address @dev reward receiver must be a gauge, as access is set as depositor in the gauge, this is not to be gated here @param _reward_token Reward token address @param _amount Amount of reward token to deposit @param _epoch Epoch to deposit reward token """ assert msg.sender in self.distributors or msg.sender in self.guards, 'only distributors or guards can call this function' assert extcall IERC20(_reward_token).transferFrom(msg.sender, self, _amount) assert extcall IERC20(_reward_token).approve(_reward_receiver, _amount) extcall Gauge(_reward_receiver).deposit_reward_token(_reward_token, _amount, _epoch) log SentRewardTokenWithReceiver(_reward_receiver, _reward_token, _amount, _epoch, block.timestamp) @view @external def reward_data(_reward_receiver: address, _token: address) -> (address, uint256, uint256, uint256): distributor: address = empty(address) period_finish: uint256 = 0 rate: uint256 = 0 last_update: uint256 = 0 (distributor, period_finish, rate, last_update) = staticcall Gauge(_reward_receiver).reward_data(_token) return (distributor, period_finish, rate, last_update) # log RewardData(distributor, period_finish, rate, last_update, block.timestamp) @external def add_distributor(_new_distributor: address): # assert msg.sender in [Gauge(self.reward_receiver).manager(), PARAMETER_ADMIN, OWNERSHIP_ADMIN] assert msg.sender in self.guards, 'only guards can call this function' assert _new_distributor not in self.distributors, 'prevent to add the same distributor twice' self.distributors.append(_new_distributor) log AddDistributor(_new_distributor, block.timestamp) @external def remove_distributor(_rm_distributor: address): """ @notice Remove an active campaign address from the list @param _rm_distributor The address of the distributor to remove @dev todo: now a distributor not in the list also creats the RemoveDistributor event """ assert msg.sender in self.guards, 'only guards can call this function' for i: uint256 in range(len(self.distributors), bound=10): if self.distributors[i] == _rm_distributor: last_idx: uint256 = len(self.distributors) - 1 if i != last_idx: self.distributors[i] = self.distributors[last_idx] self.distributors.pop() break log RemoveDistributor(_rm_distributor, block.timestamp) @external def add_guard(_new_guard: address): # assert msg.sender in [Gauge(self.reward_receiver).manager(), PARAMETER_ADMIN, OWNERSHIP_ADMIN] assert msg.sender in self.guards, 'only guards can call this function' assert _new_guard not in self.guards, 'prevent to add the same guard twice' self.guards.append(_new_guard) log AddGuard(_new_guard, block.timestamp) @external def remove_guard(_rm_guard: address): """ @notice Remove an active guard address from the list @param _rm_guard The address of the guard to remove """ assert msg.sender in self.guards, 'only guards can call this function' assert _rm_guard != msg.sender, 'guards cannot remove themselves' assert _rm_guard not in self.non_removable_guards, 'non-removable guards cannot be removed' for i: uint256 in range(len(self.guards), bound=10): if self.guards[i] == _rm_guard: last_idx: uint256 = len(self.guards) - 1 if i != last_idx: self.guards[i] = self.guards[last_idx] self.guards.pop() break log RemoveGuard(_rm_guard, block.timestamp) @external def set_name(name: String[128]): """ @notice Set the name of the passthrough contract @param name The name of the passthrough contract """ assert msg.sender in self.guards, 'only guards can call this function' self.name = name log SetName(name, block.timestamp) @external @view def get_all_reward_receivers() -> DynArray[address, 10]: """ @notice Get all guards @return DynArray[address, 10] Array containing all guards """ return self.reward_receivers @external @view def get_all_guards() -> DynArray[address, 10]: """ @notice Get all guards @return DynArray[address, 10] Array containing all guards """ return self.guards @external @view def get_all_distributors() -> DynArray[address, 10]: """ @notice Get all distributors @return DynArray[address, 10] Array containing all distributors """ return self.distributors
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"name":"PassthroughDeployed","inputs":[{"name":"timestamp","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetSingleRewardReceiver","inputs":[{"name":"single_reward_receiver","type":"address","indexed":false},{"name":"timestamp","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetSingleRewardToken","inputs":[{"name":"single_reward_token","type":"address","indexed":false},{"name":"timestamp","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetName","inputs":[{"name":"name","type":"string","indexed":false},{"name":"timestamp","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"AddGuard","inputs":[{"name":"new_guard","type":"address","indexed":false},{"name":"timestamp","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"RemoveGuard","inputs":[{"name":"removed_guard","type":"address","indexed":false},{"name":"timestamp","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"AddDistributor","inputs":[{"name":"new_distributor","type":"address","indexed":false},{"name":"timestamp","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"RemoveDistributor","inputs":[{"name":"removed_distributor","type":"address","indexed":false},{"name":"timestamp","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SentRewardToken","inputs":[{"name":"single_reward_receiver","type":"address","indexed":false},{"name":"reward_token","type":"address","indexed":false},{"name":"amount","type":"uint256","indexed":false},{"name":"epoch","type":"uint256","indexed":false},{"name":"timestamp","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SentReward","inputs":[{"name":"single_reward_receiver","type":"address","indexed":false},{"name":"reward_token","type":"address","indexed":false},{"name":"amount","type":"uint256","indexed":false},{"name":"epoch","type":"uint256","indexed":false},{"name":"timestamp","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SentRewardTokenWithReceiver","inputs":[{"name":"reward_receiver","type":"address","indexed":false},{"name":"reward_token","type":"address","indexed":false},{"name":"amount","type":"uint256","indexed":false},{"name":"epoch","type":"uint256","indexed":false},{"name":"timestamp","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"RewardData","inputs":[{"name":"distributor","type":"address","indexed":false},{"name":"period_finish","type":"uint256","indexed":false},{"name":"rate","type":"uint256","indexed":false},{"name":"last_update","type":"uint256","indexed":false},{"name":"timestamp","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"function","name":"deposit_reward_token","inputs":[{"name":"_reward_token","type":"address"},{"name":"_amount","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"deposit_reward_token","inputs":[{"name":"_reward_token","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_epoch","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"deposit_reward","inputs":[{"name":"_amount","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"deposit_reward","inputs":[{"name":"_amount","type":"uint256"},{"name":"_epoch","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_single_reward_receiver","inputs":[{"name":"_single_reward_receiver","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_single_reward_token","inputs":[{"name":"_single_reward_token","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"deposit_reward_token_with_receiver","inputs":[{"name":"_reward_receiver","type":"address"},{"name":"_reward_token","type":"address"},{"name":"_amount","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"deposit_reward_token_with_receiver","inputs":[{"name":"_reward_receiver","type":"address"},{"name":"_reward_token","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_epoch","type":"uint256"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"reward_data","inputs":[{"name":"_reward_receiver","type":"address"},{"name":"_token","type":"address"}],"outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"add_distributor","inputs":[{"name":"_new_distributor","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"remove_distributor","inputs":[{"name":"_rm_distributor","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"add_guard","inputs":[{"name":"_new_guard","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"remove_guard","inputs":[{"name":"_rm_guard","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_name","inputs":[{"name":"name","type":"string"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"get_all_reward_receivers","inputs":[],"outputs":[{"name":"","type":"address[]"}]},{"stateMutability":"view","type":"function","name":"get_all_guards","inputs":[],"outputs":[{"name":"","type":"address[]"}]},{"stateMutability":"view","type":"function","name":"get_all_distributors","inputs":[],"outputs":[{"name":"","type":"address[]"}]},{"stateMutability":"view","type":"function","name":"WEEK","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"guards","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"non_removable_guards","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"distributors","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"reward_receivers","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"single_reward_receiver","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"single_reward_token","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"OWNERSHIP_ADMIN","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"PARAMETER_ADMIN","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_ownership_admin","type":"address"},{"name":"_parameter_admin","type":"address"},{"name":"_reward_receivers","type":"address[]"},{"name":"_guards","type":"address[]"},{"name":"_distributors","type":"address[]"}],"outputs":[]}]
Deployed Bytecode
0x5f3560e01c6002601f820660011b611bad01601e395f51565b6393f7aa67811861003957604436103417611ba95762093a80606052610072565b63f4359ce58118611ba55734611ba95762093a8060405260206040f35b6333b50aed811861037657606436103417611ba9576044356060525b6004358060a01c611ba957604052335f6080525f600f54600a8111611ba95780156100b957905b806010015483186100ae5760016080526100b9565b600101818118610099575b5050608051905061010957335f60a0525f600154600a8111611ba95780156100fd57905b806002015483186100f257600160a0526100fd565b6001018181186100dd575b505060a051905061010c565b60015b6101b45760208061014052603260c0527f6f6e6c79206469737472696275746f7273206f72206775617264732063616e2060e0527f63616c6c20746869732066756e6374696f6e00000000000000000000000000006101005260c0816101400160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610120528060040161013cfd5b6025546102355760208060e052601e6080527f73696e676c6520726577617264207265636569766572206e6f7420736574000060a05260808160e00181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060c0528060040160dcfd5b6040516323b872dd6080523360a0523060c05260243560e052602060806064609c5f855af1610266573d5f5f3e3d5ffd5b3d602081183d60201002188060800160a011611ba9576080518060011c611ba957610100525061010090505115611ba95760405163095ea7b360805260255460a05260243560c052602060806044609c5f855af16102c6573d5f5f3e3d5ffd5b3d602081183d60201002188060800160a011611ba9576080518060011c611ba95760e0525060e090505115611ba9576025546333b50aed60805260405160a05260243560c05260605160e052803b15611ba9575f60806064609c5f855af1610330573d5f5f3e3d5ffd5b507fb91d7e6b573b073d4551d3b20e3e13ceaf6dd0b40675ba364431dd7da6a4020460255460805260405160a05260243560c05260605160e052426101005260a06080a1005b63770cec238118611ba557602436103417611ba9576004358060a01c611ba957604052335f6060525f600154600a8111611ba95780156103d257905b806002015483186103c75760016060526103d2565b6001018181186103b2575b5050606051905061047e576020806101005260226080527f6f6e6c79206775617264732063616e2063616c6c20746869732066756e63746960a0527f6f6e00000000000000000000000000000000000000000000000000000000000060c0526080816101000160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060e0528060040160fcfd5b5f600f54600a8111611ba957801561051157905b80606052604051606051600f54811015611ba957601001541861050657600f5460018103818111611ba9579050608052608051606051146104f057608051600f54811015611ba95760100154606051600f54811015611ba957601001555b6001600f548015611ba9570380600f5550610511565b600101818118610492575b50507f486d56310c3a566c5d3a9d0b5f5532ea5ed15dc5ece76bf7f946dbe6316795e86040516060524260805260406060a1005b6394412b38811861056657602436103417611ba95762093a806040526105a3565b63b98827248118611ba557606436103417611ba95762093a80608052610c17565b638c478cb0811861091657604436103417611ba9576024356040525b335f6060525f600f54600a8111611ba95780156105dc57905b806010015483186105d15760016060526105dc565b6001018181186105bc575b5050606051905061062c57335f6080525f600154600a8111611ba957801561062057905b80600201548318610615576001608052610620565b600101818118610600575b5050608051905061062f565b60015b6106d65760208061012052603260a0527f6f6e6c79206469737472696275746f7273206f72206775617264732063616e2060c0527f63616c6c20746869732066756e6374696f6e000000000000000000000000000060e05260a0816101200160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610100528060040161011cfd5b6026546107575760208060c052601b6060527f73696e676c652072657761726420746f6b656e206e6f7420736574000000000060805260608160c00181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b6025546107d85760208060c052601e6060527f73696e676c6520726577617264207265636569766572206e6f7420736574000060805260608160c00181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b6026546323b872dd606052336080523060a05260043560c052602060606064607c5f855af1610809573d5f5f3e3d5ffd5b3d602081183d602010021880606001608011611ba9576060518060011c611ba95760e0525060e090505115611ba95760265463095ea7b360605260255460805260043560a052602060606044607c5f855af1610867573d5f5f3e3d5ffd5b3d602081183d602010021880606001608011611ba9576060518060011c611ba95760c0525060c090505115611ba9576025546333b50aed60605260265460805260043560a05260405160c052803b15611ba9575f60606064607c5f855af16108d1573d5f5f3e3d5ffd5b507f38aa51a95cd099697d03dea089bc482af05d74b07ee643b1f8296fdf4b5b11c560255460605260265460805260043560a05260405160c0524260e05260a06060a1005b6364036ec88118611ba55734611ba957602080604052806040015f600f548083528060051b5f82600a8111611ba957801561096757905b80601001548160051b60208801015260010181811861094d575b505082016020019150509050810190506040f35b636d52d7b28118611ba557602436103417611ba9576004358060a01c611ba957604052335f6060525f600154600a8111611ba95780156109d757905b806002015483186109cc5760016060526109d7565b6001018181186109b7575b50506060519050610a83576020806101005260226080527f6f6e6c79206775617264732063616e2063616c6c20746869732066756e63746960a0527f6f6e00000000000000000000000000000000000000000000000000000000000060c0526080816101000160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060e0528060040160fcfd5b6040516025557f45445a07500d288fa89cde6aee18c2de533e3e426938f3910aeeda1ab89b46786040516060524260805260406060a1005b635c4700348118611ba557602436103417611ba9576004358060a01c611ba957604052335f6060525f600154600a8111611ba9578015610b1757905b80600201548318610b0c576001606052610b17565b600101818118610af7575b50506060519050610bc3576020806101005260226080527f6f6e6c79206775617264732063616e2063616c6c20746869732066756e63746960a0527f6f6e00000000000000000000000000000000000000000000000000000000000060c0526080816101000160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060e0528060040160fcfd5b6040516026557f9ad984b06fd047e2ad2c6a5634faf458681e73d0411956fb597f8d470fe9f3c36040516060524260805260406060a1005b63a2fbb16a8118610eae57608436103417611ba9576064356080525b6004358060a01c611ba9576040526024358060a01c611ba957606052335f60a0525f600f54600a8111611ba9578015610c6c57905b80601001548318610c6157600160a052610c6c565b600101818118610c4c575b505060a0519050610cbc57335f60c0525f600154600a8111611ba9578015610cb057905b80600201548318610ca557600160c052610cb0565b600101818118610c90575b505060c0519050610cbf565b60015b610d685760208061016052603260e0527f6f6e6c79206469737472696275746f7273206f72206775617264732063616e20610100527f63616c6c20746869732066756e6374696f6e00000000000000000000000000006101205260e0816101600160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610140528060040161015cfd5b6060516323b872dd60a0523360c0523060e05260443561010052602060a0606460bc5f855af1610d9a573d5f5f3e3d5ffd5b3d602081183d60201002188060a00160c011611ba95760a0518060011c611ba957610120525061012090505115611ba95760605163095ea7b360a05260405160c05260443560e052602060a0604460bc5f855af1610dfa573d5f5f3e3d5ffd5b3d602081183d60201002188060a00160c011611ba95760a0518060011c611ba957610100525061010090505115611ba9576040516333b50aed60a05260605160c05260443560e05260805161010052803b15611ba9575f60a0606460bc5f855af1610e67573d5f5f3e3d5ffd5b507f366c1e844d00c0715501ef693a547778ba585fe9265a5ef8c57aedc017c6858060405160a05260605160c05260443560e05260805161010052426101205260a060a0a1005b63e67cf9998118611ba557602436103417611ba9576004358060a01c611ba957604052335f6060525f600154600a8111611ba9578015610f0a57905b80600201548318610eff576001606052610f0a565b600101818118610eea575b50506060519050610fb6576020806101005260226080527f6f6e6c79206775617264732063616e2063616c6c20746869732066756e63746960a0527f6f6e00000000000000000000000000000000000000000000000000000000000060c0526080816101000160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060e0528060040160fcfd5b33604051186110395760208060c052601f6060527f6775617264732063616e6e6f742072656d6f7665207468656d73656c7665730060805260608160c00181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b60405160016060525f600c5460028111611ba957801561107457905b80600d01548318611069575f606052611074565b600101818118611055575b50506060519050611120576020806101005260266080527f6e6f6e2d72656d6f7661626c65206775617264732063616e6e6f74206265207260a0527f656d6f766564000000000000000000000000000000000000000000000000000060c0526080816101000160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060e0528060040160fcfd5b5f600154600a8111611ba95780156111b357905b80606052604051606051600154811015611ba95760020154186111a85760015460018103818111611ba95790506080526080516060511461119257608051600154811015611ba95760020154606051600154811015611ba957600201555b60016001548015611ba9570380600155506111b3565b600101818118611134575b50507f4642b08121dfa969c5edc8fb57387c723beedd41eb57f195187aa66bc88a0cce6040516060524260805260406060a1005b63121ea2f281186112f157604436103417611ba9576004358060a01c611ba9576040526024358060a01c611ba9576060526080366080376040516348e9c65e61010052606051610120526080610100602461011c845afa61124a573d5f5f3e3d5ffd5b3d608081183d6080100218806101000161018011611ba957610100518060a01c611ba9576101a052610120516101c052610140516101e0526101605161020052506101a0905080516102205260208101516102405260408101516102605260608101516102805250610220516080526102405160a0526102605160c0526102805160e0526080516101005260a0516101205260c0516101405260e051610160526080610100f35b634e228d008114600336111615611ba557602436103417611ba9576004358060a01c611ba957604052335f6060525f600154600a8111611ba957801561135357905b80600201548318611348576001606052611353565b600101818118611333575b505060605190506113ff576020806101005260226080527f6f6e6c79206775617264732063616e2063616c6c20746869732066756e63746960a0527f6f6e00000000000000000000000000000000000000000000000000000000000060c0526080816101000160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060e0528060040160fcfd5b60405160016060525f600154600a8111611ba957801561143a57905b8060020154831861142f575f60605261143a565b60010181811861141b575b505060605190506114e6576020806101005260236080527f70726576656e7420746f20616464207468652073616d6520677561726420747760a0527f696365000000000000000000000000000000000000000000000000000000000060c0526080816101000160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060e0528060040160fcfd5b60015460098111611ba957604051816002015560018101600155507f3e9a60df14f366987009f7cee8051d7e7feacc98635d51b8bd15ef69d41f430c6040516060524260805260406060a1005b636d484f028118611ba557602436103417611ba9576004358060a01c611ba957604052335f6060525f600154600a8111611ba957801561158f57905b8060020154831861158457600160605261158f565b60010181811861156f575b5050606051905061163b576020806101005260226080527f6f6e6c79206775617264732063616e2063616c6c20746869732066756e63746960a0527f6f6e00000000000000000000000000000000000000000000000000000000000060c0526080816101000160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060e0528060040160fcfd5b60405160016060525f600f54600a8111611ba957801561167657905b8060100154831861166b575f606052611676565b600101818118611657575b50506060519050611722576020806101005260296080527f70726576656e7420746f20616464207468652073616d6520646973747269627560a0527f746f72207477696365000000000000000000000000000000000000000000000060c0526080816101000160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060e0528060040160fcfd5b600f5460098111611ba957604051816010015560018101600f55507fa5babb86a45dcaf11bfb2fb70a03b04ce046203b581637539f567d01f6e8c6836040516060524260805260406060a1005b636b701e088118611ba557602436103417611ba957600435600401803560808111611ba95750602081350180826040375050335f60e0525f600154600a8111611ba95780156117da57905b806002015483186117cf57600160e0526117da565b6001018181186117ba575b505060e051905061188c57602080610180526022610100527f6f6e6c79206775617264732063616e2063616c6c20746869732066756e637469610120527f6f6e00000000000000000000000000000000000000000000000000000000000061014052610100816101800160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610160528060040161017cfd5b6020604051015f81601f0160051c60058111611ba95780156118c257905b8060051b6040015181602701556001018181186118aa575b5050507f44c7675c33fb3171221cbc9737b814ed69b382282d908eefc7354c55f49deddc60408060e0528060e001602060405101808282604060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081019050426101005260e0a1005b63138cd3a881186119955734611ba957602080604052806040015f601a548083528060051b5f82600a8111611ba957801561198157905b80601b01548160051b602088010152600101818118611967575b505082016020019150509050810190506040f35b63375069408118611ba55734611ba957602080604052806040015f6001548083528060051b5f82600a8111611ba95780156119e657905b80600201548160051b6020880101526001018181186119cc575b505082016020019150509050810190506040f35b63c74fc0778118611ba557602436103417611ba957600435600154811015611ba9576002015460405260206040f35b63a4bbaa4d8118611ba557602436103417611ba957600435600c54811015611ba957600d015460405260206040f35b6350b492ba8118611ba557602436103417611ba957600435600f54811015611ba9576010015460405260206040f35b63092040a78118611ab657602436103417611ba957600435601a54811015611ba957601b015460405260206040f35b63329b7b9d8118611ba55734611ba9576020611beb60403960206040f35b631fda3a218118611ba55734611ba95760255460405260206040f35b63be225ddb8118611ba55734611ba95760265460405260206040f35b63e4c8f3fb8118611ba55734611ba9576020611c0b60403960206040f35b6306fdde038118611ba55734611ba957602080604052806040016020602754015f81601f0160051c60058111611ba9578015611b7957905b80602701548160051b850152600101818118611b62575b5050508051806020830101601f825f03163682375050601f19601f825160200101169050810190506040f35b5f5ffd5b5f80fd00181ba51a291ad41ba51ba519fa00561ba51ba51af015331b0c1ba5176f05451ba51ba51a581a8705871ba519300abb097b1b2a11e71ba50bfb1ba51ba50000000000000000000000006c9578402a3ace046a12839f45f84aa5448e9c30000000000000000000000000ec5afc9590964f2fa0feed54f0fbb2a34480908d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.