ETH Price: $3,879.47 (+1.16%)

Contract

0x0872a7AeAAce45c8D35a03d5E6bEeC8901317130
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Distribute188350242023-12-21 15:06:23357 days ago1703171183IN
0x0872a7Ae...901317130
0 ETH0.0096538264.71822297
Transfer173509762023-05-27 14:26:35565 days ago1685197595IN
0x0872a7Ae...901317130
0.05985673 ETH0.0004672222.21396268
Transfer171341252023-04-27 1:02:23595 days ago1682557343IN
0x0872a7Ae...901317130
0.06106461 ETH0.000691332.86758731
Distribute171142772023-04-24 6:10:35598 days ago1682316635IN
0x0872a7Ae...901317130
0 ETH0.005505738.17471079
Transfer171125652023-04-24 0:25:11598 days ago1682295911IN
0x0872a7Ae...901317130
0.05327662 ETH0.000902242.89458545
Transfer169859372023-04-05 23:56:11616 days ago1680738971IN
0x0872a7Ae...901317130
0.09207144 ETH0.0004962623.59444115
Transfer169767362023-04-04 16:35:47618 days ago1680626147IN
0x0872a7Ae...901317130
0.07334355 ETH0.0008162238.8067534
Transfer169241582023-03-28 6:48:11625 days ago1679986091IN
0x0872a7Ae...901317130
0.04780084 ETH0.00042720.30153724
Transfer168836822023-03-22 14:19:59631 days ago1679494799IN
0x0872a7Ae...901317130
0.03276925 ETH0.0004498621.38873339
Transfer168740432023-03-21 5:49:59632 days ago1679377799IN
0x0872a7Ae...901317130
0.09544943 ETH0.0002360611.22352569
Transfer168709022023-03-20 19:15:35633 days ago1679339735IN
0x0872a7Ae...901317130
0.04605931 ETH0.0006093328.97048021
Transfer168143232023-03-12 20:28:23641 days ago1678652903IN
0x0872a7Ae...901317130
0.08356121 ETH0.0004915423.36999576
Transfer167563442023-03-04 16:44:47649 days ago1677948287IN
0x0872a7Ae...901317130
0.05302772 ETH0.0005550826.39112678
Transfer167248222023-02-28 6:17:11653 days ago1677565031IN
0x0872a7Ae...901317130
0.31210422 ETH0.0004055219.28043555
Transfer166924312023-02-23 16:58:11658 days ago1677171491IN
0x0872a7Ae...901317130
0.04158104 ETH0.000907743.15614672
Transfer166596562023-02-19 2:25:23662 days ago1676773523IN
0x0872a7Ae...901317130
0.18446902 ETH0.0005299425.19571881
Transfer166099992023-02-12 3:29:47669 days ago1676172587IN
0x0872a7Ae...901317130
0.01530679 ETH0.000372117.69143405
Transfer165327712023-02-01 8:27:35680 days ago1675240055IN
0x0872a7Ae...901317130
0.12872592 ETH0.0003238415.39682186
Transfer165238052023-01-31 2:24:59681 days ago1675131899IN
0x0872a7Ae...901317130
0.03076473 ETH0.0003538116.82179463
Transfer164804502023-01-25 1:07:47687 days ago1674608867IN
0x0872a7Ae...901317130
0.02783365 ETH0.0003484916.56908366
Transfer164796742023-01-24 22:32:23688 days ago1674599543IN
0x0872a7Ae...901317130
0.77410716 ETH0.0019150391.04897242
Transfer163744472023-01-10 5:54:59702 days ago1673330099IN
0x0872a7Ae...901317130
0.03910596 ETH0.0002874913.66882487
Transfer163735882023-01-10 3:02:35702 days ago1673319755IN
0x0872a7Ae...901317130
0.14335428 ETH0.0003196615.19831859
Transfer163612282023-01-08 9:38:35704 days ago1673170715IN
0x0872a7Ae...901317130
0.0317875 ETH0.0002887113.72696255
Transfer163010732022-12-31 0:09:59712 days ago1672445399IN
0x0872a7Ae...901317130
0.04107862 ETH0.0003470716.50145063
View all transactions

Latest 16 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
188350242023-12-21 15:06:23357 days ago1703171183
0x0872a7Ae...901317130
0.05830826 ETH
188350242023-12-21 15:06:23357 days ago1703171183
0x0872a7Ae...901317130
0.07002981 ETH
172013172023-05-06 11:41:11586 days ago1683373271
0x0872a7Ae...901317130
0.04429975 ETH
172013172023-05-06 11:41:11586 days ago1683373271
0x0872a7Ae...901317130
0.05330151 ETH
171142772023-04-24 6:10:35598 days ago1682316635
0x0872a7Ae...901317130
0.5075072 ETH
171142772023-04-24 6:10:35598 days ago1682316635
0x0872a7Ae...901317130
0.68662739 ETH
169204392023-03-27 18:15:35626 days ago1679940935
0x0872a7Ae...901317130
0.00084967 ETH
166489922023-02-17 14:22:23664 days ago1676643743
0x0872a7Ae...901317130
0.56162451 ETH
166489922023-02-17 14:22:23664 days ago1676643743
0x0872a7Ae...901317130
0.41511376 ETH
164691512023-01-23 11:16:59689 days ago1674472619
0x0872a7Ae...901317130
0.18679491 ETH
164691512023-01-23 11:16:59689 days ago1674472619
0x0872a7Ae...901317130
0.1380658 ETH
161239182022-12-06 6:19:47737 days ago1670307587
0x0872a7Ae...901317130
0.06351631 ETH
161239182022-12-06 6:19:47737 days ago1670307587
0x0872a7Ae...901317130
0.04694684 ETH
160777152022-11-29 19:24:11744 days ago1669749851
0x0872a7Ae...901317130
0.11688518 ETH
160777152022-11-29 19:24:11744 days ago1669749851
0x0872a7Ae...901317130
0.08639339 ETH
155563632022-09-17 22:46:47817 days ago1663454807  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
173558602023-05-28 6:52:35564 days ago1685256755870.00 TH6,814,629 (22.72%)
0.026105804898656875 ETH
172982442023-05-20 4:24:47572 days ago1684556687940.00 TH8,240,361 (27.47%)
0.042375548630792585 ETH
171356752023-04-27 6:15:23595 days ago1682576123990.00 TH10,522,167 (35.07%)
0.036536656731263619 ETH
169204392023-03-27 18:15:35626 days ago16799409351660.00 TH15,406,481 (51.35%)
0.077771216190726982 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.