ETH Price: $3,359.86 (+0.36%)

Contract

0xfc00C80b0000007F73004edB00094caD80626d8D
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
New Smart Wallet142318062022-02-18 18:51:121008 days ago1645210272IN
Dharma: Smart Wallet Factory V1
0 ETH0.01935223113.32735436
New Smart Wallet142312802022-02-18 16:54:361008 days ago1645203276IN
Dharma: Smart Wallet Factory V1
0 ETH0.01966198115.14126841
New Smart Wallet142310092022-02-18 15:55:251008 days ago1645199725IN
Dharma: Smart Wallet Factory V1
0 ETH0.02557449149.76517084
New Smart Wallet142289342022-02-18 8:17:581009 days ago1645172278IN
Dharma: Smart Wallet Factory V1
0 ETH0.02062056120.75475523
New Smart Wallet142284072022-02-18 6:17:031009 days ago1645165023IN
Dharma: Smart Wallet Factory V1
0 ETH0.0087122351.01913724
New Smart Wallet142284062022-02-18 6:16:011009 days ago1645164961IN
Dharma: Smart Wallet Factory V1
0 ETH0.0077828245.57647542
New Smart Wallet142281082022-02-18 5:11:181009 days ago1645161078IN
Dharma: Smart Wallet Factory V1
0 ETH0.0087973351.51748601
New Smart Wallet142261442022-02-17 21:44:141009 days ago1645134254IN
Dharma: Smart Wallet Factory V1
0 ETH0.0167563298.12561474
New Smart Wallet142259142022-02-17 20:56:401009 days ago1645131400IN
Dharma: Smart Wallet Factory V1
0 ETH0.0154247190.33400379
New Smart Wallet142254212022-02-17 19:02:071009 days ago1645124527IN
Dharma: Smart Wallet Factory V1
0 ETH0.01799575105.38380239
New Smart Wallet142253742022-02-17 18:51:071009 days ago1645123867IN
Dharma: Smart Wallet Factory V1
0 ETH0.01854871108.62191905
New Smart Wallet142243702022-02-17 15:16:131009 days ago1645110973IN
Dharma: Smart Wallet Factory V1
0 ETH0.01746134102.25424943
New Smart Wallet142238692022-02-17 13:19:041009 days ago1645103944IN
Dharma: Smart Wallet Factory V1
0 ETH0.0123865372.53596478
New Smart Wallet142206612022-02-17 1:29:341010 days ago1645061374IN
Dharma: Smart Wallet Factory V1
0 ETH0.0126485874.07057664
New Smart Wallet142204042022-02-17 0:31:271010 days ago1645057887IN
Dharma: Smart Wallet Factory V1
0 ETH0.0128294975.12998787
New Smart Wallet142198082022-02-16 22:15:441010 days ago1645049744IN
Dharma: Smart Wallet Factory V1
0 ETH0.01733951101.54083942
New Smart Wallet142190552022-02-16 19:28:211010 days ago1645039701IN
Dharma: Smart Wallet Factory V1
0 ETH0.0153264489.75219063
New Smart Wallet142184712022-02-16 17:23:351010 days ago1645032215IN
Dharma: Smart Wallet Factory V1
0 ETH0.016138494.51372038
New Smart Wallet142150542022-02-16 4:29:171011 days ago1644985757IN
Dharma: Smart Wallet Factory V1
0 ETH0.0152941689.56315666
New Smart Wallet142146482022-02-16 3:00:381011 days ago1644980438IN
Dharma: Smart Wallet Factory V1
0 ETH0.0096978156.79073681
New Smart Wallet142136662022-02-15 23:23:081011 days ago1644967388IN
Dharma: Smart Wallet Factory V1
0 ETH0.03128889183.22886624
New Smart Wallet142085502022-02-15 4:21:121012 days ago1644898872IN
Dharma: Smart Wallet Factory V1
0 ETH0.0057948433.93483725
New Smart Wallet142082362022-02-15 3:17:531012 days ago1644895073IN
Dharma: Smart Wallet Factory V1
0 ETH0.0080724647.27263158
New Smart Wallet142070202022-02-14 22:49:271012 days ago1644878967IN
Dharma: Smart Wallet Factory V1
0 ETH0.0110636664.78918297
New Smart Wallet141908612022-02-12 11:07:231015 days ago1644664043IN
Dharma: Smart Wallet Factory V1
0 ETH0.008166947.82567528
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
210544662024-10-27 4:06:4727 days ago1730002007
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
204881162024-08-09 2:40:47106 days ago1723171247
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
203527222024-07-21 5:08:47125 days ago1721538527
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
201091682024-06-17 4:37:11159 days ago1718599031
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
178271192023-08-02 11:49:23479 days ago1690976963
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
177240272023-07-19 1:39:11493 days ago1689730751
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
169077472023-03-25 23:28:59608 days ago1679786939
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
168829992023-03-22 12:01:23611 days ago1679486483
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
168357882023-03-15 20:52:23618 days ago1678913543
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
168092232023-03-12 3:16:47622 days ago1678591007
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
167320472023-03-01 6:39:35633 days ago1677652775
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
167235132023-02-28 1:51:59634 days ago1677549119
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
167085642023-02-25 23:30:35636 days ago1677367835
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
166574882023-02-18 19:07:23643 days ago1676747243
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
165652132023-02-05 21:16:59656 days ago1675631819
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
164977442023-01-27 11:06:35666 days ago1674817595
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
163280602023-01-03 18:30:35689 days ago1672770635
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
161993952022-12-16 19:37:35707 days ago1671219455
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
160791362022-11-30 0:10:59724 days ago1669767059
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
159578632022-11-13 1:37:11741 days ago1668303431
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
159136492022-11-06 21:24:59747 days ago1667769899
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
158188522022-10-24 15:28:23760 days ago1666625303
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
158140122022-10-23 23:12:23761 days ago1666566743
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
157547872022-10-15 16:43:23769 days ago1665852203
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
155997572022-09-24 0:53:23791 days ago1663980803
Dharma: Smart Wallet Factory V1
 Contract Creation0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DharmaSmartWalletFactoryV1

