Transaction Reference | Algorand Developer Portal
Transaction Reference
The tables below describe the fields used in Algorand transactions. Each table includes the field name, indicates if the field is required or optional, shows the type used in the protocol code, displays the codec name that appears in transactions, and provides a description of the field’s purpose. While the protocol types are shown in these tables, the input types may be different when using SDKs.
Common Fields (Header and Type)
These fields are common to all transactions.
| Field | Required | Type | codec | Description |
|---|---|---|---|---|
| Fee | required | uint64 | "fee" | Paid by the sender to the FeeSink to prevent denial-of-service. The minimum fee on Algorand is currently 1000 microAlgos. |
| FirstValid | required | uint64 | "fv" | The first round for when the transaction is valid. If the transaction is sent prior to this round it will be rejected by the network. |
| GenesisHash | required | [32]byte | "gh" | The hash of the genesis block of the network for which the transaction is valid. See the genesis hash for MainNet, TestNet, and BetaNet. |
| LastValid | required | uint64 | "lv" | The ending round for which the transaction is valid. After this round, the transaction will be rejected by the network. |
| Sender | required | Address | "snd" | The address of the account that pays the fee and amount. |
| TxType | required | string | "type" | Specifies the type of transaction. This value is automatically generated using any of the developer tools. |
| GenesisID | optional | string | "gen" | The human-readable string that identifies the network for the transaction. The genesis ID is found in the genesis block. See the genesis ID for MainNet, TestNet, and BetaNet. |
| Group | optional | [32]byte | "grp" | The group specifies that the transaction is part of a group and, if so, specifies the hash of the transaction group. Assign a group ID to a transaction through the workflow described in the Atomic Transfers Guide. |
| Lease | optional | [32]byte | "lx" | A lease enforces mutual exclusion of transactions. If this field is nonzero, then once the transaction is confirmed, it acquires the lease identified by the (Sender, Lease) pair of the transaction until the LastValid round passes. |
| Note | optional | []byte | "note" | Any data up to 1000 bytes. |
| RekeyTo | optional | Address | "rekey" | Specifies the authorized address. This address will be used to authorize all future transactions. |
Payment Transaction
Transaction Object Type: PaymentTx
Includes all fields in Header and "type" is "pay".
| Field | Required | Type | codec | Description |
|---|---|---|---|---|
| Receiver | required | Address | "rcv" | The address of the account that receives the amount. |
| Amount | required | uint64 | "amt" | The total amount to be sent in microAlgos. |
| CloseRemainderTo | optional | Address | "close" | When set, it indicates that the transaction is requesting that the Sender account should be closed, and all remaining funds, after the fee and amount are paid, be transferred to this address. |
Key Registration Transaction
Transaction Object Type: KeyRegistrationTx
Includes all fields in Header and "type" is "keyreg".
| Field | Required | Type | codec | Description |
|---|---|---|---|---|
| VotePk | required for online | ed25519PublicKey | "votekey" | The root participation public key. |
| SelectionPK | required for online | VrfPubkey | "selkey" | The VRF public key. |
| StateProofPk | required for online | MerkleSignature Verifier (64 bytes) | "sprfkey" | The 64 byte state proof public key commitment. |
| VoteFirst | required for online | uint64 | "votefst" | The first round that the participation key is valid. |
| VoteLast | required for online | uint64 | "votelst" | The last round that the participation key is valid. |
| VoteKeyDilution | required for online | uint64 | "votekd" | This is the dilution for the 2-level participation key. |
| Nonparticipation | optional | bool | "nonpart" | All new Algorand accounts are participating by default. This means that they earn rewards. Mark an account nonparticipating by setting this value to true. |
Asset Configuration Transaction
Transaction Object Type: AssetConfigTx
Includes all fields in Header and "type" is "acfg".
This is used to create, configure and destroy an asset depending on which fields are set.
| Field | Required | Type | codec | Description |
|---|---|---|---|---|
| ConfigAsset | required, except on create | uint64 | "caid" | For re-configure or destroy transactions, this is the unique asset ID. |
| AssetParams | required, except on destroy | AssetParams | "apar" | See AssetParams table for all available fields. |
Asset Parameters
Object Name: AssetParams
| Field | Required | Type | codec | Description |
|---|---|---|---|---|
| Total | required on creation | uint64 | "t" | The total number of base units of the asset to create. |
| Decimals | required on creation | uint32 | "dc" | The number of digits to use after the decimal point when displaying the asset. |
| DefaultFrozen | required on creation | bool | "df" | True to freeze holdings for this asset by default. |
| UnitName | optional | string | "un" | The name of a unit of this asset. Marc size is 8 bytes. |
| AssetName | optional | string | "an" | The name of the asset. Max size is 32 bytes. |
| URL | optional | string | "au" | Specifies a URL where more information about the asset can be retrieved. |
| MetaDataHash | optional | []byte | "am" | This field is intended to be a 32-byte hash of some metadata that is relevant to your asset. |
| ManagerAddr | optional | Address | "m" | The address of the account that can manage the configuration of the asset. |
| ReserveAddr | optional | Address | "r" | The address of the account that holds the reserve units of the asset. |
| FreezeAddr | optional | Address | "f" | The address of the account used to freeze holdings of this asset. |
| ClawbackAddr | optional | Address | "c" | The address of the account that can clawback holdings of this asset. |
Asset Transfer Transaction
Transaction Object Type: AssetTransferTx
Includes all fields in Header and "type" is "axfer".
| Field | Required | Type | codec | Description |
|---|---|---|---|---|
| XferAsset | required | uint64 | "xaid" | The unique ID of the asset to be transferred. |
| AssetAmount | required | uint64 | "aamt" | The amount of the asset to be transferred. |
| AssetSender | required | Address | "asnd" | The sender of the transfer. |
| AssetReceiver | required | Address | "arcv" | The recipient of the asset transfer. |
| AssetCloseTo | optional | Address | "aclose" | Specify this field to remove the asset holding from the sender account. |
Asset OptIn Transaction
Transaction Object Type: AssetTransferTx
Includes all fields in Header and "type" is "axfer".
This is a special form of an Asset Transfer Transaction.
| Field | Required | Type | codec | Description |
|---|---|---|---|---|
| XferAsset | required | uint64 | "xaid" | The unique ID of the asset to opt-in to. |
| Sender | required | Address | "snd" | The account which is allocating the asset to their account’s Asset map. |
| AssetReceiver | required | Address | "arcv" | The account that is allocating the asset to their account’s Asset map. |
Asset Clawback Transaction
Transaction Object Type: AssetTransferTx
Includes all fields in Header and "type" is "axfer".
This is a special form of an Asset Transfer Transaction.
| Field | Required | Type | codec | Description |
|---|---|---|---|---|
| Sender | required | Address | "snd" | The sender of this transaction must be the clawback account specified in the asset configuration. |
| XferAsset | required | uint64 | "xaid" | The unique ID of the asset to be transferred. |
| AssetAmount | required | uint64 | "aamt" | The amount of the asset to be transferred. |
| AssetSender | required | Address | "asnd" | The address from which the funds will be withdrawn. |
| AssetReceiver | required | Address | "arcv" | The recipient of the asset transfer. |
Asset Freeze Transaction
Transaction Object Type: AssetFreezeTx
Includes all fields in Header and "type" is "afrz".
| Field | Required | Type | codec | Description |
|---|---|---|---|---|
| FreezeAccount | required | Address | "fadd" | The address of the account whose asset is being frozen. |
| FreezeAsset | required | uint64 | "faid" | The asset ID being frozen. |
| AssetFrozen | required | bool | "afrz" | True to freeze the asset. |
Application Call Transaction
Transaction Object Type: ApplicationCallTx
Includes all fields in Header and "type" is "appl".
| Field | Required | Type | codec | Description |
|---|---|---|---|---|
| Application ID | required | uint64 | "apid" | ID of the application being configured or empty if creating. |
| OnComplete | required | uint64 | "apan" | Defines what additional actions occur with the transaction. |
| Accounts | optional | []Address | "apat" | List of accounts in addition to the sender that may be accessed from the application’s approval-program. |
| Approval Program | optional | []byte | "apap" | Logic executed for every application transaction. |
| App Arguments | optional | [][]byte | "abaa" | Transaction specific arguments accessed from the application’s approval-program. |
| Clear State Program | optional | []byte | "apsu" | Logic executed for application transactions with on-completion set to “clear”. |
| Foreign Apps | optional | []uint64 | "apfa" | Lists the applications in addition to the application-id whose global states may be accessed. |
| Foreign Assets | optional | []uint64 | "apas" | Lists the assets whose AssetParams may be accessed. |
| GlobalStateSchema | optional | "apgs" | Holds the maximum number of global state values defined within an object. | |
| LocalStateSchema | optional | "apls" | Holds the maximum number of local state values defined within an object. | |
| ExtraProgramPages | optional | uint64 | "apep" | Number of additional pages allocated to the application’s approval and clear state programs. |
| Boxes | optional | []BoxRef | "apbx" | The boxes that should be made available for the runtime of the program. |
| RejectVersion | optional | uint64 | "aprv" | If the application being called has a version equal to or greater than the provided reject version, the transaction will be rejected. |
| AccessList | optional | [[]Resource] | "al" | An array of resources that the application or group can use. |
Storage State Schema
Object Name: StateSchema
The StateSchema object is only required for the create application call transaction. The StateSchema object must be fully populated for both the GlobalStateSchema and LocalStateSchema objects.
| Field | Required | Type | codec | Description |
|---|---|---|---|---|
| Number Ints | required | uint64 | "nui" | Maximum number of integer values that may be stored in the application key/value store. |
| Number ByteSlices | required | uint64 | "nbs" | Maximum number of byte slices values that may be stored in the application key/value store. |
Signed Transaction
Transaction Object Type: SignedTxn
| Field | Required | Type | codec | Description |
|---|---|---|---|---|
| Sig | required, if no other sig specified | crypto.Signature | "sig" | |
| LogicSig | required, if no other sig specified | LogicSig | "lsig" | |
| Msig | required, if no other sig specified | crypto.MultisigSig | "msig" | |
| Transaction | required | Transaction | "txn" | PaymentTx, KeyRegistrationTx , AssetConfigTx, AssetTransferTx , AssetFreezeTx or ApplicationCallTx |
Heartbeat Transaction
Transaction Object Type: HeartbeatTx
Includes all fields in Header and "type" is "hbt".
| Field | Required | Type | codec | Description |
|---|---|---|---|---|
| HbAddress | required | Address | "hbad" | The account this transaction is proving onlineness for. |
| HbKeyDilution | required | uint64 | "hbkd" | Must match HbAddress account’s current KeyDilution. |
| HbProof | required | HbProofFields | "hbpf" | The heartbeat proof fields. |
| HbSeed | required | []byte | "hbsd" | Must be the block seed for this transaction’s firstValid block. |
| HbVoteID | required | []byte | "hbvid" | Must match the HbAddress account’s current VoteID. |