Transaction reference
Each table below specifies the field name, whether it is optional or required, its type within the protocol code (note that SDKs input types for these fields may differ), the codec, which is the name of the field when viewed within a transaction, and a description of the field.
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. While this transaction possesses the lease, no other transaction specifying this lease can be confirmed. A lease is often used in the context of Algorand Smart Contracts to prevent replay attacks. Read more about Algorand Smart Contracts. Leases can also be used to safeguard against unintended duplicate spends. For example, if I send a transaction to the network and later realize my fee was too low, I could send another transaction with a higher fee, but the same lease value. This would ensure that only one of those transactions ends up getting confirmed during the validity period. |
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. Learn more about Rekeying accounts. |
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. See Generate a Participation Key to learn more. |
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. Not to be confused with the FirstValid round of the keyreg transaction. |
VoteLast | required for online | uint64 | "votelst" |
The last round that the participation key is valid. Not to be confused with the LastValid round of the keyreg transaction. |
VoteKeyDilution | required for online | uint64 | "votekd" |
This is the dilution for the 2-level participation key. It determines the interval (number of rounds) for generating new ephemeral keys. |
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 and this account will no longer earn rewards. It is unlikely that you will ever need to do this and exists mainly for economic-related functions on the network. |
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. On asset creation, the ID is set to zero. |
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. This number cannot be changed. |
Decimals | required on creation | uint32 | "dc" |
The number of digits to use after the decimal point when displaying the asset. If 0, the asset is not divisible. If 1, the base unit of the asset is in tenths. If 2, the base unit of the asset is in hundredths, if 3, the base unit of the asset is in thousandths, and so on up to 19 decimal places |
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. Supplied on creation. Max size is 8 bytes. Example: USDT |
AssetName | optional | string | "an" |
The name of the asset. Supplied on creation. Max size is 32 bytes. Example: Tether |
URL | optional | string | "au" |
Specifies a URL where more information about the asset can be retrieved. Max size is 96 bytes. |
MetaDataHash | optional | []byte | "am" |
This field is intended to be a 32-byte hash of some metadata that is relevant to your asset and/or asset holders. The format of this metadata is up to the application. This field can only be specified upon creation. An example might be the hash of some certificate that acknowledges the digitized asset as the official representation of a particular real-world asset. |
ManagerAddr | optional | Address | "m" |
The address of the account that can manage the configuration of the asset and destroy it. |
ReserveAddr | optional | Address | "r" |
The address of the account that holds the reserve (non-minted) units of the asset. This address has no specific authority in the protocol itself. It is used in the case where you want to signal to holders of your asset that the non-minted units of the asset reside in an account that is different from the default creator account (the sender). |
FreezeAddr | optional | Address | "f" |
The address of the account used to freeze holdings of this asset. If empty, freezing is not permitted. |
ClawbackAddr | optional | Address | "c" |
The address of the account that can clawback holdings of this asset. If empty, clawback is not permitted. |
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. A zero amount transferred to self allocates that asset in the account's Asset map. |
AssetSender | required | Address | "asnd" |
The sender of the transfer. The regular sender field should be used and this one set to the zero value for regular transfers between accounts. If this value is nonzero, it indicates a clawback transaction where the sender is the asset's clawback address and the asset sender is the address from which the funds will be withdrawn. |
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 and reduce the account's minimum balance (i.e. opt-out of the asset). |
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 which 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 or unfrozen. |
FreezeAsset | required | uint64 | "faid" |
The asset ID being frozen or unfrozen. |
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. See the OnComplete section of the TEAL spec for details. |
Accounts | optional | []Address | "apat" |
List of accounts in addition to the sender that may be accessed from the application's approval-program and clear-state-program. |
Approval Program | optional | []byte | "apap" |
Logic executed for every application transaction, except when on-completion is set to "clear". It can read and write global state for the application, as well as account-specific local state. Approval programs may reject the transaction. |
App Arguments | optional | [][]byte | "apaa" |
Transaction specific arguments accessed from the application's approval-program and clear-state-program. |
Clear State Program | optional | []byte | "apsu" |
Logic executed for application transactions with on-completion set to "clear". It can read and write global state for the application, as well as account-specific local state. Clear state programs cannot reject the transaction. |
Foreign Apps | optional | []uint64 | "apfa" |
Lists the applications in addition to the application-id whose global states may be accessed by this application's approval-program and clear-state-program. The access is read-only. |
Foreign Assets | optional | []uint64 | "apas" |
Lists the assets whose AssetParams may be accessed by this application's approval-program and clear-state-program. The access is read-only. |
GlobalStateSchema | optional | StateSchema | "apgs" |
Holds the maximum number of global state values defined within a StateSchema object. |
LocalStateSchema | optional | StateSchema | "apls" |
Holds the maximum number of local state values defined within a StateSchema object. |
ExtraProgramPages | optional | uint64 | "apep" |
Number of additional pages allocated to the application's approval and clear state programs. Each ExtraProgramPages is 2048 bytes. The sum of ApprovalProgram and ClearStateProgram may not exceed 2048*(1+ExtraProgramPages ) bytes. |
Boxes | optional | []BoxRef | "apbx" |
The boxes that should be made available for the runtime of the program. |
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 [global || local] application key/value store. Immutable. |
Number ByteSlices | required | uint64 | "nbs" |
Maximum number of byte slices values that may be stored in the [global || local] application key/value store. Immutable. |
Signed Transaction¶
Transaction Object Type: SignedTxn
Field | Required | Type | codec | Description |
---|---|---|---|---|
Sig | required, if no other sig specified | crypto.Signature | "sig" |
|
Msig | required, if no other sig specified | crypto.MultisigSig | "msig" |
|
LogicSig | required, if no other sig specified | LogicSig | "lsig" |
|
Transaction | required | Transaction | "txn" |
PaymentTx , KeyRegistrationTx , AssetConfigTx , AssetTransferTx , AssetFreezeTx or ApplicationCallTx |