Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 9 from a total of 9 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deploy Proxy For... | 20812836 | 140 days ago | IN | 0 ETH | 0.01241267 | ||||
Deploy Proxy For... | 20787151 | 144 days ago | IN | 0 ETH | 0.00303954 | ||||
Deploy Proxy For... | 20771971 | 146 days ago | IN | 0 ETH | 0.00682573 | ||||
Deploy Proxy For... | 20763020 | 147 days ago | IN | 0 ETH | 0.00235626 | ||||
Deploy Proxy For... | 20722115 | 153 days ago | IN | 0 ETH | 0.00061029 | ||||
Deploy Proxy For... | 20668562 | 161 days ago | IN | 0 ETH | 0.00054699 | ||||
Deploy Proxy For... | 20641675 | 164 days ago | IN | 0 ETH | 0.0006268 | ||||
Deploy Proxy For... | 20640933 | 164 days ago | IN | 0 ETH | 0.00060265 | ||||
Deploy Proxy For... | 20636620 | 165 days ago | IN | 0 ETH | 0.00111013 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers. Name tag integration is not available in advanced view.
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
||||
---|---|---|---|---|---|---|---|
20812836 | 140 days ago | 0 ETH | |||||
20812836 | 140 days ago | 0 ETH | |||||
20812836 | 140 days ago | Contract Creation | 0 ETH | ||||
20812836 | 140 days ago | 0 ETH | |||||
20787151 | 144 days ago | 0 ETH | |||||
20787151 | 144 days ago | 0 ETH | |||||
20787151 | 144 days ago | Contract Creation | 0 ETH | ||||
20787151 | 144 days ago | 0 ETH | |||||
20771971 | 146 days ago | 0 ETH | |||||
20771971 | 146 days ago | 0 ETH | |||||
20771971 | 146 days ago | Contract Creation | 0 ETH | ||||
20771971 | 146 days ago | 0 ETH | |||||
20763020 | 147 days ago | 0 ETH | |||||
20763020 | 147 days ago | 0 ETH | |||||
20763020 | 147 days ago | Contract Creation | 0 ETH | ||||
20763020 | 147 days ago | 0 ETH | |||||
20722115 | 153 days ago | 0 ETH | |||||
20722115 | 153 days ago | Contract Creation | 0 ETH | ||||
20722115 | 153 days ago | 0 ETH | |||||
20668562 | 161 days ago | 0 ETH | |||||
20668562 | 161 days ago | 0 ETH | |||||
20668562 | 161 days ago | Contract Creation | 0 ETH | ||||
20668562 | 161 days ago | 0 ETH | |||||
20641675 | 164 days ago | 0 ETH | |||||
20641675 | 164 days ago | 0 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
DeTrustMultisigFactory
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT // UBD Network pragma solidity 0.8.26; import "@openzeppelin/contracts/proxy/Clones.sol"; import {Address} from "@openzeppelin/contracts/utils/Address.sol"; import "./interfaces/IDeTrustModelRegistry.sol"; import "./interfaces/IUsersDeTrustRegistry.sol"; /** * @dev This is a factory contract for UBD DeTrustMultisig creation. DeTrusts will * creating as minimal proxy (EIP 1167) for available model implementation. */ contract DeTrustMultisigFactory { struct FeeParams { address feeToken; uint256 feeAmount; address feeBeneficiary; uint64 prePaiedPeriod; } uint8 constant public MAX_NAME_LENGTH_BYTES = 52; IDeTrustModelRegistry public modelRegistry; IUsersDeTrustRegistry public trustRegistry; event NewTrust( address indexed Creator, address indexed Model, address indexed Trust, bytes32 PromoHash, string Name ); /** * @dev Pass Model's and User's Registry contract addresses. Zero addresses * are possible as well but in that case proxy for **ANY** implementation * would be able to create. */ constructor(address _modelReg, address _trustReg){ modelRegistry = IDeTrustModelRegistry(_modelReg); trustRegistry = IUsersDeTrustRegistry(_trustReg); } /** * @dev Deploy proxy for given implementation. * @param _implAddress addreess of approved and valid implemtation * @param _threshold number of sign that enough for execute tx * @param _inheritors addresses array. First address is DeTrust owner. So in theory possible to * create detrust for somebody. But only `msg.sender` address will checked * in model creation rules. * @param _periodOrDateArray array periods in seconds after wich inheritor will get acces to. * @param _name simple string name for trust. * @param _promoHash - hashed promocode value */ function deployProxyForTrust( address _implAddress, uint8 _threshold, address[] memory _inheritors, uint64[] memory _periodOrDateArray, string memory _name, bytes32 _promoHash ) public payable returns(address proxy) { FeeParams memory feep; require(bytes(_name).length <= MAX_NAME_LENGTH_BYTES, "Too long name"); if (address(modelRegistry) != address(0)){ bytes1 _rules = modelRegistry.isModelEnable(_implAddress, msg.sender); // check _implAddress(=model) white list require(_rules & 0x01 == 0x01, "Model not approved"); // check model rules if (_rules & 0x02 == 0x02) { modelRegistry.checkRules(_implAddress, msg.sender, _promoHash); } // charge FEE if enabled if (_rules & 0x04 == 0x04) { (feep.feeToken, feep.feeAmount, feep.feeBeneficiary, feep.prePaiedPeriod) = modelRegistry.chargeFee{value: msg.value}( _implAddress, msg.sender, _promoHash ); } } proxy = Clones.clone(_implAddress); // INIT bytes memory initCallData = abi.encodeWithSignature( "initialize(uint8,address[],uint64[],address,uint256,address,uint64)", _threshold, _inheritors, _periodOrDateArray ,feep.feeToken, feep.feeAmount, feep.feeBeneficiary, feep.prePaiedPeriod ); // Address.functionCallWithValue(proxy, initCallData, msg.value); Address.functionCallWithValue(proxy, initCallData, 0); // Register trust in Trust registry if (address(trustRegistry) != address(0)){ trustRegistry.registerTrust(proxy, _inheritors, _name); } emit NewTrust(msg.sender, _implAddress, proxy, _promoHash, _name); } function getMinHoldInfo() external view returns (uint256, address) { if (address(modelRegistry) != address(0)){ return modelRegistry.getMinHoldInfo(); } else { return (0, address(0)); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (proxy/Clones.sol) pragma solidity ^0.8.20; /** * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for * deploying minimal proxy contracts, also known as "clones". * * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies * > a minimal bytecode implementation that delegates all calls to a known, fixed address. * * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2` * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the * deterministic method. */ library Clones { /** * @dev A clone instance deployment failed. */ error ERC1167FailedCreateClone(); /** * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`. * * This function uses the create opcode, which should never revert. */ function clone(address implementation) internal returns (address instance) { /// @solidity memory-safe-assembly assembly { // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes // of the `implementation` address with the bytecode before the address. mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000)) // Packs the remaining 17 bytes of `implementation` with the bytecode after the address. mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3)) instance := create(0, 0x09, 0x37) } if (instance == address(0)) { revert ERC1167FailedCreateClone(); } } /** * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`. * * This function uses the create2 opcode and a `salt` to deterministically deploy * the clone. Using the same `implementation` and `salt` multiple time will revert, since * the clones cannot be deployed twice at the same address. */ function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) { /// @solidity memory-safe-assembly assembly { // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes // of the `implementation` address with the bytecode before the address. mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000)) // Packs the remaining 17 bytes of `implementation` with the bytecode after the address. mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3)) instance := create2(0, 0x09, 0x37, salt) } if (instance == address(0)) { revert ERC1167FailedCreateClone(); } } /** * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}. */ function predictDeterministicAddress( address implementation, bytes32 salt, address deployer ) internal pure returns (address predicted) { /// @solidity memory-safe-assembly assembly { let ptr := mload(0x40) mstore(add(ptr, 0x38), deployer) mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff) mstore(add(ptr, 0x14), implementation) mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73) mstore(add(ptr, 0x58), salt) mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37)) predicted := keccak256(add(ptr, 0x43), 0x55) } } /** * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}. */ function predictDeterministicAddress( address implementation, bytes32 salt ) internal view returns (address predicted) { return predictDeterministicAddress(implementation, salt, address(this)); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol) pragma solidity ^0.8.20; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev The ETH balance of the account is not enough to perform the operation. */ error AddressInsufficientBalance(address account); /** * @dev There's no code at `target` (it is not a contract). */ error AddressEmptyCode(address target); /** * @dev A call to an address target failed. The target may have reverted. */ error FailedInnerCall(); /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { if (address(this).balance < amount) { revert AddressInsufficientBalance(address(this)); } (bool success, ) = recipient.call{value: amount}(""); if (!success) { revert FailedInnerCall(); } } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason or custom error, it is bubbled * up by this function (like regular Solidity function calls). However, if * the call reverted with no returned reason, this function reverts with a * {FailedInnerCall} error. * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { if (address(this).balance < value) { revert AddressInsufficientBalance(address(this)); } (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an * unsuccessful call. */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata ) internal view returns (bytes memory) { if (!success) { _revert(returndata); } else { // only check if target is a contract if the call was successful and the return data is empty // otherwise we already know that it was a contract if (returndata.length == 0 && target.code.length == 0) { revert AddressEmptyCode(target); } return returndata; } } /** * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the * revert reason or with a default {FailedInnerCall} error. */ function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) { if (!success) { _revert(returndata); } else { return returndata; } } /** * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}. */ function _revert(bytes memory returndata) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert FailedInnerCall(); } } }
// SPDX-License-Identifier: MIT // UBD Network pragma solidity 0.8.26; /** * @dev Interface of the DeTrustMultisigModelRegistry. */ interface IDeTrustModelRegistry { /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns one byte array: * 7 6 5 4 3 2 1 0 <= Bit number(dec) * ------------------------------------------------------ * 1 1 1 1 1 1 1 1 * | | | | | | | | * | | | | | | | +-Is_Enabled * | | | | | | +-Need_Balance * | | | | | +-Need_FeeCharge * | | | | +-reserved_core * | | | +-reserved_core * | | +-reserved_core * | +-reserved_core * +-reserved_core */ function isModelEnable(address _impl, address _creator) external view returns (bytes1 _rules); /** * @dev Returns `true` or revert with reason. */ function checkRules(address _impl, address _creator, bytes32 _promoHash) external view returns (bool _ok); /** * @dev Returns `true` if Fee charged */ function chargeFee(address _impl, address _creator, bytes32 _promoHash) external payable returns ( address feeToken_, uint256 feeAmount_, address feeBeneficiary_, uint64 prePaiedPeriod_); function getMinHoldInfo() external view returns (uint256 holdAmount, address holdToken); }
// SPDX-License-Identifier: MIT // UBD Network pragma solidity 0.8.26; /** * @dev Interface of the DeTrustMultisigModelRegistry. */ interface IUsersDeTrustRegistry { /** * @dev Returns `true` if after trust registered or revert with reason */ function registerTrust( address _trust, address[] memory _inheritors, string memory _name ) external returns (bool _ok); }
{ "remappings": [ "@Uopenzeppelin/=lib/openzeppelin-contracts-upgradeable.git/", "@openzeppelin/=lib/openzeppelin-contracts/", "@uniswap/=lib/", "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable.git/contracts/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "ds-test/=lib/openzeppelin-contracts-upgradeable.git/lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts-upgradeable.git/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts-upgradeable.git/=lib/openzeppelin-contracts-upgradeable.git/", "openzeppelin-contracts/=lib/openzeppelin-contracts/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "paris", "viaIR": false, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_modelReg","type":"address"},{"internalType":"address","name":"_trustReg","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"ERC1167FailedCreateClone","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"Creator","type":"address"},{"indexed":true,"internalType":"address","name":"Model","type":"address"},{"indexed":true,"internalType":"address","name":"Trust","type":"address"},{"indexed":false,"internalType":"bytes32","name":"PromoHash","type":"bytes32"},{"indexed":false,"internalType":"string","name":"Name","type":"string"}],"name":"NewTrust","type":"event"},{"inputs":[],"name":"MAX_NAME_LENGTH_BYTES","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_implAddress","type":"address"},{"internalType":"uint8","name":"_threshold","type":"uint8"},{"internalType":"address[]","name":"_inheritors","type":"address[]"},{"internalType":"uint64[]","name":"_periodOrDateArray","type":"uint64[]"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"bytes32","name":"_promoHash","type":"bytes32"}],"name":"deployProxyForTrust","outputs":[{"internalType":"address","name":"proxy","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getMinHoldInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"modelRegistry","outputs":[{"internalType":"contract IDeTrustModelRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trustRegistry","outputs":[{"internalType":"contract IUsersDeTrustRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052348015600f57600080fd5b50604051610d4a380380610d4a833981016040819052602c916077565b600080546001600160a01b039384166001600160a01b0319918216179091556001805492909316911617905560a5565b80516001600160a01b0381168114607257600080fd5b919050565b60008060408385031215608957600080fd5b609083605c565b9150609c60208401605c565b90509250929050565b610c96806100b46000396000f3fe60806040526004361061004a5760003560e01c80632ba36f781461004f578063413d2bc41461008c57806347dedccc1461009f578063573d6fa2146100d15780639b835427146100f8575b600080fd5b34801561005b57600080fd5b5060005461006f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61006f61009a366004610905565b610118565b3480156100ab57600080fd5b506100b46104f9565b604080519283526001600160a01b03909116602083015201610083565b3480156100dd57600080fd5b506100e6603481565b60405160ff9091168152602001610083565b34801561010457600080fd5b5060015461006f906001600160a01b031681565b60408051608081018252600080825260208201819052918101829052606081018290528351603410156101825760405162461bcd60e51b815260206004820152600d60248201526c546f6f206c6f6e67206e616d6560981b60448201526064015b60405180910390fd5b6000546001600160a01b031615610399576000805460405163367b6ab160e01b81526001600160a01b038b811660048301523360248301529091169063367b6ab190604401602060405180830381865afa1580156101e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020891906109cf565b9050600160f81b808216146102545760405162461bcd60e51b8152602060048201526012602482015271135bd9195b081b9bdd08185c1c1c9bdd995960721b6044820152606401610179565b600160f91b80821690036102df57600054604051632e0d0d3560e21b81526001600160a01b038b81166004830152336024830152604482018790529091169063b83434d490606401602060405180830381865afa1580156102b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102dd91906109f9565b505b600160fa1b80821690036103975760005460405163bd9dd1d160e01b81526001600160a01b038b81166004830152336024830152604482018790529091169063bd9dd1d190349060640160806040518083038185885af1158015610347573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061036c9190610a1b565b67ffffffffffffffff1660608601526001600160a01b03908116604086015260208501919091521682525b505b6103a288610589565b9150600087878784600001518560200151866040015187606001516040516024016103d39796959493929190610ab5565b60408051601f198184030181529190526020810180516001600160e01b0316630cb175af60e11b179052905061040b838260006105fb565b506001546001600160a01b0316156104965760015460405163e32f212360e01b81526001600160a01b039091169063e32f2123906104519086908b908a90600401610bb2565b6020604051808303816000875af1158015610470573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049491906109f9565b505b826001600160a01b0316896001600160a01b0316336001600160a01b03167fb1378a18924414bfdd2cb2665cb35caf32473d0d890d0b3acca0658a2d46f52787896040516104e5929190610bf2565b60405180910390a450509695505050505050565b6000805481906001600160a01b03161561058057600054604080516311f7b73360e21b815281516001600160a01b03909316926347dedccc926004808401939192918290030181865afa158015610554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105789190610c13565b915091509091565b50600091829150565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166105f6576040516330be1a3d60e21b815260040160405180910390fd5b919050565b6060814710156106205760405163cd78605960e01b8152306004820152602401610179565b600080856001600160a01b0316848660405161063c9190610c44565b60006040518083038185875af1925050503d8060008114610679576040519150601f19603f3d011682016040523d82523d6000602084013e61067e565b606091505b509150915061068e86838361069a565b925050505b9392505050565b6060826106af576106aa826106f6565b610693565b81511580156106c657506001600160a01b0384163b155b156106ef57604051639996b31560e01b81526001600160a01b0385166004820152602401610179565b5080610693565b8051156107065780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6001600160a01b038116811461071f57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561077657610776610737565b604052919050565b600067ffffffffffffffff82111561079857610798610737565b5060051b60200190565b600082601f8301126107b357600080fd5b81356107c66107c18261077e565b61074d565b8082825260208201915060208360051b8601019250858311156107e857600080fd5b602085015b8381101561080e57803561080081610722565b8352602092830192016107ed565b5095945050505050565b67ffffffffffffffff8116811461071f57600080fd5b600082601f83011261083f57600080fd5b813561084d6107c18261077e565b8082825260208201915060208360051b86010192508583111561086f57600080fd5b602085015b8381101561080e57803561088781610818565b835260209283019201610874565b600082601f8301126108a657600080fd5b813567ffffffffffffffff8111156108c0576108c0610737565b6108d3601f8201601f191660200161074d565b8181528460208386010111156108e857600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561091e57600080fd5b863561092981610722565b9550602087013560ff8116811461093f57600080fd5b9450604087013567ffffffffffffffff81111561095b57600080fd5b61096789828a016107a2565b945050606087013567ffffffffffffffff81111561098457600080fd5b61099089828a0161082e565b935050608087013567ffffffffffffffff8111156109ad57600080fd5b6109b989828a01610895565b9699959850939692959460a09093013593505050565b6000602082840312156109e157600080fd5b81516001600160f81b03198116811461069357600080fd5b600060208284031215610a0b57600080fd5b8151801515811461069357600080fd5b60008060008060808587031215610a3157600080fd5b8451610a3c81610722565b602086015160408701519195509350610a5481610722565b6060860151909250610a6581610818565b939692955090935050565b600081518084526020840193506020830160005b82811015610aab5781516001600160a01b0316865260209586019590910190600101610a84565b5093949350505050565b60ff8816815260e060208201526000610ad160e0830189610a70565b828103604084015287518082526020808a0192019060005b81811015610b1157835167ffffffffffffffff16835260209384019390920191600101610ae9565b50506001600160a01b03881660608501529150610b2b9050565b846080830152610b4660a08301856001600160a01b03169052565b67ffffffffffffffff831660c083015298975050505050505050565b60005b83811015610b7d578181015183820152602001610b65565b50506000910152565b60008151808452610b9e816020860160208601610b62565b601f01601f19169290920160200192915050565b6001600160a01b0384168152606060208201819052600090610bd690830185610a70565b8281036040840152610be88185610b86565b9695505050505050565b828152604060208201526000610c0b6040830184610b86565b949350505050565b60008060408385031215610c2657600080fd5b82516020840151909250610c3981610722565b809150509250929050565b60008251610c56818460208701610b62565b919091019291505056fea2646970667358221220f6c3a3140877ea3a3734df7121421b8a796dd160668640680c8fb532663ccc5764736f6c634300081a00330000000000000000000000003371e6ca3d0424d375c3723cdf1ed8f4359bd8a9000000000000000000000000778a9f417809b896ef1e2dd3ae377690704f3fa3
Deployed Bytecode
0x60806040526004361061004a5760003560e01c80632ba36f781461004f578063413d2bc41461008c57806347dedccc1461009f578063573d6fa2146100d15780639b835427146100f8575b600080fd5b34801561005b57600080fd5b5060005461006f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61006f61009a366004610905565b610118565b3480156100ab57600080fd5b506100b46104f9565b604080519283526001600160a01b03909116602083015201610083565b3480156100dd57600080fd5b506100e6603481565b60405160ff9091168152602001610083565b34801561010457600080fd5b5060015461006f906001600160a01b031681565b60408051608081018252600080825260208201819052918101829052606081018290528351603410156101825760405162461bcd60e51b815260206004820152600d60248201526c546f6f206c6f6e67206e616d6560981b60448201526064015b60405180910390fd5b6000546001600160a01b031615610399576000805460405163367b6ab160e01b81526001600160a01b038b811660048301523360248301529091169063367b6ab190604401602060405180830381865afa1580156101e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020891906109cf565b9050600160f81b808216146102545760405162461bcd60e51b8152602060048201526012602482015271135bd9195b081b9bdd08185c1c1c9bdd995960721b6044820152606401610179565b600160f91b80821690036102df57600054604051632e0d0d3560e21b81526001600160a01b038b81166004830152336024830152604482018790529091169063b83434d490606401602060405180830381865afa1580156102b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102dd91906109f9565b505b600160fa1b80821690036103975760005460405163bd9dd1d160e01b81526001600160a01b038b81166004830152336024830152604482018790529091169063bd9dd1d190349060640160806040518083038185885af1158015610347573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061036c9190610a1b565b67ffffffffffffffff1660608601526001600160a01b03908116604086015260208501919091521682525b505b6103a288610589565b9150600087878784600001518560200151866040015187606001516040516024016103d39796959493929190610ab5565b60408051601f198184030181529190526020810180516001600160e01b0316630cb175af60e11b179052905061040b838260006105fb565b506001546001600160a01b0316156104965760015460405163e32f212360e01b81526001600160a01b039091169063e32f2123906104519086908b908a90600401610bb2565b6020604051808303816000875af1158015610470573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049491906109f9565b505b826001600160a01b0316896001600160a01b0316336001600160a01b03167fb1378a18924414bfdd2cb2665cb35caf32473d0d890d0b3acca0658a2d46f52787896040516104e5929190610bf2565b60405180910390a450509695505050505050565b6000805481906001600160a01b03161561058057600054604080516311f7b73360e21b815281516001600160a01b03909316926347dedccc926004808401939192918290030181865afa158015610554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105789190610c13565b915091509091565b50600091829150565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166105f6576040516330be1a3d60e21b815260040160405180910390fd5b919050565b6060814710156106205760405163cd78605960e01b8152306004820152602401610179565b600080856001600160a01b0316848660405161063c9190610c44565b60006040518083038185875af1925050503d8060008114610679576040519150601f19603f3d011682016040523d82523d6000602084013e61067e565b606091505b509150915061068e86838361069a565b925050505b9392505050565b6060826106af576106aa826106f6565b610693565b81511580156106c657506001600160a01b0384163b155b156106ef57604051639996b31560e01b81526001600160a01b0385166004820152602401610179565b5080610693565b8051156107065780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6001600160a01b038116811461071f57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561077657610776610737565b604052919050565b600067ffffffffffffffff82111561079857610798610737565b5060051b60200190565b600082601f8301126107b357600080fd5b81356107c66107c18261077e565b61074d565b8082825260208201915060208360051b8601019250858311156107e857600080fd5b602085015b8381101561080e57803561080081610722565b8352602092830192016107ed565b5095945050505050565b67ffffffffffffffff8116811461071f57600080fd5b600082601f83011261083f57600080fd5b813561084d6107c18261077e565b8082825260208201915060208360051b86010192508583111561086f57600080fd5b602085015b8381101561080e57803561088781610818565b835260209283019201610874565b600082601f8301126108a657600080fd5b813567ffffffffffffffff8111156108c0576108c0610737565b6108d3601f8201601f191660200161074d565b8181528460208386010111156108e857600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561091e57600080fd5b863561092981610722565b9550602087013560ff8116811461093f57600080fd5b9450604087013567ffffffffffffffff81111561095b57600080fd5b61096789828a016107a2565b945050606087013567ffffffffffffffff81111561098457600080fd5b61099089828a0161082e565b935050608087013567ffffffffffffffff8111156109ad57600080fd5b6109b989828a01610895565b9699959850939692959460a09093013593505050565b6000602082840312156109e157600080fd5b81516001600160f81b03198116811461069357600080fd5b600060208284031215610a0b57600080fd5b8151801515811461069357600080fd5b60008060008060808587031215610a3157600080fd5b8451610a3c81610722565b602086015160408701519195509350610a5481610722565b6060860151909250610a6581610818565b939692955090935050565b600081518084526020840193506020830160005b82811015610aab5781516001600160a01b0316865260209586019590910190600101610a84565b5093949350505050565b60ff8816815260e060208201526000610ad160e0830189610a70565b828103604084015287518082526020808a0192019060005b81811015610b1157835167ffffffffffffffff16835260209384019390920191600101610ae9565b50506001600160a01b03881660608501529150610b2b9050565b846080830152610b4660a08301856001600160a01b03169052565b67ffffffffffffffff831660c083015298975050505050505050565b60005b83811015610b7d578181015183820152602001610b65565b50506000910152565b60008151808452610b9e816020860160208601610b62565b601f01601f19169290920160200192915050565b6001600160a01b0384168152606060208201819052600090610bd690830185610a70565b8281036040840152610be88185610b86565b9695505050505050565b828152604060208201526000610c0b6040830184610b86565b949350505050565b60008060408385031215610c2657600080fd5b82516020840151909250610c3981610722565b809150509250929050565b60008251610c56818460208701610b62565b919091019291505056fea2646970667358221220f6c3a3140877ea3a3734df7121421b8a796dd160668640680c8fb532663ccc5764736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003371e6ca3d0424d375c3723cdf1ed8f4359bd8a9000000000000000000000000778a9f417809b896ef1e2dd3ae377690704f3fa3
-----Decoded View---------------
Arg [0] : _modelReg (address): 0x3371e6Ca3d0424d375c3723CdF1ed8f4359bD8A9
Arg [1] : _trustReg (address): 0x778a9F417809b896ef1E2Dd3Ae377690704f3Fa3
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000003371e6ca3d0424d375c3723cdf1ed8f4359bd8a9
Arg [1] : 000000000000000000000000778a9f417809b896ef1e2dd3ae377690704f3fa3
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.