Skip to content

Latest commit

 

History

History
116 lines (90 loc) · 2.95 KB

caip2.md

File metadata and controls

116 lines (90 loc) · 2.95 KB
namespace-identifier title author discussions-to status type created requires
monero-caip2
Monero - Chains
silverpill (@silverpill)
Draft
Informational
2023-04-27
CAIP-2

CAIP-2

For context, see the CAIP-2 specification.

Rationale

CAIP-2 defines a way to identify a blockchain. Monero blockchain, its forks and testnets can be uniquely identified by their genesis blocks.

Syntax

Monero chain ID is a hash of its genesis block, truncated to the first 32 characters.

Resolution Mechanics

To obtain the genesis block hash, make a JSON-RPC request to the Monero daemon with method get_block_header_by_height.

Request:

{
  "jsonrpc": "2.0",
  "id": "0",
  "method": "get_block_header_by_height",
  "params": {
    "height": 0
  }
}

Response example (Monero mainnet):

{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    "block_header": {
      "block_size": 80,
      "block_weight": 80,
      "cumulative_difficulty": 1,
      "cumulative_difficulty_top64": 0,
      "depth": 2873685,
      "difficulty": 1,
      "difficulty_top64": 0,
      "hash": "418015bb9ae982a1975da7d79277c2705727a56894ba0fb246adaabb1f4632e3",
      "height": 0,
      "long_term_weight": 80,
      "major_version": 1,
      "miner_tx_hash": "c88ce9783b4f11190d7b9c17a69c1c52200f9faaee8e98dd07e6811175177139",
      "minor_version": 0,
      "nonce": 10000,
      "num_txes": 0,
      "orphan_status": false,
      "pow_hash": "",
      "prev_hash": "0000000000000000000000000000000000000000000000000000000000000000",
      "reward": 17592186044415,
      "timestamp": 0,
      "wide_cumulative_difficulty": "0x1",
      "wide_difficulty": "0x1"
    },
    "credits": 0,
    "status": "OK",
    "top_hash": "",
    "untrusted": false
  }
}

Test Cases

This is a list of manually composed examples:

# Monero mainnet
monero:418015bb9ae982a1975da7d79277c270

# Monero stagenet
monero:76ee3cc98646292206cd3e86f74d88b4

# Monero testnet 
monero:48ca7cd3c8de5b6a4d53d2861fbdaedc

# Monero Private testnet (special case; see below)
monero:00000000000000000000000000000000

# Wownero mainnet
monero:a3fd635dd5cb55700317783469ba749b

Additional Considerations

Private testnet (also known as regtest or fakechain) has the same genesis block hash as Monero mainnet. To avoid conflicts, implementers should use chain ID monero:00000000000000000000000000000000 to identify this chain, as above, and implementers are advised to take care in disambiguating this special case in their code.

References

Copyright

Copyright and related rights waived via CC0.