Source Code
Overview
ETH Balance
0.0001 ETH
Token Holdings
More Info
ContractCreator
Multichain Info
N/A
Latest 16 from a total of 16 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Accept Ownership | 5947140 | 238 days ago | IN | 0 ETH | 0.00326958 | ||||
Nominate New Own... | 5947139 | 238 days ago | IN | 0 ETH | 0.00539413 | ||||
Add Collateral C... | 5420017 | 315 days ago | IN | 0 ETH | 0.0001208 | ||||
Add Collateral C... | 5420014 | 315 days ago | IN | 0 ETH | 0.00011953 | ||||
Add Collateral C... | 5392837 | 319 days ago | IN | 0 ETH | 0.00011272 | ||||
Add Collateral C... | 5035172 | 373 days ago | IN | 0 ETH | 0.00164185 | ||||
Add Collateral C... | 5035171 | 373 days ago | IN | 0 ETH | 0.00167761 | ||||
Add Collateral C... | 5035170 | 373 days ago | IN | 0 ETH | 0.00171148 | ||||
Add Collateral C... | 5035166 | 373 days ago | IN | 0 ETH | 0.0017299 | ||||
Add Collateral C... | 5035161 | 373 days ago | IN | 0 ETH | 0.00177625 | ||||
Add Collateral C... | 5035157 | 373 days ago | IN | 0 ETH | 0.00173945 | ||||
Add Collateral C... | 5035153 | 373 days ago | IN | 0 ETH | 0.00178582 | ||||
Add Collateral C... | 5035149 | 373 days ago | IN | 0 ETH | 0.00168089 | ||||
Add Collateral C... | 5035144 | 373 days ago | IN | 0 ETH | 0.00173499 | ||||
Add Collateral C... | 5035140 | 373 days ago | IN | 0 ETH | 0.00210187 | ||||
Set Associated C... | 5028194 | 374 days ago | IN | 0 ETH | 0.00150248 |
Loading...
Loading
Contract Name:
ExternWrappedStateTokenLightChain
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./State.sol"; import "../interfaces/IERC20.sol"; // Libraries import "./SafeDecimalMath.sol"; import "../libraries/TransferHelper.sol"; contract ExternWrappedStateTokenLightChain is State { using SafeMath for uint256; using SafeDecimalMath for uint256; /* ========== STATE VARIABLES ========== */ /* Other ERC20 fields. */ string public name; string public symbol; // uint256 public totalSupply; uint8 public decimals; mapping(bytes32 => uint256) public totalSupplyPerKey; mapping(bytes32 => address) public collateralCurrency; bytes32[] public availableCollateralCurrencies; mapping(bytes32 => mapping(address => uint256)) public collateralByIssuer; address internal constant NULL_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; constructor( string memory _name, string memory _symbol, uint8 _decimals, address _owner, address _associatedContract ) State(_owner, _associatedContract) { name = _name; symbol = _symbol; decimals = _decimals; } function getAvailableCollaterals() external view returns (bytes32[] memory) { return availableCollateralCurrencies; } /* ========== MUTATIVE FUNCTIONS ========== */ function addCollateralCurrency(address _collateralAddress, bytes32 _currencyKey) external onlyOwner { require(collateralCurrency[_currencyKey] == address(0), "Collateral Currency Key exists already"); collateralCurrency[_currencyKey] = _collateralAddress; availableCollateralCurrencies.push(_currencyKey); emit CollateralCurrencyAdded(_currencyKey, _collateralAddress); } function removeCollateralCurrency(bytes32 _currencyKey) external onlyOwner { require(collateralCurrency[_currencyKey] != address(0), "Collateral Currency Key no exists"); address collateralAddress = collateralCurrency[_currencyKey]; delete collateralCurrency[_currencyKey]; uint256 availableLength = availableCollateralCurrencies.length; for (uint256 ii = 0; ii < availableLength; ii++) { if (availableCollateralCurrencies[ii] == _currencyKey) { availableCollateralCurrencies[ii] = availableCollateralCurrencies[availableLength - 1]; availableCollateralCurrencies.pop(); } } emit CollateralCurrencyRemoved(_currencyKey, collateralAddress); } function increaseCollateral(address _to, bytes32 _currencyKey, uint256 _collateralAmount) external onlyAssociatedContract { totalSupplyPerKey[_currencyKey] = totalSupplyPerKey[_currencyKey] + _collateralAmount; collateralByIssuer[_currencyKey][_to] = collateralByIssuer[_currencyKey][_to] + _collateralAmount; } function decreaseCollateral(address _to, bytes32 _currencyKey, uint256 _collateralAmount) external onlyAssociatedContract { totalSupplyPerKey[_currencyKey] = totalSupplyPerKey[_currencyKey] - _collateralAmount; collateralByIssuer[_currencyKey][_to] = collateralByIssuer[_currencyKey][_to] - _collateralAmount; } function withdrawCollateral(address _to, bytes32 _currencyKey, uint256 _collateralAmount) external onlyAssociatedContract { if (collateralCurrency[_currencyKey] == NULL_ADDRESS) { require(address(this).balance >= _collateralAmount, "Insufficient ETH balance to withdraw."); TransferHelper.safeTransferETH(_to, _collateralAmount); } else { require( IERC20(collateralCurrency[_currencyKey]).balanceOf(address(this)) >= _collateralAmount, "Insufficient Collateral Balance to withdraw on Contract." ); TransferHelper.safeTransfer(collateralCurrency[_currencyKey], _to, _collateralAmount); } } // admin functions for dev version function withdrawFundsByAdmin(address _to, bytes32 _currencyKey, uint256 _collateralAmount) external onlyOwner { if (collateralCurrency[_currencyKey] == NULL_ADDRESS) { require(address(this).balance >= _collateralAmount, "Insufficient ETH balance to withdraw."); TransferHelper.safeTransferETH(_to, _collateralAmount); } else { require( IERC20(collateralCurrency[_currencyKey]).balanceOf(address(this)) >= _collateralAmount, "Insufficient Collateral Balance to withdraw on Contract." ); TransferHelper.safeTransfer(collateralCurrency[_currencyKey], _to, _collateralAmount); } } // For dev function setCollateralBalance(address _account, bytes32 _currencyKey, uint256 _amount) external onlyOwner { collateralByIssuer[_currencyKey][_account] = _amount; totalSupplyPerKey[_currencyKey] += _amount; emit SetCollateralBalance(_account, _currencyKey, _amount); } receive() external payable {} // ========== EVENTS ========== event CollateralCurrencyAdded(bytes32 currencyKey, address collateralCurrency); event CollateralCurrencyRemoved(bytes32 currencyKey, address collateralCurrency); event SetCollateralBalance(address indexed _account, bytes32 _currencyKey, uint256 _amount); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, "SafeMath: division by zero"); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "SafeMath: modulo by zero"); return a % b; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IERC20 { // ERC20 Optional Views function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); // Views function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); // Mutative functions function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); // Events event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // from Uniswap TransferHelper library library TransferHelper { function safeApprove(address token, address to, uint256 value) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper::safeApprove: approve failed"); } function safeTransfer(address token, address to, uint256 value) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper::safeTransfer: transfer failed"); } function safeTransferFrom(address token, address from, address to, uint256 value) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper::transferFrom: transferFrom failed"); } function safeTransferETH(address to, uint256 value) internal { (bool success, ) = to.call{value: value}(new bytes(0)); require(success, "TransferHelper::safeTransferETH: ETH transfer failed"); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Owned { address public owner; address public nominatedOwner; constructor(address _owner) { require(_owner != address(0), "Owner address cannot be 0"); owner = _owner; emit OwnerChanged(address(0), _owner); } function nominateNewOwner(address _owner) external onlyOwner { nominatedOwner = _owner; emit OwnerNominated(_owner); } function acceptOwnership() external { require(msg.sender == nominatedOwner, "You must be nominated before you can accept ownership"); emit OwnerChanged(owner, nominatedOwner); owner = nominatedOwner; nominatedOwner = address(0); } modifier onlyOwner() { _onlyOwner(); _; } function _onlyOwner() private view { require(msg.sender == owner, "Only the contract owner may perform this action"); } event OwnerNominated(address newOwner); event OwnerChanged(address oldOwner, address newOwner); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // Libraries // import "openzeppelin-solidity-2.3.0/contracts/math/SafeMath.sol"; import "../externals/openzeppelin/SafeMath.sol"; library SafeDecimalMath { using SafeMath for uint256; /* Number of decimal places in the representations. */ uint8 public constant decimals = 18; uint8 public constant highPrecisionDecimals = 27; /* The number representing 1.0. */ uint256 public constant UNIT = 10 ** uint256(decimals); /* The number representing 1.0 for higher fidelity numbers. */ uint256 public constant PRECISE_UNIT = 10 ** uint256(highPrecisionDecimals); uint256 private constant UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR = 10 ** uint256(highPrecisionDecimals - decimals); /** * @return Provides an interface to UNIT. */ function unit() external pure returns (uint256) { return UNIT; } /** * @return Provides an interface to PRECISE_UNIT. */ function preciseUnit() external pure returns (uint256) { return PRECISE_UNIT; } /** * @return The result of multiplying x and y, interpreting the operands as fixed-point * decimals. * * @dev A unit factor is divided out after the product of x and y is evaluated, * so that product must be less than 2**256. As this is an integer division, * the internal division always rounds down. This helps save on gas. Rounding * is more expensive on gas. */ function multiplyDecimal(uint256 x, uint256 y) internal pure returns (uint256) { /* Divide by UNIT to remove the extra factor introduced by the product. */ return x.mul(y) / UNIT; } /** * @return The result of safely multiplying x and y, interpreting the operands * as fixed-point decimals of the specified precision unit. * * @dev The operands should be in the form of a the specified unit factor which will be * divided out after the product of x and y is evaluated, so that product must be * less than 2**256. * * Unlike multiplyDecimal, this function rounds the result to the nearest increment. * Rounding is useful when you need to retain fidelity for small decimal numbers * (eg. small fractions or percentages). */ function _multiplyDecimalRound(uint256 x, uint256 y, uint256 precisionUnit) private pure returns (uint256) { /* Divide by UNIT to remove the extra factor introduced by the product. */ uint256 quotientTimesTen = x.mul(y) / (precisionUnit / 10); if (quotientTimesTen % 10 >= 5) { quotientTimesTen += 10; } return quotientTimesTen / 10; } /** * @return The result of safely multiplying x and y, interpreting the operands * as fixed-point decimals of a precise unit. * * @dev The operands should be in the precise unit factor which will be * divided out after the product of x and y is evaluated, so that product must be * less than 2**256. * * Unlike multiplyDecimal, this function rounds the result to the nearest increment. * Rounding is useful when you need to retain fidelity for small decimal numbers * (eg. small fractions or percentages). */ function multiplyDecimalRoundPrecise(uint256 x, uint256 y) internal pure returns (uint256) { return _multiplyDecimalRound(x, y, PRECISE_UNIT); } /** * @return The result of safely multiplying x and y, interpreting the operands * as fixed-point decimals of a standard unit. * * @dev The operands should be in the standard unit factor which will be * divided out after the product of x and y is evaluated, so that product must be * less than 2**256. * * Unlike multiplyDecimal, this function rounds the result to the nearest increment. * Rounding is useful when you need to retain fidelity for small decimal numbers * (eg. small fractions or percentages). */ function multiplyDecimalRound(uint256 x, uint256 y) internal pure returns (uint256) { return _multiplyDecimalRound(x, y, UNIT); } /** * @return The result of safely dividing x and y. The return value is a high * precision decimal. * * @dev y is divided after the product of x and the standard precision unit * is evaluated, so the product of x and UNIT must be less than 2**256. As * this is an integer division, the result is always rounded down. * This helps save on gas. Rounding is more expensive on gas. */ function divideDecimal(uint256 x, uint256 y) internal pure returns (uint256) { /* Reintroduce the UNIT factor that will be divided out by y. */ return x.mul(UNIT).div(y); } /** * @return The result of safely dividing x and y. The return value is as a rounded * decimal in the precision unit specified in the parameter. * * @dev y is divided after the product of x and the specified precision unit * is evaluated, so the product of x and the specified precision unit must * be less than 2**256. The result is rounded to the nearest increment. */ function _divideDecimalRound(uint256 x, uint256 y, uint256 precisionUnit) private pure returns (uint256) { uint256 resultTimesTen = x.mul(precisionUnit * 10).div(y); if (resultTimesTen % 10 >= 5) { resultTimesTen += 10; } return resultTimesTen / 10; } /** * @return The result of safely dividing x and y. The return value is as a rounded * standard precision decimal. * * @dev y is divided after the product of x and the standard precision unit * is evaluated, so the product of x and the standard precision unit must * be less than 2**256. The result is rounded to the nearest increment. */ function divideDecimalRound(uint256 x, uint256 y) internal pure returns (uint256) { return _divideDecimalRound(x, y, UNIT); } /** * @return The result of safely dividing x and y. The return value is as a rounded * high precision decimal. * * @dev y is divided after the product of x and the high precision unit * is evaluated, so the product of x and the high precision unit must * be less than 2**256. The result is rounded to the nearest increment. */ function divideDecimalRoundPrecise(uint256 x, uint256 y) internal pure returns (uint256) { return _divideDecimalRound(x, y, PRECISE_UNIT); } /** * @dev Convert a standard decimal representation to a high precision one. */ function decimalToPreciseDecimal(uint256 i) internal pure returns (uint256) { return i.mul(UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR); } /** * @dev Convert a high precision decimal to a standard decimal representation. */ function preciseDecimalToDecimal(uint256 i) internal pure returns (uint256) { uint256 quotientTimesTen = i / (UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR / 10); if (quotientTimesTen % 10 >= 5) { quotientTimesTen += 10; } return quotientTimesTen / 10; } // Computes `a - b`, setting the value to 0 if b > a. function floorsub(uint256 a, uint256 b) internal pure returns (uint256) { return b >= a ? 0 : a - b; } /* ---------- Utilities ---------- */ /* * Absolute value of the input, returned as a signed number. */ function signedAbs(int256 x) internal pure returns (int256) { return x < 0 ? -x : x; } /* * Absolute value of the input, returned as an unsigned number. */ function abs(int256 x) internal pure returns (uint256) { return uint256(signedAbs(x)); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // Inheritance import "./Owned.sol"; contract State is Owned { // the address of the contract that can modify variables // this can only be changed by the owner of this contract address public associatedContract; constructor(address _owner, address _associatedContract) Owned(_owner) { // This contract is abstract, and thus cannot be instantiated directly require(owner != address(0), "Owner must be set"); associatedContract = _associatedContract; emit AssociatedContractUpdated(_associatedContract); } /* ========== SETTERS ========== */ // Change the associated contract to a new address function setAssociatedContract(address _associatedContract) external onlyOwner { associatedContract = _associatedContract; emit AssociatedContractUpdated(_associatedContract); } /* ========== MODIFIERS ========== */ modifier onlyAssociatedContract() { require(msg.sender == associatedContract, "Only the associated contract can perform this action"); _; } /* ========== EVENTS ========== */ event AssociatedContractUpdated(address associatedContract); }
{ "evmVersion": "london", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 200 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_associatedContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"associatedContract","type":"address"}],"name":"AssociatedContractUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"currencyKey","type":"bytes32"},{"indexed":false,"internalType":"address","name":"collateralCurrency","type":"address"}],"name":"CollateralCurrencyAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"currencyKey","type":"bytes32"},{"indexed":false,"internalType":"address","name":"collateralCurrency","type":"address"}],"name":"CollateralCurrencyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":false,"internalType":"bytes32","name":"_currencyKey","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"SetCollateralBalance","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_collateralAddress","type":"address"},{"internalType":"bytes32","name":"_currencyKey","type":"bytes32"}],"name":"addCollateralCurrency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"associatedContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"availableCollateralCurrencies","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"name":"collateralByIssuer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"collateralCurrency","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_currencyKey","type":"bytes32"},{"internalType":"uint256","name":"_collateralAmount","type":"uint256"}],"name":"decreaseCollateral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAvailableCollaterals","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_currencyKey","type":"bytes32"},{"internalType":"uint256","name":"_collateralAmount","type":"uint256"}],"name":"increaseCollateral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_currencyKey","type":"bytes32"}],"name":"removeCollateralCurrency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_associatedContract","type":"address"}],"name":"setAssociatedContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bytes32","name":"_currencyKey","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setCollateralBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"totalSupplyPerKey","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_currencyKey","type":"bytes32"},{"internalType":"uint256","name":"_collateralAmount","type":"uint256"}],"name":"withdrawCollateral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_currencyKey","type":"bytes32"},{"internalType":"uint256","name":"_collateralAmount","type":"uint256"}],"name":"withdrawFundsByAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200175a3803806200175a833981016040819052620000349162000368565b8181816001600160a01b038116620000935760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f7420626520300000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b03831690811782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a1506000546001600160a01b0316620001395760405162461bcd60e51b815260206004820152601160248201527013dddb995c881b5d5cdd081899481cd95d607a1b60448201526064016200008a565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f73f20cff579e8a4086fa607db83867595f1b6a798e718c0bfa0b94a404128e039060200160405180910390a150508451620001a1906003906020880190620001d8565b508351620001b7906004906020870190620001d8565b50506005805460ff191660ff9390931692909217909155506200044e915050565b828054620001e69062000411565b90600052602060002090601f0160209004810192826200020a576000855562000255565b82601f106200022557805160ff191683800117855562000255565b8280016001018555821562000255579182015b828111156200025557825182559160200191906001019062000238565b506200026392915062000267565b5090565b5b8082111562000263576000815560010162000268565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002a657600080fd5b81516001600160401b0380821115620002c357620002c36200027e565b604051601f8301601f19908116603f01168101908282118183101715620002ee57620002ee6200027e565b816040528381526020925086838588010111156200030b57600080fd5b600091505b838210156200032f578582018301518183018401529082019062000310565b83821115620003415760008385830101525b9695505050505050565b80516001600160a01b03811681146200036357600080fd5b919050565b600080600080600060a086880312156200038157600080fd5b85516001600160401b03808211156200039957600080fd5b620003a789838a0162000294565b96506020880151915080821115620003be57600080fd5b50620003cd8882890162000294565b945050604086015160ff81168114620003e557600080fd5b9250620003f5606087016200034b565b915062000405608087016200034b565b90509295509295909350565b600181811c908216806200042657607f821691505b602082108114156200044857634e487b7160e01b600052602260045260246000fd5b50919050565b6112fc806200045e6000396000f3fe60806040526004361061012e5760003560e01c806353a47bb7116100ab578063ace2e3081161006f578063ace2e3081461035b578063aefc4ccb1461037d578063baa766991461039d578063c4760350146103ca578063e26a3804146103ea578063e54660a91461040a57600080fd5b806353a47bb7146102b957806372af494b146102f157806379ba5097146103115780638da5cb5b1461032657806395d89b411461034657600080fd5b80633c1ac27d116100f25780633c1ac27d146102195780634564a5a0146102395780634d364242146102595780634d902d1c1461027957806352f445ca1461029957600080fd5b806306fdde031461013a57806307d554b2146101655780631287b845146101ab5780631627540c146101cd578063313ce567146101ed57600080fd5b3661013557005b600080fd5b34801561014657600080fd5b5061014f610440565b60405161015c9190610ffd565b60405180910390f35b34801561017157600080fd5b5061019d61018036600461104c565b600960209081526000928352604080842090915290825290205481565b60405190815260200161015c565b3480156101b757600080fd5b506101cb6101c6366004611078565b6104ce565b005b3480156101d957600080fd5b506101cb6101e8366004611091565b61066c565b3480156101f957600080fd5b506005546102079060ff1681565b60405160ff909116815260200161015c565b34801561022557600080fd5b506101cb6102343660046110b3565b6106c9565b34801561024557600080fd5b5061019d610254366004611078565b6108b2565b34801561026557600080fd5b506101cb6102743660046110b3565b6108d3565b34801561028557600080fd5b506101cb6102943660046110b3565b6108db565b3480156102a557600080fd5b506101cb6102b4366004611091565b610970565b3480156102c557600080fd5b506001546102d9906001600160a01b031681565b6040516001600160a01b03909116815260200161015c565b3480156102fd57600080fd5b506101cb61030c3660046110b3565b6109c6565b34801561031d57600080fd5b506101cb610a6d565b34801561033257600080fd5b506000546102d9906001600160a01b031681565b34801561035257600080fd5b5061014f610b57565b34801561036757600080fd5b50610370610b64565b60405161015c91906110e6565b34801561038957600080fd5b506002546102d9906001600160a01b031681565b3480156103a957600080fd5b5061019d6103b8366004611078565b60066020526000908152604090205481565b3480156103d657600080fd5b506101cb6103e53660046110b3565b610bbc565b3480156103f657600080fd5b506101cb61040536600461112a565b610c37565b34801561041657600080fd5b506102d9610425366004611078565b6007602052600090815260409020546001600160a01b031681565b6003805461044d90611154565b80601f016020809104026020016040519081016040528092919081815260200182805461047990611154565b80156104c65780601f1061049b576101008083540402835291602001916104c6565b820191906000526020600020905b8154815290600101906020018083116104a957829003601f168201915b505050505081565b6104d6610d4e565b6000818152600760205260409020546001600160a01b03166105495760405162461bcd60e51b815260206004820152602160248201527f436f6c6c61746572616c2043757272656e6379204b6579206e6f2065786973746044820152607360f81b60648201526084015b60405180910390fd5b600081815260076020526040812080546001600160a01b031981169091556008546001600160a01b03909116915b818110156106255783600882815481106105935761059361118f565b906000526020600020015414156106135760086105b16001846111bb565b815481106105c1576105c161118f565b9060005260206000200154600882815481106105df576105df61118f565b60009182526020909120015560088054806105fc576105fc6111d2565b600190038181906000526020600020016000905590555b8061061d816111e8565b915050610577565b50604080518481526001600160a01b03841660208201527f41782c0aba7b1ee74c87cb8a3f8fc55429062f81b085c323cd45494346851f34910160405180910390a1505050565b610674610d4e565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22906020015b60405180910390a150565b6002546001600160a01b031633146106f35760405162461bcd60e51b815260040161054090611203565b6000828152600760205260409020546001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561079357804710156107845760405162461bcd60e51b815260206004820152602560248201527f496e73756666696369656e74204554482062616c616e636520746f2077697468604482015264323930bb9760d91b6064820152608401610540565b61078e8382610dc2565b505050565b600082815260076020526040908190205490516370a0823160e01b815230600482015282916001600160a01b0316906370a082319060240160206040518083038186803b1580156107e357600080fd5b505afa1580156107f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081b9190611257565b101561088f5760405162461bcd60e51b815260206004820152603860248201527f496e73756666696369656e7420436f6c6c61746572616c2042616c616e63652060448201527f746f207769746864726177206f6e20436f6e74726163742e00000000000000006064820152608401610540565b60008281526007602052604090205461078e906001600160a01b03168483610e9c565b600881815481106108c257600080fd5b600091825260209091200154905081565b6106f3610d4e565b6108e3610d4e565b60008281526009602090815260408083206001600160a01b03871684528252808320849055848352600690915281208054839290610922908490611270565b909155505060408051838152602081018390526001600160a01b038516917f344f0c38387fb41b2527a46454ccf4025a39c0579534768c299b8f9bfc5b891d910160405180910390a2505050565b610978610d4e565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f73f20cff579e8a4086fa607db83867595f1b6a798e718c0bfa0b94a404128e03906020016106be565b6002546001600160a01b031633146109f05760405162461bcd60e51b815260040161054090611203565b600082815260066020526040902054610a0a908290611270565b600083815260066020908152604080832093909355600981528282206001600160a01b038716835290522054610a41908290611270565b60009283526009602090815260408085206001600160a01b039096168552949052929091209190915550565b6001546001600160a01b03163314610ae55760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b6064820152608401610540565b600054600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6004805461044d90611154565b60606008805480602002602001604051908101604052809291908181526020018280548015610bb257602002820191906000526020600020905b815481526020019060010190808311610b9e575b5050505050905090565b6002546001600160a01b03163314610be65760405162461bcd60e51b815260040161054090611203565b600082815260066020526040902054610c009082906111bb565b600083815260066020908152604080832093909355600981528282206001600160a01b038716835290522054610a419082906111bb565b610c3f610d4e565b6000818152600760205260409020546001600160a01b031615610cb35760405162461bcd60e51b815260206004820152602660248201527f436f6c6c61746572616c2043757272656e6379204b65792065786973747320616044820152656c726561647960d01b6064820152608401610540565b600081815260076020908152604080832080546001600160a01b0319166001600160a01b0387169081179091556008805460018101825594527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee39093018490558051848152918201929092527ff26817ef4a264ce7192b47037313ed526b8099264161f96222669e2c5cc96f9a910160405180910390a15050565b6000546001600160a01b03163314610dc05760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b6064820152608401610540565b565b604080516000808252602082019092526001600160a01b038416908390604051610dec9190611288565b60006040518083038185875af1925050503d8060008114610e29576040519150601f19603f3d011682016040523d82523d6000602084013e610e2e565b606091505b505090508061078e5760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527308115512081d1c985b9cd9995c8819985a5b195960621b6064820152608401610540565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610ef89190611288565b6000604051808303816000865af19150503d8060008114610f35576040519150601f19603f3d011682016040523d82523d6000602084013e610f3a565b606091505b5091509150818015610f64575080511580610f64575080806020019051810190610f6491906112a4565b610fc65760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201526c185b9cd9995c8819985a5b1959609a1b6064820152608401610540565b5050505050565b60005b83811015610fe8578181015183820152602001610fd0565b83811115610ff7576000848401525b50505050565b602081526000825180602084015261101c816040850160208701610fcd565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461104757600080fd5b919050565b6000806040838503121561105f57600080fd5b8235915061106f60208401611030565b90509250929050565b60006020828403121561108a57600080fd5b5035919050565b6000602082840312156110a357600080fd5b6110ac82611030565b9392505050565b6000806000606084860312156110c857600080fd5b6110d184611030565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b8181101561111e57835183529284019291840191600101611102565b50909695505050505050565b6000806040838503121561113d57600080fd5b61114683611030565b946020939093013593505050565b600181811c9082168061116857607f821691505b6020821081141561118957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156111cd576111cd6111a5565b500390565b634e487b7160e01b600052603160045260246000fd5b60006000198214156111fc576111fc6111a5565b5060010190565b60208082526034908201527f4f6e6c7920746865206173736f63696174656420636f6e74726163742063616e604082015273103832b93337b936903a3434b99030b1ba34b7b760611b606082015260800190565b60006020828403121561126957600080fd5b5051919050565b60008219821115611283576112836111a5565b500190565b6000825161129a818460208701610fcd565b9190910192915050565b6000602082840312156112b657600080fd5b815180151581146110ac57600080fdfea2646970667358221220a45570cadbbcbd033d4b9e59e9890fb9abe5c320c5ca739477fd3c85e5d46c7864736f6c6343000809003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000120000000000000000000000006f808ae3445a711ecaa4da5c8330b051541a4de00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e577261707065642053796e74687200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075753594e54485200000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061012e5760003560e01c806353a47bb7116100ab578063ace2e3081161006f578063ace2e3081461035b578063aefc4ccb1461037d578063baa766991461039d578063c4760350146103ca578063e26a3804146103ea578063e54660a91461040a57600080fd5b806353a47bb7146102b957806372af494b146102f157806379ba5097146103115780638da5cb5b1461032657806395d89b411461034657600080fd5b80633c1ac27d116100f25780633c1ac27d146102195780634564a5a0146102395780634d364242146102595780634d902d1c1461027957806352f445ca1461029957600080fd5b806306fdde031461013a57806307d554b2146101655780631287b845146101ab5780631627540c146101cd578063313ce567146101ed57600080fd5b3661013557005b600080fd5b34801561014657600080fd5b5061014f610440565b60405161015c9190610ffd565b60405180910390f35b34801561017157600080fd5b5061019d61018036600461104c565b600960209081526000928352604080842090915290825290205481565b60405190815260200161015c565b3480156101b757600080fd5b506101cb6101c6366004611078565b6104ce565b005b3480156101d957600080fd5b506101cb6101e8366004611091565b61066c565b3480156101f957600080fd5b506005546102079060ff1681565b60405160ff909116815260200161015c565b34801561022557600080fd5b506101cb6102343660046110b3565b6106c9565b34801561024557600080fd5b5061019d610254366004611078565b6108b2565b34801561026557600080fd5b506101cb6102743660046110b3565b6108d3565b34801561028557600080fd5b506101cb6102943660046110b3565b6108db565b3480156102a557600080fd5b506101cb6102b4366004611091565b610970565b3480156102c557600080fd5b506001546102d9906001600160a01b031681565b6040516001600160a01b03909116815260200161015c565b3480156102fd57600080fd5b506101cb61030c3660046110b3565b6109c6565b34801561031d57600080fd5b506101cb610a6d565b34801561033257600080fd5b506000546102d9906001600160a01b031681565b34801561035257600080fd5b5061014f610b57565b34801561036757600080fd5b50610370610b64565b60405161015c91906110e6565b34801561038957600080fd5b506002546102d9906001600160a01b031681565b3480156103a957600080fd5b5061019d6103b8366004611078565b60066020526000908152604090205481565b3480156103d657600080fd5b506101cb6103e53660046110b3565b610bbc565b3480156103f657600080fd5b506101cb61040536600461112a565b610c37565b34801561041657600080fd5b506102d9610425366004611078565b6007602052600090815260409020546001600160a01b031681565b6003805461044d90611154565b80601f016020809104026020016040519081016040528092919081815260200182805461047990611154565b80156104c65780601f1061049b576101008083540402835291602001916104c6565b820191906000526020600020905b8154815290600101906020018083116104a957829003601f168201915b505050505081565b6104d6610d4e565b6000818152600760205260409020546001600160a01b03166105495760405162461bcd60e51b815260206004820152602160248201527f436f6c6c61746572616c2043757272656e6379204b6579206e6f2065786973746044820152607360f81b60648201526084015b60405180910390fd5b600081815260076020526040812080546001600160a01b031981169091556008546001600160a01b03909116915b818110156106255783600882815481106105935761059361118f565b906000526020600020015414156106135760086105b16001846111bb565b815481106105c1576105c161118f565b9060005260206000200154600882815481106105df576105df61118f565b60009182526020909120015560088054806105fc576105fc6111d2565b600190038181906000526020600020016000905590555b8061061d816111e8565b915050610577565b50604080518481526001600160a01b03841660208201527f41782c0aba7b1ee74c87cb8a3f8fc55429062f81b085c323cd45494346851f34910160405180910390a1505050565b610674610d4e565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22906020015b60405180910390a150565b6002546001600160a01b031633146106f35760405162461bcd60e51b815260040161054090611203565b6000828152600760205260409020546001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561079357804710156107845760405162461bcd60e51b815260206004820152602560248201527f496e73756666696369656e74204554482062616c616e636520746f2077697468604482015264323930bb9760d91b6064820152608401610540565b61078e8382610dc2565b505050565b600082815260076020526040908190205490516370a0823160e01b815230600482015282916001600160a01b0316906370a082319060240160206040518083038186803b1580156107e357600080fd5b505afa1580156107f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081b9190611257565b101561088f5760405162461bcd60e51b815260206004820152603860248201527f496e73756666696369656e7420436f6c6c61746572616c2042616c616e63652060448201527f746f207769746864726177206f6e20436f6e74726163742e00000000000000006064820152608401610540565b60008281526007602052604090205461078e906001600160a01b03168483610e9c565b600881815481106108c257600080fd5b600091825260209091200154905081565b6106f3610d4e565b6108e3610d4e565b60008281526009602090815260408083206001600160a01b03871684528252808320849055848352600690915281208054839290610922908490611270565b909155505060408051838152602081018390526001600160a01b038516917f344f0c38387fb41b2527a46454ccf4025a39c0579534768c299b8f9bfc5b891d910160405180910390a2505050565b610978610d4e565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f73f20cff579e8a4086fa607db83867595f1b6a798e718c0bfa0b94a404128e03906020016106be565b6002546001600160a01b031633146109f05760405162461bcd60e51b815260040161054090611203565b600082815260066020526040902054610a0a908290611270565b600083815260066020908152604080832093909355600981528282206001600160a01b038716835290522054610a41908290611270565b60009283526009602090815260408085206001600160a01b039096168552949052929091209190915550565b6001546001600160a01b03163314610ae55760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b6064820152608401610540565b600054600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6004805461044d90611154565b60606008805480602002602001604051908101604052809291908181526020018280548015610bb257602002820191906000526020600020905b815481526020019060010190808311610b9e575b5050505050905090565b6002546001600160a01b03163314610be65760405162461bcd60e51b815260040161054090611203565b600082815260066020526040902054610c009082906111bb565b600083815260066020908152604080832093909355600981528282206001600160a01b038716835290522054610a419082906111bb565b610c3f610d4e565b6000818152600760205260409020546001600160a01b031615610cb35760405162461bcd60e51b815260206004820152602660248201527f436f6c6c61746572616c2043757272656e6379204b65792065786973747320616044820152656c726561647960d01b6064820152608401610540565b600081815260076020908152604080832080546001600160a01b0319166001600160a01b0387169081179091556008805460018101825594527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee39093018490558051848152918201929092527ff26817ef4a264ce7192b47037313ed526b8099264161f96222669e2c5cc96f9a910160405180910390a15050565b6000546001600160a01b03163314610dc05760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b6064820152608401610540565b565b604080516000808252602082019092526001600160a01b038416908390604051610dec9190611288565b60006040518083038185875af1925050503d8060008114610e29576040519150601f19603f3d011682016040523d82523d6000602084013e610e2e565b606091505b505090508061078e5760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527308115512081d1c985b9cd9995c8819985a5b195960621b6064820152608401610540565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610ef89190611288565b6000604051808303816000865af19150503d8060008114610f35576040519150601f19603f3d011682016040523d82523d6000602084013e610f3a565b606091505b5091509150818015610f64575080511580610f64575080806020019051810190610f6491906112a4565b610fc65760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201526c185b9cd9995c8819985a5b1959609a1b6064820152608401610540565b5050505050565b60005b83811015610fe8578181015183820152602001610fd0565b83811115610ff7576000848401525b50505050565b602081526000825180602084015261101c816040850160208701610fcd565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461104757600080fd5b919050565b6000806040838503121561105f57600080fd5b8235915061106f60208401611030565b90509250929050565b60006020828403121561108a57600080fd5b5035919050565b6000602082840312156110a357600080fd5b6110ac82611030565b9392505050565b6000806000606084860312156110c857600080fd5b6110d184611030565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b8181101561111e57835183529284019291840191600101611102565b50909695505050505050565b6000806040838503121561113d57600080fd5b61114683611030565b946020939093013593505050565b600181811c9082168061116857607f821691505b6020821081141561118957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156111cd576111cd6111a5565b500390565b634e487b7160e01b600052603160045260246000fd5b60006000198214156111fc576111fc6111a5565b5060010190565b60208082526034908201527f4f6e6c7920746865206173736f63696174656420636f6e74726163742063616e604082015273103832b93337b936903a3434b99030b1ba34b7b760611b606082015260800190565b60006020828403121561126957600080fd5b5051919050565b60008219821115611283576112836111a5565b500190565b6000825161129a818460208701610fcd565b9190910192915050565b6000602082840312156112b657600080fd5b815180151581146110ac57600080fdfea2646970667358221220a45570cadbbcbd033d4b9e59e9890fb9abe5c320c5ca739477fd3c85e5d46c7864736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000120000000000000000000000006f808ae3445a711ecaa4da5c8330b051541a4de00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e577261707065642053796e74687200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075753594e54485200000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Wrapped Synthr
Arg [1] : _symbol (string): WSYNTHR
Arg [2] : _decimals (uint8): 18
Arg [3] : _owner (address): 0x6F808aE3445A711ecAa4DA5c8330B051541A4dE0
Arg [4] : _associatedContract (address): 0x0000000000000000000000000000000000000000
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000006f808ae3445a711ecaa4da5c8330b051541a4de0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000e
Arg [6] : 577261707065642053796e746872000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [8] : 5753594e54485200000000000000000000000000000000000000000000000000
Loading...
Loading
[ Download: CSV Export ]
[ 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.