ETH Price: $3,069.30 (-6.95%)
 

Overview

ETH Balance

0.066214689137425316 ETH

Eth Value

$203.23 (@ $3,069.30/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer210870152024-10-31 17:08:1187 days ago1730394491IN
0x2e6e5FED...22b0B2244
0.06621468 ETH0.0003911718.59811952
Distribute210675092024-10-28 23:47:4790 days ago1730159267IN
0x2e6e5FED...22b0B2244
0 ETH0.001567579.20061895
Transfer210310942024-10-23 21:50:5995 days ago1729720259IN
0x2e6e5FED...22b0B2244
0.01570714 ETH0.000158917.555594
Transfer207024972024-09-08 1:05:47141 days ago1725757547IN
0x2e6e5FED...22b0B2244
0.0175191 ETH0.000019680.9360519
Transfer204917952024-08-09 14:59:23170 days ago1723215563IN
0x2e6e5FED...22b0B2244
0.03807591 ETH0.000157747.49994522
Transfer200843782024-06-13 17:25:59227 days ago1718299559IN
0x2e6e5FED...22b0B2244
0.02768571 ETH0.0002839913.50243526
Distribute199410742024-05-24 16:56:35247 days ago1716569795IN
0x2e6e5FED...22b0B2244
0 ETH0.0014366111.79074703
Transfer199109092024-05-20 11:42:23251 days ago1716205343IN
0x2e6e5FED...22b0B2244
0.02643545 ETH0.000157337.48038281
Transfer193135482024-02-26 18:33:35335 days ago1708972415IN
0x2e6e5FED...22b0B2244
0.1729295 ETH0.0011476854.56587689
Distribute192580062024-02-18 23:42:23343 days ago1708299743IN
0x2e6e5FED...22b0B2244
0 ETH0.0023443319.24062659
Transfer192363372024-02-15 22:34:23346 days ago1708036463IN
0x2e6e5FED...22b0B2244
2.45058565 ETH0.0006790332.2840712
Transfer191977252024-02-10 12:31:35351 days ago1707568295IN
0x2e6e5FED...22b0B2244
0.01460393 ETH0.0005783227.49588736
Transfer188592302023-12-25 0:36:35399 days ago1703464595IN
0x2e6e5FED...22b0B2244
0.17280538 ETH0.0004138319.67565581
Distribute185304982023-11-08 23:24:23445 days ago1699485863IN
0x2e6e5FED...22b0B2244
0 ETH0.003530432.58485633
Distribute185304832023-11-08 23:21:23445 days ago1699485683IN
0x2e6e5FED...22b0B2244
0 ETH0.0044852836.81203933
Transfer184336262023-10-26 9:53:35458 days ago1698314015IN
0x2e6e5FED...22b0B2244
0.04262663 ETH0.000333715.8659088
Transfer184034682023-10-22 4:30:59463 days ago1697949059IN
0x2e6e5FED...22b0B2244
0.01952304 ETH0.000134056.37369098
Transfer182931972023-10-06 18:18:23478 days ago1696616303IN
0x2e6e5FED...22b0B2244
0.06784138 ETH0.0002340811.12920939
Transfer179667202023-08-22 0:36:35524 days ago1692664595IN
0x2e6e5FED...22b0B2244
0.08277058 ETH0.0003291715.65041566
Transfer179389092023-08-18 3:09:47528 days ago1692328187IN
0x2e6e5FED...22b0B2244
0.04283893 ETH0.0004724422.46214253
Distribute173599732023-05-28 20:44:23609 days ago1685306663IN
0x2e6e5FED...22b0B2244
0 ETH0.0040208133
Transfer172120032023-05-07 23:44:47630 days ago1683503087IN
0x2e6e5FED...22b0B2244
0.22597765 ETH0.00232961110.75997296
Distribute170734822023-04-18 12:11:11649 days ago1681819871IN
0x2e6e5FED...22b0B2244
0 ETH0.0070257649.56691047
Transfer170081042023-04-09 3:29:35659 days ago1681010975IN
0x2e6e5FED...22b0B2244
0.03075848 ETH0.0003842318.26838417
Transfer166453292023-02-17 2:00:23710 days ago1676599223IN
0x2e6e5FED...22b0B2244
0.16541306 ETH0.0006310130.00134271
View all transactions

Latest 15 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
210675092024-10-28 23:47:4790 days ago1730159267
0x2e6e5FED...22b0B2244
0.04206985 ETH
210675092024-10-28 23:47:4790 days ago1730159267
0x2e6e5FED...22b0B2244
0.05691803 ETH
199410742024-05-24 16:56:35247 days ago1716569795
0x2e6e5FED...22b0B2244
0.0847301 ETH
199410742024-05-24 16:56:35247 days ago1716569795
0x2e6e5FED...22b0B2244
0.11463484 ETH
192580062024-02-18 23:42:23343 days ago1708299743
0x2e6e5FED...22b0B2244
1.12114786 ETH
192580062024-02-18 23:42:23343 days ago1708299743
0x2e6e5FED...22b0B2244
1.51684711 ETH
185304832023-11-08 23:21:23445 days ago1699485683
0x2e6e5FED...22b0B2244
0.10863025 ETH
185304832023-11-08 23:21:23445 days ago1699485683
0x2e6e5FED...22b0B2244
0.14697034 ETH
173599732023-05-28 20:44:23609 days ago1685306663
0x2e6e5FED...22b0B2244
0.2723101 ETH
173599732023-05-28 20:44:23609 days ago1685306663
0x2e6e5FED...22b0B2244
0.36841955 ETH
170734822023-04-18 12:11:11649 days ago1681819871
0x2e6e5FED...22b0B2244
0.11533687 ETH
170734822023-04-18 12:11:11649 days ago1681819871
0x2e6e5FED...22b0B2244
0.156044 ETH
164191392023-01-16 11:46:35741 days ago1673869595
0x2e6e5FED...22b0B2244
1.0109498 ETH
164191392023-01-16 11:46:35741 days ago1673869595
0x2e6e5FED...22b0B2244
0.74722376 ETH
154804022022-09-05 22:25:09874 days ago1662416709  Contract Creation0 ETH
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x8bA5e3eB...b6C0996d9
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
RocketNodeDistributor

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 15000 runs

Other Settings:
istanbul EvmVersion, GNU GPLv3 license
File 1 of 4 : RocketNodeDistributor.sol
/**
  *       .
  *      / \
  *     |.'.|
  *     |'.'|
  *   ,'|   |`.
  *  |,-'-|-'-.|
  *   __|_| |         _        _      _____           _
  *  | ___ \|        | |      | |    | ___ \         | |
  *  | |_/ /|__   ___| | _____| |_   | |_/ /__   ___ | |
  *  |    // _ \ / __| |/ / _ \ __|  |  __/ _ \ / _ \| |
  *  | |\ \ (_) | (__|   <  __/ |_   | | | (_) | (_) | |
  *  \_| \_\___/ \___|_|\_\___|\__|  \_|  \___/ \___/|_|
  * +---------------------------------------------------+
  * |  DECENTRALISED STAKING PROTOCOL FOR ETHEREUM 2.0  |
  * +---------------------------------------------------+
  *
  *  Rocket Pool is a first-of-its-kind ETH2 Proof of Stake protocol, designed to be community owned,
  *  decentralised, trustless and compatible with staking in Ethereum 2.0.
  *
  *  For more information about Rocket Pool, visit https://rocketpool.net
  *
  *  Authors: David Rugendyke, Jake Pospischil, Kane Wallmann, Darren Langley, Joe Clapis, Nick Doherty
  *
  */

pragma solidity 0.7.6;

// SPDX-License-Identifier: GPL-3.0-only

import "../RocketBase.sol";
import "./RocketNodeDistributorStorageLayout.sol";

contract RocketNodeDistributor is RocketNodeDistributorStorageLayout {
    bytes32 immutable distributorStorageKey;

    constructor(address _nodeAddress, address _rocketStorage) {
        rocketStorage = RocketStorageInterface(_rocketStorage);
        nodeAddress = _nodeAddress;

        // Precompute storage key for rocketNodeDistributorDelegate
        distributorStorageKey = keccak256(abi.encodePacked("contract.address", "rocketNodeDistributorDelegate"));
    }

    // Allow contract to receive ETH without making a delegated call
    receive() external payable {}

    // Delegates all transactions to the target supplied during creation
    fallback() external payable {
        address _target = rocketStorage.getAddress(distributorStorageKey);
        assembly {
            calldatacopy(0x0, 0x0, calldatasize())
            let result := delegatecall(gas(), _target, 0x0, calldatasize(), 0x0, 0)
            returndatacopy(0x0, 0x0, returndatasize())
            switch result case 0 {revert(0, returndatasize())} default {return (0, returndatasize())}
        }
    }
}

File 2 of 4 : RocketBase.sol
/**
  *       .
  *      / \
  *     |.'.|
  *     |'.'|
  *   ,'|   |`.
  *  |,-'-|-'-.|
  *   __|_| |         _        _      _____           _
  *  | ___ \|        | |      | |    | ___ \         | |
  *  | |_/ /|__   ___| | _____| |_   | |_/ /__   ___ | |
  *  |    // _ \ / __| |/ / _ \ __|  |  __/ _ \ / _ \| |
  *  | |\ \ (_) | (__|   <  __/ |_   | | | (_) | (_) | |
  *  \_| \_\___/ \___|_|\_\___|\__|  \_|  \___/ \___/|_|
  * +---------------------------------------------------+
  * |  DECENTRALISED STAKING PROTOCOL FOR ETHEREUM 2.0  |
  * +---------------------------------------------------+
  *
  *  Rocket Pool is a first-of-its-kind ETH2 Proof of Stake protocol, designed to be community owned,
  *  decentralised, trustless and compatible with staking in Ethereum 2.0.
  *
  *  For more information about Rocket Pool, visit https://rocketpool.net
  *
  *  Authors: David Rugendyke, Jake Pospischil, Kane Wallmann, Darren Langley, Joe Clapis, Nick Doherty
  *
  */

pragma solidity 0.7.6;

// SPDX-License-Identifier: GPL-3.0-only

import "../interface/RocketStorageInterface.sol";

/// @title Base settings / modifiers for each contract in Rocket Pool
/// @author David Rugendyke

abstract contract RocketBase {

    // Calculate using this as the base
    uint256 constant calcBase = 1 ether;

    // Version of the contract
    uint8 public version;

    // The main storage contract where primary persistant storage is maintained
    RocketStorageInterface rocketStorage = RocketStorageInterface(0);


    /*** Modifiers **********************************************************/

    /**
    * @dev Throws if called by any sender that doesn't match a Rocket Pool network contract
    */
    modifier onlyLatestNetworkContract() {
        require(getBool(keccak256(abi.encodePacked("contract.exists", msg.sender))), "Invalid or outdated network contract");
        _;
    }

    /**
    * @dev Throws if called by any sender that doesn't match one of the supplied contract or is the latest version of that contract
    */
    modifier onlyLatestContract(string memory _contractName, address _contractAddress) {
        require(_contractAddress == getAddress(keccak256(abi.encodePacked("contract.address", _contractName))), "Invalid or outdated contract");
        _;
    }

    /**
    * @dev Throws if called by any sender that isn't a registered node
    */
    modifier onlyRegisteredNode(address _nodeAddress) {
        require(getBool(keccak256(abi.encodePacked("node.exists", _nodeAddress))), "Invalid node");
        _;
    }

    /**
    * @dev Throws if called by any sender that isn't a trusted node DAO member
    */
    modifier onlyTrustedNode(address _nodeAddress) {
        require(getBool(keccak256(abi.encodePacked("dao.trustednodes.", "member", _nodeAddress))), "Invalid trusted node");
        _;
    }

    /**
    * @dev Throws if called by any sender that isn't a registered minipool
    */
    modifier onlyRegisteredMinipool(address _minipoolAddress) {
        require(getBool(keccak256(abi.encodePacked("minipool.exists", _minipoolAddress))), "Invalid minipool");
        _;
    }
    

    /**
    * @dev Throws if called by any account other than a guardian account (temporary account allowed access to settings before DAO is fully enabled)
    */
    modifier onlyGuardian() {
        require(msg.sender == rocketStorage.getGuardian(), "Account is not a temporary guardian");
        _;
    }




    /*** Methods **********************************************************/

    /// @dev Set the main Rocket Storage address
    constructor(RocketStorageInterface _rocketStorageAddress) {
        // Update the contract address
        rocketStorage = RocketStorageInterface(_rocketStorageAddress);
    }


    /// @dev Get the address of a network contract by name
    function getContractAddress(string memory _contractName) internal view returns (address) {
        // Get the current contract address
        address contractAddress = getAddress(keccak256(abi.encodePacked("contract.address", _contractName)));
        // Check it
        require(contractAddress != address(0x0), "Contract not found");
        // Return
        return contractAddress;
    }


    /// @dev Get the address of a network contract by name (returns address(0x0) instead of reverting if contract does not exist)
    function getContractAddressUnsafe(string memory _contractName) internal view returns (address) {
        // Get the current contract address
        address contractAddress = getAddress(keccak256(abi.encodePacked("contract.address", _contractName)));
        // Return
        return contractAddress;
    }


    /// @dev Get the name of a network contract by address
    function getContractName(address _contractAddress) internal view returns (string memory) {
        // Get the contract name
        string memory contractName = getString(keccak256(abi.encodePacked("contract.name", _contractAddress)));
        // Check it
        require(bytes(contractName).length > 0, "Contract not found");
        // Return
        return contractName;
    }

    /// @dev Get revert error message from a .call method
    function getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {
        // If the _res length is less than 68, then the transaction failed silently (without a revert message)
        if (_returnData.length < 68) return "Transaction reverted silently";
        assembly {
            // Slice the sighash.
            _returnData := add(_returnData, 0x04)
        }
        return abi.decode(_returnData, (string)); // All that remains is the revert string
    }



    /*** Rocket Storage Methods ****************************************/

    // Note: Unused helpers have been removed to keep contract sizes down

    /// @dev Storage get methods
    function getAddress(bytes32 _key) internal view returns (address) { return rocketStorage.getAddress(_key); }
    function getUint(bytes32 _key) internal view returns (uint) { return rocketStorage.getUint(_key); }
    function getString(bytes32 _key) internal view returns (string memory) { return rocketStorage.getString(_key); }
    function getBytes(bytes32 _key) internal view returns (bytes memory) { return rocketStorage.getBytes(_key); }
    function getBool(bytes32 _key) internal view returns (bool) { return rocketStorage.getBool(_key); }
    function getInt(bytes32 _key) internal view returns (int) { return rocketStorage.getInt(_key); }
    function getBytes32(bytes32 _key) internal view returns (bytes32) { return rocketStorage.getBytes32(_key); }

    /// @dev Storage set methods
    function setAddress(bytes32 _key, address _value) internal { rocketStorage.setAddress(_key, _value); }
    function setUint(bytes32 _key, uint _value) internal { rocketStorage.setUint(_key, _value); }
    function setString(bytes32 _key, string memory _value) internal { rocketStorage.setString(_key, _value); }
    function setBytes(bytes32 _key, bytes memory _value) internal { rocketStorage.setBytes(_key, _value); }
    function setBool(bytes32 _key, bool _value) internal { rocketStorage.setBool(_key, _value); }
    function setInt(bytes32 _key, int _value) internal { rocketStorage.setInt(_key, _value); }
    function setBytes32(bytes32 _key, bytes32 _value) internal { rocketStorage.setBytes32(_key, _value); }

    /// @dev Storage delete methods
    function deleteAddress(bytes32 _key) internal { rocketStorage.deleteAddress(_key); }
    function deleteUint(bytes32 _key) internal { rocketStorage.deleteUint(_key); }
    function deleteString(bytes32 _key) internal { rocketStorage.deleteString(_key); }
    function deleteBytes(bytes32 _key) internal { rocketStorage.deleteBytes(_key); }
    function deleteBool(bytes32 _key) internal { rocketStorage.deleteBool(_key); }
    function deleteInt(bytes32 _key) internal { rocketStorage.deleteInt(_key); }
    function deleteBytes32(bytes32 _key) internal { rocketStorage.deleteBytes32(_key); }

    /// @dev Storage arithmetic methods
    function addUint(bytes32 _key, uint256 _amount) internal { rocketStorage.addUint(_key, _amount); }
    function subUint(bytes32 _key, uint256 _amount) internal { rocketStorage.subUint(_key, _amount); }
}

File 3 of 4 : RocketNodeDistributorStorageLayout.sol
/**
  *       .
  *      / \
  *     |.'.|
  *     |'.'|
  *   ,'|   |`.
  *  |,-'-|-'-.|
  *   __|_| |         _        _      _____           _
  *  | ___ \|        | |      | |    | ___ \         | |
  *  | |_/ /|__   ___| | _____| |_   | |_/ /__   ___ | |
  *  |    // _ \ / __| |/ / _ \ __|  |  __/ _ \ / _ \| |
  *  | |\ \ (_) | (__|   <  __/ |_   | | | (_) | (_) | |
  *  \_| \_\___/ \___|_|\_\___|\__|  \_|  \___/ \___/|_|
  * +---------------------------------------------------+
  * |  DECENTRALISED STAKING PROTOCOL FOR ETHEREUM 2.0  |
  * +---------------------------------------------------+
  *
  *  Rocket Pool is a first-of-its-kind ETH2 Proof of Stake protocol, designed to be community owned,
  *  decentralised, trustless and compatible with staking in Ethereum 2.0.
  *
  *  For more information about Rocket Pool, visit https://rocketpool.net
  *
  *  Authors: David Rugendyke, Jake Pospischil, Kane Wallmann, Darren Langley, Joe Clapis, Nick Doherty
  *
  */

pragma solidity 0.7.6;

import "../../interface/RocketStorageInterface.sol";

// SPDX-License-Identifier: GPL-3.0-only

abstract contract RocketNodeDistributorStorageLayout {
    RocketStorageInterface rocketStorage;
    address nodeAddress;
}

File 4 of 4 : RocketStorageInterface.sol
/**
  *       .
  *      / \
  *     |.'.|
  *     |'.'|
  *   ,'|   |`.
  *  |,-'-|-'-.|
  *   __|_| |         _        _      _____           _
  *  | ___ \|        | |      | |    | ___ \         | |
  *  | |_/ /|__   ___| | _____| |_   | |_/ /__   ___ | |
  *  |    // _ \ / __| |/ / _ \ __|  |  __/ _ \ / _ \| |
  *  | |\ \ (_) | (__|   <  __/ |_   | | | (_) | (_) | |
  *  \_| \_\___/ \___|_|\_\___|\__|  \_|  \___/ \___/|_|
  * +---------------------------------------------------+
  * |  DECENTRALISED STAKING PROTOCOL FOR ETHEREUM 2.0  |
  * +---------------------------------------------------+
  *
  *  Rocket Pool is a first-of-its-kind ETH2 Proof of Stake protocol, designed to be community owned,
  *  decentralised, trustless and compatible with staking in Ethereum 2.0.
  *
  *  For more information about Rocket Pool, visit https://rocketpool.net
  *
  *  Authors: David Rugendyke, Jake Pospischil, Kane Wallmann, Darren Langley, Joe Clapis, Nick Doherty
  *
  */

pragma solidity >0.5.0 <0.9.0;

// SPDX-License-Identifier: GPL-3.0-only

interface RocketStorageInterface {

    // Deploy status
    function getDeployedStatus() external view returns (bool);

    // Guardian
    function getGuardian() external view returns(address);
    function setGuardian(address _newAddress) external;
    function confirmGuardian() external;

    // Getters
    function getAddress(bytes32 _key) external view returns (address);
    function getUint(bytes32 _key) external view returns (uint);
    function getString(bytes32 _key) external view returns (string memory);
    function getBytes(bytes32 _key) external view returns (bytes memory);
    function getBool(bytes32 _key) external view returns (bool);
    function getInt(bytes32 _key) external view returns (int);
    function getBytes32(bytes32 _key) external view returns (bytes32);

    // Setters
    function setAddress(bytes32 _key, address _value) external;
    function setUint(bytes32 _key, uint _value) external;
    function setString(bytes32 _key, string calldata _value) external;
    function setBytes(bytes32 _key, bytes calldata _value) external;
    function setBool(bytes32 _key, bool _value) external;
    function setInt(bytes32 _key, int _value) external;
    function setBytes32(bytes32 _key, bytes32 _value) external;

    // Deleters
    function deleteAddress(bytes32 _key) external;
    function deleteUint(bytes32 _key) external;
    function deleteString(bytes32 _key) external;
    function deleteBytes(bytes32 _key) external;
    function deleteBool(bytes32 _key) external;
    function deleteInt(bytes32 _key) external;
    function deleteBytes32(bytes32 _key) external;

    // Arithmetic
    function addUint(bytes32 _key, uint256 _amount) external;
    function subUint(bytes32 _key, uint256 _amount) external;

    // Protected storage
    function getNodeWithdrawalAddress(address _nodeAddress) external view returns (address);
    function getNodePendingWithdrawalAddress(address _nodeAddress) external view returns (address);
    function setWithdrawalAddress(address _nodeAddress, address _newWithdrawalAddress, bool _confirm) external;
    function confirmWithdrawalAddress(address _nodeAddress) external;
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 15000
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_nodeAddress","type":"address"},{"internalType":"address","name":"_rocketStorage","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x608060405236600a57005b60008054604080517f21f8a7210000000000000000000000000000000000000000000000000000000081527ffb3483c04a4c870b23f9315ce407aceff6ee8dd58eb34aa5becfb781351d3fb86004820152905173ffffffffffffffffffffffffffffffffffffffff909216916321f8a72191602480820192602092909190829003018186803b158015609b57600080fd5b505afa15801560ae573d6000803e3d6000fd5b505050506040513d602081101560c357600080fd5b505190503660008037600080366000845af43d6000803e80801560e5573d6000f35b3d6000fdfea2646970667358221220eff696097e25305c6d6b19a8a6eebb3c8b47de4d235eade3a84bd4f50c48119664736f6c63430007060033

Deployed Bytecode Sourcemap

1161:1109:1:-:0;;;;;;;;1867:15;1885:13;;:47;;;;;;1910:21;1885:47;;;;;;:13;;;;;:24;;:47;;;;;;;;;;;;;;;:13;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1885:47:1;;-1:-1:-1;1990:14:1;1985:3;;1967:38;2088:1;2083:3;2067:14;2062:3;2053:7;2046:5;2033:57;2129:16;2124:3;2119;2104:42;2167:6;2174:36;;;;2231:16;2228:1;2220:28;2174:36;2192:16;2189:1;2182:27

Swarm Source

ipfs://eff696097e25305c6d6b19a8a6eebb3c8b47de4d235eade3a84bd4f50c481196

 Latest 4 blocks produced

Block Transaction Difficulty Gas Used Reward
173094152023-05-21 18:07:23616 days ago16846924431270.00 TH18,469,048 (61.56%)
0.271473403579995322 ETH
171442742023-04-28 11:17:47639 days ago16826806671110.00 TH10,085,111 (33.62%)
0.018658509241308885 ETH
170869242023-04-20 9:48:23648 days ago16819841031160.00 TH8,735,223 (29.12%)
0.124620085104921365 ETH
156581822022-10-02 4:50:59848 days ago1664686259590.00 TH5,871,075 (19.57%)
0.008483809396331811 ETH

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