More Info
Private Name Tags
ContractCreator
TokenTracker
Multichain Info
No addresses found
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
AssetIntroducerProxy
Compiler Version
v0.5.13+commit.5b0b510c
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-12-03 */ // File: @openzeppelin/upgrades/contracts/upgradeability/Proxy.sol pragma solidity ^0.5.0; /** * @title Proxy * @dev Implements delegation of calls to other contracts, with proper * forwarding of return values and bubbling of failures. * It defines a fallback function that delegates all calls to the address * returned by the abstract _implementation() internal function. */ contract Proxy { /** * @dev Fallback function. * Implemented entirely in `_fallback`. */ function () payable external { _fallback(); } /** * @return The Address of the implementation. */ function _implementation() internal view returns (address); /** * @dev Delegates execution to an implementation contract. * This is a low level function that doesn't return to its internal call site. * It will return to the external caller whatever the implementation returns. * @param implementation Address to delegate. */ function _delegate(address implementation) internal { assembly { // Copy msg.data. We take full control of memory in this inline assembly // block because it will not return to Solidity code. We overwrite the // Solidity scratch pad at memory position 0. calldatacopy(0, 0, calldatasize) // Call the implementation. // out and outsize are 0 because we don't know the size yet. let result := delegatecall(gas, implementation, 0, calldatasize, 0, 0) // Copy the returned data. returndatacopy(0, 0, returndatasize) switch result // delegatecall returns 0 on error. case 0 { revert(0, returndatasize) } default { return(0, returndatasize) } } } /** * @dev Function that is run as the first thing in the fallback function. * Can be redefined in derived contracts to add functionality. * Redefinitions must call super._willFallback(). */ function _willFallback() internal { } /** * @dev fallback implementation. * Extracted to enable manual triggering. */ function _fallback() internal { _willFallback(); _delegate(_implementation()); } } // File: @openzeppelin/upgrades/contracts/utils/Address.sol pragma solidity ^0.5.0; /** * Utility library of inline functions on addresses * * Source https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/v2.1.3/contracts/utils/Address.sol * This contract is copied here and renamed from the original to avoid clashes in the compiled artifacts * when the user imports a zos-lib contract (that transitively causes this contract to be compiled and added to the * build/artifacts folder) as well as the vanilla Address implementation from an openzeppelin version. */ library OpenZeppelinUpgradesAddress { /** * Returns whether the target address is a contract * @dev This function will return false if invoked during the constructor of a contract, * as the code is not actually created until after the constructor finishes. * @param account address of the account to check * @return whether the target address is a contract */ function isContract(address account) internal view returns (bool) { uint256 size; // XXX Currently there is no better way to check if there is a contract in an address // than to check the size of the code at that address. // See https://ethereum.stackexchange.com/a/14016/36603 // for more details about how this works. // TODO Check this again before the Serenity release, because all addresses will be // contracts then. // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } } // File: @openzeppelin/upgrades/contracts/upgradeability/BaseUpgradeabilityProxy.sol pragma solidity ^0.5.0; /** * @title BaseUpgradeabilityProxy * @dev This contract implements a proxy that allows to change the * implementation address to which it will delegate. * Such a change is called an implementation upgrade. */ contract BaseUpgradeabilityProxy is Proxy { /** * @dev Emitted when the implementation is upgraded. * @param implementation Address of the new implementation. */ event Upgraded(address indexed implementation); /** * @dev Storage slot with the address of the current implementation. * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is * validated in the constructor. */ bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; /** * @dev Returns the current implementation. * @return Address of the current implementation */ function _implementation() internal view returns (address impl) { bytes32 slot = IMPLEMENTATION_SLOT; assembly { impl := sload(slot) } } /** * @dev Upgrades the proxy to a new implementation. * @param newImplementation Address of the new implementation. */ function _upgradeTo(address newImplementation) internal { _setImplementation(newImplementation); emit Upgraded(newImplementation); } /** * @dev Sets the implementation address of the proxy. * @param newImplementation Address of the new implementation. */ function _setImplementation(address newImplementation) internal { require(OpenZeppelinUpgradesAddress.isContract(newImplementation), "Cannot set a proxy implementation to a non-contract address"); bytes32 slot = IMPLEMENTATION_SLOT; assembly { sstore(slot, newImplementation) } } } // File: @openzeppelin/upgrades/contracts/upgradeability/UpgradeabilityProxy.sol pragma solidity ^0.5.0; /** * @title UpgradeabilityProxy * @dev Extends BaseUpgradeabilityProxy with a constructor for initializing * implementation and init data. */ contract UpgradeabilityProxy is BaseUpgradeabilityProxy { /** * @dev Contract constructor. * @param _logic Address of the initial implementation. * @param _data Data to send as msg.data to the implementation to initialize the proxied contract. * It should include the signature and the parameters of the function to be called, as described in * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. */ constructor(address _logic, bytes memory _data) public payable { assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1)); _setImplementation(_logic); if(_data.length > 0) { (bool success,) = _logic.delegatecall(_data); require(success); } } } // File: @openzeppelin/upgrades/contracts/upgradeability/BaseAdminUpgradeabilityProxy.sol pragma solidity ^0.5.0; /** * @title BaseAdminUpgradeabilityProxy * @dev This contract combines an upgradeability proxy with an authorization * mechanism for administrative tasks. * All external functions in this contract must be guarded by the * `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity * feature proposal that would enable this to be done automatically. */ contract BaseAdminUpgradeabilityProxy is BaseUpgradeabilityProxy { /** * @dev Emitted when the administration has been transferred. * @param previousAdmin Address of the previous admin. * @param newAdmin Address of the new admin. */ event AdminChanged(address previousAdmin, address newAdmin); /** * @dev Storage slot with the admin of the contract. * This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1, and is * validated in the constructor. */ bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103; /** * @dev Modifier to check whether the `msg.sender` is the admin. * If it is, it will run the function. Otherwise, it will delegate the call * to the implementation. */ modifier ifAdmin() { if (msg.sender == _admin()) { _; } else { _fallback(); } } /** * @return The address of the proxy admin. */ function admin() external ifAdmin returns (address) { return _admin(); } /** * @return The address of the implementation. */ function implementation() external ifAdmin returns (address) { return _implementation(); } /** * @dev Changes the admin of the proxy. * Only the current admin can call this function. * @param newAdmin Address to transfer proxy administration to. */ function changeAdmin(address newAdmin) external ifAdmin { require(newAdmin != address(0), "Cannot change the admin of a proxy to the zero address"); emit AdminChanged(_admin(), newAdmin); _setAdmin(newAdmin); } /** * @dev Upgrade the backing implementation of the proxy. * Only the admin can call this function. * @param newImplementation Address of the new implementation. */ function upgradeTo(address newImplementation) external ifAdmin { _upgradeTo(newImplementation); } /** * @dev Upgrade the backing implementation of the proxy and call a function * on the new implementation. * This is useful to initialize the proxied contract. * @param newImplementation Address of the new implementation. * @param data Data to send as msg.data in the low level call. * It should include the signature and the parameters of the function to be called, as described in * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. */ function upgradeToAndCall(address newImplementation, bytes calldata data) payable external ifAdmin { _upgradeTo(newImplementation); (bool success,) = newImplementation.delegatecall(data); require(success); } /** * @return The admin slot. */ function _admin() internal view returns (address adm) { bytes32 slot = ADMIN_SLOT; assembly { adm := sload(slot) } } /** * @dev Sets the address of the proxy admin. * @param newAdmin Address of the new proxy admin. */ function _setAdmin(address newAdmin) internal { bytes32 slot = ADMIN_SLOT; assembly { sstore(slot, newAdmin) } } /** * @dev Only fall back when the sender is not the admin. */ function _willFallback() internal { require(msg.sender != _admin(), "Cannot call fallback function from the proxy admin"); super._willFallback(); } } // File: @openzeppelin/upgrades/contracts/upgradeability/AdminUpgradeabilityProxy.sol pragma solidity ^0.5.0; /** * @title AdminUpgradeabilityProxy * @dev Extends from BaseAdminUpgradeabilityProxy with a constructor for * initializing the implementation, admin, and init data. */ contract AdminUpgradeabilityProxy is BaseAdminUpgradeabilityProxy, UpgradeabilityProxy { /** * Contract constructor. * @param _logic address of the initial implementation. * @param _admin Address of the proxy administrator. * @param _data Data to send as msg.data to the implementation to initialize the proxied contract. * It should include the signature and the parameters of the function to be called, as described in * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. */ constructor(address _logic, address _admin, bytes memory _data) UpgradeabilityProxy(_logic, _data) public payable { assert(ADMIN_SLOT == bytes32(uint256(keccak256('eip1967.proxy.admin')) - 1)); _setAdmin(_admin); } } // File: contracts/external/asset_introducers/v1/IAssetIntroducerV1Initializable.sol /* * Copyright 2020 DMM Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ pragma solidity ^0.5.0; interface IAssetIntroducerV1Initializable { function initialize( string calldata baseURI, address openSeaProxyRegistry, address owner, address guardian, address dmgToken, address dmmController, address underlyingTokenValuator, address assetIntroducerDiscount ) external; } // File: contracts/external/asset_introducers/AssetIntroducerProxy.sol /* * Copyright 2020 DMM Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ pragma solidity ^0.5.0; contract AssetIntroducerProxy is AdminUpgradeabilityProxy { /** * @param logic The address of the initial implementation. * @param admin The address of the proxy administrator. * @param baseURI The URL that is used as the basis for token URI information. * @param openSeaProxyRegistry The address of the Open Sea registry proxy, which is used for easing the trading ux. * @param owner The address of the owner of the implementation of the contract. * @param guardian The address of the guardian of the implementation contract. * @param dmgToken The address of the DMG token. * @param dmmController The address of the DMM controller. * @param underlyingTokenValuator The address of the DMM token valuator. * @param assetIntroducerDiscount The address of the contract that implements the discount logic. */ constructor( address logic, address admin, string memory baseURI, address openSeaProxyRegistry, address owner, address guardian, address dmgToken, address dmmController, address underlyingTokenValuator, address assetIntroducerDiscount ) AdminUpgradeabilityProxy( logic, admin, abi.encodePacked( IAssetIntroducerV1Initializable(address(0)).initialize.selector, abi.encode(baseURI, openSeaProxyRegistry, owner, guardian, dmgToken, dmmController, underlyingTokenValuator, assetIntroducerDiscount) ) ) public {} function getImplementation() public view returns (address) { return _implementation(); } function _willFallback() internal { // Don't call super. We want the admin to be able to call-through to the implementation contract } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"logic","type":"address"},{"internalType":"address","name":"admin","type":"address"},{"internalType":"string","name":"baseURI","type":"string"},{"internalType":"address","name":"openSeaProxyRegistry","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"guardian","type":"address"},{"internalType":"address","name":"dmgToken","type":"address"},{"internalType":"address","name":"dmmController","type":"address"},{"internalType":"address","name":"underlyingTokenValuator","type":"address"},{"internalType":"address","name":"assetIntroducerDiscount","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"payable":true,"stateMutability":"payable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50604051610b14380380610b14833981810160405261014081101561003457600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005f57600080fd5b90830190602082018581111561007457600080fd5b825164010000000081118282018810171561008e57600080fd5b82525081516020918201929091019080838360005b838110156100bb5781810151838201526020016100a3565b50505050905090810190601f1680156100e85780820380516001836020036101000a031916815260200191505b5060408181526020838101518483015160608087015160808089015160a0808b015160c0808d015160e09d8e01516001600160a01b03808c169d8f019d909d528c8a16988e01989098528b8716958d01959095528a8416928c0192909252898116918b01919091528883169a8a019a909a52968316610100808a01919091528689019081528c516101208a01528c51959b5093995090979596909491938d938d937fc6a990b700000000000000000000000000000000000000000000000000000000938e938e938e938e938e938e938e938e939192839261014001918c019080838360005b838110156101e55781810151838201526020016101cd565b50505050905090810190601f1680156102125780820380516001836020036101000a031916815260200191505b50995050505050505050505060405160208183030381529060405260405160200180836001600160e01b0319166001600160e01b031916815260040182805190602001908083835b602083106102795780518252601f19909201916020918201910161025a565b5181516000196020949094036101000a840190811690199190911617905260408051601f19959093018381039590950183528481527f656970313936372e70726f78792e696d706c656d656e746174696f6e0000000085525193849003601c01909320909550879450859350600080516020610ab9833981519152920191909114905061030257fe5b610314826001600160e01b0361044016565b8051156103cc576000826001600160a01b0316826040518082805190602001908083835b602083106103575780518252601f199092019160209182019101610338565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146103b7576040519150601f19603f3d011682016040523d82523d6000602084013e6103bc565b606091505b50509050806103ca57600080fd5b505b5050604080517f656970313936372e70726f78792e61646d696e0000000000000000000000000081529051908190036013019020600080516020610a998339815191526000199091011461041c57fe5b61042e826001600160e01b036104ba16565b505050505050505050505050506104d2565b610453816104cc60201b61050c1760201c565b6104a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180610ad9603b913960400191505060405180910390fd5b600080516020610ab983398151915255565b600080516020610a9983398151915255565b3b151590565b6105b8806104e16000396000f3fe6080604052600436106100555760003560e01c80633659cfe61461005f5780634f1ef286146100925780635c60da1b146101125780638f28397014610143578063aaf10f4214610176578063f851a4401461018b575b61005d6101a0565b005b34801561006b57600080fd5b5061005d6004803603602081101561008257600080fd5b50356001600160a01b03166101ba565b61005d600480360360408110156100a857600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100d357600080fd5b8201836020820111156100e557600080fd5b8035906020019184600183028401116401000000008311171561010757600080fd5b5090925090506101f4565b34801561011e57600080fd5b506101276102a1565b604080516001600160a01b039092168252519081900360200190f35b34801561014f57600080fd5b5061005d6004803603602081101561016657600080fd5b50356001600160a01b03166102de565b34801561018257600080fd5b50610127610398565b34801561019757600080fd5b506101276103a7565b6101a86101b8565b6101b86101b36103d2565b6103f7565b565b6101c261041b565b6001600160a01b0316336001600160a01b031614156101e9576101e481610440565b6101f1565b6101f16101a0565b50565b6101fc61041b565b6001600160a01b0316336001600160a01b031614156102945761021e83610440565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461027b576040519150601f19603f3d011682016040523d82523d6000602084013e610280565b606091505b505090508061028e57600080fd5b5061029c565b61029c6101a0565b505050565b60006102ab61041b565b6001600160a01b0316336001600160a01b031614156102d3576102cc6103d2565b90506102db565b6102db6101a0565b90565b6102e661041b565b6001600160a01b0316336001600160a01b031614156101e9576001600160a01b0381166103445760405162461bcd60e51b81526004018080602001828103825260368152602001806105136036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61036d61041b565b604080516001600160a01b03928316815291841660208301528051918290030190a16101e481610480565b60006103a26103d2565b905090565b60006103b161041b565b6001600160a01b0316336001600160a01b031614156102d3576102cc61041b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610416573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b610449816104a4565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104ad8161050c565b6104e85760405162461bcd60e51b815260040180806020018281038252603b815260200180610549603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b15159056fe43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a265627a7a72315820cd98f8e336e63ec6178ea2755a955ca3acbc8808401e8bb4a9ab199bd663c4ea64736f6c634300050d0032b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e7472616374206164647265737300000000000000000000000044cbea325186cf0f83631015fed427d8541beab0000000000000000000000000dd7680b6b2eec193ce3ece7129708ee12531bccf0000000000000000000000000000000000000000000000000000000000000140000000000000000000000000a5409ec958c83c3f309868babaca7c86dcb077c1000000000000000000000000e679ebf544a6be5cb8747012ea6b08f04975d264000000000000000000000000dd7680b6b2eec193ce3ece7129708ee12531bccf000000000000000000000000ed91879919b71bb6905f23af0a68d231ecf87b14000000000000000000000000b07eb3426d742cda9120931e7028d54f9df34a3e000000000000000000000000ac7e5e3b589d55a43d62b90c6b4c4ef28ea355730000000000000000000000003f67e47882636ac06686933540f52e17a85cbd45000000000000000000000000000000000000000000000000000000000000003568747470733a2f2f6170692e646566696d6f6e65796d61726b65742e636f6d2f76312f61737365742d696e74726f6475636572732f0000000000000000000000
Deployed Bytecode
0x6080604052600436106100555760003560e01c80633659cfe61461005f5780634f1ef286146100925780635c60da1b146101125780638f28397014610143578063aaf10f4214610176578063f851a4401461018b575b61005d6101a0565b005b34801561006b57600080fd5b5061005d6004803603602081101561008257600080fd5b50356001600160a01b03166101ba565b61005d600480360360408110156100a857600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100d357600080fd5b8201836020820111156100e557600080fd5b8035906020019184600183028401116401000000008311171561010757600080fd5b5090925090506101f4565b34801561011e57600080fd5b506101276102a1565b604080516001600160a01b039092168252519081900360200190f35b34801561014f57600080fd5b5061005d6004803603602081101561016657600080fd5b50356001600160a01b03166102de565b34801561018257600080fd5b50610127610398565b34801561019757600080fd5b506101276103a7565b6101a86101b8565b6101b86101b36103d2565b6103f7565b565b6101c261041b565b6001600160a01b0316336001600160a01b031614156101e9576101e481610440565b6101f1565b6101f16101a0565b50565b6101fc61041b565b6001600160a01b0316336001600160a01b031614156102945761021e83610440565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461027b576040519150601f19603f3d011682016040523d82523d6000602084013e610280565b606091505b505090508061028e57600080fd5b5061029c565b61029c6101a0565b505050565b60006102ab61041b565b6001600160a01b0316336001600160a01b031614156102d3576102cc6103d2565b90506102db565b6102db6101a0565b90565b6102e661041b565b6001600160a01b0316336001600160a01b031614156101e9576001600160a01b0381166103445760405162461bcd60e51b81526004018080602001828103825260368152602001806105136036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61036d61041b565b604080516001600160a01b03928316815291841660208301528051918290030190a16101e481610480565b60006103a26103d2565b905090565b60006103b161041b565b6001600160a01b0316336001600160a01b031614156102d3576102cc61041b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610416573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b610449816104a4565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104ad8161050c565b6104e85760405162461bcd60e51b815260040180806020018281038252603b815260200180610549603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b15159056fe43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a265627a7a72315820cd98f8e336e63ec6178ea2755a955ca3acbc8808401e8bb4a9ab199bd663c4ea64736f6c634300050d0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000044cbea325186cf0f83631015fed427d8541beab0000000000000000000000000dd7680b6b2eec193ce3ece7129708ee12531bccf0000000000000000000000000000000000000000000000000000000000000140000000000000000000000000a5409ec958c83c3f309868babaca7c86dcb077c1000000000000000000000000e679ebf544a6be5cb8747012ea6b08f04975d264000000000000000000000000dd7680b6b2eec193ce3ece7129708ee12531bccf000000000000000000000000ed91879919b71bb6905f23af0a68d231ecf87b14000000000000000000000000b07eb3426d742cda9120931e7028d54f9df34a3e000000000000000000000000ac7e5e3b589d55a43d62b90c6b4c4ef28ea355730000000000000000000000003f67e47882636ac06686933540f52e17a85cbd45000000000000000000000000000000000000000000000000000000000000003568747470733a2f2f6170692e646566696d6f6e65796d61726b65742e636f6d2f76312f61737365742d696e74726f6475636572732f0000000000000000000000
-----Decoded View---------------
Arg [0] : logic (address): 0x44CbEA325186Cf0f83631015feD427D8541bEAb0
Arg [1] : admin (address): 0xdd7680B6B2EeC193ce3ECe7129708EE12531BCcF
Arg [2] : baseURI (string): https://api.defimoneymarket.com/v1/asset-introducers/
Arg [3] : openSeaProxyRegistry (address): 0xa5409ec958C83C3f309868babACA7c86DCB077c1
Arg [4] : owner (address): 0xE679eBf544A6BE5Cb8747012Ea6B08F04975D264
Arg [5] : guardian (address): 0xdd7680B6B2EeC193ce3ECe7129708EE12531BCcF
Arg [6] : dmgToken (address): 0xEd91879919B71bB6905f23af0A68d231EcF87b14
Arg [7] : dmmController (address): 0xB07EB3426d742cda9120931e7028d54F9dF34A3e
Arg [8] : underlyingTokenValuator (address): 0xaC7e5e3b589D55a43D62b90c6b4C4ef28Ea35573
Arg [9] : assetIntroducerDiscount (address): 0x3F67e47882636Ac06686933540F52E17A85cBd45
-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 00000000000000000000000044cbea325186cf0f83631015fed427d8541beab0
Arg [1] : 000000000000000000000000dd7680b6b2eec193ce3ece7129708ee12531bccf
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [3] : 000000000000000000000000a5409ec958c83c3f309868babaca7c86dcb077c1
Arg [4] : 000000000000000000000000e679ebf544a6be5cb8747012ea6b08f04975d264
Arg [5] : 000000000000000000000000dd7680b6b2eec193ce3ece7129708ee12531bccf
Arg [6] : 000000000000000000000000ed91879919b71bb6905f23af0a68d231ecf87b14
Arg [7] : 000000000000000000000000b07eb3426d742cda9120931e7028d54f9df34a3e
Arg [8] : 000000000000000000000000ac7e5e3b589d55a43d62b90c6b4c4ef28ea35573
Arg [9] : 0000000000000000000000003f67e47882636ac06686933540f52e17a85cbd45
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000035
Arg [11] : 68747470733a2f2f6170692e646566696d6f6e65796d61726b65742e636f6d2f
Arg [12] : 76312f61737365742d696e74726f6475636572732f0000000000000000000000
Deployed Bytecode Sourcemap
13840:1966:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;538:11;:9;:11::i;:::-;13840:1966;9269:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9269:105:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9269:105:0;-1:-1:-1;;;;;9269:105:0;;:::i;9902:225::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;9902:225:0;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;9902:225:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9902:225:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;9902:225:0;;-1:-1:-1;9902:225:0;-1:-1:-1;9902:225:0;:::i;8569:98::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8569:98:0;;;:::i;:::-;;;;-1:-1:-1;;;;;8569:98:0;;;;;;;;;;;;;;8850:228;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8850:228:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8850:228:0;-1:-1:-1;;;;;8850:228:0;;:::i;15543:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15543:102:0;;;:::i;8420:80::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8420:80:0;;;:::i;2084:93::-;2121:15;:13;:15::i;:::-;2143:28;2153:17;:15;:17::i;:::-;2143:9;:28::i;:::-;2084:93::o;9269:105::-;8287:8;:6;:8::i;:::-;-1:-1:-1;;;;;8273:22:0;:10;-1:-1:-1;;;;;8273:22:0;;8269:80;;;9339:29;9350:17;9339:10;:29::i;:::-;8269:80;;;8330:11;:9;:11::i;:::-;9269:105;:::o;9902:225::-;8287:8;:6;:8::i;:::-;-1:-1:-1;;;;;8273:22:0;:10;-1:-1:-1;;;;;8273:22:0;;8269:80;;;10008:29;10019:17;10008:10;:29::i;:::-;10045:12;10062:17;-1:-1:-1;;;;;10062:30:0;10093:4;;10062:36;;;;;30:3:-1;22:6;14;1:33;10062:36:0;;45:16:-1;;;-1:-1;10062:36:0;;-1:-1:-1;10062:36:0;;-1:-1:-1;;10062:36:0;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;10044:54:0;;;10113:7;10105:16;;;;;;8306:1;8269:80;;;8330:11;:9;:11::i;:::-;9902:225;;;:::o;8569:98::-;8621:7;8287:8;:6;:8::i;:::-;-1:-1:-1;;;;;8273:22:0;:10;-1:-1:-1;;;;;8273:22:0;;8269:80;;;8644:17;:15;:17::i;:::-;8637:24;;8269:80;;;8330:11;:9;:11::i;:::-;8569:98;:::o;8850:228::-;8287:8;:6;:8::i;:::-;-1:-1:-1;;;;;8273:22:0;:10;-1:-1:-1;;;;;8273:22:0;;8269:80;;;-1:-1:-1;;;;;8921:22:0;;8913:89;;;;-1:-1:-1;;;8913:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9014:32;9027:8;:6;:8::i;:::-;9014:32;;;-1:-1:-1;;;;;9014:32:0;;;;;;;;;;;;;;;;;;;;;9053:19;9063:8;9053:9;:19::i;15543:102::-;15593:7;15620:17;:15;:17::i;:::-;15613:24;;15543:102;:::o;8420:80::-;8463:7;8287:8;:6;:8::i;:::-;-1:-1:-1;;;;;8273:22:0;:10;-1:-1:-1;;;;;8273:22:0;;8269:80;;;8486:8;:6;:8::i;4845:161::-;4659:66;4983:11;;4966:35::o;977:750::-;1284:12;1281:1;1278;1265:32;1478:1;1475;1461:12;1458:1;1442:14;1437:3;1424:56;1545:14;1542:1;1539;1524:36;1577:6;1634:36;;;;1698:14;1695:1;1688:25;1634:36;1653:14;1650:1;1643:25;10177:141;7980:66;10295:11;;10279:34::o;5147:145::-;5210:37;5229:17;5210:18;:37::i;:::-;5259:27;;-1:-1:-1;;;;;5259:27:0;;;;;;;;5147:145;:::o;10440:139::-;7980:66;10545:22;10536:38::o;5435:313::-;5514:57;5553:17;5514:38;:57::i;:::-;5506:129;;;;-1:-1:-1;;;5506:129:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4659:66;5705:31;5696:47::o;3189:627::-;3761:20;3800:8;;;3189:627::o
Swarm Source
bzzr://cd98f8e336e63ec6178ea2755a955ca3acbc8808401e8bb4a9ab199bd663c4ea
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.