Skip to content

Commit

Permalink
feat: compile new impl
Browse files Browse the repository at this point in the history
  • Loading branch information
Bisht13 committed Jun 9, 2024
1 parent 0e1ca12 commit 2275589
Show file tree
Hide file tree
Showing 42 changed files with 495 additions and 6,044 deletions.
611 changes: 154 additions & 457 deletions Cargo.lock

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
[workspace]
members = [
"packages/relayer",
"packages/utils",
"packages/scripts",
]
exclude = ["node_modules/*"]
Expand Down
8 changes: 1 addition & 7 deletions packages/relayer/.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,7 @@ PRIVATE_KEY= # Private key for Relayer's account.
CHAIN_RPC_PROVIDER=http://127.0.0.1:8545
CHAIN_ID=11155111 # Chain ID of the testnet.

# IMAP + SMTP (Settings will be provided by your email provider)
IMAP_DOMAIN_NAME=imap.gmail.com
IMAP_PORT=993
AUTH_TYPE=password
SMTP_DOMAIN_NAME=smtp.gmail.com
LOGIN_ID= # IMAP login id - usually your email address.
LOGIN_PASSWORD="" # IMAP password - usually your email password.
SMTP_SERVER=

PROVER_ADDRESS="https://zkemail--email-wallet-relayer-v1-1-flask-app-dev.modal.run"

Expand Down
25 changes: 6 additions & 19 deletions packages/relayer/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,15 @@ tokio = { version = "1.0", features = ["full"] }
sled = "0.34.2"
anyhow = "1.0.75"
dotenv = "0.15.0"
oauth2 = "4.3.0"
async-imap = { version = "0.9.1", default-features = false, features = [
"runtime-tokio",
] }
async-native-tls = { version = "0.5.0", default-features = false, features = [
"runtime-tokio",
] }
serde = { version = "1.0", features = ["derive"] }
webbrowser = "0.8.11"
serde_json = "1.0.68"
tiny_http = "0.12.0"
lettre = { version = "0.10.4", features = ["tokio1", "tokio1-native-tls"] }
ethers = { version = "2.0.10", features = ["abigen"] }
email-wallet-utils = { path = "../utils" }
futures = "0.3.28"
relayer-utils = { git = "https://github.com/zkemail/relayer-utils" }
slog = { version = "2.7.0", features = [
"max_level_trace",
"release_max_level_warn",
] }
sqlx = { version = "=0.6.3", features = ["postgres", "runtime-tokio-native-tls"] }
regex = "1.10.2"
axum = "0.6.20"
Expand All @@ -43,17 +37,10 @@ ic-utils = { version = "0.30.0" }
ic-agent = { version = "0.30.0", features = ["pem", "reqwest"] }
candid = "0.9.11"
lazy_static = "1.4"
slog = { version = "2.7.0", features = [
"max_level_trace",
"release_max_level_warn",
] }
slog-async = "2.8.0"
slog-term = "2.9.0"
slog-json = "2.6.1"
file-rotate = "0.7.5"
function_name = "0.3.0"
base64 = "0.21.7"
serde_with = "3.8.1"
futures = "0.3.30"


[build-dependencies]
Expand Down
15 changes: 11 additions & 4 deletions packages/relayer/src/chain.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use ethers::abi::RawLog;
use ethers::middleware::Middleware;
use ethers::prelude::*;
use ethers::signers::Signer;
use futures::future::BoxFuture;

const CONFIRMATIONS: usize = 1;

Expand Down Expand Up @@ -630,7 +631,10 @@ impl ChainClient {
}

