Metaverse ETP Docs
English
English
  • 👋Welcome to The New Reality!
  • GENERAL
    • 🖍️Introduction
    • 📃Metaverse Litepaper
    • 💎Entropy ($ETP)
  • USER GUIDES
    • 🔄UTXO ETP to VM ETP (Hyperspace/New Frontier) migration
    • ↗️Hyperspace to New Frontiers migration
    • 💰MetaverseVM Browser Extension
    • 🦊Metamask
    • 🪙Assets Tutorials
      • Add Metaverse Smart Tokens (MST) in MetaverseVM Browser wallet
      • Metaverse Identifiable Tokens (MIT)
    • 🧙‍♂️Avatars
      • KILT Protocol
  • DEVELOPER GUIDES
    • 🔨Testnet Set Up
      • MetaverseVM Browser Extension - Testnet Version
      • Metamask - Testnet version
      • RPC
      • Substrate API Sidecar
      • Transaction Construction and Signing
    • 📄Smart Contracts
      • Metaverse VM: An Ethereum Compatible VM
      • Deploy a Contract in the MVM
    • 💲Assets
      • Interact with an MRC-20 in MetaMask
    • 🔈Remote Procedure Calls
  • MINER GUIDES
    • 📡Metaverse Full Node Interface
    • ⛏️Mining & Staking
      • POS Node Set Up
      • Miners List and Fees
      • Stratum V2
Powered by GitBook
On this page

Was this helpful?

  1. DEVELOPER GUIDES
  2. Testnet Set Up

RPC

PreviousMetamask - Testnet versionNextSubstrate API Sidecar

Last updated 4 years ago

Was this helpful?

The client exposes HTTP and WS endpoints for RPC connections. The default ports are 9933 for HTTP and 9944 for WS but can be specified running the client with the following parameters:--ws-port 7949 --rpc-port 7939.

To run a full node without mining and expose certain RPC and HTTP port, use the following command:

betelgeuse --chain betelgeuse.json --port 41337  --ws-port 7949  --rpc-port 7939 --rpc-methods 'Unsafe' --unsafe-ws-external --unsafe-rpc-external --rpc-cors "all"

To get a list of all RPC methods, the node has an RPC endpoint called rpc_methods:

$ curl -H "Content-Type: application/json" -d '{"id":1, "jsonrpc":"2.0", "method": "rpc_methods"}' http://localhost:9933/

Response:

{"jsonrpc":"2.0","result":{"methods":["account_nextIndex","author_hasKey","author_hasSessionKeys","author_insertKey","author_pendingExtrinsics","author_removeExtrinsic","author_rotateKeys","author_submitAndWatchExtrinsic","author_submitExtrinsic","author_unwatchExtrinsic","chain_getBlock","chain_getBlockHash","chain_getFinalisedHead","chain_getFinalizedHead","chain_getHead","chain_getHeader","chain_getRuntimeVersion","chain_subscribeAllHeads","chain_subscribeFinalisedHeads","chain_subscribeFinalizedHeads","chain_subscribeNewHead","chain_subscribeNewHeads","chain_subscribeRuntimeVersion","chain_unsubscribeAllHeads","chain_unsubscribeFinalisedHeads","chain_unsubscribeFinalizedHeads","chain_unsubscribeNewHead","chain_unsubscribeNewHeads","chain_unsubscribeRuntimeVersion","offchain_localStorageGet","offchain_localStorageSet","payment_queryInfo","state_call","state_callAt","state_getChildKeys","state_getChildStorage","state_getChildStorageHash","state_getChildStorageSize","state_getKeys","state_getKeysPaged","state_getKeysPagedAt","state_getMetadata","state_getPairs","state_getRuntimeVersion","state_getStorage","state_getStorageAt","state_getStorageHash","state_getStorageHashAt","state_getStorageSize","state_getStorageSizeAt","state_queryStorage","state_subscribeRuntimeVersion","state_subscribeStorage","state_unsubscribeRuntimeVersion","state_unsubscribeStorage","subscribe_newHead","system_accountNextIndex","system_addReservedPeer","system_chain","system_health","system_name","system_networkState","system_nodeRoles","system_peers","system_properties","system_removeReservedPeer","system_version","unsubscribe_newHead"],"version":1},"id":1}

Add parameters in the call. For example, get a block by its hash value:

$ curl -H "Content-Type: application/json" -d '{"id":1, "jsonrpc":"2.0", "method": "chain_getBlock", "params":["0x3fa6a530850324391fde50bdf0094bdc17ee17ec84aca389b4047ef54fea0037"]}' http://localhost:9933

Response:

{"jsonrpc":"2.0","result":{"block":{"extrinsics":["0x280402000b50055ee97001","0x1004140000"],"header":{"digest":{"logs":["0x06424142453402af000000937fbd0f00000000","0x054241424501011e38401b0aab22f4d72ebc95329c3798445786b92ca1ae69366aacb6e1584851f5fcdfcc0f518df121265c343059c62ab0a34e8e88fda8578810fbe508b6f583"]},"extrinsicsRoot":"0x0e354333c062892e774898e7ff5e23bf1cdd8314755fac15079e25c1a7765f06","number":"0x16c28c","parentHash":"0xe3bf2e8f0e901c292de24d07ebc412d67224ce52a3d1ffae76dc4bd78351e8ac","stateRoot":"0xd582f0dfeb6a7c73c47db735ae82d37fbeb5bada67ee8abcd43479df0f8fc8d8"}},"justification":null},"id":1}

Betelgeuse node uses as a format that is suitable for resource-constrained execution environments. You will need to decode the information and use the chain (state_getMetadata) to obtain human-readable information.

Tracking the Chain Head

Use the RPC endpointchain_subscribeFinalizedHeadsto subscribe to a stream of hashes of finalized headers, orchain_FinalizedHeadsto fetch the finalized header's latest hash. Usechain_getBlockto get the block associated with a given hash. chain_getBlockonly accepts block hashes, so if you need to query intermediate blocks, usechain_getBlockHashto get the block hash from a block number.

🔨
SCALE encoding
metadata