Compiler Version
v0.5.11+commit.c082d0b4

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2019-09-18
*/

pragma solidity 0.5.11; // optimization runs: 200, evm version: petersburg


interface DharmaSmartWalletFactoryV1Interface {
  // Fires an event when a new smart wallet is deployed and initialized.
  event SmartWalletDeployed(address wallet, address userSigningKey);

  function newSmartWallet(
    address userSigningKey
  ) external returns (address wallet);
  
  function getNextSmartWallet(
    address userSigningKey
  ) external view returns (address wallet);
}


interface DharmaSmartWalletInitializer {
  function initialize(address userSigningKey) external;
}


/**
 * @title UpgradeBeaconProxyV1
 * @author 0age
 * @notice This contract delegates all logic, including initialization, to an
 * implementation contract specified by a hard-coded "upgrade beacon" contract.
 * Note that this implementation can be reduced in size by stripping out the
 * metadata hash, or even more significantly by using a minimal upgrade beacon
 * proxy implemented using raw EVM opcodes.
 */
contract UpgradeBeaconProxyV1 {
  // Set upgrade beacon address as a constant (i.e. not in contract storage).
  address private constant _UPGRADE_BEACON = address(
    0x000000000026750c571ce882B17016557279ADaa
  );

  /**
   * @notice In the constructor, perform initialization via delegatecall to the
   * 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 initializationCalldata Calldata to supply when performing the
   * initialization delegatecall.
   */
  constructor(bytes memory initializationCalldata) public payable {
    // Delegatecall into the implementation, supplying initialization calldata.
    (bool ok, ) = _implementation().delegatecall(initializationCalldata);
    
    // 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.
   */
  function () external payable {
    // 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) }
    }
  }
}


/**
 * @title DharmaSmartWalletFactoryV1
 * @author 0age
 * @notice This contract deploys new Dharma Smart Wallet instances as "Upgrade
 * Beacon" proxies that reference a shared implementation contract specified by
 * the Dharma Upgrade Beacon contract.
 */
