# Introduction to block and transaction structure
# 1. Block structure of GXChain
A block contains some transactions, a transaction contains the some operations, and a opreation contains the functions such as calling contract, voting, transfering, etc.
We can get the most intuitive understanding of GXChain through GXChain's block structure. A complete block contains the following information:
{
"previous": "0092ab99afb1a7bc9107d85796ce7219214c5700", //ID of the previous block
"timestamp": "2018-12-12T07:44:18", //Generate timestamp of the block
"witness": "1.6.30", //object ID
"transaction_merkle_root": "b0e3fc1caf19cb57530f5b14ad903779221f487c", //Trading Merkelgen
"extensions": [],
"witness_signature": "1f6335138fa77a52986ed0e0980ece86b919f84cf06647c2fdea3382578287c2e5403088d960cd75d5d5f134647bae80d1189e0a417f0d5bc127b294949864d662", //signature
"transactions": [
{
"ref_block_num": 43928, // The block information referenced by the transaction (ref_block_num, ref_block_prefix are from the previous block ID, which can be specified by itself)
"ref_block_prefix": 3666011859,
"expiration": "2018-12-12T07:45:12", // Transaction expiration time
"operations": [ // transactions contains operations
[
75, //Operation opcode, the number 75 indicates the call contract
{
"fee": { // Provided fee
"amount": 13097, // The amount of the fee, which contains accuracy information. For example, if the accuracy is 5, the fee should be divide by 100000.
"asset_id": "1.3.1" // Fee asset ID
},
"account": "1.2.882", // Caller account ID
"contract_id": "1.2.881", // Contract account ID
"amount": { // Assets attached to the transaction
"amount": 135000,
"asset_id": "1.3.1"
},
"method_name": "roll", // action name
"data": "1e6632693277676439536b6c717065594a7a54736c6a3658316e4873797941008813", //action params
"extensions": []
}
]
],
"extensions": [],
"signatures": [ // transaction signatures
"1f254c944ee1bc26437f0d093ef1f05269a728914fee247db0556c5cf2dac52158124c495ddb404be83f5f08ac7960593ae0e2ccc9372d138c873d68bd6b9a99b6"
],
"operation_results": [ //The execution result of the operation which includes the cost of handing、cpu and ram
[
3,
{
"billed_cpu_time_us": 505,
"ram_usage_bs": 430,
"fee": {
"amount": 13097,
"asset_id": "1.3.1"
}
}
]
]
}
],
"block_id": "0092ab9a9e7e11137fa487176f7e10992fef1c47", //block id
"signing_key": "GXC6xSvFR3hohUGut8tsARuJPMPvkdmc3KnVg2KvrKw9cvLTbTP3u", //Public key of the TrustNode
"transaction_ids": [
"ba2bdb39acda14e11bc645a41e6d0e0cba14921d" //transaction ids
]
}
# 2. Operation
The GXChain block contains multiple operations, and each operation corresponds to a Code number. According to the Code numbers, We can judge which operations are included in the block according to Code numbers. For example, the block 1769028 (opens new window) contains a transfer transaction, and Code 0 corresponds to the transfer operation. The correspondence between Code and operation which are often used :
Code | Operation Type |
---|---|
0 | transfer |
5 | create account |
6 | update account |
73 | proxy transfer |
74 | deploy contract |
75 | call contract |
76 | update contract |
# 3. Object on GXChain
The data structure of the related type on GXChain is saved by the object, the object ID is its identifier (format: x.x.x), and the instance id of the object is the last digit of the object ID. Example: The nathan account ID is 1.2.17, the instance id is 17; the GXC asset ID is 1.3.1, the instance id is 1, and the common object types are as follows:
ID | Object Type |
---|---|
1.2.x | Account object |
1.3.x | Asset object |
1.5.x | Committee object |
1.6.x | Witness object |
1.10.x | Proposal object |
1.11.x | Operation history object |
1.13.x | To unfreeze balance object |
1.14.x | Budget item object |
1.25.x | Loyalty program freezes balance object |
2.0.0 | System global parameter object |
2.1.x | Dynamic parameter object |
2.3.x | Asset dynamic parameter object |
2.5.x | Account balance object |
2.6.x | Account statistics object |
2.7.x | Transaction object |
2.8.x | Block abstract object |
2.9.x | Account transaction history object |
2.12.x | Witness schedule object |