sign_txs/
sign_txs.rs

1use multiversx_sdk::{
2    data::{sdk_address::SdkAddress, transaction::Transaction},
3    wallet::Wallet,
4};
5use multiversx_sdk_http::{GatewayHttpProxy, DEVNET_GATEWAY};
6
7#[tokio::main]
8async fn main() {
9    let wl = Wallet::from_private_key(
10        "1648ad209d6b157a289884933e3bb30f161ec7113221ec16f87c3578b05830b0",
11    )
12    .unwrap();
13    let addr = wl.to_address();
14    let blockchain = GatewayHttpProxy::new(DEVNET_GATEWAY.to_string());
15    let network_config = blockchain.get_network_config().await.unwrap();
16
17    let arg = blockchain
18        .get_default_transaction_arguments(&addr, &network_config)
19        .await
20        .unwrap();
21
22    let mut unsign_tx = Transaction {
23        nonce: arg.nonce,
24        value: "1000000000000000000".to_string(),
25        receiver: SdkAddress(addr.clone()),
26        sender: SdkAddress(addr.clone()),
27        gas_price: arg.gas_price,
28        gas_limit: arg.gas_limit,
29        data: arg.data,
30        signature: None,
31        chain_id: arg.chain_id,
32        version: arg.version,
33        options: arg.options,
34    };
35
36    let mut txs: Vec<Transaction> = vec![];
37
38    let signature = wl.sign_tx(&unsign_tx);
39    unsign_tx.signature = Some(hex::encode(signature));
40    txs.push(unsign_tx.clone());
41
42    unsign_tx.version = 2;
43    unsign_tx.options = 1;
44    unsign_tx.nonce += 1;
45
46    let signature = wl.sign_tx(&unsign_tx);
47    unsign_tx.signature = Some(hex::encode(signature));
48    txs.push(unsign_tx.clone());
49
50    let tx_hash = blockchain.send_transactions(&txs).await.unwrap();
51    println!("tx_hashes {tx_hash:?}");
52}