contract DharmaSmartWalletFactoryV1 is DharmaSmartWalletFactoryV1Interface {
  // Use Dharma Smart Wallet initializer to construct initialization calldata.
  DharmaSmartWalletInitializer private _INITIALIZER;

  /**
   * @notice Deploy a new smart wallet address using the provided user signing
   * key.
   * @param userSigningKey address The user signing key, supplied as a
   * constructor argument.
   * @return The address of the new smart wallet.
   */
  function newSmartWallet(
    address userSigningKey
  ) external returns (address wallet) {
    // Get initialization calldata from initialize selector & user signing key.
    bytes memory initializationCalldata = abi.encodeWithSelector(
      _INITIALIZER.initialize.selector,
      userSigningKey
    );
    
    // Initialize and deploy new user smart wallet as an Upgrade Beacon proxy.
    wallet = _deployUpgradeBeaconProxyInstance(initializationCalldata);

    // Emit an event to signal the creation of the new smart wallet.
    emit SmartWalletDeployed(wallet, userSigningKey);
  }

  /**
   * @notice View function to find the address of the next smart wallet address
   * that will be deployed for a given user signing key. Note that a new value
   * will be returned if a particular user signing key has been used before.
   * @param userSigningKey address The user signing key, supplied as a
   * constructor argument.
   * @return The future address of the next smart wallet.
   */
  function getNextSmartWallet(
    address userSigningKey
  ) external view returns (address wallet) {
    // Get initialization calldata from initialize selector & user signing key.
    bytes memory initializationCalldata = abi.encodeWithSelector(
      _INITIALIZER.initialize.selector,
      userSigningKey
    );
    
    // Determine the user's smart wallet address based on the user signing key.
    wallet = _computeNextAddress(initializationCalldata);
  }

  /**
   * @notice Private function to deploy an upgrade beacon proxy via `CREATE2`.
   * @param initializationCalldata bytes The calldata that will be supplied to
   * the `DELEGATECALL` from the deployed contract to the implementation set on
   * the upgrade beacon during contract creation.
   * @return The address of the newly-deployed upgrade beacon proxy.
   */
  function _deployUpgradeBeaconProxyInstance(
    bytes memory initializationCalldata
  ) private returns (address upgradeBeaconProxyInstance) {
    // Place creation code and constructor args of new proxy instance in memory.
    bytes memory initCode = abi.encodePacked(
      type(UpgradeBeaconProxyV1).creationCode,
      abi.encode(initializationCalldata)
    );

    // Get salt to use during deployment using the supplied initialization code.
    (uint256 salt, ) = _getSaltAndTarget(initCode);

    // Deploy the new upgrade beacon proxy contract using `CREATE2`.
    assembly {
      let encoded_data := add(0x20, initCode) // load initialization code.
      let encoded_size := mload(initCode)     // load the init code's length.
      upgradeBeaconProxyInstance := create2(  // call `CREATE2` w/ 4 arguments.
        callvalue,                            // forward any supplied endowment.
        encoded_data,                         // pass in initialization code.
        encoded_size,                         // pass in init code's length.
        salt                                  // pass in the salt value.
      )

      // Pass along failure message and revert if contract deployment fails.
      if iszero(upgradeBeaconProxyInstance) {
        returndatacopy(0, 0, returndatasize)
        revert(0, returndatasize)
      }
    }
  }

  /**
   * @notice Private view function for finding the address of the next upgrade
   * beacon proxy that will be deployed, given a particular initialization
   * calldata payload.
   * @param initializationCalldata bytes The calldata that will be supplied to
   * the `DELEGATECALL` from the deployed contract to the implementation set on
   * the upgrade beacon during contract creation.
   * @return The address of the next upgrade beacon proxy contract with the
   * given initialization calldata.
   */
  function _computeNextAddress(
    bytes memory initializationCalldata
  ) private view returns (address target) {
    // Place creation code and constructor args of the proxy instance in memory.
    bytes memory initCode = abi.encodePacked(
      type(UpgradeBeaconProxyV1).creationCode,
      abi.encode(initializationCalldata)
    );

    // Get target address using the constructed initialization code.
    (, target) = _getSaltAndTarget(initCode);
  }

  /**
   * @notice Private function for determining the salt and the target deployment
   * address for the next deployed contract (using `CREATE2`) based on the
   * contract creation code.
   */
  function _getSaltAndTarget(
    bytes memory initCode
  ) private view returns (uint256 nonce, address target) {
    // Get the keccak256 hash of the init code for address derivation.
    bytes32 initCodeHash = keccak256(initCode);

    // Set the initial nonce to be provided when constructing the salt.
    nonce = 0;
    
    // Declare variable for code size of derived address.
    uint256 codeSize;

    // Loop until an contract deployment address with no code has been found.
    while (true) {
      target = address(            // derive the target deployment address.
        uint160(                   // downcast to match the address type.
          uint256(                 // cast to uint to truncate upper digits.
            keccak256(             // compute CREATE2 hash using 4 inputs.
              abi.encodePacked(    // pack all inputs to the hash together.
                bytes1(0xff),      // pass in the control character.
                address(this),     // pass in the address of this contract.
                nonce,              // pass in the salt from above.
                initCodeHash       // pass in hash of contract creation code.
              )
            )
          )
        )
      );

      // Determine if a contract is already deployed to the target address.
      assembly { codeSize := extcodesize(target) }

      // Exit the loop if no contract is deployed to the target address.
      if (codeSize == 0) {
        break;
      }

      // Otherwise, increment the nonce and derive a new salt.
      nonce++;
    }
  }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"internalType":"address","name":"userSigningKey","type":"address"}],"name":"newSmartWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userSigningKey","type":"address"}],"name":"getNextSmartWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"address","name":"userSigningKey","type":"address"}],"name":"SmartWalletDeployed","type":"event"}]

