syntax = "proto3"; package protocol; import "core/Tron.proto"; import "core/contract/asset_issue_contract.proto"; import "core/contract/account_contract.proto"; import "core/contract/witness_contract.proto"; import "core/contract/balance_contract.proto"; import "core/contract/proposal_contract.proto"; import "core/contract/storage_contract.proto"; import "core/contract/exchange_contract.proto"; import "core/contract/market_contract.proto"; import "core/contract/smart_contract.proto"; import "core/contract/shield_contract.proto"; option java_package = "org.tron.api"; //Specify the name of the package that generated the Java file option java_outer_classname = "GrpcAPI"; //Specify the class name of the generated Java file option go_package = "github.com/tronprotocol/grpc-gateway/api"; service Wallet { rpc GetAccount (Account) returns (Account) { }; rpc GetAccountById (Account) returns (Account) { }; rpc GetAccountBalance (AccountBalanceRequest) returns (AccountBalanceResponse) { }; rpc GetBlockBalanceTrace (BlockBalanceTrace.BlockIdentifier) returns (BlockBalanceTrace) { }; //Please use CreateTransaction2 instead of this function. rpc CreateTransaction (TransferContract) returns (Transaction) { }; //Use this function instead of CreateTransaction. rpc CreateTransaction2 (TransferContract) returns (TransactionExtention) { }; rpc BroadcastTransaction (Transaction) returns (Return) { }; //Please use UpdateAccount2 instead of this function. rpc UpdateAccount (AccountUpdateContract) returns (Transaction) { }; rpc SetAccountId (SetAccountIdContract) returns (Transaction) { }; //Use this function instead of UpdateAccount. rpc UpdateAccount2 (AccountUpdateContract) returns (TransactionExtention) { }; //Please use VoteWitnessAccount2 instead of this function. rpc VoteWitnessAccount (VoteWitnessContract) returns (Transaction) { }; //modify the consume_user_resource_percent rpc UpdateSetting (UpdateSettingContract) returns (TransactionExtention) { }; //modify the energy_limit rpc UpdateEnergyLimit (UpdateEnergyLimitContract) returns (TransactionExtention) { }; //Use this function instead of VoteWitnessAccount. rpc VoteWitnessAccount2 (VoteWitnessContract) returns (TransactionExtention) { }; //Please use CreateAssetIssue2 instead of this function. rpc CreateAssetIssue (AssetIssueContract) returns (Transaction) { }; //Use this function instead of CreateAssetIssue. rpc CreateAssetIssue2 (AssetIssueContract) returns (TransactionExtention) { }; //Please use UpdateWitness2 instead of this function. rpc UpdateWitness (WitnessUpdateContract) returns (Transaction) { }; //Use this function instead of UpdateWitness. rpc UpdateWitness2 (WitnessUpdateContract) returns (TransactionExtention) { }; //Please use CreateAccount2 instead of this function. rpc CreateAccount (AccountCreateContract) returns (Transaction) { }; //Use this function instead of CreateAccount. rpc CreateAccount2 (AccountCreateContract) returns (TransactionExtention) { } //Please use CreateWitness2 instead of this function. rpc CreateWitness (WitnessCreateContract) returns (Transaction) { }; //Use this function instead of CreateWitness. rpc CreateWitness2 (WitnessCreateContract) returns (TransactionExtention) { } //Please use TransferAsset2 instead of this function. rpc TransferAsset (TransferAssetContract) returns (Transaction) { } //Use this function instead of TransferAsset. rpc TransferAsset2 (TransferAssetContract) returns (TransactionExtention) { } //Please use ParticipateAssetIssue2 instead of this function. rpc ParticipateAssetIssue (ParticipateAssetIssueContract) returns (Transaction) { } //Use this function instead of ParticipateAssetIssue. rpc ParticipateAssetIssue2 (ParticipateAssetIssueContract) returns (TransactionExtention) { } //Please use FreezeBalance2 instead of this function. rpc FreezeBalance (FreezeBalanceContract) returns (Transaction) { } //Use this function instead of FreezeBalance. rpc FreezeBalance2 (FreezeBalanceContract) returns (TransactionExtention) { } //Use this function when FreezeBalanceV2. rpc FreezeBalanceV2 (FreezeBalanceV2Contract) returns (TransactionExtention) { } //Please use UnfreezeBalance2 instead of this function. rpc UnfreezeBalance (UnfreezeBalanceContract) returns (Transaction) { } //Use this function instead of UnfreezeBalance. rpc UnfreezeBalance2 (UnfreezeBalanceContract) returns (TransactionExtention) { } //Use this function when UnfreezeBalanceV2. rpc UnfreezeBalanceV2 (UnfreezeBalanceV2Contract) returns (TransactionExtention) { } //Please use UnfreezeAsset2 instead of this function. rpc UnfreezeAsset (UnfreezeAssetContract) returns (Transaction) { } //Use this function instead of UnfreezeAsset. rpc UnfreezeAsset2 (UnfreezeAssetContract) returns (TransactionExtention) { } //Please use WithdrawBalance2 instead of this function. rpc WithdrawBalance (WithdrawBalanceContract) returns (Transaction) { } //Use this function instead of WithdrawBalance. rpc WithdrawBalance2 (WithdrawBalanceContract) returns (TransactionExtention) { } rpc WithdrawExpireUnfreeze (WithdrawExpireUnfreezeContract) returns (TransactionExtention) { } rpc DelegateResource (DelegateResourceContract) returns (TransactionExtention) { } rpc UnDelegateResource (UnDelegateResourceContract) returns (TransactionExtention) { } rpc CancelAllUnfreezeV2 (CancelAllUnfreezeV2Contract) returns (TransactionExtention) { } //Please use UpdateAsset2 instead of this function. rpc UpdateAsset (UpdateAssetContract) returns (Transaction) { } //Use this function instead of UpdateAsset. rpc UpdateAsset2 (UpdateAssetContract) returns (TransactionExtention) { } rpc ProposalCreate (ProposalCreateContract) returns (TransactionExtention) { } rpc ProposalApprove (ProposalApproveContract) returns (TransactionExtention) { } rpc ProposalDelete (ProposalDeleteContract) returns (TransactionExtention) { } rpc BuyStorage (BuyStorageContract) returns (TransactionExtention) { } rpc BuyStorageBytes (BuyStorageBytesContract) returns (TransactionExtention) { } rpc SellStorage (SellStorageContract) returns (TransactionExtention) { } rpc ExchangeCreate (ExchangeCreateContract) returns (TransactionExtention) { } rpc ExchangeInject (ExchangeInjectContract) returns (TransactionExtention) { } rpc ExchangeWithdraw (ExchangeWithdrawContract) returns (TransactionExtention) { } rpc ExchangeTransaction (ExchangeTransactionContract) returns (TransactionExtention) { } rpc MarketSellAsset (MarketSellAssetContract) returns (TransactionExtention) { } rpc MarketCancelOrder (MarketCancelOrderContract) returns (TransactionExtention) { } rpc GetMarketOrderById (BytesMessage) returns (MarketOrder) { } rpc GetMarketOrderByAccount (BytesMessage) returns (MarketOrderList) { } rpc GetMarketPriceByPair (MarketOrderPair) returns (MarketPriceList) { } rpc GetMarketOrderListByPair (MarketOrderPair) returns (MarketOrderList) { } rpc GetMarketPairList (EmptyMessage) returns (MarketOrderPairList) { } rpc ListNodes (EmptyMessage) returns (NodeList) { } rpc GetAssetIssueByAccount (Account) returns (AssetIssueList) { } rpc GetAccountNet (Account) returns (AccountNetMessage) { }; rpc GetAccountResource (Account) returns (AccountResourceMessage) { }; rpc GetAssetIssueByName (BytesMessage) returns (AssetIssueContract) { } rpc GetAssetIssueListByName (BytesMessage) returns (AssetIssueList) { } rpc GetAssetIssueById (BytesMessage) returns (AssetIssueContract) { } //Please use GetNowBlock2 instead of this function. rpc GetNowBlock (EmptyMessage) returns (Block) { } //Use this function instead of GetNowBlock. rpc GetNowBlock2 (EmptyMessage) returns (BlockExtention) { } //Please use GetBlockByNum2 instead of this function. rpc GetBlockByNum (NumberMessage) returns (Block) { } //Use this function instead of GetBlockByNum. rpc GetBlockByNum2 (NumberMessage) returns (BlockExtention) { } rpc GetTransactionCountByBlockNum (NumberMessage) returns (NumberMessage) { } rpc GetBlockById (BytesMessage) returns (Block) { } //Please use GetBlockByLimitNext2 instead of this function. rpc GetBlockByLimitNext (BlockLimit) returns (BlockList) { } //Use this function instead of GetBlockByLimitNext. rpc GetBlockByLimitNext2 (BlockLimit) returns (BlockListExtention) { } //Please use GetBlockByLatestNum2 instead of this function. rpc GetBlockByLatestNum (NumberMessage) returns (BlockList) { } //Use this function instead of GetBlockByLatestNum. rpc GetBlockByLatestNum2 (NumberMessage) returns (BlockListExtention) { } rpc GetTransactionById (BytesMessage) returns (Transaction) { } rpc DeployContract (CreateSmartContract) returns (TransactionExtention) { } rpc GetContract (BytesMessage) returns (SmartContract) { } rpc GetContractInfo (BytesMessage) returns (SmartContractDataWrapper) { } rpc TriggerContract (TriggerSmartContract) returns (TransactionExtention) { } rpc TriggerConstantContract (TriggerSmartContract) returns (TransactionExtention) { } rpc EstimateEnergy (TriggerSmartContract) returns (EstimateEnergyMessage) { } rpc ClearContractABI (ClearABIContract) returns (TransactionExtention) { } rpc ListWitnesses (EmptyMessage) returns (WitnessList) { }; rpc GetDelegatedResource (DelegatedResourceMessage) returns (DelegatedResourceList) { }; rpc GetDelegatedResourceV2 (DelegatedResourceMessage) returns (DelegatedResourceList) { }; rpc GetDelegatedResourceAccountIndex (BytesMessage) returns (DelegatedResourceAccountIndex) { }; rpc GetDelegatedResourceAccountIndexV2 (BytesMessage) returns (DelegatedResourceAccountIndex) { }; rpc GetCanDelegatedMaxSize (CanDelegatedMaxSizeRequestMessage) returns (CanDelegatedMaxSizeResponseMessage) { }; rpc GetAvailableUnfreezeCount (GetAvailableUnfreezeCountRequestMessage) returns (GetAvailableUnfreezeCountResponseMessage) { }; rpc GetCanWithdrawUnfreezeAmount (CanWithdrawUnfreezeAmountRequestMessage) returns (CanWithdrawUnfreezeAmountResponseMessage) { } rpc ListProposals (EmptyMessage) returns (ProposalList) { }; rpc GetPaginatedProposalList (PaginatedMessage) returns (ProposalList) { } rpc GetProposalById (BytesMessage) returns (Proposal) { }; rpc ListExchanges (EmptyMessage) returns (ExchangeList) { }; rpc GetPaginatedExchangeList (PaginatedMessage) returns (ExchangeList) { } rpc GetExchangeById (BytesMessage) returns (Exchange) { }; rpc GetChainParameters (EmptyMessage) returns (ChainParameters) { }; rpc GetAssetIssueList (EmptyMessage) returns (AssetIssueList) { } rpc GetPaginatedAssetIssueList (PaginatedMessage) returns (AssetIssueList) { } rpc TotalTransaction (EmptyMessage) returns (NumberMessage) { } rpc GetNextMaintenanceTime (EmptyMessage) returns (NumberMessage) { } rpc GetTransactionInfoById (BytesMessage) returns (TransactionInfo) { } rpc AccountPermissionUpdate (AccountPermissionUpdateContract) returns (TransactionExtention) { } rpc GetTransactionSignWeight (Transaction) returns (TransactionSignWeight) { } rpc GetTransactionApprovedList (Transaction) returns (TransactionApprovedList) { } rpc GetNodeInfo (EmptyMessage) returns (NodeInfo) { }; rpc GetRewardInfo (BytesMessage) returns (NumberMessage) { }; rpc GetBrokerageInfo (BytesMessage) returns (NumberMessage) { }; rpc UpdateBrokerage (UpdateBrokerageContract) returns (TransactionExtention) { }; // for shiededTransaction rpc CreateShieldedTransaction (PrivateParameters) returns (TransactionExtention) { }; rpc GetMerkleTreeVoucherInfo (OutputPointInfo) returns (IncrementalMerkleVoucherInfo) { } rpc ScanNoteByIvk (IvkDecryptParameters) returns (DecryptNotes) { }; rpc ScanAndMarkNoteByIvk (IvkDecryptAndMarkParameters) returns (DecryptNotesMarked) { }; rpc ScanNoteByOvk (OvkDecryptParameters) returns (DecryptNotes) { }; rpc GetSpendingKey (EmptyMessage) returns (BytesMessage) { } rpc GetExpandedSpendingKey (BytesMessage) returns (ExpandedSpendingKeyMessage) { } rpc GetAkFromAsk (BytesMessage) returns (BytesMessage) { } rpc GetNkFromNsk (BytesMessage) returns (BytesMessage) { } rpc GetIncomingViewingKey (ViewingKeyMessage) returns (IncomingViewingKeyMessage) { } rpc GetDiversifier (EmptyMessage) returns (DiversifierMessage) { } rpc GetNewShieldedAddress (EmptyMessage) returns (ShieldedAddressInfo) { } rpc GetZenPaymentAddress (IncomingViewingKeyDiversifierMessage) returns (PaymentAddressMessage) { } rpc GetRcm (EmptyMessage) returns (BytesMessage) { } rpc IsSpend (NoteParameters) returns (SpendResult) { } rpc CreateShieldedTransactionWithoutSpendAuthSig (PrivateParametersWithoutAsk) returns (TransactionExtention) { }; rpc GetShieldTransactionHash (Transaction) returns (BytesMessage) { }; rpc CreateSpendAuthSig (SpendAuthSigParameters) returns (BytesMessage) { }; rpc CreateShieldNullifier (NfParameters) returns (BytesMessage) { }; //for shielded contract rpc CreateShieldedContractParameters (PrivateShieldedTRC20Parameters) returns (ShieldedTRC20Parameters) { }; rpc CreateShieldedContractParametersWithoutAsk (PrivateShieldedTRC20ParametersWithoutAsk) returns (ShieldedTRC20Parameters) { }; rpc ScanShieldedTRC20NotesByIvk (IvkDecryptTRC20Parameters) returns (DecryptNotesTRC20) { }; rpc ScanShieldedTRC20NotesByOvk (OvkDecryptTRC20Parameters) returns (DecryptNotesTRC20) { }; rpc IsShieldedTRC20ContractNoteSpent (NfTRC20Parameters) returns (NullifierResult) { }; rpc GetTriggerInputForShieldedTRC20Contract (ShieldedTRC20TriggerContractParameters) returns (BytesMessage) { }; // end for shiededTransaction rpc CreateCommonTransaction (Transaction) returns (TransactionExtention) { }; rpc GetTransactionInfoByBlockNum (NumberMessage) returns (TransactionInfoList) { } rpc GetBurnTrx (EmptyMessage) returns (NumberMessage) { } rpc GetTransactionFromPending (BytesMessage) returns (Transaction) { } rpc GetTransactionListFromPending (EmptyMessage) returns (TransactionIdList) { } rpc GetPendingSize (EmptyMessage) returns (NumberMessage) { } rpc GetBlock (BlockReq) returns (BlockExtention) { } rpc GetBandwidthPrices (EmptyMessage) returns (PricesResponseMessage) { } rpc GetEnergyPrices (EmptyMessage) returns (PricesResponseMessage) { } rpc GetMemoFee (EmptyMessage) returns (PricesResponseMessage) { } }; service WalletSolidity { rpc GetAccount (Account) returns (Account) { }; rpc GetAccountById (Account) returns (Account) { }; rpc ListWitnesses (EmptyMessage) returns (WitnessList) { }; rpc GetAssetIssueList (EmptyMessage) returns (AssetIssueList) { } rpc GetPaginatedAssetIssueList (PaginatedMessage) returns (AssetIssueList) { } rpc GetAssetIssueByName (BytesMessage) returns (AssetIssueContract) { } rpc GetAssetIssueListByName (BytesMessage) returns (AssetIssueList) { } rpc GetAssetIssueById (BytesMessage) returns (AssetIssueContract) { } //Please use GetNowBlock2 instead of this function. rpc GetNowBlock (EmptyMessage) returns (Block) { } //Use this function instead of GetNowBlock. rpc GetNowBlock2 (EmptyMessage) returns (BlockExtention) { } //Please use GetBlockByNum2 instead of this function. rpc GetBlockByNum (NumberMessage) returns (Block) { } //Use this function instead of GetBlockByNum. rpc GetBlockByNum2 (NumberMessage) returns (BlockExtention) { } rpc GetTransactionCountByBlockNum (NumberMessage) returns (NumberMessage) { } rpc GetDelegatedResource (DelegatedResourceMessage) returns (DelegatedResourceList) { }; rpc GetDelegatedResourceV2 (DelegatedResourceMessage) returns (DelegatedResourceList) { }; rpc GetDelegatedResourceAccountIndex (BytesMessage) returns (DelegatedResourceAccountIndex) { }; rpc GetDelegatedResourceAccountIndexV2 (BytesMessage) returns (DelegatedResourceAccountIndex) { }; rpc GetCanDelegatedMaxSize (CanDelegatedMaxSizeRequestMessage) returns (CanDelegatedMaxSizeResponseMessage) { }; rpc GetAvailableUnfreezeCount (GetAvailableUnfreezeCountRequestMessage) returns (GetAvailableUnfreezeCountResponseMessage) { }; rpc GetCanWithdrawUnfreezeAmount (CanWithdrawUnfreezeAmountRequestMessage) returns (CanWithdrawUnfreezeAmountResponseMessage) { } rpc GetExchangeById (BytesMessage) returns (Exchange) { }; rpc ListExchanges (EmptyMessage) returns (ExchangeList) { }; rpc GetTransactionById (BytesMessage) returns (Transaction) { } rpc GetTransactionInfoById (BytesMessage) returns (TransactionInfo) { } rpc GetMerkleTreeVoucherInfo (OutputPointInfo) returns (IncrementalMerkleVoucherInfo) { } rpc ScanNoteByIvk (IvkDecryptParameters) returns (DecryptNotes) { } rpc ScanAndMarkNoteByIvk (IvkDecryptAndMarkParameters) returns (DecryptNotesMarked) { } rpc ScanNoteByOvk (OvkDecryptParameters) returns (DecryptNotes) { } rpc IsSpend (NoteParameters) returns (SpendResult) { } rpc ScanShieldedTRC20NotesByIvk (IvkDecryptTRC20Parameters) returns (DecryptNotesTRC20) { }; rpc ScanShieldedTRC20NotesByOvk (OvkDecryptTRC20Parameters) returns (DecryptNotesTRC20) { }; rpc IsShieldedTRC20ContractNoteSpent (NfTRC20Parameters) returns (NullifierResult) { }; rpc GetRewardInfo (BytesMessage) returns (NumberMessage) { }; rpc GetBrokerageInfo (BytesMessage) returns (NumberMessage) { }; rpc TriggerConstantContract (TriggerSmartContract) returns (TransactionExtention) { } rpc EstimateEnergy (TriggerSmartContract) returns (EstimateEnergyMessage) { } rpc GetTransactionInfoByBlockNum (NumberMessage) returns (TransactionInfoList) { } rpc GetMarketOrderById (BytesMessage) returns (MarketOrder) { } rpc GetMarketOrderByAccount (BytesMessage) returns (MarketOrderList) { } rpc GetMarketPriceByPair (MarketOrderPair) returns (MarketPriceList) { } rpc GetMarketOrderListByPair (MarketOrderPair) returns (MarketOrderList) { } rpc GetMarketPairList (EmptyMessage) returns (MarketOrderPairList) { } rpc GetBurnTrx (EmptyMessage) returns (NumberMessage) { } rpc GetBlock (BlockReq) returns (BlockExtention) { } rpc GetBandwidthPrices (EmptyMessage) returns (PricesResponseMessage) { } rpc GetEnergyPrices (EmptyMessage) returns (PricesResponseMessage) { } }; service WalletExtension { //Please use GetTransactionsFromThis2 instead of this function. rpc GetTransactionsFromThis (AccountPaginated) returns (TransactionList) { } //Use this function instead of GetTransactionsFromThis. rpc GetTransactionsFromThis2 (AccountPaginated) returns (TransactionListExtention) { } //Please use GetTransactionsToThis2 instead of this function. rpc GetTransactionsToThis (AccountPaginated) returns (TransactionList) { } //Use this function instead of GetTransactionsToThis. rpc GetTransactionsToThis2 (AccountPaginated) returns (TransactionListExtention) { } }; // the api of tron's db service Database { // for tapos rpc getBlockReference (EmptyMessage) returns (BlockReference) { } rpc GetDynamicProperties (EmptyMessage) returns (DynamicProperties) { } rpc GetNowBlock (EmptyMessage) returns (Block) { } rpc GetBlockByNum (NumberMessage) returns (Block) { } }; service Monitor { rpc GetStatsInfo (EmptyMessage) returns (MetricsInfo) { } } message Return { enum response_code { SUCCESS = 0; SIGERROR = 1; // error in signature CONTRACT_VALIDATE_ERROR = 2; CONTRACT_EXE_ERROR = 3; BANDWITH_ERROR = 4; DUP_TRANSACTION_ERROR = 5; TAPOS_ERROR = 6; TOO_BIG_TRANSACTION_ERROR = 7; TRANSACTION_EXPIRATION_ERROR = 8; SERVER_BUSY = 9; NO_CONNECTION = 10; NOT_ENOUGH_EFFECTIVE_CONNECTION = 11; BLOCK_UNSOLIDIFIED = 12; OTHER_ERROR = 20; } bool result = 1; response_code code = 2; bytes message = 3; } message BlockReference { int64 block_num = 1; bytes block_hash = 2; } // the api of tron's network such as node list. service Network { }; message WitnessList { repeated Witness witnesses = 1; } message ProposalList { repeated Proposal proposals = 1; } message ExchangeList { repeated Exchange exchanges = 1; } message AssetIssueList { repeated AssetIssueContract assetIssue = 1; } message BlockList { repeated Block block = 1; } message TransactionList { repeated Transaction transaction = 1; } message TransactionIdList { repeated string txId = 1; } message DelegatedResourceMessage { bytes fromAddress = 1; bytes toAddress = 2; } message DelegatedResourceList { repeated DelegatedResource delegatedResource = 1; } message GetAvailableUnfreezeCountRequestMessage { bytes owner_address = 1; } message GetAvailableUnfreezeCountResponseMessage { int64 count = 1; } message CanDelegatedMaxSizeRequestMessage { int32 type = 1; bytes owner_address = 2; } message CanDelegatedMaxSizeResponseMessage { int64 max_size = 1; } message CanWithdrawUnfreezeAmountRequestMessage { bytes owner_address = 1; int64 timestamp = 2; } message CanWithdrawUnfreezeAmountResponseMessage { int64 amount = 1; } message PricesResponseMessage { string prices = 1; } // Gossip node list message NodeList { repeated Node nodes = 1; } // Gossip node message Node { Address address = 1; } // Gossip node address message Address { bytes host = 1; int32 port = 2; } message EmptyMessage { } message NumberMessage { int64 num = 1; } message BytesMessage { bytes value = 1; } message TimeMessage { int64 beginInMilliseconds = 1; int64 endInMilliseconds = 2; } message BlockReq { string id_or_num = 1; bool detail = 2; } message BlockLimit { int64 startNum = 1; int64 endNum = 2; } message TransactionLimit { bytes transactionId = 1; int64 limitNum = 2; } message AccountPaginated { Account account = 1; int64 offset = 2; int64 limit = 3; } message TimePaginatedMessage { TimeMessage timeMessage = 1; int64 offset = 2; int64 limit = 3; } //deprecated message AccountNetMessage { int64 freeNetUsed = 1; int64 freeNetLimit = 2; int64 NetUsed = 3; int64 NetLimit = 4; map assetNetUsed = 5; map assetNetLimit = 6; int64 TotalNetLimit = 7; int64 TotalNetWeight = 8; } message AccountResourceMessage { int64 freeNetUsed = 1; int64 freeNetLimit = 2; int64 NetUsed = 3; int64 NetLimit = 4; map assetNetUsed = 5; map assetNetLimit = 6; int64 TotalNetLimit = 7; int64 TotalNetWeight = 8; int64 TotalTronPowerWeight = 9; int64 tronPowerUsed = 10; int64 tronPowerLimit = 11; int64 EnergyUsed = 13; int64 EnergyLimit = 14; int64 TotalEnergyLimit = 15; int64 TotalEnergyWeight = 16; int64 storageUsed = 21; int64 storageLimit = 22; } message PaginatedMessage { int64 offset = 1; int64 limit = 2; } message TransactionExtention { Transaction transaction = 1; bytes txid = 2; //transaction id = sha256(transaction.rowdata) repeated bytes constant_result = 3; Return result = 4; int64 energy_used = 5; repeated TransactionInfo.Log logs = 6; repeated InternalTransaction internal_transactions = 7; int64 energy_penalty = 8; } message EstimateEnergyMessage { Return result = 1; int64 energy_required = 2; } message BlockExtention { repeated TransactionExtention transactions = 1; BlockHeader block_header = 2; bytes blockid = 3; } message BlockListExtention { repeated BlockExtention block = 1; } message TransactionListExtention { repeated TransactionExtention transaction = 1; } message BlockIncrementalMerkleTree { int64 number = 1; IncrementalMerkleTree merkleTree = 2; } message TransactionSignWeight { message Result { enum response_code { ENOUGH_PERMISSION = 0; NOT_ENOUGH_PERMISSION = 1; // error in SIGNATURE_FORMAT_ERROR = 2; COMPUTE_ADDRESS_ERROR = 3; PERMISSION_ERROR = 4; //The key is not in permission OTHER_ERROR = 20; } response_code code = 1; string message = 2; } Permission permission = 1; repeated bytes approved_list = 2; int64 current_weight = 3; Result result = 4; TransactionExtention transaction = 5; } message TransactionApprovedList { message Result { enum response_code { SUCCESS = 0; SIGNATURE_FORMAT_ERROR = 1; COMPUTE_ADDRESS_ERROR = 2; OTHER_ERROR = 20; } response_code code = 1; string message = 2; } repeated bytes approved_list = 2; Result result = 4; TransactionExtention transaction = 5; } message IvkDecryptParameters { int64 start_block_index = 1; int64 end_block_index = 2; bytes ivk = 3; } message IvkDecryptAndMarkParameters { int64 start_block_index = 1; int64 end_block_index = 2; bytes ivk = 5; bytes ak = 3; bytes nk = 4; } message OvkDecryptParameters { int64 start_block_index = 1; int64 end_block_index = 2; bytes ovk = 3; } message DecryptNotes { message NoteTx { Note note = 1; bytes txid = 2; //transaction id = sha256(transaction.rowdata) int32 index = 3; //the index of note in receive } repeated NoteTx noteTxs = 1; } message DecryptNotesMarked { message NoteTx { Note note = 1; bytes txid = 2; //transaction id = sha256(transaction.rowdata) int32 index = 3; //the index of note in receive bool is_spend = 4; } repeated NoteTx noteTxs = 1; } message Note { int64 value = 1; string payment_address = 2; bytes rcm = 3; // random 32 bytes memo = 4; } message SpendNote { Note note = 3; bytes alpha = 4; // random number for spend authority signature IncrementalMerkleVoucher voucher = 5; bytes path = 6; // path for cm from leaf to root in merkle tree } message ReceiveNote { Note note = 1; } message PrivateParameters { bytes transparent_from_address = 1; bytes ask = 2; bytes nsk = 3; bytes ovk = 4; int64 from_amount = 5; repeated SpendNote shielded_spends = 6; repeated ReceiveNote shielded_receives = 7; bytes transparent_to_address = 8; int64 to_amount = 9; int64 timeout = 10; // timeout in seconds, it works only when it bigger than 0 } message PrivateParametersWithoutAsk { bytes transparent_from_address = 1; bytes ak = 2; bytes nsk = 3; bytes ovk = 4; int64 from_amount = 5; repeated SpendNote shielded_spends = 6; repeated ReceiveNote shielded_receives = 7; bytes transparent_to_address = 8; int64 to_amount = 9; int64 timeout = 10; // timeout in seconds, it works only when it bigger than 0 } message SpendAuthSigParameters { bytes ask = 1; bytes tx_hash = 2; bytes alpha = 3; } message NfParameters { Note note = 1; IncrementalMerkleVoucher voucher = 2; bytes ak = 3; bytes nk = 4; } message ExpandedSpendingKeyMessage { bytes ask = 1; bytes nsk = 2; bytes ovk = 3; } message ViewingKeyMessage { bytes ak = 1; bytes nk = 2; } message IncomingViewingKeyMessage { bytes ivk = 1; } message DiversifierMessage { bytes d = 1; } message IncomingViewingKeyDiversifierMessage { IncomingViewingKeyMessage ivk = 1; DiversifierMessage d = 2; } message PaymentAddressMessage { DiversifierMessage d = 1; bytes pkD = 2; string payment_address = 3; } message ShieldedAddressInfo { bytes sk = 1; bytes ask = 2; bytes nsk = 3; bytes ovk = 4; bytes ak = 5; bytes nk = 6; bytes ivk = 7; bytes d = 8; bytes pkD = 9; string payment_address = 10; } message NoteParameters { bytes ak = 1; bytes nk = 2; Note note = 3; bytes txid = 4; int32 index = 5; } message SpendResult { bool result = 1; string message = 2; } message TransactionInfoList { repeated TransactionInfo transactionInfo = 1; } message SpendNoteTRC20 { Note note = 1; bytes alpha = 2; bytes root = 3; bytes path = 4; int64 pos = 5; } message PrivateShieldedTRC20Parameters { bytes ask = 1; bytes nsk = 2; bytes ovk = 3; string from_amount = 4; repeated SpendNoteTRC20 shielded_spends = 5; repeated ReceiveNote shielded_receives = 6; bytes transparent_to_address = 7; string to_amount = 8; bytes shielded_TRC20_contract_address = 9; } message PrivateShieldedTRC20ParametersWithoutAsk { bytes ak = 1; bytes nsk = 2; bytes ovk = 3; string from_amount = 4; repeated SpendNoteTRC20 shielded_spends = 5; repeated ReceiveNote shielded_receives = 6; bytes transparent_to_address = 7; string to_amount = 8; bytes shielded_TRC20_contract_address = 9; } message ShieldedTRC20Parameters { repeated SpendDescription spend_description = 1; repeated ReceiveDescription receive_description = 2; bytes binding_signature = 3; bytes message_hash = 4; string trigger_contract_input = 5; string parameter_type = 6; } message IvkDecryptTRC20Parameters { int64 start_block_index = 1; int64 end_block_index = 2; bytes shielded_TRC20_contract_address = 3; bytes ivk = 4; bytes ak = 5; bytes nk = 6; repeated string events = 7; } message OvkDecryptTRC20Parameters { int64 start_block_index = 1; int64 end_block_index = 2; bytes ovk = 3; bytes shielded_TRC20_contract_address = 4; repeated string events = 5; } message DecryptNotesTRC20 { message NoteTx { Note note = 1; int64 position = 2; bool is_spent = 3; bytes txid = 4; int32 index = 5; //the index of note in txid string to_amount = 6; bytes transparent_to_address = 7; } repeated NoteTx noteTxs = 1; } message NfTRC20Parameters { Note note = 1; bytes ak = 2; bytes nk = 3; int64 position = 4; bytes shielded_TRC20_contract_address = 5; } message NullifierResult { bool is_spent = 1; } message ShieldedTRC20TriggerContractParameters { ShieldedTRC20Parameters shielded_TRC20_Parameters = 1; repeated BytesMessage spend_authority_signature = 2; string amount = 3; bytes transparent_to_address = 4; }