Struct multiversx_sdk::blockchain::CommunicationProxy
source · pub struct CommunicationProxy { /* private fields */ }
Implementations§
source§impl CommunicationProxy
impl CommunicationProxy
sourcepub fn new(proxy_url: String) -> Self
pub fn new(proxy_url: String) -> Self
Examples found in repository?
More examples
sourcepub async fn get_network_config(&self) -> Result<NetworkConfig>
pub async fn get_network_config(&self) -> Result<NetworkConfig>
Examples found in repository?
More examples
examples/tx_default_args.rs (line 9)
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
async fn main() {
let blockchain = CommunicationProxy::new(DEVNET_GATEWAY.to_string());
let network_config = blockchain.get_network_config().await.unwrap();
let addr = Address::from_bech32_string(
"erd1qqqqqqqqqqqqqpgqfzydqmdw7m2vazsp6u5p95yxz76t2p9rd8ss0zp9ts",
)
.unwrap();
let arg = blockchain
.get_default_transaction_arguments(&addr, &network_config)
.await
.unwrap();
println!("default tx arg: {arg:#?}");
}
examples/sign_tx.rs (line 15)
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
async fn main() {
let wl = Wallet::from_private_key(
"1648ad209d6b157a289884933e3bb30f161ec7113221ec16f87c3578b05830b0",
)
.unwrap();
let addr = wl.address();
let blockchain = CommunicationProxy::new(DEVNET_GATEWAY.to_string());
let network_config = blockchain.get_network_config().await.unwrap();
let arg = blockchain
.get_default_transaction_arguments(&addr, &network_config)
.await
.unwrap();
let mut unsign_tx = Transaction {
nonce: arg.nonce,
value: "0".to_string(),
receiver: addr.clone(),
sender: addr.clone(),
gas_price: arg.gas_price,
gas_limit: arg.gas_limit,
data: arg.data,
signature: None,
chain_id: arg.chain_id,
version: arg.version,
options: arg.options,
};
let signature = wl.sign_tx(&unsign_tx);
unsign_tx.signature = Some(hex::encode(signature));
let tx_hash = blockchain.send_transaction(&unsign_tx).await.unwrap();
println!("tx_hash {tx_hash}");
}
examples/sign_txs.rs (line 15)
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
async fn main() {
let wl = Wallet::from_private_key(
"1648ad209d6b157a289884933e3bb30f161ec7113221ec16f87c3578b05830b0",
)
.unwrap();
let addr = wl.address();
let blockchain = CommunicationProxy::new(DEVNET_GATEWAY.to_string());
let network_config = blockchain.get_network_config().await.unwrap();
let arg = blockchain
.get_default_transaction_arguments(&addr, &network_config)
.await
.unwrap();
let mut unsign_tx = Transaction {
nonce: arg.nonce,
value: "1000000000000000000".to_string(),
receiver: addr.clone(),
sender: addr.clone(),
gas_price: arg.gas_price,
gas_limit: arg.gas_limit,
data: arg.data,
signature: None,
chain_id: arg.chain_id,
version: arg.version,
options: arg.options,
};
let mut txs: Vec<Transaction> = vec![];
let signature = wl.sign_tx(&unsign_tx);
unsign_tx.signature = Some(hex::encode(signature));
txs.push(unsign_tx.clone());
unsign_tx.version = 2;
unsign_tx.options = 1;
unsign_tx.nonce += 1;
let signature = wl.sign_tx(&unsign_tx);
unsign_tx.signature = Some(hex::encode(signature));
txs.push(unsign_tx.clone());
let tx_hash = blockchain.send_transactions(&txs).await.unwrap();
println!("tx_hashes {tx_hash:?}");
}
sourcepub async fn get_network_economics(&self) -> Result<NetworkEconomics>
pub async fn get_network_economics(&self) -> Result<NetworkEconomics>
sourcepub async fn get_hyper_block_by_hash(&self, hash: &str) -> Result<HyperBlock>
pub async fn get_hyper_block_by_hash(&self, hash: &str) -> Result<HyperBlock>
sourcepub async fn get_hyper_block_by_nonce(&self, nonce: u64) -> Result<HyperBlock>
pub async fn get_hyper_block_by_nonce(&self, nonce: u64) -> Result<HyperBlock>
sourcepub async fn get_latest_hyper_block_nonce(
&self,
with_metachain: bool
) -> Result<u64>
pub async fn get_latest_hyper_block_nonce(
&self,
with_metachain: bool
) -> Result<u64>
sourcepub async fn request_transaction_cost(
&self,
tx: &Transaction
) -> Result<TxCostResponseData>
pub async fn request_transaction_cost(
&self,
tx: &Transaction
) -> Result<TxCostResponseData>
Examples found in repository?
examples/tx_cost.rs (line 29)
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
async fn main() {
let tx = Transaction {
nonce: 1,
value: "50".to_string(),
receiver: Address::from_bech32_string(
"erd1rh5ws22jxm9pe7dtvhfy6j3uttuupkepferdwtmslms5fydtrh5sx3xr8r",
)
.unwrap(),
sender: Address::from_bech32_string(
"erd1rh5ws22jxm9pe7dtvhfy6j3uttuupkepferdwtmslms5fydtrh5sx3xr8r",
)
.unwrap(),
data: Some(base64::encode("hello")),
chain_id: "1".to_string(),
version: 1,
options: 0,
gas_limit: 0,
gas_price: 0,
signature: None,
};
let blockchain = CommunicationProxy::new(DEVNET_GATEWAY.to_string());
let cost = blockchain.request_transaction_cost(&tx).await.unwrap();
println!("tx cost: {cost:#?}");
assert_eq!(
cost.tx_gas_units, 57500,
"receive cost {}",
cost.tx_gas_units
);
}
sourcepub async fn get_account(&self, address: &Address) -> Result<Account>
pub async fn get_account(&self, address: &Address) -> Result<Account>
sourcepub async fn get_account_esdt_tokens(
&self,
address: &Address
) -> Result<HashMap<String, EsdtBalance>>
pub async fn get_account_esdt_tokens(
&self,
address: &Address
) -> Result<HashMap<String, EsdtBalance>>
sourcepub async fn get_transaction_info(
&self,
hash: &str
) -> Result<TransactionOnNetwork>
pub async fn get_transaction_info(
&self,
hash: &str
) -> Result<TransactionOnNetwork>
Examples found in repository?
examples/tx_info.rs (line 11)
4 5 6 7 8 9 10 11 12 13 14 15 16
async fn main() {
let tx_hash = "49edb289892a655a0e988b360c19326c21107f9696c6197b435667c6e8c6e1a3";
let blockchain = CommunicationProxy::new(DEVNET_GATEWAY.to_string());
let status = blockchain.get_transaction_status(tx_hash).await;
println!("tx status: {status:?}");
let tx = blockchain.get_transaction_info(tx_hash).await;
println!("tx: {tx:#?}");
let tx = blockchain.get_transaction_info_with_results(tx_hash).await;
println!("tx with results: {tx:#?}");
}
sourcepub async fn get_transaction_info_with_results(
&self,
hash: &str
) -> Result<TransactionOnNetwork>
pub async fn get_transaction_info_with_results(
&self,
hash: &str
) -> Result<TransactionOnNetwork>
Examples found in repository?
examples/tx_info.rs (line 14)
4 5 6 7 8 9 10 11 12 13 14 15 16
async fn main() {
let tx_hash = "49edb289892a655a0e988b360c19326c21107f9696c6197b435667c6e8c6e1a3";
let blockchain = CommunicationProxy::new(DEVNET_GATEWAY.to_string());
let status = blockchain.get_transaction_status(tx_hash).await;
println!("tx status: {status:?}");
let tx = blockchain.get_transaction_info(tx_hash).await;
println!("tx: {tx:#?}");
let tx = blockchain.get_transaction_info_with_results(tx_hash).await;
println!("tx with results: {tx:#?}");
}
sourcepub async fn get_transaction_status(&self, hash: &str) -> Result<String>
pub async fn get_transaction_status(&self, hash: &str) -> Result<String>
Examples found in repository?
examples/tx_info.rs (line 8)
4 5 6 7 8 9 10 11 12 13 14 15 16
async fn main() {
let tx_hash = "49edb289892a655a0e988b360c19326c21107f9696c6197b435667c6e8c6e1a3";
let blockchain = CommunicationProxy::new(DEVNET_GATEWAY.to_string());
let status = blockchain.get_transaction_status(tx_hash).await;
println!("tx status: {status:?}");
let tx = blockchain.get_transaction_info(tx_hash).await;
println!("tx: {tx:#?}");
let tx = blockchain.get_transaction_info_with_results(tx_hash).await;
println!("tx with results: {tx:#?}");
}
sourcepub async fn get_default_transaction_arguments(
&self,
address: &Address,
network_configs: &NetworkConfig
) -> Result<ArgCreateTransaction>
pub async fn get_default_transaction_arguments(
&self,
address: &Address,
network_configs: &NetworkConfig
) -> Result<ArgCreateTransaction>
Examples found in repository?
examples/tx_default_args.rs (line 16)
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
async fn main() {
let blockchain = CommunicationProxy::new(DEVNET_GATEWAY.to_string());
let network_config = blockchain.get_network_config().await.unwrap();
let addr = Address::from_bech32_string(
"erd1qqqqqqqqqqqqqpgqfzydqmdw7m2vazsp6u5p95yxz76t2p9rd8ss0zp9ts",
)
.unwrap();
let arg = blockchain
.get_default_transaction_arguments(&addr, &network_config)
.await
.unwrap();
println!("default tx arg: {arg:#?}");
}
More examples
examples/sign_tx.rs (line 18)
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
async fn main() {
let wl = Wallet::from_private_key(
"1648ad209d6b157a289884933e3bb30f161ec7113221ec16f87c3578b05830b0",
)
.unwrap();
let addr = wl.address();
let blockchain = CommunicationProxy::new(DEVNET_GATEWAY.to_string());
let network_config = blockchain.get_network_config().await.unwrap();
let arg = blockchain
.get_default_transaction_arguments(&addr, &network_config)
.await
.unwrap();
let mut unsign_tx = Transaction {
nonce: arg.nonce,
value: "0".to_string(),
receiver: addr.clone(),
sender: addr.clone(),
gas_price: arg.gas_price,
gas_limit: arg.gas_limit,
data: arg.data,
signature: None,
chain_id: arg.chain_id,
version: arg.version,
options: arg.options,
};
let signature = wl.sign_tx(&unsign_tx);
unsign_tx.signature = Some(hex::encode(signature));
let tx_hash = blockchain.send_transaction(&unsign_tx).await.unwrap();
println!("tx_hash {tx_hash}");
}
examples/sign_txs.rs (line 18)
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
async fn main() {
let wl = Wallet::from_private_key(
"1648ad209d6b157a289884933e3bb30f161ec7113221ec16f87c3578b05830b0",
)
.unwrap();
let addr = wl.address();
let blockchain = CommunicationProxy::new(DEVNET_GATEWAY.to_string());
let network_config = blockchain.get_network_config().await.unwrap();
let arg = blockchain
.get_default_transaction_arguments(&addr, &network_config)
.await
.unwrap();
let mut unsign_tx = Transaction {
nonce: arg.nonce,
value: "1000000000000000000".to_string(),
receiver: addr.clone(),
sender: addr.clone(),
gas_price: arg.gas_price,
gas_limit: arg.gas_limit,
data: arg.data,
signature: None,
chain_id: arg.chain_id,
version: arg.version,
options: arg.options,
};
let mut txs: Vec<Transaction> = vec![];
let signature = wl.sign_tx(&unsign_tx);
unsign_tx.signature = Some(hex::encode(signature));
txs.push(unsign_tx.clone());
unsign_tx.version = 2;
unsign_tx.options = 1;
unsign_tx.nonce += 1;
let signature = wl.sign_tx(&unsign_tx);
unsign_tx.signature = Some(hex::encode(signature));
txs.push(unsign_tx.clone());
let tx_hash = blockchain.send_transactions(&txs).await.unwrap();
println!("tx_hashes {tx_hash:?}");
}
sourcepub async fn send_transaction(&self, tx: &Transaction) -> Result<String>
pub async fn send_transaction(&self, tx: &Transaction) -> Result<String>
Examples found in repository?
examples/sign_tx.rs (line 38)
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
async fn main() {
let wl = Wallet::from_private_key(
"1648ad209d6b157a289884933e3bb30f161ec7113221ec16f87c3578b05830b0",
)
.unwrap();
let addr = wl.address();
let blockchain = CommunicationProxy::new(DEVNET_GATEWAY.to_string());
let network_config = blockchain.get_network_config().await.unwrap();
let arg = blockchain
.get_default_transaction_arguments(&addr, &network_config)
.await
.unwrap();
let mut unsign_tx = Transaction {
nonce: arg.nonce,
value: "0".to_string(),
receiver: addr.clone(),
sender: addr.clone(),
gas_price: arg.gas_price,
gas_limit: arg.gas_limit,
data: arg.data,
signature: None,
chain_id: arg.chain_id,
version: arg.version,
options: arg.options,
};
let signature = wl.sign_tx(&unsign_tx);
unsign_tx.signature = Some(hex::encode(signature));
let tx_hash = blockchain.send_transaction(&unsign_tx).await.unwrap();
println!("tx_hash {tx_hash}");
}
sourcepub async fn send_transactions(
&self,
txs: &Vec<Transaction>
) -> Result<Vec<String>>
pub async fn send_transactions(
&self,
txs: &Vec<Transaction>
) -> Result<Vec<String>>
Examples found in repository?
examples/sign_txs.rs (line 50)
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
async fn main() {
let wl = Wallet::from_private_key(
"1648ad209d6b157a289884933e3bb30f161ec7113221ec16f87c3578b05830b0",
)
.unwrap();
let addr = wl.address();
let blockchain = CommunicationProxy::new(DEVNET_GATEWAY.to_string());
let network_config = blockchain.get_network_config().await.unwrap();
let arg = blockchain
.get_default_transaction_arguments(&addr, &network_config)
.await
.unwrap();
let mut unsign_tx = Transaction {
nonce: arg.nonce,
value: "1000000000000000000".to_string(),
receiver: addr.clone(),
sender: addr.clone(),
gas_price: arg.gas_price,
gas_limit: arg.gas_limit,
data: arg.data,
signature: None,
chain_id: arg.chain_id,
version: arg.version,
options: arg.options,
};
let mut txs: Vec<Transaction> = vec![];
let signature = wl.sign_tx(&unsign_tx);
unsign_tx.signature = Some(hex::encode(signature));
txs.push(unsign_tx.clone());
unsign_tx.version = 2;
unsign_tx.options = 1;
unsign_tx.nonce += 1;
let signature = wl.sign_tx(&unsign_tx);
unsign_tx.signature = Some(hex::encode(signature));
txs.push(unsign_tx.clone());
let tx_hash = blockchain.send_transactions(&txs).await.unwrap();
println!("tx_hashes {tx_hash:?}");
}
sourcepub async fn execute_vmquery(
&self,
vm_request: &VmValueRequest
) -> Result<VmValuesResponseData>
pub async fn execute_vmquery(
&self,
vm_request: &VmValueRequest
) -> Result<VmValuesResponseData>
Examples found in repository?
examples/vm_query.rs (line 25)
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
async fn main() {
let wl = Wallet::from_private_key(
"1648ad209d6b157a289884933e3bb30f161ec7113221ec16f87c3578b05830b0",
)
.unwrap();
let addr = wl.address();
let blockchain = CommunicationProxy::new(DEVNET_GATEWAY.to_string());
let req = VmValueRequest {
sc_address: Address::from_bech32_string(
"erd1qqqqqqqqqqqqqpgqhn3ae8dpc957t7jadn7kywtg503dy7pnj9ts3umqxx",
)
.unwrap(),
func_name: "get".to_string(),
args: vec![],
caller: addr.clone(),
value: "0".to_string(),
};
let result = blockchain.execute_vmquery(&req).await;
println!("{result:#?}");
}
Trait Implementations§
source§impl Clone for CommunicationProxy
impl Clone for CommunicationProxy
source§fn clone(&self) -> CommunicationProxy
fn clone(&self) -> CommunicationProxy
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read more