MilliNet Is an HTTP Client for Devs in Web3

CompareNodes team have released a light-weight HTTP client optimized for Web3.

We named it MilliNet because it measures round-trip milliseconds from the browser to any mainnet, testnet or devnet as min, max, avg, p50 and p95.

MilliNet works like Postman for POST RPC and GET RESTful requests:

  • It is light-weight and runs entirely in the browser, without a backend proxy
  • MilliNet measures p50 and p95 round-trip times between the browser and public or private endpoints
  • The p95 calculation already utilizes linear interpolation and improvements are in our roadmap
  • Users can dispatch single requests or run in loops up to 100, with or without throttling

Standalone and iFrame

  • MilliNet can be embedded in an iFrame into any website as a free RPC sandbox / playground
  • The standalone UI is available at CompareNodes.com/millinet/
  • iFrame configuration params are in this list
  • See the black-and-white iFrame below

The iFrame UX is best with width of >=360px and the default configuration without parameters can be achieved with this HTML:

<iframe 
src="https://www.comparenodes.com/millinet/millinet-widget/" 
style="min-width: 360px; width: 100%; height: 1185px; 
border: 1px solid #161618; border-radius:4px">
</iframe>

Click/tap RUN or START buttons to trigger RPC requests:

Optional Configuration

e.g. comparenodes.com/millinet/millinet-widget/?protocolGroup=eth_chainId&endpointURL=https://mainnet.base.org/

ParameterDescriptionURL with Example
endpointURLFill in the initial value for the Endpoint URL.&endpointURL=https://mainnet.base.org/
endpointSLDSet a restriction to second-level-domain: the form will reject values in the Endpoint URL input for domains except those that match the parameter. The example restricts the form to URLs with “onfinality.io” only.&endpointSLD=onfinality.io
showAuthControlsSet it to false to hide the Auth Header pull-down (and its header value input). This option can be useful for sites which offer only public endpoints to make the MilliNet widget/form more compact.&showAuthControls=false
filterAuthHeaderFor providers which offer public endpoints and private endpoints with authentication via the header: set this parameter to the specific header and the pulldown will show NO + the parameter. Available values are: x-api-key, apikey, api-key, Authorization, project_id, dmtr-api-key and Drpc-Key.

Do not use this parameter with &showAuthControls=false
&filterAuthHeader=apikey
selectAuthHeaderFor providers which do NOT offer public endpoints and their private endpoints are authorized with an auth header: set this parameter to the auth header that you use and it will be the only selection in the pulldown. Available values are: x-api-key, apikey, api-key, Authorization, project_id, dmtr-api-key and Drpc-Key.

Do not use this parameter with &showAuthControls=false
&selectAuthHeader=x-api-key
defaultLoopUse it to replace the MilliNet’s value of 10 with a new default/initial for the loop. Must be >=2. The user can also change it to another value, up to 100 (see parameter maxLoop).&defaultLoop=5
maxLoopThis parameter should be used to restrict the max value that the user can set for a loop request. Must be >=3 and > defaultLoop, if any. When this value is set to =3, the form will display just the RUN-x1 and START-x3 buttons for a more compact layout.&maxLoop=25
protocolGroupExists to access RPC / RESTful examples for requests to most popular protocols: EVM, UTXO, Substrate, Tendermint, Aptos, Sui, Algorand, NEAR etc.

See the next table below with the complete specification.
&protocolGroup=eth_getBlockByNumber

Values for protocolGroup

For additional configurations msg @SimonRadovcic on TG. Click the link in the table to see a working example:

Category&protocolGroup=…HTTP VerbRequest “Body”
Aleoblock_latestGET/block/latest
Alephiummempool_transactionsGET/mempool/transactions
AlgorandgetstatusGET/v2/status
AlgorandgetversionGET/versions
Aptos, Movementget_ledger_infoGET/
Avalanche P-Chainplatform_getTimestampPOST{“method”: “platform.getTimestamp”, “params”: {}, “jsonrpc”: “2.0”, “id”: 1}
Avalanche X-Chainavm_getHeightPOST{“method”: “avm.getHeight”, “params”: {}, “jsonrpc”: “2.0”, “id”: 1}
BTC & UTXOsgetblockchaininfoPOST{“method”: “getblockchaininfo”, “jsonrpc”: “2.0”, “id”: 1}
Cardano Ogmios APIogmiosPOST{“method”: “queryLedgerState/tip”, “jsonrpc”: “2.0”, “id”: 1}
Casperinfo_get_statusPOST{“method”: “info_get_status”, “jsonrpc”: “2.0”, “id”: 1}
EVMeth_blockNumberPOST{“method”: “eth_blockNumber”, “params”: [], “jsonrpc”: “2.0”, “id”: 1}
EVMeth_chainIdPOST{“method”: “eth_chainId”, “params”: [], “jsonrpc”: “2.0”, “id”: 1}
EVMeth_getBlockByNumberPOST{“method”: “eth_getBlockByNumber”, “params”: [“latest”, false], “jsonrpc”: “2.0”, “id”: 1}
EVMeth_getBlockReceiptsPOST{“method”: “eth_getBlockReceipts”, “params”: [“latest”], “jsonrpc”:”2.0″, “id”:1}
EVMeth_getLogsPOST{“method”: “eth_getLogs”, “params”: [{“fromBlock”: “latest”, “toBlock”: “latest”}], “jsonrpc”:”2.0″, “id”:1}
EVMtrace_blockPOST{“method”: “trace_block”, “params”: [“latest”], “jsonrpc”: “2.0”, “id”: 1}
HyperliquidallMidsPOST{“type”: “allMids”}
MultiversXnode_heartbeatstatusGET/node/heartbeatstatus
NEARnear_blockPOST{“method”: “block”, “params”: {“finality”: “final”}, “jsonrpc”: “2.0”, “id”: 1}
NEARnear_statusPOST{“method”: “status”, “params”: {}, “jsonrpc”: “2.0”, “id”: 1}
Solana, Fogo, EclipsegetBlockHeightPOST{“method”: “getBlockHeight”, “params”: [{“commitment”: “finalized”}], “jsonrpc”: “2.0”, “id”: 1}
Solana, Fogo, EclipsegetEpochInfoPOST{“method”: “getEpochInfo”, “params”: [{“commitment”: “finalized”}], “jsonrpc”: “2.0”, “id”: 1}
Solana, Fogo, EclipsegetGenesisHashPOST{“method”: “getGenesisHash”, “params”: [], “jsonrpc”: “2.0”, “id”: 1}
Solana, Fogo, EclipsegetSlotPOST{“method”: “getSlot”, “params”: [{“commitment”: “finalized”}], “jsonrpc”: “2.0”, “id”: 1}
Starknetstarknet_blockNumberPOST{“method”: “starknet_blockNumber”, “params”: [], “jsonrpc”: “2.0”, “id”: 1}
Starknetstarknet_chainIdPOST{“method”: “starknet_chainId”, “params”: [], “jsonrpc”: “2.0”, “id”: 1}
Starknetstarknet_getBlockWithTxHashesPOST{“method”: “starknet_getBlockWithTxHashes”, “params”: [“latest”], “jsonrpc”: “2.0”, “id”: 1}
Stellar Horizon APIliquidity_poolsGET/liquidity_pools
Stellar Soroban APIgetHealthPOST{“method”: “getHealth”, “jsonrpc”: “2.0”, “id”: 1}
Stellar Soroban APIgetLatestLedgerPOST{“method”: “getLatestLedger”, “jsonrpc”: “2.0”, “id”: 1}
Substrate / Polkadotchain_getBlockPOST{“method”: “chain_getBlock”, “params”: [], “jsonrpc”: “2.0”, “id”: 1}
Substrate / Polkadotchain_getBlockHashPOST{“method”: “chain_getBlockHash”, “params”: [], “jsonrpc”: “2.0”, “id”: 1}
Substrate / Polkadotsystem_chainPOST{“method”: “system_chain”, “params”: [], “jsonrpc”: “2.0”, “id”: 1}
Suisui_getChainIdentifierPOST{“method”: “sui_getChainIdentifier”, “params”: [], “jsonrpc”: “2.0”, “id”: 1}
Suisui_getLatestCheckpointSequenceNumberPOST{“method”: “sui_getLatestCheckpointSequenceNumber”, “params”: [], “jsonrpc”: “2.0”, “id”: 1}
Suprarpc_v2_blockGET/rpc/v2/block
Tendermint / CosmosblockGET/block
Tendermint / CosmosstatusGET/status
Tezoschains_main_blocks_headGET/chains/main/blocks/head
TONgetMasterchainInfoPOST{“method”: “getMasterchainInfo”, “jsonrpc”: “2.0”, “id”: 1}
Vaulta ex. EOSget_infoPOST{}
VeChainblocks_bestGET/blocks/best?expanded=true&raw=false
Wavesnode_statusGET/node/status
XRP Ledger / RippleledgerPOST{“method”: “ledger”, “params”: [{“ledger_index”: “current”, “transactions”: true, “expand”: false, “owner_funds”: false}], “jsonrpc”: “2.0”, “id”: 1}

Follow us on:

John Doe
John Doe@username
Read More
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.
John Doe
John Doe@username
Read More
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.
John Doe
John Doe@username
Read More
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.
Previous
Next