pub async fn stream_unclaim_fund_registration<
F: FnMut(email_wallet_events::UnclaimedFundRegisteredFilter, LogMeta) -> Result<()>,
F: FnMut(
email_wallet_events::UnclaimedFundRegisteredFilter,
LogMeta,
) -> BoxFuture<'static, Result<()>>, // Specify that the closure returns a BoxFuture
>(
&self,
from_block: U64,
Expand All @@ -646,13 +650,16 @@ impl ChainClient {
let mut last_block = from_block;
while let Some(Ok((event, meta))) = stream.next().await {
last_block = meta.block_number;
f(event, meta)?;
f(event, meta).await?; // Now you can directly await the closure
}
Ok(last_block)
}

pub async fn stream_unclaim_state_registration<
F: FnMut(email_wallet_events::UnclaimedStateRegisteredFilter, LogMeta) -> Result<()>,
F: FnMut(
email_wallet_events::UnclaimedStateRegisteredFilter,
LogMeta,
) -> BoxFuture<'static, Result<()>>, // Specify that the closure returns a BoxFuture
>(
&self,
from_block: U64,
Expand All @@ -668,7 +675,7 @@ impl ChainClient {
let mut last_block = from_block;
while let Some(Ok((event, meta))) = stream.next().await {
last_block = meta.block_number;
f(event, meta)?;
f(event, meta).await?;
}
Ok(last_block)
}
Expand Down
38 changes: 4 additions & 34 deletions packages/relayer/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ use dotenv::dotenv;

#[derive(Clone)]
pub struct RelayerConfig {
pub imap_config: ImapConfig,
pub smtp_config: SmtpConfig,
pub smtp_server: String,
pub relayer_email_addr: String,
pub db_path: String,
pub web_server_address: String,
pub circuits_dir_path: PathBuf,
Expand All @@ -32,36 +32,6 @@ impl RelayerConfig {
pub fn new() -> Self {
dotenv().ok();

let imap_auth = env::var(IMAP_AUTH_TYPE_KEY).unwrap();
let imap_auth = match &*imap_auth {
"password" => ImapAuth::Password {
user_id: env::var(LOGIN_ID_KEY).unwrap(),
password: env::var(LOGIN_PASSWORD_KEY).unwrap(),
},
"oauth" => ImapAuth::Oauth {
user_id: env::var(LOGIN_ID_KEY).unwrap(),
client_id: env::var(IMAP_CLIENT_ID_KEY).unwrap(),
client_secret: env::var(IMAP_CLIENT_SECRET_KEY).unwrap(),
auth_url: env::var(IMAP_AUTH_URL_KEY).unwrap(),
token_url: env::var(IMAP_TOKEN_URL_KEY).unwrap(),
redirect_url: IMAP_REDIRECT_URL_KEY.to_string(),
},
_ => panic!("{WRONG_AUTH_METHOD}"),
};

let imap_config = ImapConfig {
domain_name: env::var(IMAP_DOMAIN_NAME_KEY).unwrap(),
port: env::var(IMAP_PORT_KEY).unwrap().parse().unwrap(),
auth: imap_auth,
initially_checked: false,
};

let smtp_config = SmtpConfig {
domain_name: env::var(SMTP_DOMAIN_NAME_KEY).unwrap(),
id: env::var(LOGIN_ID_KEY).unwrap(),
password: env::var(LOGIN_PASSWORD_KEY).unwrap(),
};

let fee_per_gas = env::var(FEE_PER_GAS_KEY).unwrap();
let fee_per_gas = U256::from_dec_str(&fee_per_gas).unwrap();

Expand All @@ -83,8 +53,8 @@ impl RelayerConfig {
let onboarding_reply_msg = env::var(ONBOARDING_REPLY_KEY).unwrap();

Self {
imap_config,
smtp_config,
smtp_server: env::var(SMTP_SERVER_KEY).unwrap(),
relayer_email_addr: env::var(RELAYER_EMAIL_ADDR_KEY).unwrap(),
db_path: env::var(DATABASE_PATH_KEY).unwrap(),
web_server_address: env::var(WEB_SERVER_ADDRESS_KEY).unwrap(),
circuits_dir_path: env::var(CIRCUITS_DIR_PATH_KEY).unwrap().into(),
Expand Down
18 changes: 5 additions & 13 deletions packages/relayer/src/core.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,20 @@

use crate::*;

use email_wallet_utils::*;
use relayer_utils::*;

use ethers::types::{Address, Bytes, U256};
use ethers::utils::hex::FromHex;

use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};

use tokio::sync::mpsc::UnboundedSender;

const DOMAIN_FIELDS: usize = 9;
const SUBJECT_FIELDS: usize = 20;
const EMAIL_ADDR_FIELDS: usize = 9;

#[named]
pub async fn handle_email<P: EmailsPool>(
email: String,
emails_pool: P,
tx_claimer: UnboundedSender<Claim>,
) -> Result<EmailWalletEvent> {
pub async fn handle_email(email: String) -> Result<EmailWalletEvent> {
let parsed_email = ParsedEmail::new_from_raw_email(&email).await?;
trace!(LOG, "email: {}", email; "func" => function_name!());
let from_addr = parsed_email.get_from_addr()?;
Expand Down Expand Up @@ -87,10 +81,8 @@ pub async fn handle_email<P: EmailsPool>(
info!(LOG, "Sender wallet address: {}", wallet_addr; "func" => function_name!());
let claims = DB.get_claims_by_email_addr(&from_addr).await?;
for claim in claims {
tx_claimer.send(claim)?;
claim_unclaims(claim).await?;
}
// let email_hash = calculate_default_hash(&email);
// emails_pool.insert_email(&email_hash, &email).await?;
return Ok(EmailWalletEvent::AccountCreated {
email_addr: from_addr,
account_key: account_key,
Expand Down Expand Up @@ -352,8 +344,8 @@ pub async fn handle_email<P: EmailsPool>(
is_announced: false,
is_seen: false,
};
tx_claimer.send(claim)?;
trace!(LOG, "claim sent to tx_claimer"; "func" => function_name!());
claim_unclaims(claim).await?;
trace!(LOG, "Added claim"; "func" => function_name!());
}
let message_id = parsed_email.get_message_id()?;

Expand Down
Loading

0 comments on commit 2275589

Please sign in to comment.