Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 251 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Bridge | 21507312 | 7 days ago | IN | 0 ETH | 0.00015727 | ||||
Bridge | 21433055 | 18 days ago | IN | 0 ETH | 0.00049384 | ||||
Bridge | 21419880 | 19 days ago | IN | 0 ETH | 0.00046034 | ||||
Bridge | 21351496 | 29 days ago | IN | 0 ETH | 0.00067231 | ||||
Bridge | 21350470 | 29 days ago | IN | 0 ETH | 0.00052009 | ||||
Bridge | 21335653 | 31 days ago | IN | 0 ETH | 0.00094352 | ||||
Bridge | 21335594 | 31 days ago | IN | 0 ETH | 0.00108555 | ||||
Bridge | 21334937 | 31 days ago | IN | 0 ETH | 0.00089943 | ||||
Bridge | 21331512 | 32 days ago | IN | 0 ETH | 0.0016037 | ||||
Bridge | 21324147 | 33 days ago | IN | 0 ETH | 0.0012166 | ||||
Bridge | 21319780 | 33 days ago | IN | 0 ETH | 0.0008244 | ||||
Bridge | 21313343 | 34 days ago | IN | 0 ETH | 0.00053527 | ||||
Bridge | 21289294 | 38 days ago | IN | 0 ETH | 0.00039544 | ||||
Bridge | 21284174 | 38 days ago | IN | 0 ETH | 0.00048264 | ||||
Bridge | 21284146 | 38 days ago | IN | 0 ETH | 0.0004148 | ||||
Bridge | 21281513 | 39 days ago | IN | 0 ETH | 0.00111072 | ||||
Bridge | 21265460 | 41 days ago | IN | 0 ETH | 0.00142077 | ||||
Bridge | 21260352 | 42 days ago | IN | 0 ETH | 0.00041695 | ||||
Set Fees | 21259681 | 42 days ago | IN | 0 ETH | 0.00029127 | ||||
Bridge | 21251785 | 43 days ago | IN | 0 ETH | 0.00089277 | ||||
Bridge | 20894335 | 93 days ago | IN | 0 ETH | 0.00051613 | ||||
Bridge | 20857735 | 98 days ago | IN | 0 ETH | 0.00052259 | ||||
Bridge | 20851022 | 99 days ago | IN | 0 ETH | 0.00026189 | ||||
Bridge | 20783004 | 108 days ago | IN | 0 ETH | 0.00055369 | ||||
Bridge | 20779555 | 109 days ago | IN | 0 ETH | 0.00080979 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
ManualBridge
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.13; import "IManualBridge.sol"; import "Ownable.sol"; import "IERC20.sol"; // This is a totally centralized (ie not trustless) manual bridge contract for DFP2 // bridging between Ethereum and Radix. Requires trust in contract owner. contract ManualBridge is IManualBridge, Ownable { IERC20 constant token = IERC20(0x2F57430a6ceDA85a67121757785877b4a71b8E6D); uint16 constant UNLOCKED = 0x0000; uint16 constant LOCKED = 0x0001; address admin; Config public bridgeConfig = Config({ locked: LOCKED, // 2nd bit is admin lock forwardBaseFee: 100, // Base fee forwardFeeFraction: 655, // Approximately 1% backwardBaseFee: 500, // Base fee backwardFeeFraction: 655, // Approximately 1% totalFees: 0 // Total fees collected }); constructor(){ admin = 0x3C7791728AdCA8C8ca5A46d6170a9c1fd24408e2; } // used for bridge (un)lock functions which may only be called by admin or owner modifier onlyAdmin() { if (msg.sender != admin && msg.sender != owner()) { revert AdminRightsRequired(); } _; } /** * @inheritdoc IManualBridge */ function bridge( uint256 inputAmount, bytes32[2] calldata radixAddress ) external override { Config storage c = bridgeConfig; if (c.locked == LOCKED) { revert BridgeLocked(); } if (inputAmount <= c.forwardBaseFee) { revert InsufficientInput(); } if (token.transferFrom(msg.sender, address(this), inputAmount) != true) { revert TokenTransferFailure(); } uint256 baseFee = uint256(c.forwardBaseFee) * 10**18; uint256 fractionalFee = (inputAmount * c.forwardFeeFraction) >> 16; uint256 fee = baseFee > fractionalFee ? baseFee : fractionalFee; c.totalFees += uint96(fee); emit Bridged(msg.sender, inputAmount - fee, fee, radixAddress); } /** * @notice Bridge tokens back from Radix to Ethereum. Release these tokens to the user. * @param inputAmount Amount of tokens bridged back to Ethereum. * @param destination Address of the user to receive the funds. * @param radixHash Transaction on the Radix network removing supply on Radix. */ function release( uint256 inputAmount, address destination, bytes32[2] calldata radixHash ) external onlyOwner() { Config storage c = bridgeConfig; if (c.locked == LOCKED) { revert BridgeLocked(); } if (inputAmount <= c.backwardBaseFee) { revert InsufficientInput(); } uint256 baseFee = uint256(c.backwardBaseFee) * 10**18; uint256 fractionalFee = (inputAmount * c.backwardFeeFraction) >> 16; uint256 fee = baseFee > fractionalFee ? baseFee : fractionalFee; c.totalFees += uint96(fee); if (token.transfer(destination, inputAmount - fee) != true) { revert TokenTransferFailure(); } emit Released(destination, inputAmount - fee, fee, radixHash); } /** * @notice Sets admin address for emergency exchange locking. * @dev Can only be called by the owner of the contract. * @param adminAddress Address of the admin to set */ function setAdmin(address adminAddress) external onlyOwner() { admin = adminAddress; emit AdminChanged(adminAddress); } /** * @notice Sets exchange lock, under which swap and liquidity add (but not remove) are disabled. * @dev Can only be called by the admin of the contract. */ function lockBridge() external onlyAdmin() { bridgeConfig.locked = LOCKED; emit LockChanged(msg.sender, bridgeConfig.locked); } /** * @notice Resets exchange lock. * @dev Can only be called by the admin of the contract. */ function unlockBridge() external onlyAdmin() { bridgeConfig.locked = UNLOCKED; emit LockChanged(msg.sender, bridgeConfig.locked); } /** * @notice Updates bridge fees. * @param newForwardBaseFee New forward base fee level in whole tokens * @param newForwardFeeFraction New forward fractional fee (times 2^-16) * @param newBackwardBaseFee New backward base fee level in whole tokens * @param newBackwardFeeFraction New backward fractional fee (times 2^-16) */ function setFees( uint16 newForwardBaseFee, uint16 newForwardFeeFraction, uint16 newBackwardBaseFee, uint16 newBackwardFeeFraction ) external onlyOwner() { Config storage c = bridgeConfig; c.forwardBaseFee = newForwardBaseFee; c.forwardFeeFraction = newForwardFeeFraction; c.backwardBaseFee = newBackwardBaseFee; c.backwardFeeFraction = newBackwardFeeFraction; emit ConfigUpdated(c); } /** * @notice Claims fees collected by the bridge and transfers to selected address * @param destination Address that the fees will be transferred to */ function claimFees(address destination) external onlyOwner() { Config storage c = bridgeConfig; uint256 totalFees = uint256(c.totalFees); if (token.transfer(destination, totalFees) != true) { revert TokenTransferFailure(); } c.totalFees = 0; emit FeesClaimed(totalFees); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0; /** * @title ManualBridge interface * @author Jazzer9F */ interface IManualBridge { error AdminRightsRequired(); error TokenTransferFailure(); error InsufficientInput(); error BridgeLocked(); // bridge configuration struct Config { uint16 locked; // variable to keep track of whether the exchnage is locked uint16 forwardBaseFee; // base fee level in # of whole tokens uint16 forwardFeeFraction; // variable part of fee uint16 backwardBaseFee; // base fee level in # of whole tokens uint16 backwardFeeFraction; // variable part of fee uint96 totalFees; // total fees currently held by the contract } /** * @notice Bridge the token towards Radix. Forwards the tokens to the team address. * @param amountToBridge Amount of tokens to bridge to Radix * @param radixAddress Address on the Radix public network that tokens should be sent to */ function bridge( uint256 amountToBridge, bytes32[2] calldata radixAddress ) external; /** * @notice Emit Bridged event when tokens are bridged to the Radix network * @param source Address of the caller * @param netAmountBridged Amount of tokens sent to the Radix network (held in team wallet) * @param feePayed Fee withheld from the bridged amount * @param radixAddress The address on the Radix network that the tokens are to be sent to */ event Bridged( address source, uint256 netAmountBridged, uint256 feePayed, bytes32[2] radixAddress ); /** * @notice Emit Released event when tokens are bridged back from the Radix network * @param destination Address of the bridge user * @param radixHash Transaction on Radix network paying for this release * @param feePayed Amount of fee payed * @param amountReleased Amount of DFP2 released to the user */ event Released( address destination, uint256 amountReleased, uint256 feePayed, bytes32[2] radixHash ); /** * @notice Emit adminChanged event when the bridge config (ie fees) is updated. * @param newConfig The updated config struct */ event ConfigUpdated( Config newConfig ); /** * @notice Emit adminChanged event when the exchange admin address is changed * @param newAdmin Address of new admin, who can (un)lock the exchange */ event AdminChanged( address newAdmin ); /** * @notice Emit LockChanged event when the exchange is (un)locked by an admin * @param exchangeAdmin Address of the admin making the change * @param newLockValue The updated value of the lock variable */ event LockChanged( address exchangeAdmin, uint256 newLockValue ); /** * @notice Emit FeesClaimed when the fees collected by the bridge are claimed by the owner * @param amountClaimed Amount of fees withdrawn. This is always the total amount of fees collected until now. */ event FeesClaimed( uint256 amountClaimed ); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; import "Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
{ "evmVersion": "istanbul", "optimizer": { "enabled": true, "runs": 200 }, "libraries": { "ManualBridge.sol": {} }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AdminRightsRequired","type":"error"},{"inputs":[],"name":"BridgeLocked","type":"error"},{"inputs":[],"name":"InsufficientInput","type":"error"},{"inputs":[],"name":"TokenTransferFailure","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"source","type":"address"},{"indexed":false,"internalType":"uint256","name":"netAmountBridged","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feePayed","type":"uint256"},{"indexed":false,"internalType":"bytes32[2]","name":"radixAddress","type":"bytes32[2]"}],"name":"Bridged","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint16","name":"locked","type":"uint16"},{"internalType":"uint16","name":"forwardBaseFee","type":"uint16"},{"internalType":"uint16","name":"forwardFeeFraction","type":"uint16"},{"internalType":"uint16","name":"backwardBaseFee","type":"uint16"},{"internalType":"uint16","name":"backwardFeeFraction","type":"uint16"},{"internalType":"uint96","name":"totalFees","type":"uint96"}],"indexed":false,"internalType":"struct IManualBridge.Config","name":"newConfig","type":"tuple"}],"name":"ConfigUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountClaimed","type":"uint256"}],"name":"FeesClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"exchangeAdmin","type":"address"},{"indexed":false,"internalType":"uint256","name":"newLockValue","type":"uint256"}],"name":"LockChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"destination","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountReleased","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feePayed","type":"uint256"},{"indexed":false,"internalType":"bytes32[2]","name":"radixHash","type":"bytes32[2]"}],"name":"Released","type":"event"},{"inputs":[{"internalType":"uint256","name":"inputAmount","type":"uint256"},{"internalType":"bytes32[2]","name":"radixAddress","type":"bytes32[2]"}],"name":"bridge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bridgeConfig","outputs":[{"internalType":"uint16","name":"locked","type":"uint16"},{"internalType":"uint16","name":"forwardBaseFee","type":"uint16"},{"internalType":"uint16","name":"forwardFeeFraction","type":"uint16"},{"internalType":"uint16","name":"backwardBaseFee","type":"uint16"},{"internalType":"uint16","name":"backwardFeeFraction","type":"uint16"},{"internalType":"uint96","name":"totalFees","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"destination","type":"address"}],"name":"claimFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockBridge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"inputAmount","type":"uint256"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes32[2]","name":"radixHash","type":"bytes32[2]"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adminAddress","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"newForwardBaseFee","type":"uint16"},{"internalType":"uint16","name":"newForwardFeeFraction","type":"uint16"},{"internalType":"uint16","name":"newBackwardBaseFee","type":"uint16"},{"internalType":"uint16","name":"newBackwardFeeFraction","type":"uint16"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockBridge","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6101406040526001608052606460a05261028f60c08190526101f460e05261010052600061012052600280546001600160b01b03191669028f01f4028f0064000117905534801561004f57600080fd5b5061005933610084565b600180546001600160a01b031916733c7791728adca8c8ca5a46d6170a9c1fd24408e21790556100d4565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610d63806100e36000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063704b6c0211610071578063704b6c0214610184578063715018a6146101975780638da5cb5b1461019f578063b198491b146101ba578063e0905d0f146101cd578063f2fde38b146101d557600080fd5b806315a0ea6a146100ae578063235e5199146100c357806342f7723f146101565780634b2f2b82146101695780635dd4604014610171575b600080fd5b6100c16100bc366004610b23565b6101e8565b005b60025461010b9061ffff808216916201000081048216916401000000008204811691600160301b8104821691600160401b82041690600160501b90046001600160601b031686565b6040805161ffff9788168152958716602087015293861693850193909352908416606084015290921660808201526001600160601b0390911660a082015260c0015b60405180910390f35b6100c1610164366004610b57565b610326565b6100c1610436565b6100c161017f366004610bc2565b6104c8565b6100c1610192366004610b23565b6106f9565b6100c1610777565b6000546040516001600160a01b03909116815260200161014d565b6100c16101c8366004610bff565b6107ad565b6100c1610997565b6100c16101e3366004610b23565b610a1c565b6000546001600160a01b0316331461021b5760405162461bcd60e51b815260040161021290610c2c565b60405180910390fd5b6002805460405163a9059cbb60e01b81526001600160a01b0384166004820152600160501b9091046001600160601b03166024820181905290732f57430a6ceda85a67121757785877b4a71b8e6d9063a9059cbb906044016020604051808303816000875af1158015610292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b69190610c61565b15156001146102d85760405163cdf44a9760e01b815260040160405180910390fd5b81546bffffffffffffffffffffffff60501b191682556040518181527f83db9dc084973306ecd0b0f10cb495b81dd9ddcc135eb7934d2723bcabc8f4c39060200160405180910390a1505050565b6000546001600160a01b031633146103505760405162461bcd60e51b815260040161021290610c2c565b6002805465ffffffff000019166201000061ffff8781169190910265ffff00000000191691909117640100000000868316021769ffffffff0000000000001916600160301b8583160269ffff0000000000000000191617600160401b8483160217808355604080518284168152601083901c841660208083019190915283901c841681830152603083901c841660608201529082901c90921660808301526001600160601b0360509190911c1660a08201527f286ac0c0c9341d7f610b0e794c81f3a5eda340d544745bc744ee6fafb34f54489060c00160405180910390a15050505050565b6001546001600160a01b0316331480159061045c57506000546001600160a01b03163314155b1561047a57604051639c60c1ef60e01b815260040160405180910390fd5b6002805461ffff191660019081179091556040805133815260208101929092527f57c0a369a1527577385e79bbeda6dcfb6bf51dad991efc02e392f31b5533f2a791015b60405180910390a1565b6000546001600160a01b031633146104f25760405162461bcd60e51b815260040161021290610c2c565b6002805461ffff166000190161051b5760405163107c757f60e31b815260040160405180910390fd5b8054600160301b900461ffff1684116105475760405163f8b3bb6160e01b815260040160405180910390fd5b805460009061056990600160301b900461ffff16670de0b6b3a7640000610c99565b825490915060009060109061058990600160401b900461ffff1688610c99565b901c9050600081831161059c578161059e565b825b845490915081908590600a906105c5908490600160501b90046001600160601b0316610cb8565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550732f57430a6ceda85a67121757785877b4a71b8e6d6001600160a01b031663a9059cbb87838a6106199190610ce3565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610664573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106889190610c61565b15156001146106aa5760405163cdf44a9760e01b815260040160405180910390fd5b7fac784ad6cb124e5b144179a16598aebde68d4baecd870febab23c557e47878b7866106d6838a610ce3565b83886040516106e89493929190610cfa565b60405180910390a150505050505050565b6000546001600160a01b031633146107235760405162461bcd60e51b815260040161021290610c2c565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c9060200160405180910390a150565b6000546001600160a01b031633146107a15760405162461bcd60e51b815260040161021290610c2c565b6107ab6000610ab7565b565b6002805461ffff16600019016107d65760405163107c757f60e31b815260040160405180910390fd5b805462010000900461ffff1683116108015760405163f8b3bb6160e01b815260040160405180910390fd5b6040516323b872dd60e01b815233600482015230602482015260448101849052732f57430a6ceda85a67121757785877b4a71b8e6d906323b872dd906064016020604051808303816000875af115801561085f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108839190610c61565b15156001146108a55760405163cdf44a9760e01b815260040160405180910390fd5b80546000906108c69062010000900461ffff16670de0b6b3a7640000610c99565b82549091506000906010906108e790640100000000900461ffff1687610c99565b901c905060008183116108fa57816108fc565b825b845490915081908590600a90610923908490600160501b90046001600160601b0316610cb8565b92506101000a8154816001600160601b0302191690836001600160601b031602179055507f844454dc35c9340088789e5c4bb6ff14fe14e1597769b37f5c9a7fab41fefb7d3382886109759190610ce3565b83886040516109879493929190610cfa565b60405180910390a1505050505050565b6001546001600160a01b031633148015906109bd57506000546001600160a01b03163314155b156109db57604051639c60c1ef60e01b815260040160405180910390fd5b6002805461ffff1916905560408051338152600060208201527f57c0a369a1527577385e79bbeda6dcfb6bf51dad991efc02e392f31b5533f2a791016104be565b6000546001600160a01b03163314610a465760405162461bcd60e51b815260040161021290610c2c565b6001600160a01b038116610aab5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610212565b610ab481610ab7565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b0381168114610b1e57600080fd5b919050565b600060208284031215610b3557600080fd5b610b3e82610b07565b9392505050565b803561ffff81168114610b1e57600080fd5b60008060008060808587031215610b6d57600080fd5b610b7685610b45565b9350610b8460208601610b45565b9250610b9260408601610b45565b9150610ba060608601610b45565b905092959194509250565b8060408101831015610bbc57600080fd5b92915050565b600080600060808486031215610bd757600080fd5b83359250610be760208501610b07565b9150610bf68560408601610bab565b90509250925092565b60008060608385031215610c1257600080fd5b82359150610c238460208501610bab565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215610c7357600080fd5b81518015158114610b3e57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610cb357610cb3610c83565b500290565b60006001600160601b03808316818516808303821115610cda57610cda610c83565b01949350505050565b600082821015610cf557610cf5610c83565b500390565b6001600160a01b038516815260208101849052604080820184905260a0820190836060840137600081529594505050505056fea26469706673582212200be5d87679d52d8a206efad305be9f8da3b6cd415798fda18b90d8a921c921d264736f6c634300080d0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063704b6c0211610071578063704b6c0214610184578063715018a6146101975780638da5cb5b1461019f578063b198491b146101ba578063e0905d0f146101cd578063f2fde38b146101d557600080fd5b806315a0ea6a146100ae578063235e5199146100c357806342f7723f146101565780634b2f2b82146101695780635dd4604014610171575b600080fd5b6100c16100bc366004610b23565b6101e8565b005b60025461010b9061ffff808216916201000081048216916401000000008204811691600160301b8104821691600160401b82041690600160501b90046001600160601b031686565b6040805161ffff9788168152958716602087015293861693850193909352908416606084015290921660808201526001600160601b0390911660a082015260c0015b60405180910390f35b6100c1610164366004610b57565b610326565b6100c1610436565b6100c161017f366004610bc2565b6104c8565b6100c1610192366004610b23565b6106f9565b6100c1610777565b6000546040516001600160a01b03909116815260200161014d565b6100c16101c8366004610bff565b6107ad565b6100c1610997565b6100c16101e3366004610b23565b610a1c565b6000546001600160a01b0316331461021b5760405162461bcd60e51b815260040161021290610c2c565b60405180910390fd5b6002805460405163a9059cbb60e01b81526001600160a01b0384166004820152600160501b9091046001600160601b03166024820181905290732f57430a6ceda85a67121757785877b4a71b8e6d9063a9059cbb906044016020604051808303816000875af1158015610292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b69190610c61565b15156001146102d85760405163cdf44a9760e01b815260040160405180910390fd5b81546bffffffffffffffffffffffff60501b191682556040518181527f83db9dc084973306ecd0b0f10cb495b81dd9ddcc135eb7934d2723bcabc8f4c39060200160405180910390a1505050565b6000546001600160a01b031633146103505760405162461bcd60e51b815260040161021290610c2c565b6002805465ffffffff000019166201000061ffff8781169190910265ffff00000000191691909117640100000000868316021769ffffffff0000000000001916600160301b8583160269ffff0000000000000000191617600160401b8483160217808355604080518284168152601083901c841660208083019190915283901c841681830152603083901c841660608201529082901c90921660808301526001600160601b0360509190911c1660a08201527f286ac0c0c9341d7f610b0e794c81f3a5eda340d544745bc744ee6fafb34f54489060c00160405180910390a15050505050565b6001546001600160a01b0316331480159061045c57506000546001600160a01b03163314155b1561047a57604051639c60c1ef60e01b815260040160405180910390fd5b6002805461ffff191660019081179091556040805133815260208101929092527f57c0a369a1527577385e79bbeda6dcfb6bf51dad991efc02e392f31b5533f2a791015b60405180910390a1565b6000546001600160a01b031633146104f25760405162461bcd60e51b815260040161021290610c2c565b6002805461ffff166000190161051b5760405163107c757f60e31b815260040160405180910390fd5b8054600160301b900461ffff1684116105475760405163f8b3bb6160e01b815260040160405180910390fd5b805460009061056990600160301b900461ffff16670de0b6b3a7640000610c99565b825490915060009060109061058990600160401b900461ffff1688610c99565b901c9050600081831161059c578161059e565b825b845490915081908590600a906105c5908490600160501b90046001600160601b0316610cb8565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550732f57430a6ceda85a67121757785877b4a71b8e6d6001600160a01b031663a9059cbb87838a6106199190610ce3565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610664573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106889190610c61565b15156001146106aa5760405163cdf44a9760e01b815260040160405180910390fd5b7fac784ad6cb124e5b144179a16598aebde68d4baecd870febab23c557e47878b7866106d6838a610ce3565b83886040516106e89493929190610cfa565b60405180910390a150505050505050565b6000546001600160a01b031633146107235760405162461bcd60e51b815260040161021290610c2c565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c9060200160405180910390a150565b6000546001600160a01b031633146107a15760405162461bcd60e51b815260040161021290610c2c565b6107ab6000610ab7565b565b6002805461ffff16600019016107d65760405163107c757f60e31b815260040160405180910390fd5b805462010000900461ffff1683116108015760405163f8b3bb6160e01b815260040160405180910390fd5b6040516323b872dd60e01b815233600482015230602482015260448101849052732f57430a6ceda85a67121757785877b4a71b8e6d906323b872dd906064016020604051808303816000875af115801561085f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108839190610c61565b15156001146108a55760405163cdf44a9760e01b815260040160405180910390fd5b80546000906108c69062010000900461ffff16670de0b6b3a7640000610c99565b82549091506000906010906108e790640100000000900461ffff1687610c99565b901c905060008183116108fa57816108fc565b825b845490915081908590600a90610923908490600160501b90046001600160601b0316610cb8565b92506101000a8154816001600160601b0302191690836001600160601b031602179055507f844454dc35c9340088789e5c4bb6ff14fe14e1597769b37f5c9a7fab41fefb7d3382886109759190610ce3565b83886040516109879493929190610cfa565b60405180910390a1505050505050565b6001546001600160a01b031633148015906109bd57506000546001600160a01b03163314155b156109db57604051639c60c1ef60e01b815260040160405180910390fd5b6002805461ffff1916905560408051338152600060208201527f57c0a369a1527577385e79bbeda6dcfb6bf51dad991efc02e392f31b5533f2a791016104be565b6000546001600160a01b03163314610a465760405162461bcd60e51b815260040161021290610c2c565b6001600160a01b038116610aab5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610212565b610ab481610ab7565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b0381168114610b1e57600080fd5b919050565b600060208284031215610b3557600080fd5b610b3e82610b07565b9392505050565b803561ffff81168114610b1e57600080fd5b60008060008060808587031215610b6d57600080fd5b610b7685610b45565b9350610b8460208601610b45565b9250610b9260408601610b45565b9150610ba060608601610b45565b905092959194509250565b8060408101831015610bbc57600080fd5b92915050565b600080600060808486031215610bd757600080fd5b83359250610be760208501610b07565b9150610bf68560408601610bab565b90509250925092565b60008060608385031215610c1257600080fd5b82359150610c238460208501610bab565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215610c7357600080fd5b81518015158114610b3e57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610cb357610cb3610c83565b500290565b60006001600160601b03808316818516808303821115610cda57610cda610c83565b01949350505050565b600082821015610cf557610cf5610c83565b500390565b6001600160a01b038516815260208101849052604080820184905260a0820190836060840137600081529594505050505056fea26469706673582212200be5d87679d52d8a206efad305be9f8da3b6cd415798fda18b90d8a921c921d264736f6c634300080d0033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.020318 | 48,033,400.8115 | $975,956.57 |
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.