|Hash||bytes||Hash of body|
|Body||Nonce||uint64||Increasing number used only once per sender account|
|Account||bytes||Decoded sender account address|
|Recipient||bytes||Decoded receiver account address|
|Amount||bytes||Amount of transfer|
|Payload||bytes||Smart contract data|
|Type||int||0 is normal type, 1 is governance type|
|ChainIDHash||bytes||Hash of chain ID|
|Sign||bytes||ECDSA signature with secp256k1|
A payload can be any kind of binary data, but is most often used with JSON strings for smart contract calls.
There are two kinds of transactions.
Normal transactions are used to transfer tokens and calling smart contracts.
Governance transactions are used for calling system contracts, such as staking and voting. Transactions of this type have a special payload format and recipient.
The following table shows the specification for each field of the transaction body.
||amount to stake||
||amount to unstake||
|change raft cluster||
The aergo.system transactions, including staking, unstaking and voting, can be sent about once per day per account. For staking and unstaking, there is a limit to the amount of requests. It must be over 10000 aergo based on the amount of staked. Therefore, the first staking request should exceed 10000 aergo, and in the case of the unstaking request, more than 10000 must be left or withdrawn altogether.
The aergo.enterprise transactions are only for the private blockchain network. if you want to enable aergo.enterprise, you should make the genesis block with
See API → Receipt for a detailed explanation of all the receipt data.
Every transaction generates a receipt upon succesful execution.
status can be one of three values:
- Simple value transfer transactions and succesful contract executions.
For contract calls, the result is available in
- Failed contract execution. The error message can be found in
- Succesful contract deployment transaction. The created address can be found in