shgraph.hapi.0.54.2.source-code.transaction_body.proto Maven / Gradle / Ivy
syntax = "proto3";
package proto;
/*
* Copyright (C) 2018-2024 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
option java_package = "com.hederahashgraph.api.proto.java";
// <<>> This comment is special code for setting PBJ Compiler java package
option java_multiple_files = true;
import "system_delete.proto";
import "system_undelete.proto";
import "freeze.proto";
import "contract_call.proto";
import "contract_create.proto";
import "contract_update.proto";
import "crypto_add_live_hash.proto";
import "crypto_create.proto";
import "crypto_delete.proto";
import "crypto_delete_live_hash.proto";
import "crypto_transfer.proto";
import "crypto_update.proto";
import "crypto_approve_allowance.proto";
import "crypto_delete_allowance.proto";
import "ethereum_transaction.proto";
import "file_append.proto";
import "file_create.proto";
import "file_delete.proto";
import "file_update.proto";
import "duration.proto";
import "basic_types.proto";
import "contract_delete.proto";
import "consensus_create_topic.proto";
import "consensus_update_topic.proto";
import "consensus_delete_topic.proto";
import "consensus_submit_message.proto";
import "unchecked_submit.proto";
import "token_create.proto";
import "token_freeze_account.proto";
import "token_unfreeze_account.proto";
import "token_grant_kyc.proto";
import "token_revoke_kyc.proto";
import "token_delete.proto";
import "token_update.proto";
import "token_mint.proto";
import "token_burn.proto";
import "token_wipe_account.proto";
import "token_associate.proto";
import "token_dissociate.proto";
import "token_fee_schedule_update.proto";
import "token_pause.proto";
import "token_unpause.proto";
import "token_update_nfts.proto";
import "token_reject.proto";
import "token_airdrop.proto";
import "token_cancel_airdrop.proto";
import "token_claim_airdrop.proto";
import "schedule_create.proto";
import "schedule_delete.proto";
import "schedule_sign.proto";
import "node_stake_update.proto";
import "util_prng.proto";
import "node_create.proto";
import "node_update.proto";
import "node_delete.proto";
/**
* A single transaction. All transaction types are possible here.
*/
message TransactionBody {
/**
* The ID for this transaction, which includes the payer's account (the account paying the
* transaction fee). If two transactions have the same transactionID, they won't both have an
* effect
*/
TransactionID transactionID = 1;
/**
* The account of the node that submits the client's transaction to the network
*/
AccountID nodeAccountID = 2;
/**
* The maximum transaction fee the client is willing to pay
*/
uint64 transactionFee = 3;
/**
* The transaction is invalid if consensusTimestamp > transactionID.transactionValidStart +
* transactionValidDuration
*/
Duration transactionValidDuration = 4;
/**
* Should a record of this transaction be generated? (A receipt is always generated, but the
* record is optional)
*/
bool generateRecord = 5 [deprecated = true];
/**
* Any notes or descriptions that should be put into the record (max length 100)
*/
string memo = 6;
/**
* The choices here are arranged by service in roughly lexicographical order. The field ordinals are non-sequential, and a result of the historical order of implementation.
*/
oneof data {
/**
* Calls a function of a contract instance
*/
ContractCallTransactionBody contractCall = 7;
/**
* Creates a contract instance
*/
ContractCreateTransactionBody contractCreateInstance = 8;
/**
* Updates a contract
*/
ContractUpdateTransactionBody contractUpdateInstance = 9;
/**
* Attach a new livehash to an account
*/
CryptoAddLiveHashTransactionBody cryptoAddLiveHash = 10;
/**
* Create a new cryptocurrency account
*/
CryptoCreateTransactionBody cryptoCreateAccount = 11;
/**
* Delete a cryptocurrency account (mark as deleted, and transfer hbars out)
*/
CryptoDeleteTransactionBody cryptoDelete = 12;
/**
* Remove a livehash from an account
*/
CryptoDeleteLiveHashTransactionBody cryptoDeleteLiveHash = 13;
/**
* Transfer amount between accounts
*/
CryptoTransferTransactionBody cryptoTransfer = 14;
/**
* Modify information such as the expiration date for an account
*/
CryptoUpdateTransactionBody cryptoUpdateAccount = 15;
/**
* Add bytes to the end of the contents of a file
*/
FileAppendTransactionBody fileAppend = 16;
/**
* Create a new file
*/
FileCreateTransactionBody fileCreate = 17;
/**
* Delete a file (remove contents and mark as deleted until it expires)
*/
FileDeleteTransactionBody fileDelete = 18;
/**
* Modify information such as the expiration date for a file
*/
FileUpdateTransactionBody fileUpdate = 19;
/**
* Hedera administrative deletion of a file or smart contract
*/
SystemDeleteTransactionBody systemDelete = 20;
/**
* To undelete an entity deleted by SystemDelete
*/
SystemUndeleteTransactionBody systemUndelete = 21;
/**
* Delete contract and transfer remaining balance into specified account
*/
ContractDeleteTransactionBody contractDeleteInstance = 22;
/**
* Freeze the nodes
*/
FreezeTransactionBody freeze = 23;
/**
* Creates a topic
*/
ConsensusCreateTopicTransactionBody consensusCreateTopic = 24;
/**
* Updates a topic
*/
ConsensusUpdateTopicTransactionBody consensusUpdateTopic = 25;
/**
* Deletes a topic
*/
ConsensusDeleteTopicTransactionBody consensusDeleteTopic = 26;
/**
* Submits message to a topic
*/
ConsensusSubmitMessageTransactionBody consensusSubmitMessage = 27;
/**
* UNDOCUMENTED
*/
UncheckedSubmitBody uncheckedSubmit = 28;
/**
* Creates a token instance
*/
TokenCreateTransactionBody tokenCreation = 29;
/**
* Freezes account not to be able to transact with a token
*/
TokenFreezeAccountTransactionBody tokenFreeze = 31;
/**
* Unfreezes account for a token
*/
TokenUnfreezeAccountTransactionBody tokenUnfreeze = 32;
/**
* Grants KYC to an account for a token
*/
TokenGrantKycTransactionBody tokenGrantKyc = 33;
/**
* Revokes KYC of an account for a token
*/
TokenRevokeKycTransactionBody tokenRevokeKyc = 34;
/**
* Deletes a token instance
*/
TokenDeleteTransactionBody tokenDeletion = 35;
/**
* Updates a token instance
*/
TokenUpdateTransactionBody tokenUpdate = 36;
/**
* Mints new tokens to a token's treasury account
*/
TokenMintTransactionBody tokenMint = 37;
/**
* Burns tokens from a token's treasury account
*/
TokenBurnTransactionBody tokenBurn = 38;
/**
* Wipes amount of tokens from an account
*/
TokenWipeAccountTransactionBody tokenWipe = 39;
/**
* Associate tokens to an account
*/
TokenAssociateTransactionBody tokenAssociate = 40;
/**
* Dissociate tokens from an account
*/
TokenDissociateTransactionBody tokenDissociate = 41;
/**
* Creates a schedule in the network's action queue
*/
ScheduleCreateTransactionBody scheduleCreate = 42;
/**
* Deletes a schedule from the network's action queue
*/
ScheduleDeleteTransactionBody scheduleDelete = 43;
/**
* Adds one or more Ed25519 keys to the affirmed signers of a scheduled transaction
*/
ScheduleSignTransactionBody scheduleSign = 44;
/**
* Updates a token's custom fee schedule
*/
TokenFeeScheduleUpdateTransactionBody token_fee_schedule_update = 45;
/**
* Pauses the Token
*/
TokenPauseTransactionBody token_pause = 46;
/**
* Unpauses the Token
*/
TokenUnpauseTransactionBody token_unpause = 47;
/**
* Adds one or more approved allowances for spenders to transfer the paying account's hbar or tokens.
*/
CryptoApproveAllowanceTransactionBody cryptoApproveAllowance = 48;
/**
* Deletes one or more of the specific approved NFT serial numbers on an owner account.
*/
CryptoDeleteAllowanceTransactionBody cryptoDeleteAllowance = 49;
/**
* An Ethereum encoded transaction.
*/
EthereumTransactionBody ethereumTransaction = 50;
/**
* Updates the staking info at the end of staking period to indicate new staking period has started.
*/
NodeStakeUpdateTransactionBody node_stake_update = 51;
/**
* Generates a pseudorandom number.
*/
UtilPrngTransactionBody util_prng = 52;
/**
* Update the metadata of one or more NFT's of a specific token type.
*/
TokenUpdateNftsTransactionBody token_update_nfts = 53;
/**
* A transaction body for a `createNode` request.
*
* This transaction SHALL create a new consensus node record and add
* that record to the network address book.
*/
com.hedera.hapi.node.addressbook.NodeCreateTransactionBody nodeCreate = 54;
/**
* A transaction body for an `updateNode` request.
*
* This transaction SHALL update an existing consensus node record in
* the network address book.
*/
com.hedera.hapi.node.addressbook.NodeUpdateTransactionBody nodeUpdate = 55;
/**
* A transaction body for a `deleteNode` request.
*
* This transaction SHALL remove an existing consensus node record from
* the network address book.
*/
com.hedera.hapi.node.addressbook.NodeDeleteTransactionBody nodeDelete = 56;
/**
* A transaction body to "reject" undesired tokens.
* This transaction will transfer one or more tokens or token
* balances held by the requesting account to the treasury
* for each token type.
*
* Each transfer MUST be one of the following:
*
* - A single non-fungible/unique token.
* - The full balance held for a fungible/common
* token type.
*
* When complete, the requesting account SHALL NOT hold the
* rejected tokens.
* Custom fees and royalties defined for the tokens rejected
* SHALL NOT be charged for this transaction.
*/
TokenRejectTransactionBody tokenReject = 57;
/**
* A transaction body for a `tokenAirdrop` request.
*/
TokenAirdropTransactionBody tokenAirdrop = 58;
/**
* A transaction body for a `cancelAirdrop` request.
*/
TokenCancelAirdropTransactionBody tokenCancelAirdrop = 59;
/**
* A transaction body for a `claimAirdrop` request.
*/
TokenClaimAirdropTransactionBody tokenClaimAirdrop = 60;
}
}