Struct multiversx_sdk::gateway::GatewayProxy
source · pub struct GatewayProxy { /* private fields */ }Expand description
Allows communication with the MultiversX gateway API.
Implementations§
source§impl GatewayProxy
impl GatewayProxy
sourcepub async fn get_account(&self, address: &Address) -> Result<Account>
pub async fn get_account(&self, address: &Address) -> Result<Account>
pub async fn get_account_esdt_roles( &self, address: &Address, ) -> Result<HashMap<String, Vec<String>>>
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>>
source§impl GatewayProxy
impl GatewayProxy
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>
source§impl GatewayProxy
impl GatewayProxy
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 = GatewayProxy::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 = GatewayProxy::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 = GatewayProxy::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>
source§impl GatewayProxy
impl GatewayProxy
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 30)
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
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 = GatewayProxy::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_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 = GatewayProxy::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 = GatewayProxy::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 = GatewayProxy::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 = GatewayProxy::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 = GatewayProxy::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 = GatewayProxy::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 = GatewayProxy::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 = GatewayProxy::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 = GatewayProxy::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:#?}");
}source§impl GatewayProxy
impl GatewayProxy
sourcepub async fn retrieve_tx_on_network(
&self,
tx_hash: String,
) -> TransactionOnNetwork
pub async fn retrieve_tx_on_network( &self, tx_hash: String, ) -> TransactionOnNetwork
Retrieves a transaction from the network.
Trait Implementations§
source§impl Clone for GatewayProxy
impl Clone for GatewayProxy
source§fn clone(&self) -> GatewayProxy
fn clone(&self) -> GatewayProxy
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 moreAuto Trait Implementations§
impl Freeze for GatewayProxy
impl !RefUnwindSafe for GatewayProxy
impl Send for GatewayProxy
impl Sync for GatewayProxy
impl Unpin for GatewayProxy
impl !UnwindSafe for GatewayProxy
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit)source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more