From a7a3a8d1a12d5c9e6d5c427e1f288555ec7f2dbd Mon Sep 17 00:00:00 2001 From: byteZorvin Date: Tue, 17 Sep 2024 14:50:01 +0530 Subject: [PATCH 1/5] type update --- crates/l3/appchain-utils/src/lib.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/crates/l3/appchain-utils/src/lib.rs b/crates/l3/appchain-utils/src/lib.rs index 26ec41c..4f166d2 100644 --- a/crates/l3/appchain-utils/src/lib.rs +++ b/crates/l3/appchain-utils/src/lib.rs @@ -1,5 +1,7 @@ pub mod errors; +use std::sync::Arc; + use color_eyre::{eyre::eyre, Result}; use starknet_accounts::{Account, Call, ExecutionV1, SingleOwnerAccount}; use starknet_contract::ContractFactory; @@ -13,7 +15,7 @@ use starknet_signers::LocalWallet; use std::path::Path; pub type LocalWalletSignerMiddleware = - SingleOwnerAccount, LocalWallet>; + SingleOwnerAccount>, LocalWallet>; type RpcAccount<'a> = SingleOwnerAccount<&'a JsonRpcClient, LocalWallet>; pub type TransactionExecution<'a> = ExecutionV1<'a, RpcAccount<'a>>; From 0e5a9d7c888c172394385f0db397cb95bf317a5f Mon Sep 17 00:00:00 2001 From: byteZorvin Date: Tue, 17 Sep 2024 17:51:57 +0530 Subject: [PATCH 2/5] update SingleOwnerAccount to Arc --- crates/l3/appchain-utils/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/l3/appchain-utils/src/lib.rs b/crates/l3/appchain-utils/src/lib.rs index 4f166d2..b08f7ee 100644 --- a/crates/l3/appchain-utils/src/lib.rs +++ b/crates/l3/appchain-utils/src/lib.rs @@ -15,7 +15,7 @@ use starknet_signers::LocalWallet; use std::path::Path; pub type LocalWalletSignerMiddleware = - SingleOwnerAccount>, LocalWallet>; + Arc>, LocalWallet>>; type RpcAccount<'a> = SingleOwnerAccount<&'a JsonRpcClient, LocalWallet>; pub type TransactionExecution<'a> = ExecutionV1<'a, RpcAccount<'a>>; From 0f828ac9652009814ba6066a71281634a25b65ac Mon Sep 17 00:00:00 2001 From: byteZorvin Date: Tue, 17 Sep 2024 18:32:45 +0530 Subject: [PATCH 3/5] update types with Arc --- .../src/clients/mod.rs | 28 +++++++++---------- .../src/interfaces/core_contract.rs | 10 +++---- .../src/interfaces/messaging.rs | 16 +++++------ .../src/interfaces/operator.rs | 16 +++++------ .../appchain-core-contract-client/src/lib.rs | 6 ++-- 5 files changed, 38 insertions(+), 38 deletions(-) diff --git a/crates/l3/appchain-core-contract-client/src/clients/mod.rs b/crates/l3/appchain-core-contract-client/src/clients/mod.rs index 0adce0b..53d4529 100644 --- a/crates/l3/appchain-core-contract-client/src/clients/mod.rs +++ b/crates/l3/appchain-core-contract-client/src/clients/mod.rs @@ -5,36 +5,36 @@ use starknet_core::types::Felt; use appchain_utils::LocalWalletSignerMiddleware; -pub struct StarknetCoreContractClient<'a> { - operator: Operator<'a>, - messaging: Messaging<'a>, - core_contract: CoreContract<'a>, +pub struct StarknetCoreContractClient { + operator: Operator, + messaging: Messaging, + core_contract: CoreContract, } -impl<'a> StarknetCoreContractClient<'a> { - pub fn new(address: Felt, signer: &'a LocalWalletSignerMiddleware) -> Self { +impl StarknetCoreContractClient { + pub fn new(address: Felt, signer: LocalWalletSignerMiddleware) -> Self { Self { - operator: Operator::new(address, signer), - messaging: Messaging::new(address, signer), + operator: Operator::new(address, signer.clone()), + messaging: Messaging::new(address, signer.clone()), core_contract: CoreContract::new(address, signer), } } } -impl<'a> AsRef> for StarknetCoreContractClient<'a> { - fn as_ref(&self) -> &Operator<'a> { +impl AsRef for StarknetCoreContractClient { + fn as_ref(&self) -> &Operator { &self.operator } } -impl<'a> AsRef> for StarknetCoreContractClient<'a> { - fn as_ref(&self) -> &Messaging<'a> { +impl<'a> AsRef for StarknetCoreContractClient { + fn as_ref(&self) -> &Messaging { &self.messaging } } -impl<'a> AsRef> for StarknetCoreContractClient<'a> { - fn as_ref(&self) -> &CoreContract<'a> { +impl<'a> AsRef for StarknetCoreContractClient { + fn as_ref(&self) -> &CoreContract { &self.core_contract } } diff --git a/crates/l3/appchain-core-contract-client/src/interfaces/core_contract.rs b/crates/l3/appchain-core-contract-client/src/interfaces/core_contract.rs index 9b2564f..9c05725 100644 --- a/crates/l3/appchain-core-contract-client/src/interfaces/core_contract.rs +++ b/crates/l3/appchain-core-contract-client/src/interfaces/core_contract.rs @@ -3,13 +3,13 @@ use appchain_utils::LocalWalletSignerMiddleware; use color_eyre::Result; use starknet_core::types::{Felt, InvokeTransactionResult}; -pub struct CoreContract<'a> { - signer: &'a LocalWalletSignerMiddleware, +pub struct CoreContract { + signer: LocalWalletSignerMiddleware, address: Felt, } -impl<'a> CoreContract<'a> { - pub fn new(address: Felt, signer: &'a LocalWalletSignerMiddleware) -> Self { +impl CoreContract { + pub fn new(address: Felt, signer: LocalWalletSignerMiddleware) -> Self { Self { signer, address } } @@ -24,6 +24,6 @@ impl<'a> CoreContract<'a> { calldata.push(onchain_data_hash); calldata.push(onchain_data_size); - invoke_contract(self.signer, self.address, "update_state", calldata).await + invoke_contract(&self.signer, self.address, "update_state", calldata).await } } diff --git a/crates/l3/appchain-core-contract-client/src/interfaces/messaging.rs b/crates/l3/appchain-core-contract-client/src/interfaces/messaging.rs index 933bfd3..aff8ff0 100644 --- a/crates/l3/appchain-core-contract-client/src/interfaces/messaging.rs +++ b/crates/l3/appchain-core-contract-client/src/interfaces/messaging.rs @@ -3,13 +3,13 @@ use appchain_utils::LocalWalletSignerMiddleware; use color_eyre::Result; use starknet_core::types::{Felt, InvokeTransactionResult}; -pub struct Messaging<'a> { - signer: &'a LocalWalletSignerMiddleware, +pub struct Messaging { + signer: LocalWalletSignerMiddleware, address: Felt, } -impl<'a> Messaging<'a> { - pub fn new(address: Felt, signer: &'a LocalWalletSignerMiddleware) -> Self { +impl Messaging { + pub fn new(address: Felt, signer: LocalWalletSignerMiddleware) -> Self { Self { signer, address } } @@ -25,7 +25,7 @@ impl<'a> Messaging<'a> { calldata.extend(payload); invoke_contract( - self.signer, + &self.signer, self.address, "send_message_to_appchain", calldata, @@ -43,7 +43,7 @@ impl<'a> Messaging<'a> { calldata.extend(payload); invoke_contract( - self.signer, + &self.signer, self.address, "consume_message_from_appchain", calldata, @@ -65,7 +65,7 @@ impl<'a> Messaging<'a> { calldata.extend(payload); invoke_contract( - self.signer, + &self.signer, self.address, "start_message_cancellation", calldata, @@ -86,6 +86,6 @@ impl<'a> Messaging<'a> { calldata.push(nonce); calldata.extend(payload); - invoke_contract(self.signer, self.address, "cancel_message", calldata).await + invoke_contract(&self.signer, self.address, "cancel_message", calldata).await } } diff --git a/crates/l3/appchain-core-contract-client/src/interfaces/operator.rs b/crates/l3/appchain-core-contract-client/src/interfaces/operator.rs index 0b4068e..396e808 100644 --- a/crates/l3/appchain-core-contract-client/src/interfaces/operator.rs +++ b/crates/l3/appchain-core-contract-client/src/interfaces/operator.rs @@ -5,13 +5,13 @@ use starknet_accounts::ConnectedAccount; use starknet_core::types::{Felt, InvokeTransactionResult}; use starknet_providers::jsonrpc::{HttpTransport, JsonRpcClient}; -pub struct Operator<'a> { - signer: &'a LocalWalletSignerMiddleware, +pub struct Operator { + signer: LocalWalletSignerMiddleware, address: Felt, } -impl<'a> Operator<'a> { - pub fn new(address: Felt, signer: &'a LocalWalletSignerMiddleware) -> Self { +impl Operator { + pub fn new(address: Felt, signer: LocalWalletSignerMiddleware) -> Self { Self { signer, address } } @@ -21,7 +21,7 @@ impl<'a> Operator<'a> { pub async fn register_operator(&self, new_operator: Felt) -> Result { invoke_contract( - self.signer, + &self.signer, self.address, "register_operator", vec![new_operator], @@ -34,7 +34,7 @@ impl<'a> Operator<'a> { removed_operator: Felt, ) -> Result { invoke_contract( - self.signer, + &self.signer, self.address, "unregister_operator", vec![removed_operator], @@ -58,7 +58,7 @@ impl<'a> Operator<'a> { config_hash: Felt, ) -> Result { invoke_contract( - self.signer, + &self.signer, self.address, "set_program_info", vec![program_hash, config_hash], @@ -81,7 +81,7 @@ impl<'a> Operator<'a> { facts_registry: Felt, ) -> Result { invoke_contract( - self.signer, + &self.signer, self.address, "set_facts_registry", vec![facts_registry], diff --git a/crates/l3/appchain-core-contract-client/src/lib.rs b/crates/l3/appchain-core-contract-client/src/lib.rs index 3249b63..4de7e32 100644 --- a/crates/l3/appchain-core-contract-client/src/lib.rs +++ b/crates/l3/appchain-core-contract-client/src/lib.rs @@ -10,12 +10,12 @@ use std::path::Path; // TODO: check for proxy contract implementation pub async fn deploy_starknet_core_contract<'a>( - signer: &'a LocalWalletSignerMiddleware, + signer: LocalWalletSignerMiddleware, path_to_sierra: &Path, path_to_casm: &Path, -) -> Result> { +) -> Result { let contract_address = - deploy_contract(signer, path_to_sierra, path_to_casm, NO_CONSTRUCTOR_ARG).await?; + deploy_contract(&signer, path_to_sierra, path_to_casm, NO_CONSTRUCTOR_ARG).await?; Ok(StarknetCoreContractClient::new(contract_address, signer)) } From fdfc6d4376f680a000fb0bd4b17a85207ad5fefd Mon Sep 17 00:00:00 2001 From: byteZorvin Date: Tue, 17 Sep 2024 19:08:17 +0530 Subject: [PATCH 4/5] fix clippy error --- crates/l3/appchain-core-contract-client/src/clients/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/l3/appchain-core-contract-client/src/clients/mod.rs b/crates/l3/appchain-core-contract-client/src/clients/mod.rs index 53d4529..2679ad4 100644 --- a/crates/l3/appchain-core-contract-client/src/clients/mod.rs +++ b/crates/l3/appchain-core-contract-client/src/clients/mod.rs @@ -27,13 +27,13 @@ impl AsRef for StarknetCoreContractClient { } } -impl<'a> AsRef for StarknetCoreContractClient { +impl AsRef for StarknetCoreContractClient { fn as_ref(&self) -> &Messaging { &self.messaging } } -impl<'a> AsRef for StarknetCoreContractClient { +impl AsRef for StarknetCoreContractClient { fn as_ref(&self) -> &CoreContract { &self.core_contract } From 36dc1fc5b2affaee69c669aac97a5062622b43b5 Mon Sep 17 00:00:00 2001 From: byteZorvin Date: Fri, 27 Sep 2024 16:58:10 +0530 Subject: [PATCH 5/5] fix max fee and update type --- .../src/interfaces/core_contract.rs | 7 +++++-- crates/l3/appchain-utils/src/lib.rs | 1 - 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/crates/l3/appchain-core-contract-client/src/interfaces/core_contract.rs b/crates/l3/appchain-core-contract-client/src/interfaces/core_contract.rs index 9c05725..865f9ed 100644 --- a/crates/l3/appchain-core-contract-client/src/interfaces/core_contract.rs +++ b/crates/l3/appchain-core-contract-client/src/interfaces/core_contract.rs @@ -1,6 +1,7 @@ use appchain_utils::invoke_contract; use appchain_utils::LocalWalletSignerMiddleware; use color_eyre::Result; +use starknet::core::types::U256; use starknet_core::types::{Felt, InvokeTransactionResult}; pub struct CoreContract { @@ -17,12 +18,14 @@ impl CoreContract { &self, program_output: Vec, onchain_data_hash: Felt, - onchain_data_size: Felt, + onchain_data_size: U256, ) -> Result { let mut calldata = Vec::with_capacity(program_output.len() + 2); + calldata.push(program_output.len().into()); calldata.extend(program_output); calldata.push(onchain_data_hash); - calldata.push(onchain_data_size); + calldata.push(onchain_data_size.low().into()); + calldata.push(onchain_data_size.high().into()); invoke_contract(&self.signer, self.address, "update_state", calldata).await } diff --git a/crates/l3/appchain-utils/src/lib.rs b/crates/l3/appchain-utils/src/lib.rs index b08f7ee..9c60058 100644 --- a/crates/l3/appchain-utils/src/lib.rs +++ b/crates/l3/appchain-utils/src/lib.rs @@ -45,7 +45,6 @@ pub async fn invoke_contract( }; signer .execute_v1(vec![call]) - .max_fee(MAX_FEE) .send() .await .map_err(|e| eyre!("Failed to send transaction: {}", e))