ETH Price: $2,465.92 (+0.69%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Add Spender135071772021-10-28 17:48:501103 days ago1635443330IN
0xc982eE89...257bB1E9B
0 ETH0.01641763196.56422827
Add Selector135071632021-10-28 17:44:141103 days ago1635443054IN
0xc982eE89...257bB1E9B
0 ETH0.02043118203.01662796
Add Selector130558722021-08-19 13:07:061174 days ago1629378426IN
0xc982eE89...257bB1E9B
0 ETH0.0023337235.1
Add Selector130558722021-08-19 13:07:061174 days ago1629378426IN
0xc982eE89...257bB1E9B
0 ETH0.0035319735.1
Add Spender With...130558612021-08-19 13:04:531174 days ago1629378293IN
0xc982eE89...257bB1E9B
0 ETH0.002898235.1
Add Selector128638482021-07-20 14:04:361204 days ago1626789876IN
0xc982eE89...257bB1E9B
0 ETH0.0020611231
Add Selector128638452021-07-20 14:04:081204 days ago1626789848IN
0xc982eE89...257bB1E9B
0 ETH0.0031197731
Accept Ownership125505512021-06-01 19:41:181252 days ago1622576478IN
0xc982eE89...257bB1E9B
0 ETH0.0008685733.33
Transfer Ownersh...125504832021-06-01 19:27:111252 days ago1622575631IN
0xc982eE89...257bB1E9B
0 ETH0.002165240
Add Selectors An...123180242021-04-26 20:01:591288 days ago1619467319IN
0xc982eE89...257bB1E9B
0 ETH0.02055488170.1
Add Selectors An...122987902021-04-23 21:01:441291 days ago1619211704IN
0xc982eE89...257bB1E9B
0 ETH0.02055488170.1
Add Selectors An...122874482021-04-22 2:48:041293 days ago1619059684IN
0xc982eE89...257bB1E9B
0 ETH0.17374405170.1
Add Selectors An...122874222021-04-22 2:41:261293 days ago1619059286IN
0xc982eE89...257bB1E9B
0 ETH0.4277326170.1
Add Selectors An...122873582021-04-22 2:28:111293 days ago1619058491IN
0xc982eE89...257bB1E9B
0 ETH0.57343635170.1
Add Selectors An...122873372021-04-22 2:24:061293 days ago1619058246IN
0xc982eE89...257bB1E9B
0 ETH0.45601734170.1
Add Selectors An...122871942021-04-22 1:51:451293 days ago1619056305IN
0xc982eE89...257bB1E9B
0 ETH0.06771051170.1
Add Selectors An...122870812021-04-22 1:24:481293 days ago1619054688IN
0xc982eE89...257bB1E9B
0 ETH0.12365912170.1
Add Selectors An...122870642021-04-22 1:19:321293 days ago1619054372IN
0xc982eE89...257bB1E9B
0 ETH0.30577056170.1
Add Spender With...122860922021-04-21 21:52:161293 days ago1619041936IN
0xc982eE89...257bB1E9B
0 ETH0.01445215145
Add Selector122860892021-04-21 21:51:431293 days ago1619041903IN
0xc982eE89...257bB1E9B
0 ETH0.01459251145
Add Spender122860682021-04-21 21:47:311293 days ago1619041651IN
0xc982eE89...257bB1E9B
0 ETH0.01459033145
Add Selector122860572021-04-21 21:45:281293 days ago1619041528IN
0xc982eE89...257bB1E9B
0 ETH0.01459251145
Add Selector122860452021-04-21 21:42:301293 days ago1619041350IN
0xc982eE89...257bB1E9B
0 ETH0.00964076145
Add Selector122860402021-04-21 21:40:171293 days ago1619041217IN
0xc982eE89...257bB1E9B
0 ETH0.01459251145
0x60a06040122855862021-04-21 19:58:541293 days ago1619035134IN
 Create: DharmaActionRegistry
0 ETH0.02468079128.7

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DharmaActionRegistry

Compiler Version
v0.8.3+commit.8d00100c

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2021-04-21
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.3;

interface IDharmaActionRegistry {
  function initialize() external;
}

/**
 * @title DharmaActionRegistry
 * @author cf
 * @notice This contract delegates all logic, to an implementation contract
 * whose address is held by the upgrade-beacon specified at initialization.
 */
contract DharmaActionRegistry {
  // Declare upgrade beacon address as a immutable (i.e. not in contract storage).
  // The value is set at deployment in the constructor.
  address immutable _UPGRADE_BEACON;

  /**
   * @notice In the constructor, set the upgrade-beacon address.
   * implementation set on the upgrade beacon, supplying initialization calldata
   * as a constructor argument. The deployment will revert and pass along the
   * revert reason in the event that this initialization delegatecall reverts.
   * @param upgradeBeaconAddress address to set as the upgrade-beacon that
   * holds the implementation contract
   */
  constructor(address upgradeBeaconAddress) {
    // Ensure upgrade-beacon is specified
    require(upgradeBeaconAddress != address(0), "Must specify an upgrade-beacon address.");

    // Ensure that the upgrade-beacon contract has code via extcodesize.
    uint256 upgradeBeaconSize;
    assembly { upgradeBeaconSize := extcodesize(upgradeBeaconAddress) }
    require(upgradeBeaconSize > 0, "upgrade-beacon must have contract code.");

    _UPGRADE_BEACON = upgradeBeaconAddress;

    // retrieve implementation to initialize - this is the same logic as _implementation
    (bool ok, bytes memory returnData) = upgradeBeaconAddress.staticcall("");

    // Revert and pass along revert message if call to upgrade beacon reverts.
    if(!ok) {
      assembly {
        returndatacopy(0, 0, returndatasize())
        revert(0, returndatasize())
      }
    }

    // Get the implementation to the address returned from the upgrade beacon.
    address implementation = abi.decode(returnData, (address));

    // Delegatecall into the implementation, supplying initialization calldata.
    (ok, ) = implementation.delegatecall(abi.encodeWithSelector(IDharmaActionRegistry.initialize.selector));

    // Revert and include revert data if delegatecall to implementation reverts.
    if (!ok) {
      assembly {
        returndatacopy(0, 0, returndatasize())
        revert(0, returndatasize())
      }
    }
  }

  /**
   * @notice In the fallback, delegate execution to the implementation set on
   * the upgrade beacon.
   */
  fallback() external {
    // Delegate execution to implementation contract provided by upgrade beacon.
    _delegate(_implementation());
  }

  /**
   * @notice Private view function to get the current implementation from the
   * upgrade beacon. This is accomplished via a staticcall to the beacon with no
   * data, and the beacon will return an abi-encoded implementation address.
   * @return implementation address of the implementation.
   */
  function _implementation() private view returns (address implementation) {
    // Get the current implementation address from the upgrade beacon.
    (bool ok, bytes memory returnData) = _UPGRADE_BEACON.staticcall("");

    // Revert and pass along revert message if call to upgrade beacon reverts.
    require(ok, string(returnData));

    // Set the implementation to the address returned from the upgrade beacon.
    implementation = abi.decode(returnData, (address));
  }

  /**
   * @notice Private function that delegates execution to an implementation
   * contract. This is a low level function that doesn't return to its internal
   * call site. It will return whatever is returned by the implementation to the
   * external caller, reverting and returning the revert data if implementation
   * reverts.
   * @param implementation address to delegate.
   */
  function _delegate(address implementation) private {
    assembly {
    // Copy msg.data. We take full control of memory in this inline assembly
    // block because it will not return to Solidity code. We overwrite the
    // Solidity scratch pad at memory position 0.
      calldatacopy(0, 0, calldatasize())

    // Delegatecall to the implementation, supplying calldata and gas.
    // Out and outsize are set to zero - instead, use the return buffer.
      let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)

    // Copy the returned data from the return buffer.
      returndatacopy(0, 0, returndatasize())

      switch result
      // Delegatecall returns 0 on error.
      case 0 { revert(0, returndatasize()) }
      default { return(0, returndatasize()) }
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"upgradeBeaconAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"nonpayable","type":"fallback"}]

60a060405234801561001057600080fd5b5060405161046f38038061046f83398101604081905261002f91610224565b6001600160a01b03811661009a5760405162461bcd60e51b815260206004820152602760248201527f4d757374207370656369667920616e20757067726164652d626561636f6e206160448201526632323932b9b99760c91b60648201526084015b60405180910390fd5b803b806100f95760405162461bcd60e51b815260206004820152602760248201527f757067726164652d626561636f6e206d757374206861766520636f6e747261636044820152663a1031b7b2329760c91b6064820152608401610091565b606082901b6001600160601b03191660805260405160009081906001600160a01b0385169082818181855afa9150503d8060008114610154576040519150601f19603f3d011682016040523d82523d6000602084013e610159565b606091505b50915091508161016d573d6000803e3d6000fd5b6000818060200190518101906101839190610224565b60408051600481526024810182526020810180516001600160e01b031663204a7f0760e21b17905290519192506001600160a01b038316916101c59190610247565b600060405180830381855af49150503d8060008114610200576040519150601f19603f3d011682016040523d82523d6000602084013e610205565b606091505b5050809350508261021a573d6000803e3d6000fd5b5050505050610298565b600060208284031215610235578081fd5b815161024081610280565b9392505050565b60008251815b81811015610267576020818601810151858301520161024d565b818111156102755782828501525b509190910192915050565b6001600160a01b038116811461029557600080fd5b50565b60805160601c6101ba6102b56000396000602a01526101ba6000f3fe608060405234801561001057600080fd5b5061002161001c610023565b6100df565b005b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316604051600060405180830381855afa9150503d8060008114610090576040519150601f19603f3d011682016040523d82523d6000602084013e610095565b606091505b50915091508181906100c35760405162461bcd60e51b81526004016100ba9190610131565b60405180910390fd5b50808060200190518101906100d89190610103565b9250505090565b3660008037600080366000845af43d6000803e8080156100fe573d6000f35b3d6000fd5b600060208284031215610114578081fd5b81516001600160a01b038116811461012a578182fd5b9392505050565b6000602080835283518082850152825b8181101561015d57858101830151858201604001528201610141565b8181111561016e5783604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220e71331354c871e1192fbf8b92d2d4cf056b8c76bf855141855bf2ae0c23b6fd264736f6c63430008030033000000000000000000000000d2ed0f115d750887d4e5c6c1e881d8bf70a1ec33

Deployed Bytecode

0x608060405234801561001057600080fd5b5061002161001c610023565b6100df565b005b60008060007f000000000000000000000000d2ed0f115d750887d4e5c6c1e881d8bf70a1ec336001600160a01b0316604051600060405180830381855afa9150503d8060008114610090576040519150601f19603f3d011682016040523d82523d6000602084013e610095565b606091505b50915091508181906100c35760405162461bcd60e51b81526004016100ba9190610131565b60405180910390fd5b50808060200190518101906100d89190610103565b9250505090565b3660008037600080366000845af43d6000803e8080156100fe573d6000f35b3d6000fd5b600060208284031215610114578081fd5b81516001600160a01b038116811461012a578182fd5b9392505050565b6000602080835283518082850152825b8181101561015d57858101830151858201604001528201610141565b8181111561016e5783604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220e71331354c871e1192fbf8b92d2d4cf056b8c76bf855141855bf2ae0c23b6fd264736f6c63430008030033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000d2ed0f115d750887d4e5c6c1e881d8bf70a1ec33

-----Decoded View---------------
Arg [0] : upgradeBeaconAddress (address): 0xd2eD0F115D750887D4E5C6C1E881D8Bf70A1ec33

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d2ed0f115d750887d4e5c6c1e881d8bf70a1ec33


Deployed Bytecode Sourcemap

347:4389:0:-:0;;;;;;;;;;;;;2672:28;2682:17;:15;:17::i;:::-;2672:9;:28::i;:::-;347:4389;3025:484;3074:22;3178:7;3187:23;3214:15;-1:-1:-1;;;;;3214:26:0;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3177:67;;;;3341:2;3352:10;3333:31;;;;;-1:-1:-1;;;3333:31:0;;;;;;;;:::i;:::-;;;;;;;;;;3481:10;3470:33;;;;;;;;;;;;:::i;:::-;3453:50;;3025:484;;;:::o;3914:819::-;4214:14;4211:1;4208;4195:34;4457:1;4454;4438:14;4435:1;4419:14;4412:5;4399:60;4545:16;4542:1;4539;4524:38;4579:6;4636:38;;;;4702:16;4699:1;4692:27;4636:38;4655:16;4652:1;4645:27;14:318:1;;145:2;133:9;124:7;120:23;116:32;113:2;;;166:6;158;151:22;113:2;197:16;;-1:-1:-1;;;;;242:31:1;;232:42;;222:2;;293:6;285;278:22;222:2;321:5;103:229;-1:-1:-1;;;103:229:1:o;547:603::-;;688:2;717;706:9;699:21;749:6;743:13;792:6;787:2;776:9;772:18;765:34;817:4;830:140;844:6;841:1;838:13;830:140;;;939:14;;;935:23;;929:30;905:17;;;924:2;901:26;894:66;859:10;;830:140;;;988:6;985:1;982:13;979:2;;;1058:4;1053:2;1044:6;1033:9;1029:22;1025:31;1018:45;979:2;-1:-1:-1;1134:2:1;1113:15;-1:-1:-1;;1109:29:1;1094:45;;;;1141:2;1090:54;;668:482;-1:-1:-1;;;668:482:1:o

Swarm Source

ipfs://e71331354c871e1192fbf8b92d2d4cf056b8c76bf855141855bf2ae0c23b6fd2

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.