Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60606040 | 5254519 | 2404 days ago | IN | 0 ETH | 0.00476799 |
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 | ||||
---|---|---|---|---|---|---|---|
20928551 | 3 days ago | 0 ETH | |||||
20928540 | 3 days ago | 0 ETH | |||||
20927229 | 3 days ago | 0 ETH | |||||
20923802 | 4 days ago | 0 ETH | |||||
20923248 | 4 days ago | 0 ETH | |||||
20922632 | 4 days ago | 0 ETH | |||||
20922308 | 4 days ago | 0 ETH | |||||
20914346 | 5 days ago | 0 ETH | |||||
20914346 | 5 days ago | 0 ETH | |||||
20914340 | 5 days ago | 0 ETH | |||||
20912690 | 5 days ago | 0 ETH | |||||
20912612 | 5 days ago | 0 ETH | |||||
20897737 | 7 days ago | 0 ETH | |||||
20881356 | 10 days ago | 0 ETH | |||||
20880748 | 10 days ago | 0 ETH | |||||
20867670 | 12 days ago | 0 ETH | |||||
20845244 | 15 days ago | 0 ETH | |||||
20838522 | 16 days ago | 0 ETH | |||||
20836730 | 16 days ago | 0 ETH | |||||
20836578 | 16 days ago | 0 ETH | |||||
20836574 | 16 days ago | 0 ETH | |||||
20836565 | 16 days ago | 0 ETH | |||||
20836519 | 16 days ago | 0 ETH | |||||
20836519 | 16 days ago | 0 ETH | |||||
20836519 | 16 days ago | 0 ETH |
Loading...
Loading
Contract Name:
Repo
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-03-14 */ //File: contracts/acl/IACL.sol pragma solidity ^0.4.18; interface IACL { function initialize(address permissionsCreator) public; function hasPermission(address who, address where, bytes32 what, bytes how) public view returns (bool); } //File: contracts/kernel/IKernel.sol pragma solidity ^0.4.18; interface IKernel { event SetApp(bytes32 indexed namespace, bytes32 indexed name, bytes32 indexed id, address app); function acl() public view returns (IACL); function hasPermission(address who, address where, bytes32 what, bytes how) public view returns (bool); function setApp(bytes32 namespace, bytes32 name, address app) public returns (bytes32 id); function getApp(bytes32 id) public view returns (address); } //File: contracts/apps/AppStorage.sol pragma solidity ^0.4.18; contract AppStorage { IKernel public kernel; bytes32 public appId; address internal pinnedCode; // used by Proxy Pinned uint256 internal initializationBlock; // used by Initializable uint256[95] private storageOffset; // forces App storage to start at after 100 slots uint256 private offset; } //File: contracts/common/Initializable.sol pragma solidity ^0.4.18; contract Initializable is AppStorage { modifier onlyInit { require(initializationBlock == 0); _; } /** * @return Block number in which the contract was initialized */ function getInitializationBlock() public view returns (uint256) { return initializationBlock; } /** * @dev Function to be called by top level contract after initialization has finished. */ function initialized() internal onlyInit { initializationBlock = getBlockNumber(); } /** * @dev Returns the current block number. * Using a function rather than `block.number` allows us to easily mock the block number in * tests. */ function getBlockNumber() internal view returns (uint256) { return block.number; } } //File: contracts/evmscript/IEVMScriptExecutor.sol pragma solidity ^0.4.18; interface IEVMScriptExecutor { function execScript(bytes script, bytes input, address[] blacklist) external returns (bytes); } //File: contracts/evmscript/IEVMScriptRegistry.sol pragma solidity 0.4.18; contract EVMScriptRegistryConstants { bytes32 constant public EVMSCRIPT_REGISTRY_APP_ID = keccak256("evmreg.aragonpm.eth"); bytes32 constant public EVMSCRIPT_REGISTRY_APP = keccak256(keccak256("app"), EVMSCRIPT_REGISTRY_APP_ID); } interface IEVMScriptRegistry { function addScriptExecutor(address executor) external returns (uint id); function disableScriptExecutor(uint256 executorId) external; function getScriptExecutor(bytes script) public view returns (address); } //File: contracts/evmscript/ScriptHelpers.sol pragma solidity 0.4.18; library ScriptHelpers { // To test with JS and compare with actual encoder. Maintaining for reference. // t = function() { return IEVMScriptExecutor.at('0x4bcdd59d6c77774ee7317fc1095f69ec84421e49').contract.execScript.getData(...[].slice.call(arguments)).slice(10).match(/.{1,64}/g) } // run = function() { return ScriptHelpers.new().then(sh => { sh.abiEncode.call(...[].slice.call(arguments)).then(a => console.log(a.slice(2).match(/.{1,64}/g)) ) }) } // This is truly not beautiful but lets no daydream to the day solidity gets reflection features function abiEncode(bytes _a, bytes _b, address[] _c) public pure returns (bytes d) { return encode(_a, _b, _c); } function encode(bytes memory _a, bytes memory _b, address[] memory _c) internal pure returns (bytes memory d) { // A is positioned after the 3 position words uint256 aPosition = 0x60; uint256 bPosition = aPosition + 32 * abiLength(_a); uint256 cPosition = bPosition + 32 * abiLength(_b); uint256 length = cPosition + 32 * abiLength(_c); d = new bytes(length); assembly { // Store positions mstore(add(d, 0x20), aPosition) mstore(add(d, 0x40), bPosition) mstore(add(d, 0x60), cPosition) } // Copy memory to correct position copy(d, getPtr(_a), aPosition, _a.length); copy(d, getPtr(_b), bPosition, _b.length); copy(d, getPtr(_c), cPosition, _c.length * 32); // 1 word per address } function abiLength(bytes memory _a) internal pure returns (uint256) { // 1 for length + // memory words + 1 if not divisible for 32 to offset word return 1 + (_a.length / 32) + (_a.length % 32 > 0 ? 1 : 0); } function abiLength(address[] _a) internal pure returns (uint256) { // 1 for length + 1 per item return 1 + _a.length; } function copy(bytes _d, uint256 _src, uint256 _pos, uint256 _length) internal pure { uint dest; assembly { dest := add(add(_d, 0x20), _pos) } memcpy(dest, _src, _length + 32); } function getPtr(bytes memory _x) internal pure returns (uint256 ptr) { assembly { ptr := _x } } function getPtr(address[] memory _x) internal pure returns (uint256 ptr) { assembly { ptr := _x } } function getSpecId(bytes _script) internal pure returns (uint32) { return uint32At(_script, 0); } function uint256At(bytes _data, uint256 _location) internal pure returns (uint256 result) { assembly { result := mload(add(_data, add(0x20, _location))) } } function addressAt(bytes _data, uint256 _location) internal pure returns (address result) { uint256 word = uint256At(_data, _location); assembly { result := div(and(word, 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000), 0x1000000000000000000000000) } } function uint32At(bytes _data, uint256 _location) internal pure returns (uint32 result) { uint256 word = uint256At(_data, _location); assembly { result := div(and(word, 0xffffffff00000000000000000000000000000000000000000000000000000000), 0x100000000000000000000000000000000000000000000000000000000) } } function locationOf(bytes _data, uint256 _location) internal pure returns (uint256 result) { assembly { result := add(_data, add(0x20, _location)) } } function toBytes(bytes4 _sig) internal pure returns (bytes) { bytes memory payload = new bytes(4); payload[0] = bytes1(_sig); payload[1] = bytes1(_sig << 8); payload[2] = bytes1(_sig << 16); payload[3] = bytes1(_sig << 24); return payload; } function memcpy(uint _dest, uint _src, uint _len) public pure { uint256 src = _src; uint256 dest = _dest; uint256 len = _len; // Copy word-length chunks while possible for (; len >= 32; len -= 32) { assembly { mstore(dest, mload(src)) } dest += 32; src += 32; } // Copy remaining bytes uint mask = 256 ** (32 - len) - 1; assembly { let srcpart := and(mload(src), not(mask)) let destpart := and(mload(dest), mask) mstore(dest, or(destpart, srcpart)) } } } //File: contracts/evmscript/EVMScriptRunner.sol pragma solidity ^0.4.18; contract EVMScriptRunner is AppStorage, EVMScriptRegistryConstants { using ScriptHelpers for bytes; function runScript(bytes _script, bytes _input, address[] _blacklist) protectState internal returns (bytes output) { // TODO: Too much data flying around, maybe extracting spec id here is cheaper address executorAddr = getExecutor(_script); require(executorAddr != address(0)); bytes memory calldataArgs = _script.encode(_input, _blacklist); bytes4 sig = IEVMScriptExecutor(0).execScript.selector; require(executorAddr.delegatecall(sig, calldataArgs)); return returnedDataDecoded(); } function getExecutor(bytes _script) public view returns (IEVMScriptExecutor) { return IEVMScriptExecutor(getExecutorRegistry().getScriptExecutor(_script)); } // TODO: Internal function getExecutorRegistry() internal view returns (IEVMScriptRegistry) { address registryAddr = kernel.getApp(EVMSCRIPT_REGISTRY_APP); return IEVMScriptRegistry(registryAddr); } /** * @dev copies and returns last's call data. Needs to ABI decode first */ function returnedDataDecoded() internal view returns (bytes ret) { assembly { let size := returndatasize switch size case 0 {} default { ret := mload(0x40) // free mem ptr get mstore(0x40, add(ret, add(size, 0x20))) // free mem ptr set returndatacopy(ret, 0x20, sub(size, 0x20)) // copy return data } } return ret; } modifier protectState { address preKernel = kernel; bytes32 preAppId = appId; _; // exec require(kernel == preKernel); require(appId == preAppId); } } //File: contracts/acl/ACLSyntaxSugar.sol pragma solidity 0.4.18; contract ACLSyntaxSugar { function arr() internal pure returns (uint256[] r) {} function arr(bytes32 _a) internal pure returns (uint256[] r) { return arr(uint256(_a)); } function arr(bytes32 _a, bytes32 _b) internal pure returns (uint256[] r) { return arr(uint256(_a), uint256(_b)); } function arr(address _a) internal pure returns (uint256[] r) { return arr(uint256(_a)); } function arr(address _a, address _b) internal pure returns (uint256[] r) { return arr(uint256(_a), uint256(_b)); } function arr(address _a, uint256 _b, uint256 _c) internal pure returns (uint256[] r) { return arr(uint256(_a), _b, _c); } function arr(address _a, uint256 _b) internal pure returns (uint256[] r) { return arr(uint256(_a), uint256(_b)); } function arr(address _a, address _b, uint256 _c, uint256 _d, uint256 _e) internal pure returns (uint256[] r) { return arr(uint256(_a), uint256(_b), _c, _d, _e); } function arr(address _a, address _b, address _c) internal pure returns (uint256[] r) { return arr(uint256(_a), uint256(_b), uint256(_c)); } function arr(address _a, address _b, uint256 _c) internal pure returns (uint256[] r) { return arr(uint256(_a), uint256(_b), uint256(_c)); } function arr(uint256 _a) internal pure returns (uint256[] r) { r = new uint256[](1); r[0] = _a; } function arr(uint256 _a, uint256 _b) internal pure returns (uint256[] r) { r = new uint256[](2); r[0] = _a; r[1] = _b; } function arr(uint256 _a, uint256 _b, uint256 _c) internal pure returns (uint256[] r) { r = new uint256[](3); r[0] = _a; r[1] = _b; r[2] = _c; } function arr(uint256 _a, uint256 _b, uint256 _c, uint256 _d) internal pure returns (uint256[] r) { r = new uint256[](4); r[0] = _a; r[1] = _b; r[2] = _c; r[3] = _d; } function arr(uint256 _a, uint256 _b, uint256 _c, uint256 _d, uint256 _e) internal pure returns (uint256[] r) { r = new uint256[](5); r[0] = _a; r[1] = _b; r[2] = _c; r[3] = _d; r[4] = _e; } } contract ACLHelpers { function decodeParamOp(uint256 _x) internal pure returns (uint8 b) { return uint8(_x >> (8 * 30)); } function decodeParamId(uint256 _x) internal pure returns (uint8 b) { return uint8(_x >> (8 * 31)); } function decodeParamsList(uint256 _x) internal pure returns (uint32 a, uint32 b, uint32 c) { a = uint32(_x); b = uint32(_x >> (8 * 4)); c = uint32(_x >> (8 * 8)); } } //File: contracts/apps/AragonApp.sol pragma solidity ^0.4.18; contract AragonApp is AppStorage, Initializable, ACLSyntaxSugar, EVMScriptRunner { modifier auth(bytes32 _role) { require(canPerform(msg.sender, _role, new uint256[](0))); _; } modifier authP(bytes32 _role, uint256[] params) { require(canPerform(msg.sender, _role, params)); _; } function canPerform(address _sender, bytes32 _role, uint256[] params) public view returns (bool) { bytes memory how; // no need to init memory as it is never used if (params.length > 0) { uint256 byteLength = params.length * 32; assembly { how := params // forced casting mstore(how, byteLength) } } return address(kernel) == 0 || kernel.hasPermission(_sender, address(this), _role, how); } } //File: contracts/apm/Repo.sol pragma solidity ^0.4.15; contract Repo is AragonApp { struct Version { uint16[3] semanticVersion; address contractAddress; bytes contentURI; } Version[] versions; mapping (bytes32 => uint256) versionIdForSemantic; mapping (address => uint256) latestVersionIdForContract; bytes32 constant public CREATE_VERSION_ROLE = bytes32(1); event NewVersion(uint256 versionId, uint16[3] semanticVersion); /** * @notice Create new version for repo * @param _newSemanticVersion Semantic version for new repo version * @param _contractAddress address for smart contract logic for version (if set to 0, it uses last versions' contractAddress) * @param _contentURI External URI for fetching new version's content */ function newVersion( uint16[3] _newSemanticVersion, address _contractAddress, bytes _contentURI ) auth(CREATE_VERSION_ROLE) public { address contractAddress = _contractAddress; if (versions.length > 0) { Version storage lastVersion = versions[versions.length - 1]; require(isValidBump(lastVersion.semanticVersion, _newSemanticVersion)); if (contractAddress == 0) { contractAddress = lastVersion.contractAddress; } // Only allows smart contract change on major version bumps require(lastVersion.contractAddress == contractAddress || _newSemanticVersion[0] > lastVersion.semanticVersion[0]); } else { versions.length += 1; uint16[3] memory zeroVersion; require(isValidBump(zeroVersion, _newSemanticVersion)); } uint versionId = versions.push(Version(_newSemanticVersion, contractAddress, _contentURI)) - 1; versionIdForSemantic[semanticVersionHash(_newSemanticVersion)] = versionId; latestVersionIdForContract[contractAddress] = versionId; NewVersion(versionId, _newSemanticVersion); } function getLatest() public view returns (uint16[3] semanticVersion, address contractAddress, bytes contentURI) { return getByVersionId(versions.length - 1); } function getLatestForContractAddress(address _contractAddress) public view returns (uint16[3] semanticVersion, address contractAddress, bytes contentURI) { return getByVersionId(latestVersionIdForContract[_contractAddress]); } function getBySemanticVersion(uint16[3] _semanticVersion) public view returns (uint16[3] semanticVersion, address contractAddress, bytes contentURI) { return getByVersionId(versionIdForSemantic[semanticVersionHash(_semanticVersion)]); } function getByVersionId(uint _versionId) public view returns (uint16[3] semanticVersion, address contractAddress, bytes contentURI) { require(_versionId > 0); Version storage version = versions[_versionId]; return (version.semanticVersion, version.contractAddress, version.contentURI); } function getVersionsCount() public view returns (uint256) { uint256 len = versions.length; return len > 0 ? len - 1 : 0; } function isValidBump(uint16[3] _oldVersion, uint16[3] _newVersion) public pure returns (bool) { bool hasBumped; uint i = 0; while (i < 3) { if (hasBumped) { if (_newVersion[i] != 0) { return false; } } else if (_newVersion[i] != _oldVersion[i]) { if (_oldVersion[i] > _newVersion[i] || _newVersion[i] - _oldVersion[i] != 1) { return false; } hasBumped = true; } i++; } return hasBumped; } function semanticVersionHash(uint16[3] version) internal pure returns (bytes32) { return keccak256(version[0], version[1], version[2]); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"_semanticVersion","type":"uint16[3]"}],"name":"getBySemanticVersion","outputs":[{"name":"semanticVersion","type":"uint16[3]"},{"name":"contractAddress","type":"address"},{"name":"contentURI","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EVMSCRIPT_REGISTRY_APP_ID","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newSemanticVersion","type":"uint16[3]"},{"name":"_contractAddress","type":"address"},{"name":"_contentURI","type":"bytes"}],"name":"newVersion","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_versionId","type":"uint256"}],"name":"getByVersionId","outputs":[{"name":"semanticVersion","type":"uint16[3]"},{"name":"contractAddress","type":"address"},{"name":"contentURI","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"appId","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getInitializationBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_contractAddress","type":"address"}],"name":"getLatestForContractAddress","outputs":[{"name":"semanticVersion","type":"uint16[3]"},{"name":"contractAddress","type":"address"},{"name":"contentURI","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EVMSCRIPT_REGISTRY_APP","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_sender","type":"address"},{"name":"_role","type":"bytes32"},{"name":"params","type":"uint256[]"}],"name":"canPerform","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_oldVersion","type":"uint16[3]"},{"name":"_newVersion","type":"uint16[3]"}],"name":"isValidBump","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"CREATE_VERSION_ROLE","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getLatest","outputs":[{"name":"semanticVersion","type":"uint16[3]"},{"name":"contractAddress","type":"address"},{"name":"contentURI","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getVersionsCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"kernel","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_script","type":"bytes"}],"name":"getExecutor","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"versionId","type":"uint256"},{"indexed":false,"name":"semanticVersion","type":"uint16[3]"}],"name":"NewVersion","type":"event"}]
Contract Creation Code
6060604052341561000f57600080fd5b6110cb8061001e6000396000f3006060604052600436106100c15763ffffffff60e060020a6000350416634c3ba26881146100c657806360b1e057146101b957806373053410146101de578063737e7d4f1461026757806380afdea81461027d5780638b3dd749146102905780639a6fe50c146102a35780639b3fdf4c146102c2578063a1658fad146102d5578063a7bdf16e1461034c578063aa61924a146103ad578063c36af460146103c0578063c6d48e0d146103d3578063d4aae0c4146103e6578063f92a79ff14610415575b600080fd5b34156100d157600080fd5b6100ff6004606481600360606040519081016040529190828260608082843750939550610466945050505050565b6040518084606080838360005b8381101561012457808201518382015260200161010c565b5050505090500183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561017c578082015183820152602001610164565b50505050905090810190601f1680156101a95780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34156101c457600080fd5b6101cc6104ab565b60405190815260200160405180910390f35b34156101e957600080fd5b61026560046064816003606060405190810160405291908282606080828437509395600160a060020a038635169590945060408082019450602091820135860180830194503592508291601f8301819004810201905190810160405281815292919060208401838380828437509496506104df95505050505050565b005b341561027257600080fd5b6100ff60043561079d565b341561028857600080fd5b6101cc6108ff565b341561029b57600080fd5b6101cc610905565b34156102ae57600080fd5b6100ff600160a060020a036004351661090c565b34156102cd57600080fd5b6101cc610940565b34156102e057600080fd5b61033860048035600160a060020a03169060248035919060649060443590810190830135806020808202016040519081016040528093929190818152602001838360200280828437509496506109bc95505050505050565b604051901515815260200160405180910390f35b341561035757600080fd5b610338600460648160036060604051908101604052919082826060808284378201915050505050919080606001906003806020026040519081016040529190828260608082843750939550610afa945050505050565b34156103b857600080fd5b6101cc610be9565b34156103cb57600080fd5b6100ff610bee565b34156103de57600080fd5b6101cc610c1b565b34156103f157600080fd5b6103f9610c3b565b604051600160a060020a03909116815260200160405180910390f35b341561042057600080fd5b6103f960046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610c4a95505050505050565b61046e610e51565b6000610478610e79565b61049e6065600061048887610d26565b815260208101919091526040016000205461079d565b9250925092509193909250565b6040517f65766d7265672e617261676f6e706d2e657468000000000000000000000000008152601301604051809103902081565b6000806104ea610e51565b600060016105173382846040518059106105015750595b90808252806020026020018201604052506109bc565b151561052257600080fd5b606454879550600090111561061a5760648054600019810190811061054357fe5b906000526020600020906003020193506105b784600001600380602002604051908101604052919060608301826000855b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610574579050505050505089610afa565b15156105c257600080fd5b600160a060020a03851615156105e3576001840154600160a060020a031694505b6001840154600160a060020a038681169116148061060a5750835461ffff16885161ffff16115b151561061557600080fd5b610642565b606480546001019061062c9082610e8b565b506106378389610afa565b151561064257600080fd5b6001606480548060010182816106589190610e8b565b91600052602060002090600302016000606060405190810160409081528d8252600160a060020a038b16602083015281018b9052919050815161069e9082906003610ebc565b50602082015160018201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556040820151816002019080516106ed929160200190610f4e565b50505003915081606560006107018b610d26565b81526020808201929092526040908101600090812093909355600160a060020a03881683526066909152908190208390557e3aea8189d1a0aa3ebdb05219cd4c2a663166706e949e9d6e8aa63718ca43fd9083908a90518281526020810182606080838360005b83811015610780578082015183820152602001610768565b505050509050019250505060405180910390a15050505050505050565b6107a5610e51565b60006107af610e79565b60008085116107bd57600080fd5b60648054869081106107cb57fe5b90600052602060002090600302019050806000018160010160009054906101000a9004600160a060020a03168260020182600380602002604051908101604052919060608301826000855b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161081657905050505050509250808054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108ea5780601f106108bf576101008083540402835291602001916108ea565b820191906000526020600020905b8154815290600101906020018083116108cd57829003601f168201915b50505050509050935093509350509193909250565b60015481565b6003545b90565b610914610e51565b600061091e610e79565b600160a060020a03841660009081526066602052604090205461049e9061079d565b6040517f6170700000000000000000000000000000000000000000000000000000000000815260030160405180910390206040517f65766d7265672e617261676f6e706d2e6574680000000000000000000000000081526013016040518091039020604051918252602082015260409081019051809103902081565b60006109c6610e79565b600080845111156109df57835160200290508391508082525b600054600160a060020a03161580610af0575060008054600160a060020a03169063fdef91069088903090899087906040516020015260405160e060020a63ffffffff8716028152600160a060020a0380861660048301908152908516602483015260448201849052608060648301908152909160840183818151815260200191508051906020019080838360005b83811015610a86578082015183820152602001610a6e565b50505050905090810190601f168015610ab35780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1515610ad457600080fd5b6102c65a03f11515610ae557600080fd5b505050604051805190505b9695505050505050565b600080805b6003811015610bdd578115610b3657838160038110610b1a57fe5b602002015161ffff1615610b315760009250610be1565b610bd5565b848160038110610b4257fe5b602002015161ffff16848260038110610b5757fe5b602002015161ffff1614610bd557838160038110610b7157fe5b602002015161ffff16858260038110610b8657fe5b602002015161ffff161180610bc25750848160038110610ba257fe5b6020020151848260038110610bb357fe5b60200201510361ffff16600114155b15610bd05760009250610be1565b600191505b600101610aff565b8192505b505092915050565b600181565b610bf6610e51565b6000610c00610e79565b606454610c10906000190161079d565b925092509250909192565b606454600090818111610c2f576000610c34565b600181035b91505b5090565b600054600160a060020a031681565b6000610c54610d85565b600160a060020a03166304bf2a7f836000604051602001526040518263ffffffff1660e060020a0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610cbb578082015183820152602001610ca3565b50505050905090810190601f168015610ce85780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1515610d0657600080fd5b6102c65a03f11515610d1757600080fd5b50505060405180519392505050565b60008151602083015160408401516040517e0100000000000000000000000000000000000000000000000000000000000061ffff9485168102825292841683026002820152921602600482015260060160405180910390209050919050565b600080548190600160a060020a03166342c71f1d6040517f6170700000000000000000000000000000000000000000000000000000000000815260030160405180910390206040517f65766d7265672e617261676f6e706d2e6574680000000000000000000000000081526013016040518091039020604051918252602082015260409081019051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610d0657600080fd5b60606040519081016040526003815b600081526000199091019060200181610e605790505090565b60206040519081016040526000815290565b815481835581811511610eb757600302816003028360005260206000209182019101610eb79190610fc8565b505050565b600183019183908215610f425791602002820160005b83821115610f1257835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610ed2565b8015610f405782816101000a81549061ffff0219169055600201602081600101049283019260010302610f12565b505b50610c37929150611018565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610f8f57805160ff1916838001178555610fbc565b82800160010185558215610fbc579182015b82811115610fbc578251825591602001919060010190610fa1565b50610c37929150611037565b61090991905b80821115610c37576000610fe28282611051565b60018201805473ffffffffffffffffffffffffffffffffffffffff1916905561100f600283016000611058565b50600301610fce565b61090991905b80821115610c3757805461ffff1916815560010161101e565b61090991905b80821115610c37576000815560010161103d565b5060009055565b50805460018160011615610100020316600290046000825580601f1061107e575061109c565b601f01602090049060005260206000209081019061109c9190611037565b505600a165627a7a72305820a2b61a46ff68487c6958b69dee15c17471d446f8b15b7e9777da4a8630da028e0029
Deployed Bytecode
0x6060604052600436106100c15763ffffffff60e060020a6000350416634c3ba26881146100c657806360b1e057146101b957806373053410146101de578063737e7d4f1461026757806380afdea81461027d5780638b3dd749146102905780639a6fe50c146102a35780639b3fdf4c146102c2578063a1658fad146102d5578063a7bdf16e1461034c578063aa61924a146103ad578063c36af460146103c0578063c6d48e0d146103d3578063d4aae0c4146103e6578063f92a79ff14610415575b600080fd5b34156100d157600080fd5b6100ff6004606481600360606040519081016040529190828260608082843750939550610466945050505050565b6040518084606080838360005b8381101561012457808201518382015260200161010c565b5050505090500183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561017c578082015183820152602001610164565b50505050905090810190601f1680156101a95780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34156101c457600080fd5b6101cc6104ab565b60405190815260200160405180910390f35b34156101e957600080fd5b61026560046064816003606060405190810160405291908282606080828437509395600160a060020a038635169590945060408082019450602091820135860180830194503592508291601f8301819004810201905190810160405281815292919060208401838380828437509496506104df95505050505050565b005b341561027257600080fd5b6100ff60043561079d565b341561028857600080fd5b6101cc6108ff565b341561029b57600080fd5b6101cc610905565b34156102ae57600080fd5b6100ff600160a060020a036004351661090c565b34156102cd57600080fd5b6101cc610940565b34156102e057600080fd5b61033860048035600160a060020a03169060248035919060649060443590810190830135806020808202016040519081016040528093929190818152602001838360200280828437509496506109bc95505050505050565b604051901515815260200160405180910390f35b341561035757600080fd5b610338600460648160036060604051908101604052919082826060808284378201915050505050919080606001906003806020026040519081016040529190828260608082843750939550610afa945050505050565b34156103b857600080fd5b6101cc610be9565b34156103cb57600080fd5b6100ff610bee565b34156103de57600080fd5b6101cc610c1b565b34156103f157600080fd5b6103f9610c3b565b604051600160a060020a03909116815260200160405180910390f35b341561042057600080fd5b6103f960046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610c4a95505050505050565b61046e610e51565b6000610478610e79565b61049e6065600061048887610d26565b815260208101919091526040016000205461079d565b9250925092509193909250565b6040517f65766d7265672e617261676f6e706d2e657468000000000000000000000000008152601301604051809103902081565b6000806104ea610e51565b600060016105173382846040518059106105015750595b90808252806020026020018201604052506109bc565b151561052257600080fd5b606454879550600090111561061a5760648054600019810190811061054357fe5b906000526020600020906003020193506105b784600001600380602002604051908101604052919060608301826000855b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610574579050505050505089610afa565b15156105c257600080fd5b600160a060020a03851615156105e3576001840154600160a060020a031694505b6001840154600160a060020a038681169116148061060a5750835461ffff16885161ffff16115b151561061557600080fd5b610642565b606480546001019061062c9082610e8b565b506106378389610afa565b151561064257600080fd5b6001606480548060010182816106589190610e8b565b91600052602060002090600302016000606060405190810160409081528d8252600160a060020a038b16602083015281018b9052919050815161069e9082906003610ebc565b50602082015160018201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556040820151816002019080516106ed929160200190610f4e565b50505003915081606560006107018b610d26565b81526020808201929092526040908101600090812093909355600160a060020a03881683526066909152908190208390557e3aea8189d1a0aa3ebdb05219cd4c2a663166706e949e9d6e8aa63718ca43fd9083908a90518281526020810182606080838360005b83811015610780578082015183820152602001610768565b505050509050019250505060405180910390a15050505050505050565b6107a5610e51565b60006107af610e79565b60008085116107bd57600080fd5b60648054869081106107cb57fe5b90600052602060002090600302019050806000018160010160009054906101000a9004600160a060020a03168260020182600380602002604051908101604052919060608301826000855b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161081657905050505050509250808054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108ea5780601f106108bf576101008083540402835291602001916108ea565b820191906000526020600020905b8154815290600101906020018083116108cd57829003601f168201915b50505050509050935093509350509193909250565b60015481565b6003545b90565b610914610e51565b600061091e610e79565b600160a060020a03841660009081526066602052604090205461049e9061079d565b6040517f6170700000000000000000000000000000000000000000000000000000000000815260030160405180910390206040517f65766d7265672e617261676f6e706d2e6574680000000000000000000000000081526013016040518091039020604051918252602082015260409081019051809103902081565b60006109c6610e79565b600080845111156109df57835160200290508391508082525b600054600160a060020a03161580610af0575060008054600160a060020a03169063fdef91069088903090899087906040516020015260405160e060020a63ffffffff8716028152600160a060020a0380861660048301908152908516602483015260448201849052608060648301908152909160840183818151815260200191508051906020019080838360005b83811015610a86578082015183820152602001610a6e565b50505050905090810190601f168015610ab35780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1515610ad457600080fd5b6102c65a03f11515610ae557600080fd5b505050604051805190505b9695505050505050565b600080805b6003811015610bdd578115610b3657838160038110610b1a57fe5b602002015161ffff1615610b315760009250610be1565b610bd5565b848160038110610b4257fe5b602002015161ffff16848260038110610b5757fe5b602002015161ffff1614610bd557838160038110610b7157fe5b602002015161ffff16858260038110610b8657fe5b602002015161ffff161180610bc25750848160038110610ba257fe5b6020020151848260038110610bb357fe5b60200201510361ffff16600114155b15610bd05760009250610be1565b600191505b600101610aff565b8192505b505092915050565b600181565b610bf6610e51565b6000610c00610e79565b606454610c10906000190161079d565b925092509250909192565b606454600090818111610c2f576000610c34565b600181035b91505b5090565b600054600160a060020a031681565b6000610c54610d85565b600160a060020a03166304bf2a7f836000604051602001526040518263ffffffff1660e060020a0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610cbb578082015183820152602001610ca3565b50505050905090810190601f168015610ce85780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1515610d0657600080fd5b6102c65a03f11515610d1757600080fd5b50505060405180519392505050565b60008151602083015160408401516040517e0100000000000000000000000000000000000000000000000000000000000061ffff9485168102825292841683026002820152921602600482015260060160405180910390209050919050565b600080548190600160a060020a03166342c71f1d6040517f6170700000000000000000000000000000000000000000000000000000000000815260030160405180910390206040517f65766d7265672e617261676f6e706d2e6574680000000000000000000000000081526013016040518091039020604051918252602082015260409081019051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610d0657600080fd5b60606040519081016040526003815b600081526000199091019060200181610e605790505090565b60206040519081016040526000815290565b815481835581811511610eb757600302816003028360005260206000209182019101610eb79190610fc8565b505050565b600183019183908215610f425791602002820160005b83821115610f1257835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610ed2565b8015610f405782816101000a81549061ffff0219169055600201602081600101049283019260010302610f12565b505b50610c37929150611018565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610f8f57805160ff1916838001178555610fbc565b82800160010185558215610fbc579182015b82811115610fbc578251825591602001919060010190610fa1565b50610c37929150611037565b61090991905b80821115610c37576000610fe28282611051565b60018201805473ffffffffffffffffffffffffffffffffffffffff1916905561100f600283016000611058565b50600301610fce565b61090991905b80821115610c3757805461ffff1916815560010161101e565b61090991905b80821115610c37576000815560010161103d565b5060009055565b50805460018160011615610100020316600290046000825580601f1061107e575061109c565b601f01602090049060005260206000209081019061109c9190611037565b505600a165627a7a72305820a2b61a46ff68487c6958b69dee15c17471d446f8b15b7e9777da4a8630da028e0029
Swarm Source
bzzr://a2b61a46ff68487c6958b69dee15c17471d446f8b15b7e9777da4a8630da028e
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 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.