diff --git a/Cargo.toml b/Cargo.toml index 0dbd60b..ddf33a7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,17 +12,17 @@ rust-version = "1.67.1" [dependencies] log = "0.4.17" -borsh = "0.10.2" +borsh = "1.3.0" serde = "1.0.145" reqwest = { version = "0.11.12", features = ["json"], default-features = false } thiserror = "1.0.37" serde_json = "1.0.85" lazy_static = "1.4.0" -near-crypto = "0.17.0" -near-primitives = "0.17.0" -near-chain-configs = "0.17.0" -near-jsonrpc-primitives = "0.17.0" +near-crypto = "0.19.0" +near-primitives = "0.19.0" +near-chain-configs = "0.19.0" +near-jsonrpc-primitives = "0.19.0" [dev-dependencies] tokio = { version = "1.0", features = ["macros", "rt-multi-thread"] } diff --git a/examples/contract_change_method.rs b/examples/contract_change_method.rs index a256a6c..504a4e2 100644 --- a/examples/contract_change_method.rs +++ b/examples/contract_change_method.rs @@ -44,7 +44,7 @@ async fn main() -> Result<(), Box> { nonce: current_nonce + 1, receiver_id: "nosedive.testnet".parse()?, block_hash: access_key_query_response.block_hash, - actions: vec![Action::FunctionCall(FunctionCallAction { + actions: vec![Action::FunctionCall(Box::new(FunctionCallAction { method_name: "rate".to_string(), args: json!({ "account_id": other_account, @@ -54,7 +54,7 @@ async fn main() -> Result<(), Box> { .into_bytes(), gas: 100_000_000_000_000, // 100 TeraGas deposit: 0, - })], + }))], }; let request = methods::broadcast_tx_async::RpcBroadcastTxAsyncRequest { @@ -68,8 +68,8 @@ async fn main() -> Result<(), Box> { let response = client .call(methods::tx::RpcTransactionStatusRequest { transaction_info: TransactionInfo::TransactionId { - hash: tx_hash, - account_id: signer.account_id.clone(), + tx_hash, + sender_account_id: signer.account_id.clone(), }, }) .await; diff --git a/examples/contract_change_method_commit.rs b/examples/contract_change_method_commit.rs index 62a1972..db074eb 100644 --- a/examples/contract_change_method_commit.rs +++ b/examples/contract_change_method_commit.rs @@ -42,7 +42,7 @@ async fn main() -> Result<(), Box> { nonce: current_nonce + 1, receiver_id: "nosedive.testnet".parse()?, block_hash: access_key_query_response.block_hash, - actions: vec![Action::FunctionCall(FunctionCallAction { + actions: vec![Action::FunctionCall(Box::new(FunctionCallAction { method_name: "rate".to_string(), args: json!({ "account_id": other_account, @@ -52,7 +52,7 @@ async fn main() -> Result<(), Box> { .into_bytes(), gas: 100_000_000_000_000, // 100 TeraGas deposit: 0, - })], + }))], }; let request = methods::broadcast_tx_commit::RpcBroadcastTxCommitRequest { diff --git a/examples/create_account.rs b/examples/create_account.rs index 13f327b..9995e18 100644 --- a/examples/create_account.rs +++ b/examples/create_account.rs @@ -140,13 +140,13 @@ async fn main() -> Result<(), Box> { block_hash: latest_hash, actions: vec![ Action::CreateAccount(CreateAccountAction {}), - Action::AddKey(AddKeyAction { + Action::AddKey(Box::new(AddKeyAction { access_key: near_primitives::account::AccessKey { nonce: 0, permission: near_primitives::account::AccessKeyPermission::FullAccess, }, public_key: new_key_pair.public_key(), - }), + })), Action::Transfer(TransferAction { deposit: initial_deposit, }), @@ -166,7 +166,7 @@ async fn main() -> Result<(), Box> { nonce: current_nonce + 1, receiver_id: contract_id, block_hash: latest_hash, - actions: vec![Action::FunctionCall(FunctionCallAction { + actions: vec![Action::FunctionCall(Box::new(FunctionCallAction { method_name: "create_account".to_string(), args: json!({ "new_account_id": new_account_id, @@ -176,7 +176,7 @@ async fn main() -> Result<(), Box> { .into_bytes(), gas: 300_000_000_000_000, deposit: initial_deposit, - })], + }))], } }; @@ -202,8 +202,8 @@ async fn main() -> Result<(), Box> { let response = client .call(methods::tx::RpcTransactionStatusRequest { transaction_info: TransactionInfo::TransactionId { - hash: tx_hash, - account_id: signer.account_id.clone(), + tx_hash, + sender_account_id: signer.account_id.clone(), }, }) .await; diff --git a/examples/query_tx.rs b/examples/query_tx.rs index 294da14..5236f7b 100644 --- a/examples/query_tx.rs +++ b/examples/query_tx.rs @@ -96,8 +96,8 @@ async fn main() -> Result<(), Box> { match client .call(methods::tx::RpcTransactionStatusRequest { transaction_info: methods::tx::TransactionInfo::TransactionId { - hash: tx_hash, - account_id, + tx_hash, + sender_account_id: account_id, }, }) .await diff --git a/src/lib.rs b/src/lib.rs index b261646..0c46cb4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -45,8 +45,8 @@ //! //! let tx_status_request = methods::tx::RpcTransactionStatusRequest { //! transaction_info: TransactionInfo::TransactionId { -//! hash: "9FtHUFBQsZ2MG77K3x3MJ9wjX3UT8zE1TczCrhZEcG8U".parse()?, -//! account_id: "miraclx.near".parse()?, +//! tx_hash: "9FtHUFBQsZ2MG77K3x3MJ9wjX3UT8zE1TczCrhZEcG8U".parse()?, +//! sender_account_id: "miraclx.near".parse()?, //! }, //! }; //! @@ -450,7 +450,7 @@ mod tests { matches!( tx_status, Ok(methods::tx::RpcTransactionStatusResponse { ref transaction, .. }) - if transaction.signer_id.as_ref() == "miraclx.near" + if transaction.signer_id == "miraclx.near" && transaction.hash == "9FtHUFBQsZ2MG77K3x3MJ9wjX3UT8zE1TczCrhZEcG8U".parse()? ), "expected an Ok(RpcTransactionStatusResponse) with matching signer_id + hash, found [{:?}]", diff --git a/src/methods/broadcast_tx_async.rs b/src/methods/broadcast_tx_async.rs index 8c3f0fd..b5136c6 100644 --- a/src/methods/broadcast_tx_async.rs +++ b/src/methods/broadcast_tx_async.rs @@ -10,11 +10,12 @@ pub struct RpcBroadcastTxAsyncRequest { } impl From - for near_jsonrpc_primitives::types::transactions::RpcBroadcastTransactionRequest + for near_jsonrpc_primitives::types::transactions::RpcSendTransactionRequest { fn from(this: RpcBroadcastTxAsyncRequest) -> Self { Self { signed_transaction: this.signed_transaction, + wait_until: near_primitives::views::TxExecutionStatus::None, } } } diff --git a/src/methods/broadcast_tx_commit.rs b/src/methods/broadcast_tx_commit.rs index fc264de..9ffd54e 100644 --- a/src/methods/broadcast_tx_commit.rs +++ b/src/methods/broadcast_tx_commit.rs @@ -11,11 +11,12 @@ pub struct RpcBroadcastTxCommitRequest { } impl From - for near_jsonrpc_primitives::types::transactions::RpcBroadcastTransactionRequest + for near_jsonrpc_primitives::types::transactions::RpcSendTransactionRequest { fn from(this: RpcBroadcastTxCommitRequest) -> Self { Self { signed_transaction: this.signed_transaction, + wait_until: near_primitives::views::TxExecutionStatus::None, } } } diff --git a/src/methods/experimental/check_tx.rs b/src/methods/experimental/check_tx.rs index 1b71fc3..8db4078 100644 --- a/src/methods/experimental/check_tx.rs +++ b/src/methods/experimental/check_tx.rs @@ -11,11 +11,12 @@ pub struct RpcCheckTxRequest { } impl From - for near_jsonrpc_primitives::types::transactions::RpcBroadcastTransactionRequest + for near_jsonrpc_primitives::types::transactions::RpcSendTransactionRequest { fn from(this: RpcCheckTxRequest) -> Self { Self { signed_transaction: this.signed_transaction, + wait_until: near_primitives::views::TxExecutionStatus::None, } } } diff --git a/src/methods/experimental/tx_status.rs b/src/methods/experimental/tx_status.rs index 26e6b29..97e95ed 100644 --- a/src/methods/experimental/tx_status.rs +++ b/src/methods/experimental/tx_status.rs @@ -12,11 +12,12 @@ pub struct RpcTransactionStatusRequest { } impl From - for near_jsonrpc_primitives::types::transactions::RpcTransactionStatusCommonRequest + for near_jsonrpc_primitives::types::transactions::RpcTransactionStatusRequest { fn from(this: RpcTransactionStatusRequest) -> Self { Self { transaction_info: this.transaction_info, + wait_until: near_primitives::views::TxExecutionStatus::None, } } } @@ -34,10 +35,14 @@ impl RpcMethod for RpcTransactionStatusRequest { fn params(&self) -> Result { Ok(match &self.transaction_info { TransactionInfo::Transaction(signed_transaction) => { - json!([common::serialize_signed_transaction(signed_transaction)?]) + match signed_transaction { + near_jsonrpc_primitives::types::transactions::SignedTransaction::SignedTransaction(tx) => { + json!([common::serialize_signed_transaction(tx)?]) + }, + } } - TransactionInfo::TransactionId { hash, account_id } => { - json!([hash, account_id]) + TransactionInfo::TransactionId { tx_hash,sender_account_id } => { + json!([tx_hash, sender_account_id]) } }) } diff --git a/src/methods/mod.rs b/src/methods/mod.rs index 178fd8f..c60d81e 100644 --- a/src/methods/mod.rs +++ b/src/methods/mod.rs @@ -177,9 +177,7 @@ mod common { pub fn serialize_signed_transaction( tx: &near_primitives::transaction::SignedTransaction, ) -> Result { - Ok(near_primitives::serialize::to_base64( - &borsh::BorshSerialize::try_to_vec(&tx)?, - )) + Ok(near_primitives::serialize::to_base64(&borsh::to_vec(&tx)?)) } // adv_* diff --git a/src/methods/tx.rs b/src/methods/tx.rs index 5aae474..7e441b7 100644 --- a/src/methods/tx.rs +++ b/src/methods/tx.rs @@ -14,8 +14,8 @@ //! //! let request = methods::tx::RpcTransactionStatusRequest { //! transaction_info: methods::tx::TransactionInfo::TransactionId { -//! hash: tx_hash, -//! account_id: "itranscend.near".parse()?, +//! tx_hash, +//! sender_account_id: "itranscend.near".parse()?, //! } //! }; //! @@ -38,11 +38,12 @@ pub struct RpcTransactionStatusRequest { } impl From - for near_jsonrpc_primitives::types::transactions::RpcTransactionStatusCommonRequest + for near_jsonrpc_primitives::types::transactions::RpcTransactionStatusRequest { fn from(this: RpcTransactionStatusRequest) -> Self { Self { transaction_info: this.transaction_info, + wait_until: near_primitives::views::TxExecutionStatus::None, } } } @@ -58,10 +59,14 @@ impl RpcMethod for RpcTransactionStatusRequest { fn params(&self) -> Result { Ok(match &self.transaction_info { TransactionInfo::Transaction(signed_transaction) => { - json!([common::serialize_signed_transaction(signed_transaction)?]) + match signed_transaction { + near_jsonrpc_primitives::types::transactions::SignedTransaction::SignedTransaction(tx) => { + json!([common::serialize_signed_transaction(tx)?]) + } + } } - TransactionInfo::TransactionId { hash, account_id } => { - json!([hash, account_id]) + TransactionInfo::TransactionId { tx_hash,sender_account_id, ..} => { + json!([tx_hash, sender_account_id]) } }) }