608060405234801561001057600080fd5b50610988806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063285e7bfd1461003b578063e8dd05f21461007d575b600080fd5b6100616004803603602081101561005157600080fd5b50356001600160a01b03166100a3565b604080516001600160a01b039092168252519081900360200190f35b6100616004803603602081101561009357600080fd5b50356001600160a01b0316610140565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b031663189acdbd60e31b1790526000906100f281610196565b604080516001600160a01b0380841682528616602082015281519294507f6e60d84846384a1994833ed675b0a0f76bef64943304debf6e42a9706d1a7dd7929081900390910190a150919050565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b031663189acdbd60e31b17905260009061018f81610324565b9392505050565b60006060604051806020016101aa90610504565b6020820181038252601f19601f82011660405250836040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040526040516020018083805190602001908083835b602083106102725780518252601f199092019160209182019101610253565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106102ba5780518252601f19909201916020918201910161029b565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905060006102fc82610490565b50905081602001825182818334f594508461031b573d6000803e3d6000fd5b50505050919050565b600060606040518060200161033890610504565b6020820181038252601f19601f82011660405250836040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561038d578181015183820152602001610375565b50505050905090810190601f1680156103ba5780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040526040516020018083805190602001908083835b602083106104005780518252601f1990920191602091820191016103e1565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106104485780518252601f199092019160209182019101610429565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905061048881610490565b949350505050565b805160208201206000908190815b50604080516001600160f81b03196020808301919091523060601b602183015260358201869052605580830185905283518084039091018152607590920190925280519101209150813b806104f2576104fd565b60019093019261049e565b5050915091565b610442806105128339019056fe60806040526040516104423803806104428339818101604052602081101561002657600080fd5b810190808051604051939291908464010000000082111561004657600080fd5b90830190602082018581111561005b57600080fd5b825164010000000081118282018810171561007557600080fd5b82525081516020918201929091019080838360005b838110156100a257818101518382015260200161008a565b50505050905090810190601f1680156100cf5780820380516001836020036101000a031916815260200191505b5060405250505060006100e661019e60201b60201c565b6001600160a01b0316826040518082805190602001908083835b6020831061011f5780518252601f199092019160209182019101610100565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461017f576040519150601f19603f3d011682016040523d82523d6000602084013e610184565b606091505b5050905080610197573d6000803e3d6000fd5b50506102be565b60405160009081906060906e26750c571ce882b17016557279adaa9083818181855afa9150503d80600081146101f0576040519150601f19603f3d011682016040523d82523d6000602084013e6101f5565b606091505b509150915081819061029f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561026457818101518382015260200161024c565b50505050905090810190601f1680156102915780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508080602001905160208110156102b557600080fd5b50519392505050565b610175806102cd6000396000f3fe608060405261001461000f610016565b61011c565b005b60405160009081906060906e26750c571ce882b17016557279adaa9083818181855afa9150503d8060008114610068576040519150601f19603f3d011682016040523d82523d6000602084013e61006d565b606091505b50915091508181906100fd5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156100c25781810151838201526020016100aa565b50505050905090810190601f1680156100ef5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5080806020019051602081101561011357600080fd5b50519392505050565b3660008037600080366000845af43d6000803e80801561013b573d6000f35b3d6000fdfea265627a7a7231582020202020202055706772616465426561636f6e50726f7879563120202020202064736f6c634300050b0032a265627a7a72315820202020446861726d61536d61727457616c6c6574466163746f7279312020202064736f6c634300050b0032

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063285e7bfd1461003b578063e8dd05f21461007d575b600080fd5b6100616004803603602081101561005157600080fd5b50356001600160a01b03166100a3565b604080516001600160a01b039092168252519081900360200190f35b6100616004803603602081101561009357600080fd5b50356001600160a01b0316610140565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b031663189acdbd60e31b1790526000906100f281610196565b604080516001600160a01b0380841682528616602082015281519294507f6e60d84846384a1994833ed675b0a0f76bef64943304debf6e42a9706d1a7dd7929081900390910190a150919050565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b031663189acdbd60e31b17905260009061018f81610324565b9392505050565b60006060604051806020016101aa90610504565b6020820181038252601f19601f82011660405250836040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040526040516020018083805190602001908083835b602083106102725780518252601f199092019160209182019101610253565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106102ba5780518252601f19909201916020918201910161029b565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905060006102fc82610490565b50905081602001825182818334f594508461031b573d6000803e3d6000fd5b50505050919050565b600060606040518060200161033890610504565b6020820181038252601f19601f82011660405250836040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561038d578181015183820152602001610375565b50505050905090810190601f1680156103ba5780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040526040516020018083805190602001908083835b602083106104005780518252601f1990920191602091820191016103e1565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106104485780518252601f199092019160209182019101610429565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905061048881610490565b949350505050565b805160208201206000908190815b50604080516001600160f81b03196020808301919091523060601b602183015260358201869052605580830185905283518084039091018152607590920190925280519101209150813b806104f2576104fd565b60019093019261049e565b5050915091565b610442806105128339019056fe60806040526040516104423803806104428339818101604052602081101561002657600080fd5b810190808051604051939291908464010000000082111561004657600080fd5b90830190602082018581111561005b57600080fd5b825164010000000081118282018810171561007557600080fd5b82525081516020918201929091019080838360005b838110156100a257818101518382015260200161008a565b50505050905090810190601f1680156100cf5780820380516001836020036101000a031916815260200191505b5060405250505060006100e661019e60201b60201c565b6001600160a01b0316826040518082805190602001908083835b6020831061011f5780518252601f199092019160209182019101610100565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461017f576040519150601f19603f3d011682016040523d82523d6000602084013e610184565b606091505b5050905080610197573d6000803e3d6000fd5b50506102be565b60405160009081906060906e26750c571ce882b17016557279adaa9083818181855afa9150503d80600081146101f0576040519150601f19603f3d011682016040523d82523d6000602084013e6101f5565b606091505b509150915081819061029f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561026457818101518382015260200161024c565b50505050905090810190601f1680156102915780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508080602001905160208110156102b557600080fd5b50519392505050565b610175806102cd6000396000f3fe608060405261001461000f610016565b61011c565b005b60405160009081906060906e26750c571ce882b17016557279adaa9083818181855afa9150503d8060008114610068576040519150601f19603f3d011682016040523d82523d6000602084013e61006d565b606091505b50915091508181906100fd5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156100c25781810151838201526020016100aa565b50505050905090810190601f1680156100ef5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5080806020019051602081101561011357600080fd5b50519392505050565b3660008037600080366000845af43d6000803e80801561013b573d6000f35b3d6000fdfea265627a7a7231582020202020202055706772616465426561636f6e50726f7879563120202020202064736f6c634300050b0032a265627a7a72315820202020446861726d61536d61727457616c6c6574466163746f7279312020202064736f6c634300050b0032

