Source Code
Overview
ETH Balance
More Info
ContractCreator
Multichain Info
N/A
Latest 25 from a total of 118 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
Amount
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Self Kiss | 11552368 | 163 days ago | IN | 0 ETH | 0.00001107 | ||||
| Self Kiss | 11552037 | 163 days ago | IN | 0 ETH | 0.00000623 | ||||
| Self Kiss | 11552028 | 163 days ago | IN | 0 ETH | 0.00001573 | ||||
| Self Kiss | 11552004 | 163 days ago | IN | 0 ETH | 0.00001581 | ||||
| Support | 7796121 | 381 days ago | IN | 0 ETH | 0.00000782 | ||||
| Support | 7795948 | 381 days ago | IN | 0 ETH | 0.00000913 | ||||
| Support | 7795197 | 381 days ago | IN | 0 ETH | 0.00000754 | ||||
| Support | 7794567 | 381 days ago | IN | 0 ETH | 0.00000929 | ||||
| Support | 7539808 | 407 days ago | IN | 0 ETH | 0.00000902 | ||||
| Support | 7539140 | 407 days ago | IN | 0 ETH | 0.00001679 | ||||
| Support | 7529747 | 408 days ago | IN | 0 ETH | 0.00000426 | ||||
| Support | 7286748 | 436 days ago | IN | 0 ETH | 0.00320485 | ||||
| Support | 7286720 | 436 days ago | IN | 0 ETH | 0.00320495 | ||||
| Support | 7277687 | 437 days ago | IN | 0 ETH | 0.0032049 | ||||
| Support | 7276805 | 437 days ago | IN | 0 ETH | 0.00320484 | ||||
| Unsupport | 7215436 | 444 days ago | IN | 0 ETH | 0.00000695 | ||||
| Support | 7211209 | 444 days ago | IN | 0 ETH | 0.00001179 | ||||
| Support | 7210837 | 444 days ago | IN | 0 ETH | 0.0000152 | ||||
| Support | 7209031 | 445 days ago | IN | 0 ETH | 0.00001321 | ||||
| Support | 7208744 | 445 days ago | IN | 0 ETH | 0.00001462 | ||||
| Support | 7146368 | 451 days ago | IN | 0 ETH | 0.00001197 | ||||
| Support | 7146365 | 451 days ago | IN | 0 ETH | 0.00001196 | ||||
| Support | 7146363 | 451 days ago | IN | 0 ETH | 0.00001195 | ||||
| Support | 7146362 | 451 days ago | IN | 0 ETH | 0.00001195 | ||||
| Support | 7146359 | 451 days ago | IN | 0 ETH | 0.00001194 |
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | Amount | ||
|---|---|---|---|---|---|---|
| 8923618 | 295 days ago | 0 ETH | ||||
| 7796121 | 381 days ago | 0 ETH | ||||
| 7795948 | 381 days ago | 0 ETH | ||||
| 7795197 | 381 days ago | 0 ETH | ||||
| 7794567 | 381 days ago | 0 ETH | ||||
| 7539808 | 407 days ago | 0 ETH | ||||
| 7539140 | 407 days ago | 0 ETH | ||||
| 7529747 | 408 days ago | 0 ETH | ||||
| 7306874 | 433 days ago | 0 ETH | ||||
| 7306874 | 433 days ago | 0 ETH | ||||
| 7301402 | 434 days ago | 0 ETH | ||||
| 7301402 | 434 days ago | 0 ETH | ||||
| 7301402 | 434 days ago | 0 ETH | ||||
| 7301402 | 434 days ago | 0 ETH | ||||
| 7301402 | 434 days ago | 0 ETH | ||||
| 7301402 | 434 days ago | 0 ETH | ||||
| 7300220 | 434 days ago | 0 ETH | ||||
| 7300220 | 434 days ago | 0 ETH | ||||
| 7286748 | 436 days ago | 0 ETH | ||||
| 7286720 | 436 days ago | 0 ETH | ||||
| 7277687 | 437 days ago | 0 ETH | ||||
| 7276805 | 437 days ago | 0 ETH | ||||
| 7211209 | 444 days ago | 0 ETH | ||||
| 7210837 | 444 days ago | 0 ETH | ||||
| 7209031 | 445 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": {}
}Contract ABI
API[{"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
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.