Contract Overview
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
MegaFactory
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: Unlicense pragma solidity 0.6.12; import "@openzeppelin/contracts/access/Ownable.sol"; import "./interface/IStrategyFactory.sol"; import "./interface/IVaultFactory.sol"; import "./interface/IPoolFactory.sol"; import "../interface/IVault.sol"; import "../inheritance/Governable.sol"; contract MegaFactory is Ownable { enum VaultType { None, Regular } enum StrategyType { None, Upgradable } address public potPoolFactory; mapping(uint256 => address) public vaultFactories; mapping(uint256 => address) public strategyFactories; struct CompletedDeployment { VaultType vaultType; address Underlying; address NewVault; address NewStrategy; address NewPool; } event DeploymentCompleted(string id); mapping (string => CompletedDeployment) public completedDeployments; mapping (address => bool) public authorizedDeployers; address public multisig; address public actualStorage; /* methods to make compatible with Storage */ function governance() external view returns (address) { return address(this); // fake governance } function isGovernance(address addr) external view returns (bool) { return addr == address(this); // fake governance } function isController(address addr) external view returns (bool) { return addr == address(this); // fake controller } modifier onlyAuthorizedDeployer(string memory id) { require(completedDeployments[id].vaultType == VaultType.None, "cannot reuse id"); require(authorizedDeployers[msg.sender], "unauthorized deployer"); _; emit DeploymentCompleted(id); } constructor(address _storage, address _multisig) public { multisig = _multisig; actualStorage = _storage; setAuthorization(owner(), true); setAuthorization(multisig, true); } function setAuthorization(address userAddress, bool isDeployer) public onlyOwner { authorizedDeployers[userAddress] = isDeployer; } function setVaultFactory(uint256 vaultType, address factoryAddress) external onlyOwner { vaultFactories[vaultType] = factoryAddress; } function setStrategyFactory(uint256 strategyType, address factoryAddress) external onlyOwner { strategyFactories[strategyType] = factoryAddress; } function setPotPoolFactory(address factoryAddress) external onlyOwner { potPoolFactory = factoryAddress; } function createRegularVault(string calldata id, address underlying) external onlyAuthorizedDeployer(id) { address vault = IVaultFactory(vaultFactories[uint256(VaultType.Regular)]).deploy( actualStorage, underlying ); completedDeployments[id] = CompletedDeployment( VaultType.Regular, underlying, vault, address(0), IPoolFactory(potPoolFactory).deploy(actualStorage, vault) ); } function createRegularVaultUsingUpgradableStrategy(string calldata id, address underlying, address strategyImplementation) external onlyAuthorizedDeployer(id) { address vault = IVaultFactory(vaultFactories[uint256(VaultType.Regular)]).deploy( address(this), // using this as initial storage, then switching to actualStorage underlying ); address strategy = IStrategyFactory(strategyFactories[uint256(StrategyType.Upgradable)]).deploy(actualStorage, vault, strategyImplementation); IVault(vault).setStrategy(strategy); Governable(vault).setStorage(actualStorage); completedDeployments[id] = CompletedDeployment( VaultType.Regular, underlying, vault, strategy, IPoolFactory(potPoolFactory).deploy(actualStorage, vault) ); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; import "../utils/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 () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), 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 { emit OwnershipTransferred(_owner, address(0)); _owner = 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"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: Unlicense pragma solidity 0.6.12; interface IStrategyFactory { function deploy(address _storage, address _vault, address _providedStrategyAddress) external returns (address); }
// SPDX-License-Identifier: Unlicense pragma solidity 0.6.12; interface IVaultFactory { function deploy(address _storage, address _underlying) external returns (address); function info(address vault) external view returns(address Underlying, address NewVault); }
// SPDX-License-Identifier: Unlicense pragma solidity 0.6.12; interface IPoolFactory { function deploy(address _storage, address _vault) external returns (address); }
//SPDX-License-Identifier: Unlicense pragma solidity 0.6.12; interface IVault { function initializeVault( address _storage, address _underlying, uint256 _toInvestNumerator, uint256 _toInvestDenominator ) external ; function underlyingBalanceInVault() external view returns (uint256); function underlyingBalanceWithInvestment() external view returns (uint256); function underlying() external view returns (address); function strategy() external view returns (address); function setStrategy(address _strategy) external; function announceStrategyUpdate(address _strategy) external; function setVaultFractionToInvest(uint256 numerator, uint256 denominator) external; function deposit(uint256 amountWei) external; function depositFor(uint256 amountWei, address holder) external; function withdrawAll() external; function withdraw(uint256 numberOfShares) external; function getPricePerFullShare() external view returns (uint256); function underlyingBalanceWithInvestmentForHolder(address holder) view external returns (uint256); // hard work should be callable only by the controller (by the hard worker) or by governance function doHardWork() external; }
//SPDX-License-Identifier: Unlicense pragma solidity 0.6.12; import "./Storage.sol"; contract Governable { Storage public store; constructor(address _store) public { require(_store != address(0), "new storage shouldn't be empty"); store = Storage(_store); } modifier onlyGovernance() { require(store.isGovernance(msg.sender), "Not governance"); _; } function setStorage(address _store) public onlyGovernance { require(_store != address(0), "new storage shouldn't be empty"); store = Storage(_store); } function governance() public view returns (address) { return store.governance(); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <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 GSN 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 payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
//SPDX-License-Identifier: Unlicense pragma solidity 0.6.12; contract Storage { address public governance; address public controller; constructor() public { governance = msg.sender; } modifier onlyGovernance() { require(isGovernance(msg.sender), "Not governance"); _; } function setGovernance(address _governance) public onlyGovernance { require(_governance != address(0), "new governance shouldn't be empty"); governance = _governance; } function setController(address _controller) public onlyGovernance { require(_controller != address(0), "new controller shouldn't be empty"); controller = _controller; } function isGovernance(address account) public view returns (bool) { return account == governance; } function isController(address account) public view returns (bool) { return account == controller; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_storage","type":"address"},{"internalType":"address","name":"_multisig","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"id","type":"string"}],"name":"DeploymentCompleted","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"},{"inputs":[],"name":"actualStorage","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorizedDeployers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"completedDeployments","outputs":[{"internalType":"enum MegaFactory.VaultType","name":"vaultType","type":"uint8"},{"internalType":"address","name":"Underlying","type":"address"},{"internalType":"address","name":"NewVault","type":"address"},{"internalType":"address","name":"NewStrategy","type":"address"},{"internalType":"address","name":"NewPool","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"id","type":"string"},{"internalType":"address","name":"underlying","type":"address"}],"name":"createRegularVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"id","type":"string"},{"internalType":"address","name":"underlying","type":"address"},{"internalType":"address","name":"strategyImplementation","type":"address"}],"name":"createRegularVaultUsingUpgradableStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isController","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isGovernance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"multisig","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"potPoolFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"bool","name":"isDeployer","type":"bool"}],"name":"setAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"factoryAddress","type":"address"}],"name":"setPotPoolFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"strategyType","type":"uint256"},{"internalType":"address","name":"factoryAddress","type":"address"}],"name":"setStrategyFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"vaultType","type":"uint256"},{"internalType":"address","name":"factoryAddress","type":"address"}],"name":"setVaultFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"strategyFactories","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"vaultFactories","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620015a0380380620015a0833981810160405260408110156200003757600080fd5b50805160209091015160006200004c620000fd565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600680546001600160a01b038084166001600160a01b0319928316179092556007805492851692909116919091179055620000dc620000d462000101565b600162000110565b600654620000f5906001600160a01b0316600162000110565b5050620001b4565b3390565b6000546001600160a01b031690565b6200011a620000fd565b6001600160a01b03166200012d62000101565b6001600160a01b03161462000189576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6113dc80620001c46000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80638da5cb5b116100ad578063dee1f0e411610071578063dee1f0e4146103e2578063e43d57c91461045f578063eecea00014610467578063f2fde38b14610495578063fecc8bc1146104bb57610121565b80638da5cb5b14610359578063ab78f2c414610361578063b429afeb146103e2578063b70fb1a11461041c578063d42ab69c1461043957610121565b806340122e7c116100f457806340122e7c146101c15780634783c35b146102c85780635aa6e675146102d057806370acd6e9146102d8578063715018a61461035157610121565b806305bbd1b41461012657806319c03ee61461015f57806338223374146101675780633ffaef3a14610195575b600080fd5b6101436004803603602081101561013c57600080fd5b50356104e1565b604080516001600160a01b039092168252519081900360200190f35b6101436104fc565b6101936004803603604081101561017d57600080fd5b50803590602001356001600160a01b031661050b565b005b610193600480360360408110156101ab57600080fd5b50803590602001356001600160a01b031661059b565b610267600480360360208110156101d757600080fd5b8101906020810181356401000000008111156101f257600080fd5b82018360208201111561020457600080fd5b8035906020019184600183028401116401000000008311171561022657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061062b945050505050565b6040518086600181111561027757fe5b8152602001856001600160a01b03168152602001846001600160a01b03168152602001836001600160a01b03168152602001826001600160a01b031681526020019550505050505060405180910390f35b610143610678565b610143610687565b610193600480360360408110156102ee57600080fd5b81019060208101813564010000000081111561030957600080fd5b82018360208201111561031b57600080fd5b8035906020019184600183028401116401000000008311171561033d57600080fd5b9193509150356001600160a01b031661068b565b610193610a9f565b610143610b4b565b6101936004803603606081101561037757600080fd5b81019060208101813564010000000081111561039257600080fd5b8201836020820111156103a457600080fd5b803590602001918460018302840111640100000000831117156103c657600080fd5b91935091506001600160a01b0381358116916020013516610b5a565b610408600480360360208110156103f857600080fd5b50356001600160a01b03166110f9565b604080519115158252519081900360200190f35b6101436004803603602081101561043257600080fd5b503561110a565b6104086004803603602081101561044f57600080fd5b50356001600160a01b0316611125565b61014361113a565b6101936004803603604081101561047d57600080fd5b506001600160a01b0381351690602001351515611149565b610193600480360360208110156104ab57600080fd5b50356001600160a01b03166111d6565b610193600480360360208110156104d157600080fd5b50356001600160a01b03166112d8565b6002602052600090815260409020546001600160a01b031681565b6001546001600160a01b031681565b61051361135c565b6001600160a01b0316610524610b4b565b6001600160a01b03161461056d576040805162461bcd60e51b81526020600482018190526024820152600080516020611387833981519152604482015290519081900360640190fd5b60009182526003602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b6105a361135c565b6001600160a01b03166105b4610b4b565b6001600160a01b0316146105fd576040805162461bcd60e51b81526020600482018190526024820152600080516020611387833981519152604482015290519081900360640190fd5b60009182526002602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b8051602081830181018051600482529282019190930120915280546001820154600283015460039093015460ff8316936101009093046001600160a01b0390811693928116928116911685565b6006546001600160a01b031681565b3090565b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092506106c7915050565b6004826040518082805190602001908083835b602083106106f95780518252601f1990920191602091820191016106da565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16915050600181111561073657fe5b1461077a576040805162461bcd60e51b815260206004820152600f60248201526e18d85b9b9bdd081c995d5cd9481a59608a1b604482015290519081900360640190fd5b3360009081526005602052604090205460ff166107d6576040805162461bcd60e51b81526020600482015260156024820152743ab730baba3437b934bd32b2103232b83637bcb2b960591b604482015290519081900360640190fd5b60016000908152600260209081527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0546007546040805163545e7c6160e01b81526001600160a01b03928316600482015287831660248201529051919092169263545e7c61926044808201939182900301818787803b15801561085857600080fd5b505af115801561086c573d6000803e3d6000fd5b505050506040513d602081101561088257600080fd5b50516040805160a08101825260018082526001600160a01b038781166020808501919091528186168486018190526000606086018190529354600754875163545e7c6160e01b8152908516600482015260248101929092529551969750939560808701959092169363545e7c6193604480830194928390030190829087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050506040513d602081101561093757600080fd5b50516001600160a01b03169052604051600490879087908083838082843791909101948552505060405192839003602001909220835181549193509150829060ff19166001838181111561098757fe5b021790555060208281015182546001600160a01b0391821661010002610100600160a81b03199091161783556040808501516001850180549184166001600160a01b0319928316179055606086015160028601805491851691831691909117905560809095015160039094018054949092169390941692909217909155815181815284518183015284517fc9f9f520a9da633b7698afd7088c66455820c4cd1e2b6ab2bdd5a3235f1f5a5994508593919283928301919085019080838360005b83811015610a5f578181015183820152602001610a47565b50505050905090810190601f168015610a8c5780820380516001836020036101000a031916815260200191505b509250505060405180910390a150505050565b610aa761135c565b6001600160a01b0316610ab8610b4b565b6001600160a01b031614610b01576040805162461bcd60e51b81526020600482018190526024820152600080516020611387833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250610b96915050565b6004826040518082805190602001908083835b60208310610bc85780518252601f199092019160209182019101610ba9565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff169150506001811115610c0557fe5b14610c49576040805162461bcd60e51b815260206004820152600f60248201526e18d85b9b9bdd081c995d5cd9481a59608a1b604482015290519081900360640190fd5b3360009081526005602052604090205460ff16610ca5576040805162461bcd60e51b81526020600482015260156024820152743ab730baba3437b934bd32b2103232b83637bcb2b960591b604482015290519081900360640190fd5b60016000908152600260209081527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0546040805163545e7c6160e01b81523060048201526001600160a01b0388811660248301529151919092169263545e7c61926044808201939182900301818787803b158015610d2257600080fd5b505af1158015610d36573d6000803e3d6000fd5b505050506040513d6020811015610d4c57600080fd5b505160016000908152600360209081527fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c546007546040805163d9181cd360e01b81526001600160a01b039283166004820152828716602482015289831660448201529051959650939491169263d9181cd392606480830193919282900301818787803b158015610ddc57600080fd5b505af1158015610df0573d6000803e3d6000fd5b505050506040513d6020811015610e0657600080fd5b5051604080516319d0806560e11b81526001600160a01b0380841660048301529151929350908416916333a100ca9160248082019260009290919082900301818387803b158015610e5657600080fd5b505af1158015610e6a573d6000803e3d6000fd5b505060075460408051639137c1a760e01b81526001600160a01b03928316600482015290519186169350639137c1a7925060248082019260009290919082900301818387803b158015610ebc57600080fd5b505af1158015610ed0573d6000803e3d6000fd5b505050506040518060a00160405280600180811115610eeb57fe5b81526001600160a01b0380881660208084019190915285821660408085018290528684166060860152600154600754825163545e7c6160e01b815290861660048201526024810193909352905160809095019493169263545e7c61926044808401939192918290030181600087803b158015610f6657600080fd5b505af1158015610f7a573d6000803e3d6000fd5b505050506040513d6020811015610f9057600080fd5b50516001600160a01b03169052604051600490899089908083838082843791909101948552505060405192839003602001909220835181549193509150829060ff191660018381811115610fe057fe5b02179055506020828101518254610100600160a81b0319166101006001600160a01b03928316021783556040808501516001850180546001600160a01b031990811692851692909217905560608601516002860180548316918516919091179055608090950151600390940180549095169390911692909217909255805182815285518184015285517fc9f9f520a9da633b7698afd7088c66455820c4cd1e2b6ab2bdd5a3235f1f5a599550869450909283928301919085019080838360005b838110156110b85781810151838201526020016110a0565b50505050905090810190601f1680156110e55780820380516001836020036101000a031916815260200191505b509250505060405180910390a15050505050565b6001600160a01b0381163014919050565b6003602052600090815260409020546001600160a01b031681565b60056020526000908152604090205460ff1681565b6007546001600160a01b031681565b61115161135c565b6001600160a01b0316611162610b4b565b6001600160a01b0316146111ab576040805162461bcd60e51b81526020600482018190526024820152600080516020611387833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6111de61135c565b6001600160a01b03166111ef610b4b565b6001600160a01b031614611238576040805162461bcd60e51b81526020600482018190526024820152600080516020611387833981519152604482015290519081900360640190fd5b6001600160a01b03811661127d5760405162461bcd60e51b81526004018080602001828103825260268152602001806113616026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6112e061135c565b6001600160a01b03166112f1610b4b565b6001600160a01b03161461133a576040805162461bcd60e51b81526020600482018190526024820152600080516020611387833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122040c9d9b9e99a23d5637d0f15a1c9bc7926da4054b80ed73abee2375dddc54e7164736f6c634300060c0033000000000000000000000000c95cbe4ca30055c787cb784be99d6a8494d0d19700000000000000000000000039cc360806b385c96969ce9ff26c23476017f652
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c95cbe4ca30055c787cb784be99d6a8494d0d19700000000000000000000000039cc360806b385c96969ce9ff26c23476017f652
-----Decoded View---------------
Arg [0] : _storage (address): 0xc95cbe4ca30055c787cb784be99d6a8494d0d197
Arg [1] : _multisig (address): 0x39cc360806b385c96969ce9ff26c23476017f652
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000c95cbe4ca30055c787cb784be99d6a8494d0d197
Arg [1] : 00000000000000000000000039cc360806b385c96969ce9ff26c23476017f652
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.