Deployed Bytecode Sourcemap

4714:6546:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4714:6546:0;;;;;;;;;;;;;;;;;;;;;;;;5186:603;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5186:603:0;-1:-1:-1;;;;;5186:603:0;;:::i;:::-;;;;-1:-1:-1;;;;;5186:603:0;;;;;;;;;;;;;;6207:472;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6207:472:0;-1:-1:-1;;;;;6207:472:0;;:::i;5186:603::-;5404:93;;;-1:-1:-1;;;;;5404:93:0;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;5404:93:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;5262:14:0;;5599:57;5404:93;5599:33;:57::i;:::-;5740:43;;;-1:-1:-1;;;;;5740:43:0;;;;;;;;;;;;;5590:66;;-1:-1:-1;5740:43:0;;;;;;;;;;;5186:603;;;;:::o;6207:472::-;6434:93;;;-1:-1:-1;;;;;6434:93:0;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;6434:93:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;6292:14:0;;6630:43;6434:93;6630:19;:43::i;:::-;6621:52;6207:472;-1:-1:-1;;;6207:472:0:o;7061:1383::-;7168:34;7293:21;7342:39;;;;;;;;:::i;:::-;41:4:-1;34:5;30:16;25:3;21:26;14:5;7:41;87:2;83:7;78:2;73:3;69:12;65:26;61:2;54:38;7342:39:0;7401:22;7390:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7390:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7390:34:0;;;7317:114;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;7317:114:0;;;;;;;;;;-1:-1:-1;7317:114:0;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7317:114:0;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7317:114:0;;;7293:138;;7523:12;7541:27;7559:8;7541:17;:27::i;:::-;7522:46;;;7695:8;7689:4;7685:19;7767:8;7761:15;8142:4;8064:12;7985;7903:9;7850:365;7820:395;;8313:26;8303:2;;8373:14;8370:1;8367;8352:36;8408:14;8405:1;8398:25;8303:2;7656:783;;;;;;;:::o;8970:466::-;9068:14;9173:21;9222:39;;;;;;;;:::i;:::-;41:4:-1;34:5;30:16;25:3;21:26;14:5;7:41;87:2;83:7;78:2;73:3;69:12;65:26;61:2;54:38;9222:39:0;9281:22;9270:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9270:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9270:34:0;;;9197:114;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;9197:114:0;;;;;;;;;;-1:-1:-1;9197:114:0;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;9197:114:0;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9197:114:0;;;9173:138;;9403:27;9421:8;9403:17;:27::i;:::-;9390:40;8970:466;-1:-1:-1;;;;8970:466:0:o;9644:1613::-;9859:19;;;;;;9726:13;;;;;10145:1107;-1:-1:-1;10481:373:0;;;-1:-1:-1;;;;;;10481:373:0;;;;;;;;10638:4;10481:373;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;10481:373:0;;;;;;;10403:466;;;;;;-1:-1:-1;11013:19:0;;11122:13;11118:45;;11148:5;;11118:45;11237:7;;;;;10145:1107;;;9644:1613;;;;;:::o;4714:6546::-;;;;;;;;:::o

Swarm Source

bzzr://202020446861726d61536d61727457616c6c6574466163746f72793120202020

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  ]
[ 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.