Exploring the Blockchain¶
The ft inspect
sub-command can be used to inspect data on the
blockchain.
Arguments -2
and -3
can be used to increase the level
of information retrieved and displayed. The environment variable
FT_DEBUG_GRAPHQL
can be set to display the query sent to the
server.
Account Information¶
First, we can check the state of an account or address:
$ ft inspect -a fabrice
ACCOUNT: {
"id": "0:24a44423bc7edc2598b50ae87267bd06bc53455328e837dae32b9b7592716de8",
"acc_type_name": "Active",
"balance": "99834388127",
"code_hash": "207dc560c5956de1a2c1479356f8f3ee70a59767db2bf4788b1d61ad42cdad82"
}
We can set the variable FT_DEBUG_GRAPHQL
to understand what happens:
$ FT_DEBUG_GRAPHQL=1 ft inspect -a fabrice
Graphql query (input): accounts(filter: { id:
{ eq: "0:24a44423bc7edc2598b50ae87267bd06bc53455328e837dae32b9b7592716de7" } })
{ id acc_type_name balance(format: DEC) code_hash }
Server replied: {
"accounts": [
{
"id": "0:24a44423bc7edc2598b50ae87267bd06bc53455328e837dae32b9b7592716de7",
"acc_type_name": "Active",
"balance": "99834388127",
"code_hash": "207dc560c5956de1a2c1479356f8f3ee70a59767db2bf4788b1d61ad42cdad82"
}
]
}
ACCOUNT: {
"id": "0:24a44423bc7edc2598b50ae87267bd06bc53455328e837dae32b9b7592716de7",
"acc_type_name": "Active",
"balance": "99834388127",
"code_hash": "207dc560c5956de1a2c1479356f8f3ee70a59767db2bf4788b1d61ad42cdad82"
}
We can increase the level of verbosity with options -2
or -3
:
$ ft inspect --a fabrice -2
ACCOUNT: {
"id": "0:24a44423bc7edc2598b50ae87267bd06bc53455328e837dae32b9b7592716de7",
"acc_type_name": "Active",
"balance": "99834388127",
"code_hash": "207dc560c5956de1a2c1479356f8f3ee70a59767db2bf4788b1d61ad42cdad82"
}
ACCOUNT: {
"id": "0:24a44423bc7edc2598b50ae87267bd06bc53455328e837dae32b9b7592716de7",
"acc_type_name": "Active",
"balance": "99834388127",
"boc": "te6ccgECTQEAE3[ ... ]DcIdcNH91TEd3BBCKCEP////28sdwB8AGA==",
"code": "te6ccgECSgEAEqkAAib/[ ... ]NH91TEd3BBCKCEP////28sdwB8AGA==",
"code_hash": "207dc560c5956de1a2c1479356f8f3ee70a59767db2bf4788b1d61ad42cdad82",
"data": "te6ccgEBAgEAmAAB30rKNy7ZaVq0LMi6f9f1bRHCQBYRwtUTu8KL61x/Q2OhAAABeByuyDOlZRuXbLStWhZkXT/r+raI4SALCOFqid3hRfWuP6Gx0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAAAAAAEBgBAEWgCVlG5dstK1aFmRdP+v6tojhIAsI4WqJ3eFF9a4/obHQgEA==",
"data_hash": "45d6503b666bb3ddb9204acb43470d6a5e59cadc9f358acf8570d2166687edd9",
"last_paid": 1618036237,
"workchain_id": 0
}
It is possible to query all accounts by specifying -a all
, for
example if you are using a local network for sandboxing.
Head of the blockchain¶
Let’s inspect the head (most recent block) of the blockchain:
$ ft inspect -h
BLOCK: {
"id": "a1a5c27d450556ff293a5f735e35b5f44a965f4a8396f88c95fdce690160e0ae",
"seq_no": 11462705,
"gen_utime": 1618086569,
"shard": "b800000000000000",
"status_name": "Finalized",
"tr_count": 0,
"workchain_id": 0
}
Actually, this is the most recent block of one of the shards, we may specify
a specific shard using --shard SHARD
or --shard-block BLOCKID
,
or better, using --shard-account ACCOUNT
:
$ ft inspect -h --shard-account 0:24a444
Querying last shard blockid for address
Querying shard of block "f1c99bcee306eb50714866d7a95676799f45b238ee803c119ff3d03febd148c6"
shard = "2800000000000000"
BLOCK: {
"id": "f1c99bcee306eb50714866d7a95676799f45b238ee803c119ff3d03febd148c6",
"seq_no": 11453515,
"gen_utime": 1618086998,
"shard": "2800000000000000",
"status_name": "Finalized",
"tr_count": 0,
"workchain_id": 0
}
Block Information¶
To display information on a specific block knowing its block identifier:
$ ft inspect -b 4247b3b27205e336da1159474d0df8d0d00a552b1959671c81556a9bf953ae3f -2
BLOCK: {
"id": "4247b3b27205e336da1159474d0df8d0d00a552b1959671c81556a9bf953ae3f",
"seq_no": 7518515,
"gen_utime": 1616521410,
"in_msg_descr": [
{
"msg_type_name": "Immediately",
"transaction_id": "30407b122b1bd97bb77837343f645dbd1367035084f84ecaeb3e5bb7466b7ad2"
}
],
"out_msg_descr": [],
"shard": "8000000000000000",
"status_name": "Finalized",
"tr_count": 5,
"workchain_id": -1
}
To display information on a block knowing its number (without
--shard
, blocks for all shards will be displayed)
$ ft inspect --bn 7518515 --shard c800000000000000
BLOCK: {
"id": "09dc90c72c038ac787027af6e058cd011fd6b76f1b419904625477ed890a49d0",
"seq_no": 7518515,
"gen_utime": 1608055824,
"shard": "c800000000000000",
"status_name": "Finalized",
"tr_count": 0,
"workchain_id": 0
}
Transaction Information¶
To display information on a specific transaction:
$ ft inspect -t 30407b122b1bd97bb77837343f645dbd1367035084f84ecaeb3e5bb7466b7ad2
TRANSACTION: {
"id": "30407b122b1bd97bb77837343f645dbd1367035084f84ecaeb3e5bb7466b7ad2",
"aborted": false,
"account_addr": "-1:3333333333333333333333333333333333333333333333333333333333333333",
"balance_delta": "3137500000",
"block_id": "4247b3b27205e336da1159474d0df8d0d00a552b1959671c81556a9bf953ae3f",
"in_msg": "9e4ae0da4710d0d67e201bce55890921904dd8bb81a85e246ca9a6a5ff488496",
"out_msgs": [],
"status": 3,
"status_name": "Finalized",
"total_fees": "0",
"tr_type": 0,
"tr_type_name": "Ordinary"
}
IN MESSAGE: {
"id": "9e4ae0da4710d0d67e201bce55890921904dd8bb81a85e246ca9a6a5ff488496",
"dst": "-1:3333333333333333333333333333333333333333333333333333333333333333",
"msg_type": 0,
"msg_type_name": "Internal",
"src": "-1:0000000000000000000000000000000000000000000000000000000000000000",
"status": 5,
"status_name": "Finalized",
"value": "3137500000"
}
Message Information¶
Messages information can be displayed, but not yet interpreted (method called, parameters) because it would require to know the ABI of the receiver.
To display information on a specific message knowing its identifier:
$ ft inspect -m 9e4ae0da4710d0d67e201bce55890921904dd8bb81a85e246ca9a6a5ff488496
MESSAGE: {
"id": "9e4ae0da4710d0d67e201bce55890921904dd8bb81a85e246ca9a6a5ff488496",
"dst": "-1:3333333333333333333333333333333333333333333333333333333333333333",
"msg_type": 0,
"msg_type_name": "Internal",
"src": "-1:0000000000000000000000000000000000000000000000000000000000000000",
"status": 5,
"status_name": "Finalized",
"value": "3137500000"
}
To display the last messages received by an account (use -2
to display more information, such as transaction identifiers):
$ ft inspect -m fabrice --limit 2
MESSAGE:
{
"id": "37d6aa21f9b330e5ebd8a0ff9bfc75fa126d368146f0858e6549253161965ec1",
"dst": "0:24a44423bc7edc2598b50ae87267bd06bc53455328e837dae32b9b7592716de7",
"msg_type": 0,
"msg_type_name": "Internal",
"src": "0:68ad5013a8fda69c4828602c5f9a42261eb03bcb5a1f71c764b159f8b50f0a7a",
"status": 5,
"status_name": "Finalized",
"value": "1"
}
MESSAGE:
{
"id": "f80202f96ffbfeaeb4f56ea7ba2f322ae5d1b5ca84526977d8d39a5be4636727",
"dst": "0:24a44423bc7edc2598b50ae87267bd06bc53455328e837dae32b9b7592716de7",
"msg_type": 0,
"msg_type_name": "Internal",
"src": "0:02169cad26a640ff509200bd4c950373964c75ca3e3b7cacfcad967d84951763",
"status": 5,
"status_name": "Finalized",
"value": "1"
}
To display the last messages sent by an account:
$ ft inspect -m ^fabrice --limit 2 [23:47]
MESSAGE:
{
"id": "2a5a828db238bc4ac757597b70e180d6f14e6740952eaa59a474d5d32610b3ea",
"dst": "0:68ad5013a8fda69c4828602c5f9a42261eb03bcb5a1f71c764b159f8b50f0a7a",
"msg_type": 0,
"msg_type_name": "Internal",
"src": "0:24a44423bc7edc2598b50ae87267bd06bc53455328e837dae32b9b7592716de7",
"status": 5,
"status_name": "Finalized",
"value": "10900500000000"
}
MESSAGE:
{
"id": "7dde07cd436d80ab3b47146f3e36430a0b5de4764c4b1e1d57a9b01cb787a43c",
"dst": "",
"msg_type": 2,
"msg_type_name": "ExtOut",
"src": "0:24a44423bc7edc2598b50ae87267bd06bc53455328e837dae32b9b7592716de7",
"status": 5,
"status_name": "Finalized"
}