Skip to content

Commit

Permalink
starknet wallet always has felts
Browse files Browse the repository at this point in the history
  • Loading branch information
rnbguy committed Mar 4, 2025
1 parent b301c3d commit 5884df0
Show file tree
Hide file tree
Showing 10 changed files with 47 additions and 59 deletions.
1 change: 1 addition & 0 deletions relayer/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ use serde::{Deserialize, Serialize};
use starknet::core::types::Felt;

use crate::impls::types::address::StarknetAddress;
use crate::types::wallet::StarknetWallet;

#[derive(Debug, Serialize, Deserialize)]
pub struct StarknetRelayerConfig {
Expand All @@ -16,7 +15,7 @@ pub struct StarknetRelayerConfig {
#[derive(Debug, Serialize, Deserialize)]
pub struct StarknetChainConfig {
pub json_rpc_url: String,
pub relayer_wallet: StarknetWallet,
pub relayer_wallet: String,
#[serde(with = "humantime_serde")]
pub poll_interval: Duration,
pub block_time: Duration,
Expand Down
30 changes: 1 addition & 29 deletions relayer/crates/starknet-chain-components/src/types/wallet.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,37 +3,9 @@ use starknet::core::types::Felt;

use crate::impls::types::address::StarknetAddress;

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum SigningKey {
File { file: String },
Felt { felt: Felt },
}

impl TryFrom<SigningKey> for Felt {
type Error = String;

fn try_from(value: SigningKey) -> Result<Self, Self::Error> {
match value {
SigningKey::File { file } => Ok(std::fs::read_to_string(file)
.map_err(|e| format!("{e}"))?
.trim()
.parse()
.map_err(|e| format!("{e}"))?),
SigningKey::Felt { felt } => Ok(felt),
}
}
}

impl From<Felt> for SigningKey {
fn from(felt: Felt) -> Self {
Self::Felt { felt }
}
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StarknetWallet {
pub account_address: StarknetAddress,
pub signing_key: SigningKey,
pub signing_key: Felt,
pub public_key: Felt,
}
15 changes: 14 additions & 1 deletion relayer/crates/starknet-cli/src/contexts/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -259,12 +259,25 @@ impl ConfigUpdater<StarknetChainDriver, StarknetRelayerConfig> for UpdateStarkne
.next(),
};

let relayer_wallet_file = {
// FIXME: This is a temporary solution to write the wallet to a file
// We should use a solution like how hermes-sdk does it for Cosmos-SDK
// https://github.com/informalsystems/hermes-sdk/blob/27168d1/crates/cosmos/cosmos-integration-tests/src/impls/bootstrap/relayer_chain_config.rs#L83-L105
let file_path = "./relayer_wallet.toml";

let relayer_wallet_str = to_string_pretty(&relayer_wallet)?;

std::fs::write(file_path, relayer_wallet_str)?;

file_path
};

let chain_config = StarknetChainConfig {
json_rpc_url: format!(
"http://{}:{}/",
chain_driver.node_config.rpc_addr, chain_driver.node_config.rpc_port
),
relayer_wallet,
relayer_wallet: relayer_wallet_file.to_string(),
poll_interval: chain_driver.chain.poll_interval,
block_time: chain_driver.chain.block_time,
contract_addresses,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,24 +140,23 @@ impl ChainDriverBuilder<StarknetBootstrap> for StarknetBootstrapComponents {

let chain_id = rpc_client.chain_id().await?;

let signing_key = relayer_wallet
.signing_key
.clone()
.try_into()
.expect("valid signing key");

let account = SingleOwnerAccount::new(
rpc_client.clone(),
LocalWallet::from_signing_key(SigningKey::from_secret_scalar(signing_key)),
LocalWallet::from_signing_key(SigningKey::from_secret_scalar(
relayer_wallet.signing_key,
)),
*relayer_wallet.account_address,
chain_id,
ExecutionEncoding::New,
);

let proof_signer = Secp256k1KeyPair::from_mnemonic(
bip39::Mnemonic::from_entropy(&signing_key.to_bytes_be(), bip39::Language::English)
.expect("valid mnemonic")
.phrase(),
bip39::Mnemonic::from_entropy(
&relayer_wallet.signing_key.to_bytes_be(),
bip39::Language::English,
)
.expect("valid mnemonic")
.phrase(),
&"m/84'/0'/0'/0/0".parse().expect("valid hdpath"),
"strk",
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -417,7 +417,7 @@ fn test_query_unreceived_packets() -> Result<(), Error> {
let starknet_account_b = SingleOwnerAccount::new(
starknet_chain.rpc_client.clone(),
LocalWallet::from_signing_key(SigningKey::from_secret_scalar(
wallet_starknet_b.signing_key.clone().try_into().unwrap(),
wallet_starknet_b.signing_key,
)),
*wallet_starknet_b.account_address,
starknet_chain.rpc_client.chain_id().await?,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -421,7 +421,7 @@ fn test_starknet_ics20_contract() -> Result<(), Error> {
let starknet_account_b = SingleOwnerAccount::new(
starknet_chain.rpc_client.clone(),
LocalWallet::from_signing_key(SigningKey::from_secret_scalar(
wallet_starknet_b.signing_key.clone().try_into().unwrap(),
wallet_starknet_b.signing_key,
)),
*wallet_starknet_b.account_address,
starknet_chain.rpc_client.chain_id().await?,
Expand Down
1 change: 1 addition & 0 deletions relayer/crates/starknet-relayer/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,6 @@ eyre = { workspace = true }
serde = { workspace = true }
url = { workspace = true }
futures = { workspace = true }
toml = { workspace = true }

tiny-bip39 = { workspace = true }
27 changes: 15 additions & 12 deletions relayer/crates/starknet-relayer/src/contexts/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ use hermes_runtime_components::traits::runtime::{
};
use hermes_starknet_chain_components::impls::types::config::StarknetChainConfig;
use hermes_starknet_chain_components::types::client_id::ClientId as StarknetClientId;
use hermes_starknet_chain_components::types::wallet::StarknetWallet;
use hermes_starknet_chain_context::contexts::chain::{StarknetChain, StarknetChainFields};
use hermes_starknet_chain_context::contexts::encoding::event::StarknetEventEncoding;
use hermes_starknet_chain_context::impls::error::HandleStarknetChainError;
Expand Down Expand Up @@ -226,26 +227,28 @@ impl StarknetBuilder {
return Err(eyre!("Starknet chain has a different ID as configured. Expected: {expected_chain_id}, got: {chain_id}").into());
}

let signing_key = self
.starknet_chain_config
.relayer_wallet
.signing_key
.clone()
.try_into()
.expect("valid signing key");
let relayer_wallet = toml::from_str::<StarknetWallet>(&std::fs::read_to_string(
&self.starknet_chain_config.relayer_wallet,
)?)
.map_err(|e| eyre!("Failed to parse relayer wallet: {e}"))?;

let account = SingleOwnerAccount::new(
rpc_client.clone(),
LocalWallet::from_signing_key(SigningKey::from_secret_scalar(signing_key)),
*self.starknet_chain_config.relayer_wallet.account_address,
LocalWallet::from_signing_key(SigningKey::from_secret_scalar(
relayer_wallet.signing_key,
)),
*relayer_wallet.account_address,
chain_id_felt,
ExecutionEncoding::New,
);

let proof_signer = Secp256k1KeyPair::from_mnemonic(
bip39::Mnemonic::from_entropy(&signing_key.to_bytes_be(), bip39::Language::English)
.expect("valid mnemonic")
.phrase(),
bip39::Mnemonic::from_entropy(
&relayer_wallet.signing_key.to_bytes_be(),
bip39::Language::English,
)
.expect("valid mnemonic")
.phrase(),
&"m/84'/0'/0'/0/0".parse().expect("valid hdpath"),
"strk",
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ where
"0x64b48806902a367c8598f4f95c305e8c1a1acba5f082d294a43793113115691"
)
.into(),
signing_key: felt!("0x71d7bb07b9a64f6f78ac4c816aff4da9").into(),
signing_key: felt!("0x71d7bb07b9a64f6f78ac4c816aff4da9"),
public_key: felt!(
"0x39d9e6ce352ad4530a0ef5d5a18fd3303c3606a7fa6ac5b620020ad681cc33b"
),
Expand All @@ -113,7 +113,7 @@ where
"0x78662e7352d062084b0010068b99288486c2d8b914f6e2a55ce945f8792c8b1"
)
.into(),
signing_key: felt!("0xe1406455b7d66b1690803be066cbe5e").into(),
signing_key: felt!("0xe1406455b7d66b1690803be066cbe5e"),
public_key: felt!(
"0x7a1bb2744a7dd29bffd44341dbd78008adb4bc11733601e7eddff322ada9cb"
),
Expand All @@ -126,7 +126,7 @@ where
"0x49dfb8ce986e21d354ac93ea65e6a11f639c1934ea253e5ff14ca62eca0f38e"
)
.into(),
signing_key: felt!("0xa20a02f0ac53692d144b20cb371a60d7").into(),
signing_key: felt!("0xa20a02f0ac53692d144b20cb371a60d7"),
public_key: felt!(
"0xb8fd4ddd415902d96f61b7ad201022d495997c2dff8eb9e0eb86253e30fabc"
),
Expand Down

0 comments on commit 5884df0

Please sign in to comment.