Skip to main content

multiversx_sdk/data/transaction/
transaction_request.rs

1use multiversx_chain_core::std::Bech32Address;
2use serde::{Deserialize, Serialize};
3
4/// Represents the structure that maps and validates user input for publishing a new transaction.
5///
6/// Corresponds to [`Transaction`](https://github.com/multiversx/mx-chain-proxy-go/blob/master/data/transaction.go) in mx-chain-proxy-go.
7#[derive(Debug, Clone, Serialize, Deserialize)]
8#[serde(rename_all = "camelCase")]
9pub struct Transaction {
10    pub nonce: u64,
11    pub value: String,
12    pub receiver: Bech32Address,
13    pub sender: Bech32Address,
14    pub gas_price: u64,
15    pub gas_limit: u64,
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub data: Option<String>,
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub signature: Option<String>,
20    #[serde(rename = "chainID")]
21    pub chain_id: String,
22    pub version: u32,
23    #[serde(skip_serializing_if = "is_zero", default)]
24    pub options: u32,
25}
26
27/// This is only used for serialization.
28#[allow(clippy::trivially_copy_pass_by_ref)]
29fn is_zero(num: &u32) -> bool {
30    *num == 0
31}