Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Latest 25 from a total of 87 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Support | 6850956 | 2 days ago | IN | 0 ETH | 0.00034803 | ||||
Support | 6757950 | 9 days ago | IN | 0 ETH | 0.00026034 | ||||
Rely | 6757850 | 9 days ago | IN | 0 ETH | 0.00041254 | ||||
Support | 4990127 | 100 days ago | IN | 0 ETH | 0.00068146 | ||||
Rely | 3336434 | 200 days ago | IN | 0 ETH | 0.03757659 | ||||
Self Kiss | 2947622 | 241 days ago | IN | 0 ETH | 0.00074498 | ||||
Self Kiss | 2947580 | 241 days ago | IN | 0 ETH | 0.00075454 | ||||
Self Kiss | 2947579 | 241 days ago | IN | 0 ETH | 0.00075454 | ||||
Self Kiss | 2947578 | 241 days ago | IN | 0 ETH | 0.00075454 | ||||
Self Kiss | 2947577 | 241 days ago | IN | 0 ETH | 0.00075454 | ||||
Self Kiss | 2947576 | 241 days ago | IN | 0 ETH | 0.00075454 | ||||
Self Kiss | 2947574 | 241 days ago | IN | 0 ETH | 0.00075662 | ||||
Self Kiss | 2947573 | 241 days ago | IN | 0 ETH | 0.00075662 | ||||
Self Kiss | 2947572 | 241 days ago | IN | 0 ETH | 0.00075672 | ||||
Self Kiss | 2947571 | 241 days ago | IN | 0 ETH | 0.00075672 | ||||
Self Kiss | 2947569 | 241 days ago | IN | 0 ETH | 0.00075672 | ||||
Self Kiss | 2947567 | 241 days ago | IN | 0 ETH | 0.00075423 | ||||
Self Kiss | 2947566 | 241 days ago | IN | 0 ETH | 0.00075414 | ||||
Self Kiss | 2947564 | 241 days ago | IN | 0 ETH | 0.00075423 | ||||
Self Kiss | 2947563 | 241 days ago | IN | 0 ETH | 0.00075423 | ||||
Self Kiss | 2947562 | 241 days ago | IN | 0 ETH | 0.00075404 | ||||
Self Kiss | 2947560 | 241 days ago | IN | 0 ETH | 0.00075423 | ||||
Self Kiss | 2947559 | 241 days ago | IN | 0 ETH | 0.00075423 | ||||
Self Kiss | 2947558 | 241 days ago | IN | 0 ETH | 0.00075423 | ||||
Self Kiss | 2947557 | 241 days ago | IN | 0 ETH | 0.00075414 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
6850956 | 2 days ago | 0 ETH | ||||
6757950 | 9 days ago | 0 ETH | ||||
5470951 | 83 days ago | 0 ETH | ||||
5470951 | 83 days ago | 0 ETH | ||||
5470951 | 83 days ago | 0 ETH | ||||
5470951 | 83 days ago | 0 ETH | ||||
5470951 | 83 days ago | 0 ETH | ||||
5470951 | 83 days ago | 0 ETH | ||||
5460619 | 84 days ago | 0 ETH | ||||
5460619 | 84 days ago | 0 ETH | ||||
5460619 | 84 days ago | 0 ETH | ||||
5460619 | 84 days ago | 0 ETH | ||||
5460598 | 84 days ago | 0 ETH | ||||
5460598 | 84 days ago | 0 ETH | ||||
5460598 | 84 days ago | 0 ETH | ||||
5460598 | 84 days ago | 0 ETH | ||||
5460190 | 84 days ago | 0 ETH | ||||
5460190 | 84 days ago | 0 ETH | ||||
5460190 | 84 days ago | 0 ETH | ||||
5460190 | 84 days ago | 0 ETH | ||||
4990127 | 100 days ago | 0 ETH | ||||
2947622 | 241 days ago | 0 ETH | ||||
2947580 | 241 days ago | 0 ETH | ||||
2947579 | 241 days ago | 0 ETH | ||||
2947578 | 241 days ago | 0 ETH |
Loading...
Loading
Contract Name:
SelfKisser_1
Compiler Version
v0.8.16+commit.07a7930e
Optimization Enabled:
Yes with 10000 runs
Other Settings:
london EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.16; import {IAuth} from "chronicle-std/auth/IAuth.sol"; import {Auth} from "chronicle-std/auth/Auth.sol"; import {IToll} from "chronicle-std/toll/IToll.sol"; import {ISelfKisser} from "./ISelfKisser.sol"; contract SelfKisser is ISelfKisser, Auth { /// @dev Mapping storing whether address is supported oracle. mapping(address => uint) internal _oracles; /// @dev List of addresses possibly being supported oracles. /// @dev May contain duplicates. /// @dev May contain addresses not being supported oracles anymore. address[] internal _oraclesTouched; /// @dev Whether SelfKisser is dead. uint internal _dead; modifier live() { if (_dead == 1) { revert Dead(); } _; } modifier supported(address oracle) { if (_oracles[oracle] == 0) { revert OracleNotSupported(oracle); } _; } constructor(address initialAuthed) Auth(initialAuthed) {} // -- User Functionality -- /// @inheritdoc ISelfKisser function selfKiss(address oracle) external { selfKiss(oracle, msg.sender); } /// @inheritdoc ISelfKisser function selfKiss(address oracle, address who) public live supported(oracle) { IToll(oracle).kiss(who); emit SelfKissed(msg.sender, oracle, who); } // -- View Functionality -- /// @inheritdoc ISelfKisser function oracles(address oracle) external view returns (bool) { return _oracles[oracle] == 1; } /// @inheritdoc ISelfKisser function oracles() external view returns (address[] memory) { // Initiate array with upper limit length. address[] memory oraclesList = new address[](_oraclesTouched.length); // Iterate through all possible support oracle. uint ctr; for (uint i; i < oraclesList.length; i++) { // Add address only if still auth'ed. if (_oracles[_oraclesTouched[i]] == 1) { oraclesList[ctr++] = _oraclesTouched[i]; } } // Set length of array to number of oracles actually included. assembly ("memory-safe") { mstore(oraclesList, ctr) } return oraclesList; } /// @inheritdoc ISelfKisser function dead() external view returns (bool) { return _dead == 1; } // -- Auth'ed Functionality -- /// @inheritdoc ISelfKisser function support(address oracle) external live auth { if (_oracles[oracle] == 1) return; require(IAuth(oracle).authed(address(this))); _oracles[oracle] = 1; _oraclesTouched.push(oracle); emit OracleSupported(msg.sender, oracle); } /// @inheritdoc ISelfKisser function unsupport(address oracle) external live auth { if (_oracles[oracle] == 0) return; _oracles[oracle] = 0; emit OracleUnsupported(msg.sender, oracle); } /// @inheritdoc ISelfKisser function kill() external auth { if (_dead == 1) return; _dead = 1; emit Killed(msg.sender); } } /** * @dev Contract overwrite to deploy contract instances with specific naming. * * For more info, see docs/Deployment.md. */ contract SelfKisser_1 is SelfKisser { // @todo ^^^^^^^ Adjust name of SelfKisser instance. constructor(address initialAuthed) SelfKisser(initialAuthed) {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.16; interface IAuth { /// @notice Thrown by protected function if caller not auth'ed. /// @param caller The caller's address. error NotAuthorized(address caller); /// @notice Emitted when auth granted to address. /// @param caller The caller's address. /// @param who The address auth got granted to. event AuthGranted(address indexed caller, address indexed who); /// @notice Emitted when auth renounced from address. /// @param caller The caller's address. /// @param who The address auth got renounced from. event AuthRenounced(address indexed caller, address indexed who); /// @notice Grants address `who` auth. /// @dev Only callable by auth'ed address. /// @param who The address to grant auth. function rely(address who) external; /// @notice Renounces address `who`'s auth. /// @dev Only callable by auth'ed address. /// @param who The address to renounce auth. function deny(address who) external; /// @notice Returns whether address `who` is auth'ed. /// @param who The address to check. /// @return True if `who` is auth'ed, false otherwise. function authed(address who) external view returns (bool); /// @notice Returns full list of addresses granted auth. /// @dev May contain duplicates. /// @return List of addresses granted auth. function authed() external view returns (address[] memory); /// @notice Returns whether address `who` is auth'ed. /// @custom:deprecated Use `authed(address)(bool)` instead. /// @param who The address to check. /// @return 1 if `who` is auth'ed, 0 otherwise. function wards(address who) external view returns (uint); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.16; import {IAuth} from "./IAuth.sol"; /** * @title Auth Module * * @dev The `Auth` contract module provides a basic access control mechanism, * where a set of addresses are granted access to protected functions. * These addresses are said to be _auth'ed_. * * Initially, the address given as constructor argument is the only address * auth'ed. Through the `rely(address)` and `deny(address)` functions, * auth'ed callers are able to grant/renounce auth to/from addresses. * * This module is used through inheritance. It will make available the * modifier `auth`, which can be applied to functions to restrict their * use to only auth'ed callers. */ abstract contract Auth is IAuth { /// @dev Mapping storing whether address is auth'ed. /// @custom:invariant Image of mapping is {0, 1}. /// ∀x ∊ Address: _wards[x] ∊ {0, 1} /// @custom:invariant Only address given as constructor argument is authenticated after deployment. /// deploy(initialAuthed) → (∀x ∊ Address: _wards[x] == 1 → x == initialAuthed) /// @custom:invariant Only functions `rely` and `deny` may mutate the mapping's state. /// ∀x ∊ Address: preTx(_wards[x]) != postTx(_wards[x]) /// → (msg.sig == "rely" ∨ msg.sig == "deny") /// @custom:invariant Mapping's state may only be mutated by authenticated caller. /// ∀x ∊ Address: preTx(_wards[x]) != postTx(_wards[x]) → _wards[msg.sender] = 1 mapping(address => uint) private _wards; /// @dev List of addresses possibly being auth'ed. /// @dev May contain duplicates. /// @dev May contain addresses not being auth'ed anymore. /// @custom:invariant Every address being auth'ed once is element of the list. /// ∀x ∊ Address: authed(x) -> x ∊ _wardsTouched address[] private _wardsTouched; /// @dev Ensures caller is auth'ed. modifier auth() { assembly ("memory-safe") { // Compute slot of _wards[msg.sender]. mstore(0x00, caller()) mstore(0x20, _wards.slot) let slot := keccak256(0x00, 0x40) // Revert if caller not auth'ed. let isAuthed := sload(slot) if iszero(isAuthed) { // Store selector of `NotAuthorized(address)`. mstore(0x00, 0x4a0bfec1) // Store msg.sender. mstore(0x20, caller()) // Revert with (offset, size). revert(0x1c, 0x24) } } _; } constructor(address initialAuthed) { _wards[initialAuthed] = 1; _wardsTouched.push(initialAuthed); // Note to use address(0) as caller to indicate address was auth'ed // during deployment. emit AuthGranted(address(0), initialAuthed); } /// @inheritdoc IAuth function rely(address who) external auth { if (_wards[who] == 1) return; _wards[who] = 1; _wardsTouched.push(who); emit AuthGranted(msg.sender, who); } /// @inheritdoc IAuth function deny(address who) external auth { if (_wards[who] == 0) return; _wards[who] = 0; emit AuthRenounced(msg.sender, who); } /// @inheritdoc IAuth function authed(address who) public view returns (bool) { return _wards[who] == 1; } /// @inheritdoc IAuth /// @custom:invariant Only contains auth'ed addresses. /// ∀x ∊ authed(): _wards[x] == 1 /// @custom:invariant Contains all auth'ed addresses. /// ∀x ∊ Address: _wards[x] == 1 → x ∊ authed() function authed() public view returns (address[] memory) { // Initiate array with upper limit length. address[] memory wardsList = new address[](_wardsTouched.length); // Iterate through all possible auth'ed addresses. uint ctr; for (uint i; i < wardsList.length; i++) { // Add address only if still auth'ed. if (_wards[_wardsTouched[i]] == 1) { wardsList[ctr++] = _wardsTouched[i]; } } // Set length of array to number of auth'ed addresses actually included. assembly ("memory-safe") { mstore(wardsList, ctr) } return wardsList; } /// @inheritdoc IAuth function wards(address who) public view returns (uint) { return _wards[who]; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.16; interface IToll { /// @notice Thrown by protected function if caller not tolled. /// @param caller The caller's address. error NotTolled(address caller); /// @notice Emitted when toll granted to address. /// @param caller The caller's address. /// @param who The address toll got granted to. event TollGranted(address indexed caller, address indexed who); /// @notice Emitted when toll renounced from address. /// @param caller The caller's address. /// @param who The address toll got renounced from. event TollRenounced(address indexed caller, address indexed who); /// @notice Grants address `who` toll. /// @dev Only callable by auth'ed address. /// @param who The address to grant toll. function kiss(address who) external; /// @notice Renounces address `who`'s toll. /// @dev Only callable by auth'ed address. /// @param who The address to renounce toll. function diss(address who) external; /// @notice Returns whether address `who` is tolled. /// @param who The address to check. /// @return True if `who` is tolled, false otherwise. function tolled(address who) external view returns (bool); /// @notice Returns full list of addresses tolled. /// @dev May contain duplicates. /// @return List of addresses tolled. function tolled() external view returns (address[] memory); /// @notice Returns whether address `who` is tolled. /// @custom:deprecated Use `tolled(address)(bool)` instead. /// @param who The address to check. /// @return 1 if `who` is tolled, 0 otherwise. function bud(address who) external view returns (uint); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.16; interface ISelfKisser { /// @notice Thrown if SelfKisser dead. error Dead(); /// @notice Thrown if oracle not supported. /// @param oracle The oracle not supported. error OracleNotSupported(address oracle); /// @notice Emitted when SelfKisser killed. /// @param caller The caller's address. event Killed(address indexed caller); /// @notice Emitted when support for oracle added. /// @param caller The caller's address. /// @param oracle The oracle that support got added. event OracleSupported(address indexed caller, address indexed oracle); /// @notice Emitted when support for oracle removed. /// @param caller The caller's address. /// @param oracle The oracle that support got removed. event OracleUnsupported(address indexed caller, address indexed oracle); /// @notice Emitted when new address kissed on an oracle. /// @param caller The caller's address. /// @param oracle The oracle on which address `who` got kissed on. /// @param who The address that got kissed on oracle `oracle`. event SelfKissed( address indexed caller, address indexed oracle, address indexed who ); // -- User Functionality -- /// @notice Kisses caller on oracle `oracle`. /// /// @dev Reverts if oracle `oracle` not supported. /// @dev Reverts if SelfKisser dead. /// /// @param oracle The oracle to kiss the caller on. function selfKiss(address oracle) external; /// @notice Kisses address `who` on oracle `oracle`. /// /// @dev Reverts if oracle `oracle` not supported. /// @dev Reverts if SelfKisser dead. /// /// @param oracle The oracle to kiss address `who` on. /// @param who The address to kiss on oracle `oracle`. function selfKiss(address oracle, address who) external; // -- View Functionality -- /// @notice Returns whether oracle `oracle` is supported. /// @param oracle The oracle to check whether its supported. /// @return True if oracle supported, false otherwise. function oracles(address oracle) external view returns (bool); /// @notice Returns the list of supported oracles. /// /// @dev May contain duplicates. /// /// @return List of supported oracles. function oracles() external view returns (address[] memory); /// @notice Returns whether SelfKisser is dead. /// @return True if SelfKisser dead, false otherwise. function dead() external view returns (bool); // -- Auth'ed Functionality -- /// @notice Adds support for oracle `oracle`. /// @dev Only callable by auth'ed address. /// /// @dev Reverts if SelfKisser not auth'ed on oracle `oracle`. /// @dev Reverts if SelfKisser dead. /// /// @param oracle The oracle to add support for. function support(address oracle) external; /// @notice Removes support for oracle `oracle`. /// @dev Only callable by auth'ed address. /// /// @dev Reverts if SelfKisser dead. /// /// @param oracle The oracle to remove support for. function unsupport(address oracle) external; /// @notice Kills the contract. /// @dev Only callable by auth'ed address. function kill() external; }
{ "remappings": [ "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "chronicle-std/=lib/chronicle-std/src/", "@script/chronicle-std/=lib/chronicle-std/script/", "lib/chronicle-std:src/=lib/chronicle-std/src/", "lib/chronicle-std:ds-test/=lib/chronicle-std/lib/forge-std/lib/ds-test/src/", "lib/chronicle-std:forge-std/=lib/chronicle-std/lib/forge-std/src/", "greenhouse/=lib/greenhouse/src/" ], "optimizer": { "enabled": true, "runs": 10000 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "viaIR": true, "libraries": {} }
[{"inputs":[{"internalType":"address","name":"initialAuthed","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Dead","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"NotAuthorized","type":"error"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"name":"OracleNotSupported","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"who","type":"address"}],"name":"AuthGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"who","type":"address"}],"name":"AuthRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"}],"name":"Killed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"oracle","type":"address"}],"name":"OracleSupported","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"oracle","type":"address"}],"name":"OracleUnsupported","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"oracle","type":"address"},{"indexed":true,"internalType":"address","name":"who","type":"address"}],"name":"SelfKissed","type":"event"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"authed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"authed","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dead","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"kill","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"oracles","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"name":"oracles","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"rely","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"},{"internalType":"address","name":"who","type":"address"}],"name":"selfKiss","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"name":"selfKiss","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"name":"support","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"name":"unsupport","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60803461011757601f610dc138819003918201601f19168301916001600160401b0383118484101761011c5780849260209460405283398101031261011757516001600160a01b03811690819003610117576000908082528160205260016040832055600154680100000000000000008110156101035760018101806001558110156100ef57600183527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b03191682179055604051917fe31c10b0adbedd0c6e5d024286c6eeead7761e65a67608dcf0b67604c0da7e2f8184a3610c8e90816101338239f35b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b83526041600452602483fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604081815260048036101561001557600080fd5b600092833560e01c9081630fce3415146106ac57508063224242ca146105eb5780632857373a1461053a57806336cf7c87146105165780633fc9d621146104d857806341c0e1b51461049d578063622920e71461035857806365fae35e146103245780639c52a7f1146102f0578063addd5099146102a9578063bf353dbb14610266578063c529a6791461012e5763e660cc08146100b257600080fd5b3461012a57602060031936011261012a576100cb6106f0565b90600181541461010357503383528260205281832054156100f2576100ef90610a89565b51f35b634a0bfec18352336020526024601cfd5b82517f82c4767b000000000000000000000000000000000000000000000000000000008152fd5b8280fd5b50903461012a57602060031936011261012a576101496106f0565b600183541461023f5773ffffffffffffffffffffffffffffffffffffffff169182845260026020528184205415610211578390833b1561020d578251907ff29c29c40000000000000000000000000000000000000000000000000000000082523390820152818160248183885af18015610203576101ef575b505051903390337f3b6e7e6ff858d016edf22112c8596ecf8f0a55591a3b84c35b993e0de85a0c848585a4f35b6101f89061092e565b61012a5782386101c2565b83513d84823e3d90fd5b5080fd5b8260249251917f780e2f9b000000000000000000000000000000000000000000000000000000008352820152fd5b50517f82c4767b000000000000000000000000000000000000000000000000000000008152fd5b50503461020d57602060031936011261020d578060209273ffffffffffffffffffffffffffffffffffffffff61029a6106f0565b16815280845220549051908152f35b50503461020d57602060031936011261020d5760018160209373ffffffffffffffffffffffffffffffffffffffff6102df6106f0565b168152600285522054149051908152f35b50503461020d57602060031936011261020d5761030b6106f0565b3383528260205281832054156100f2576100ef906108d2565b50503461020d57602060031936011261020d5761033f6106f0565b3383528260205281832054156100f2576100ef90610806565b50903461012a578060031936011261012a576103726106f0565b906024359173ffffffffffffffffffffffffffffffffffffffff908184168094036104995760018554146104715716928385526002602052818520541561044357833b1561043f57828251917ff29c29c4000000000000000000000000000000000000000000000000000000008352820152848160248183885af1801561043557610422575b505191337f3b6e7e6ff858d016edf22112c8596ecf8f0a55591a3b84c35b993e0de85a0c848585a4f35b61042e9094919461092e565b92386103f8565b82513d87823e3d90fd5b8480fd5b8360249251917f780e2f9b000000000000000000000000000000000000000000000000000000008352820152fd5b8483517f82c4767b000000000000000000000000000000000000000000000000000000008152fd5b8580fd5b50503461020d578160031936011261020d573382528160205280822054156104c7576100ef610c1d565b634a0bfec18252336020526024601cfd5b503461012a57602060031936011261012a576104f26106f0565b90600181541461010357503383528260205281832054156100f2576100ef90610bbf565b50913461053757806003193601126105375750600160209254149051908152f35b80fd5b828434610537578060031936011261053757600361055881546109ca565b9082835b83518110156105d757806105726105a8926107cf565b905473ffffffffffffffffffffffffffffffffffffffff91861b1c811687526002602052878720546001146105ad575b50610a19565b61055c565b6105b6826107cf565b905490861b1c166105d06105c985610a19565b9487610a75565b52876105a2565b8184528551806105e78682610718565b0390f35b82843461053757806003193601126105375760019161060a83546109ca565b918080855b610627575b50506105e7935082525191829182610718565b84518110156106a757906106768261063f8894610769565b73ffffffffffffffffffffffffffffffffffffffff809254600392831b1c1685528460205285888620541461067d575b5050610a19565b909161060f565b61068683610769565b9054911b1c1661069f61069887610a19565b9689610a75565b52888061066f565b610614565b8490843461012a57602060031936011261012a5760019060209373ffffffffffffffffffffffffffffffffffffffff6106e36106f0565b1681528085522054148152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071357565b600080fd5b6020908160408183019282815285518094520193019160005b82811061073f575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101610731565b6001548110156107a05760016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60190600090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6003548110156107a05760036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0190600090565b73ffffffffffffffffffffffffffffffffffffffff809116906000908282528160205260016040832054146108cd5760016040832055600154680100000000000000008110156108a057610861816001869301600155610769565b909283549160031b90811b9283911b169119161790557fe31c10b0adbedd0c6e5d024286c6eeead7761e65a67608dcf0b67604c0da7e2f3391604051a3565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b505050565b73ffffffffffffffffffffffffffffffffffffffff1660008181528060205260408120541561092a578060408120557f58466e5837b54e559819c9ba8a5d7c77c97c985d1aabf4bdc5f41069fa5d65a03391604051a3565b5050565b67ffffffffffffffff811161094257604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761094257604052565b67ffffffffffffffff81116109425760051b60200190565b906109d4826109b2565b6109e16040519182610971565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610a0f82946109b2565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a465760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80518210156107a05760209160051b010190565b73ffffffffffffffffffffffffffffffffffffffff809116906000908282526020600281526001604084205414610bb9576040517f0fce34150000000000000000000000000000000000000000000000000000000081523060048201528181602481885afa908115610bae578491610b74575b501561012a576002908484525260016040832055600354680100000000000000008110156108a057610b358160018693016003556107cf565b909283549160031b90811b9283911b169119161790557ff9a6af7aa3879f5a9964b1481b22056157ddbb8925898017746cfbeed83e441a3391604051a3565b90508181813d8311610ba7575b610b8b8183610971565b81010312610ba357518015158103610ba35738610afc565b8380fd5b503d610b81565b6040513d86823e3d90fd5b50505050565b73ffffffffffffffffffffffffffffffffffffffff1680600052600260205260406000205415610c1a5760006040812055337fbb48b0c0bb76b83499fed9cde51f300f35b5a5d5e0576acc2a3ebf1481dcf22a6000604051a3565b50565b600160045414610c56576001600455337f4b0bc4f25f8d0b92d2e12b686ba96cd75e4e69325e6cf7b1f3119d14eaf2cbdf6000604051a2565b56fea2646970667358221220211972534154f6714e338b12ee30c3cbc797b2f8daed83baca6dd096af2f4eb764736f6c6343000810003300000000000000000000000039abd7819e5632fa06d2ecbba45dca5c90687ee3
Deployed Bytecode
0x6080604081815260048036101561001557600080fd5b600092833560e01c9081630fce3415146106ac57508063224242ca146105eb5780632857373a1461053a57806336cf7c87146105165780633fc9d621146104d857806341c0e1b51461049d578063622920e71461035857806365fae35e146103245780639c52a7f1146102f0578063addd5099146102a9578063bf353dbb14610266578063c529a6791461012e5763e660cc08146100b257600080fd5b3461012a57602060031936011261012a576100cb6106f0565b90600181541461010357503383528260205281832054156100f2576100ef90610a89565b51f35b634a0bfec18352336020526024601cfd5b82517f82c4767b000000000000000000000000000000000000000000000000000000008152fd5b8280fd5b50903461012a57602060031936011261012a576101496106f0565b600183541461023f5773ffffffffffffffffffffffffffffffffffffffff169182845260026020528184205415610211578390833b1561020d578251907ff29c29c40000000000000000000000000000000000000000000000000000000082523390820152818160248183885af18015610203576101ef575b505051903390337f3b6e7e6ff858d016edf22112c8596ecf8f0a55591a3b84c35b993e0de85a0c848585a4f35b6101f89061092e565b61012a5782386101c2565b83513d84823e3d90fd5b5080fd5b8260249251917f780e2f9b000000000000000000000000000000000000000000000000000000008352820152fd5b50517f82c4767b000000000000000000000000000000000000000000000000000000008152fd5b50503461020d57602060031936011261020d578060209273ffffffffffffffffffffffffffffffffffffffff61029a6106f0565b16815280845220549051908152f35b50503461020d57602060031936011261020d5760018160209373ffffffffffffffffffffffffffffffffffffffff6102df6106f0565b168152600285522054149051908152f35b50503461020d57602060031936011261020d5761030b6106f0565b3383528260205281832054156100f2576100ef906108d2565b50503461020d57602060031936011261020d5761033f6106f0565b3383528260205281832054156100f2576100ef90610806565b50903461012a578060031936011261012a576103726106f0565b906024359173ffffffffffffffffffffffffffffffffffffffff908184168094036104995760018554146104715716928385526002602052818520541561044357833b1561043f57828251917ff29c29c4000000000000000000000000000000000000000000000000000000008352820152848160248183885af1801561043557610422575b505191337f3b6e7e6ff858d016edf22112c8596ecf8f0a55591a3b84c35b993e0de85a0c848585a4f35b61042e9094919461092e565b92386103f8565b82513d87823e3d90fd5b8480fd5b8360249251917f780e2f9b000000000000000000000000000000000000000000000000000000008352820152fd5b8483517f82c4767b000000000000000000000000000000000000000000000000000000008152fd5b8580fd5b50503461020d578160031936011261020d573382528160205280822054156104c7576100ef610c1d565b634a0bfec18252336020526024601cfd5b503461012a57602060031936011261012a576104f26106f0565b90600181541461010357503383528260205281832054156100f2576100ef90610bbf565b50913461053757806003193601126105375750600160209254149051908152f35b80fd5b828434610537578060031936011261053757600361055881546109ca565b9082835b83518110156105d757806105726105a8926107cf565b905473ffffffffffffffffffffffffffffffffffffffff91861b1c811687526002602052878720546001146105ad575b50610a19565b61055c565b6105b6826107cf565b905490861b1c166105d06105c985610a19565b9487610a75565b52876105a2565b8184528551806105e78682610718565b0390f35b82843461053757806003193601126105375760019161060a83546109ca565b918080855b610627575b50506105e7935082525191829182610718565b84518110156106a757906106768261063f8894610769565b73ffffffffffffffffffffffffffffffffffffffff809254600392831b1c1685528460205285888620541461067d575b5050610a19565b909161060f565b61068683610769565b9054911b1c1661069f61069887610a19565b9689610a75565b52888061066f565b610614565b8490843461012a57602060031936011261012a5760019060209373ffffffffffffffffffffffffffffffffffffffff6106e36106f0565b1681528085522054148152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071357565b600080fd5b6020908160408183019282815285518094520193019160005b82811061073f575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101610731565b6001548110156107a05760016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60190600090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6003548110156107a05760036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0190600090565b73ffffffffffffffffffffffffffffffffffffffff809116906000908282528160205260016040832054146108cd5760016040832055600154680100000000000000008110156108a057610861816001869301600155610769565b909283549160031b90811b9283911b169119161790557fe31c10b0adbedd0c6e5d024286c6eeead7761e65a67608dcf0b67604c0da7e2f3391604051a3565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b505050565b73ffffffffffffffffffffffffffffffffffffffff1660008181528060205260408120541561092a578060408120557f58466e5837b54e559819c9ba8a5d7c77c97c985d1aabf4bdc5f41069fa5d65a03391604051a3565b5050565b67ffffffffffffffff811161094257604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761094257604052565b67ffffffffffffffff81116109425760051b60200190565b906109d4826109b2565b6109e16040519182610971565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610a0f82946109b2565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a465760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80518210156107a05760209160051b010190565b73ffffffffffffffffffffffffffffffffffffffff809116906000908282526020600281526001604084205414610bb9576040517f0fce34150000000000000000000000000000000000000000000000000000000081523060048201528181602481885afa908115610bae578491610b74575b501561012a576002908484525260016040832055600354680100000000000000008110156108a057610b358160018693016003556107cf565b909283549160031b90811b9283911b169119161790557ff9a6af7aa3879f5a9964b1481b22056157ddbb8925898017746cfbeed83e441a3391604051a3565b90508181813d8311610ba7575b610b8b8183610971565b81010312610ba357518015158103610ba35738610afc565b8380fd5b503d610b81565b6040513d86823e3d90fd5b50505050565b73ffffffffffffffffffffffffffffffffffffffff1680600052600260205260406000205415610c1a5760006040812055337fbb48b0c0bb76b83499fed9cde51f300f35b5a5d5e0576acc2a3ebf1481dcf22a6000604051a3565b50565b600160045414610c56576001600455337f4b0bc4f25f8d0b92d2e12b686ba96cd75e4e69325e6cf7b1f3119d14eaf2cbdf6000604051a2565b56fea2646970667358221220211972534154f6714e338b12ee30c3cbc797b2f8daed83baca6dd096af2f4eb764736f6c63430008100033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000039abd7819e5632fa06d2ecbba45dca5c90687ee3
-----Decoded View---------------
Arg [0] : initialAuthed (address): 0x39aBD7819E5632Fa06D2ECBba45Dca5c90687EE3
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000039abd7819e5632fa06d2ecbba45dca5c90687ee3
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.