BlockX Clients
BlockX supports different clients in order to support Cosmos and Ethereum transactions and queries:
Cosmos gRPC
Query or send BlockX transactions using gRPC
9090
Cosmos REST (gRPC-Gateway)
Query or send BlockX transactions using an HTTP RESTful API
9091
Ethereum JSON-RPC
Query Ethereum-formatted transactions and blocks or send Ethereum txs using JSON-RPC
8545
Ethereum Websocket
Subscribe to Ethereum logs and events emitted in smart contracts.
8586
Tendermint RPC
Subscribe to Ethereum logs and events emitted in smart contracts.
26657
Tendermint Websocket
Query transactions, blocks, consensus state, broadcast transactions, etc.
26657
Command Line Interface (CLI)
Query or send BlockX transactions using your Terminal or Console.
N/A
Cosmos gRPC
BlockX exposes gRPC endpoints for all the integrated Cosmos SDK modules. This makes it easier for wallets and block explorers to interact with the Proof-of-Stake logic and native Cosmos transactions and queries.
Cosmos gRPC-Gateway (HTTP REST)
gRPC-Gateway reads a gRPC service definition and generates a reverse-proxy server which translates RESTful JSON API into gRPC. With gRPC-Gateway, users can use REST to interact the Cosmos gRPC service.
Ethereum JSON-RPC
BlockX supports most of the standard JSON-RPC APIs to connect with existing Ethereum-compatible web3 tooling.
Ethereum Websocket
Then, start a websocket subscription with ws
# connect to tendermint websocet at port 8546 as defined above
ws ws://localhost:8546/
# subscribe to new Ethereum-formatted block Headers
> {"id": 1, "method": "eth_subscribe", "params": ["newHeads", {}]}
< {"jsonrpc":"2.0","result":"0x44e010cb2c3161e9c02207ff172166ef","id":1}
Tendermint Websocket
Tendermint Core provides a Websocket connection to subscribe or unsubscribe to Tendermint ABCI events.
{
"jsonrpc": "2.0",
"method": "subscribe",
"id": "0",
"params": {
"query": "tm.event='<event_value>' AND eventType.eventAttribute='<attribute_value>'"
}
}
List of Tendermint Events
The main events you can subscribe to are:
NewBlock
: Containsevents
triggered duringBeginBlock
andEndBlock
.Tx
: Containsevents
triggered duringDeliverTx
(i.e. transaction processing).ValidatorSetUpdates
: Contains validator set updates for the block.
List of all Tendermint event keys:
Subscribe to a specific event
"tm.event"
block
Subscribe to a specific transaction
"tx.hash"
block
Subscribe to transactions at a specific block height
"tx.height"
block
Index BeginBlock
and Endblock
events
"block.height"
block
Subscribe to ABCI BeginBlock
events
"begin_block"
block
Subscribe to ABCI EndBlock
events
"end_block"
consensus
Below is a list of values that you can use to subscribe for the tm.event
type:
New block
"NewBlock"
block
New block header
"NewBlockHeader"
block
New Byzantine Evidence
"NewEvidence"
block
New transaction
"Tx"
block
Validator set updated
"ValidatorSetUpdates"
block
Block sync status
"BlockSyncStatus"
consensus
lock
"Lock"
consensus
New consensus round
"NewRound"
consensus
Polka
"Polka"
consensus
Relock
"Relock"
consensus
State sync status
"StateSyncStatus"
consensus
Timeout propose
"TimeoutPropose"
consensus
Timeout wait
"TimeoutWait"
consensus
Unlock
"Unlock"
consensus
Block is valid
"ValidBlock"
consensus
Consensus vote
"Vote"
consensus
Example
ws ws://localhost:26657/websocket
> { "jsonrpc": "2.0", "method": "subscribe", "params": ["tm.event='ValidatorSetUpdates'"], "id": 1 }
Example response:
{
"jsonrpc": "2.0",
"id": 0,
"result": {
"query": "tm.event='ValidatorSetUpdates'",
"data": {
"type": "tendermint/event/ValidatorSetUpdates",
"value": {
"validator_updates": [
{
"address": "09EAD022FD25DE3A02E64B0FE9610B1417183EE4",
"pub_key": {
"type": "tendermint/PubKeyEd25519",
"value": "ww0z4WaZ0Xg+YI10w43wTWbBmM3dpVza4mmSQYsd0ck="
},
"voting_power": "10",
"proposer_priority": "0"
}
]
}
}
}
}
CLI
Users can use the blockxd
binary to interact directly with an BlockX node though the CLI.
Transactions:
blockxd tx
The list of available commands, as of
v3.0.0
, are:
Available Commands:
authz Authorization transactions subcommands
bank Bank transaction subcommands
broadcast Broadcast transactions generated offline
crisis Crisis transactions subcommands
decode Decode a binary encoded transaction string
distribution Distribution transactions subcommands
encode Encode transactions generated offline
erc20 erc20 subcommands
evidence Evidence transaction subcommands
evm evm transactions subcommands
feegrant Feegrant transactions subcommands
gov Governance transactions subcommands
ibc IBC transaction subcommands
ibc-transfer IBC fungible token transfer transaction subcommands
multisign Generate multisig signatures for transactions generated offline
multisign-batch Assemble multisig transactions in batch from batch signatures
sign Sign a transaction generated offline
sign-batch Sign transaction batch files
slashing Slashing transaction subcommands
staking Staking transaction subcommands
validate-signatures validate transactions signatures
vesting Vesting transaction subcommands
Queries: blockxd query
The list of available commands, as of v3.0.0
, are:
Available Commands:
account Query for account by address
auth Querying commands for the auth module
authz Querying commands for the authz module
bank Querying commands for the bank module
block Get verified data for a the block at given height
claims Querying commands for the claims module
distribution Querying commands for the distribution module
epochs Querying commands for the epochs module
erc20 Querying commands for the erc20 module
evidence Query for evidence by hash or for all (paginated) submitted evidence
evm Querying commands for the evm module
feegrant Querying commands for the feegrant module
feemarket Querying commands for the fee market module
gov Querying commands for the governance module
ibc Querying commands for the IBC module
ibc-transfer IBC fungible token transfer query subcommands
incentives Querying commands for the incentives module
inflation Querying commands for the inflation module
params Querying commands for the params module
recovery Querying commands for the recovery module
slashing Querying commands for the slashing module
staking Querying commands for the staking module
tendermint-validator-set Get the full tendermint validator set at given height
tx Query for a transaction by hash, "<addr>/<seq>" combination or comma-separated signatures in a committed block
txs Query for paginated transactions that match a set of events
upgrade Querying commands for the upgrade module
vesting Querying commands for the vesting module
curl -X GET "http://localhost:26657/tx_search?query=ethereum_tx.ethereumTxHash%3D0x8d43464891fac6c113e809e14dff1a3e608eae124d629799e42ca0e36562d9d7&prove=false&page=1&per_page=30&order_by=asc" -H "accept: application/json"
Last updated