depolymerization

wire gateway for Bitcoin/Ethereum
Log | Files | Refs | Submodules | README | LICENSE

commit e9c7a7907d5588da15b0faebfaeddb667872e639
parent f3855206f93b91d89941dc091b2c013bdff3b0c6
Author: Antoine A <>
Date:   Tue, 10 Dec 2024 13:07:27 +0100

update utils

Diffstat:
MCargo.lock | 77++++++++++++++++++++++++++++++++++++++---------------------------------------
Mbtc-wire/src/loops/worker.rs | 4++--
Mbtc-wire/src/taler_utils.rs | 4++--
Meth-wire/src/loops/worker.rs | 4++--
Meth-wire/src/taler_util.rs | 12++++++++----
Minstrumentation/src/gateway.rs | 2+-
Mwire-gateway/src/main.rs | 5+----
7 files changed, 54 insertions(+), 54 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock @@ -308,7 +308,7 @@ dependencies = [ "serde", "serde_json", "serde_repr", - "thiserror 2.0.4", + "thiserror 2.0.6", ] [[package]] @@ -337,9 +337,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc" +checksum = "27f657647bcff5394bf56c7317665bbf790a137a50eaaa5c6bfbb9e27a518f2d" dependencies = [ "shlex", ] @@ -352,9 +352,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "android-tzdata", "iana-time-zone", @@ -472,7 +472,7 @@ dependencies = [ "serde_with", "sqlx", "taler-common", - "thiserror 2.0.4", + "thiserror 2.0.6", "uri-pack", "url", "zeroize", @@ -862,7 +862,7 @@ dependencies = [ "serde", "serde_json", "serde_repr", - "thiserror 2.0.4", + "thiserror 2.0.6", ] [[package]] @@ -918,9 +918,9 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" [[package]] name = "fastrand" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fixed-hash" @@ -1540,9 +1540,9 @@ checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "js-sys" -version = "0.3.74" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a865e038f7f6ed956f788f0d7d60c541fff74c7bd74272c5d4cf15c63743e705" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" dependencies = [ "once_cell", "wasm-bindgen", @@ -1559,9 +1559,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.167" +version = "0.2.168" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc" +checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" [[package]] name = "libdeflate-sys" @@ -2266,15 +2266,15 @@ checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" [[package]] name = "rustix" -version = "0.38.41" +version = "0.38.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" dependencies = [ "bitflags", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2869,7 +2869,7 @@ dependencies = [ [[package]] name = "taler-api" version = "0.1.0" -source = "git+https://git.taler.net/taler-rust.git/#0ff83d96b82649f06ee6c3a48090c4f9c646d088" +source = "git+https://git.taler.net/taler-rust.git/#90d4608cf2f4a73cf13cb252e8892a27fa090e62" dependencies = [ "axum", "dashmap", @@ -2890,7 +2890,7 @@ dependencies = [ [[package]] name = "taler-common" version = "0.1.0" -source = "git+https://git.taler.net/taler-rust.git/#0ff83d96b82649f06ee6c3a48090c4f9c646d088" +source = "git+https://git.taler.net/taler-rust.git/#90d4608cf2f4a73cf13cb252e8892a27fa090e62" dependencies = [ "base32", "fastrand", @@ -2899,7 +2899,7 @@ dependencies = [ "serde_json", "serde_with", "sqlx", - "thiserror 2.0.4", + "thiserror 2.0.6", "url", ] @@ -2936,11 +2936,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.4" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f49a1853cf82743e3b7950f77e0f4d622ca36cf4317cba00c767838bac8d490" +checksum = "8fec2a1820ebd077e2b90c4df007bebf344cd394098a13c563957d0afc83ea47" dependencies = [ - "thiserror-impl 2.0.4", + "thiserror-impl 2.0.6", ] [[package]] @@ -2956,9 +2956,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.4" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8381894bb3efe0c4acac3ded651301ceee58a15d47c2e34885ed1908ad667061" +checksum = "d65750cab40f4ff1929fb1ba509e9914eb756131cef4210da8d5d700d26f6312" dependencies = [ "proc-macro2", "quote", @@ -3354,7 +3354,7 @@ dependencies = [ "quickcheck", "quickcheck_macros", "serde_json", - "thiserror 2.0.4", + "thiserror 2.0.6", "url", ] @@ -3436,9 +3436,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d15e63b4482863c109d70a7b8706c1e364eb6ea449b201a76c5b89cedcec2d5c" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ "cfg-if", "once_cell", @@ -3447,13 +3447,12 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d36ef12e3aaca16ddd3f67922bc63e48e953f126de60bd33ccc0101ef9998cd" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", "syn 2.0.90", @@ -3462,9 +3461,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "705440e08b42d3e4b36de7d66c944be628d579796b8090bfa3471478a2260051" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3472,9 +3471,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98c9ae5a76e46f4deecd0f0255cc223cfa18dc9b261213b8aa0c7b36f61b3f1d" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", @@ -3485,15 +3484,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ee99da9c5ba11bd675621338ef6fa52296b76b83305e9b6e5c77d4c286d6d49" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "web-sys" -version = "0.3.74" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a98bc3c33f0fe7e59ad7cd041b89034fa82a7c2d4365ca538dda6cdaf513863c" +checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" dependencies = [ "js-sys", "wasm-bindgen", @@ -3730,7 +3729,7 @@ dependencies = [ "sqlx", "taler-api", "taler-common", - "thiserror 2.0.4", + "thiserror 2.0.6", "time", "tokio", ] diff --git a/btc-wire/src/loops/worker.rs b/btc-wire/src/loops/worker.rs @@ -335,7 +335,7 @@ fn sync_chain_incoming_confirmed( let credit_addr = full.details[0].address.clone().unwrap().assume_checked(); let amount = btc_to_taler(&full.amount, state.currency); let nb = db.execute("INSERT INTO tx_in (received, amount, reserve_pub, debit_acc, credit_acc) VALUES ($1, ($2, $3)::taler_amount, $4, $5, $6) ON CONFLICT (reserve_pub) DO NOTHING ", &[ - &((full.time * 1000000) as i64), &(amount.decimal.value as i64), &(amount.decimal.fraction as i32), &reserve_pub.as_slice(), &btc_payto_url(&debit_addr).as_ref(), &btc_payto_url(&credit_addr).as_ref() + &((full.time * 1000000) as i64), &(amount.decimal.val as i64), &(amount.decimal.frac as i32), &reserve_pub.as_slice(), &btc_payto_url(&debit_addr).as_ref(), &btc_payto_url(&credit_addr).as_ref() ])?; if nb > 0 { info!( @@ -439,7 +439,7 @@ fn sync_chain_debit( let debit_addr = sender_address(rpc, full)?; let nb = db.execute( "INSERT INTO tx_out (created, amount, wtid, debit_acc, credit_acc, exchange_url, status, txid, request_uid) VALUES ($1, ($2, $3)::taler_amount, $4, $5, $6, $7, $8, $9, $10) ON CONFLICT (wtid) DO NOTHING", - &[&((full.time*1000000) as i64), &(amount.decimal.value as i64), &(amount.decimal.fraction as i32), &wtid.as_slice(), &btc_payto_url(&debit_addr).as_ref(), &btc_payto_url(&credit_addr).as_ref(), &state.base_url.as_ref(), &(DebitStatus::Sent as i16), &id.as_byte_array().as_slice(), &None::<&[u8]>], + &[&((full.time*1000000) as i64), &(amount.decimal.val as i64), &(amount.decimal.frac as i32), &wtid.as_slice(), &btc_payto_url(&debit_addr).as_ref(), &btc_payto_url(&credit_addr).as_ref(), &state.base_url.as_ref(), &(DebitStatus::Sent as i16), &id.as_byte_array().as_slice(), &None::<&[u8]>], )?; if nb > 0 { warn!( diff --git a/btc-wire/src/taler_utils.rs b/btc-wire/src/taler_utils.rs @@ -16,9 +16,9 @@ //! Utils function to convert taler API types to bitcoin API types use bitcoin::{Address, Amount as BtcAmount, SignedAmount}; -use common::currency::CurrencyBtc; use common::taler_common::amount::Amount; use common::url::Url; +use common::{currency::CurrencyBtc, taler_common::amount::FRAC_BASE}; use std::str::FromStr; /// Generate a payto uri from a btc address @@ -60,6 +60,6 @@ pub fn taler_to_btc(amount: &Amount, currency: CurrencyBtc) -> Result<BtcAmount, )); } - let sat = amount.decimal.value * 100_000_000 + amount.decimal.fraction as u64; + let sat = amount.decimal.val * FRAC_BASE as u64 + amount.decimal.frac as u64; Ok(BtcAmount::from_sat(sat)) } diff --git a/eth-wire/src/loops/worker.rs b/eth-wire/src/loops/worker.rs @@ -279,7 +279,7 @@ fn sync_chain_incoming_confirmed( let amount = eth_to_taler(&tx.value, state.currency); let credit_addr = tx.from.expect("Not coinbase"); let nb = db.execute("INSERT INTO tx_in (received, amount, reserve_pub, debit_acc, credit_acc) VALUES ($1, ($2, $3)::taler_amount, $4, $5, $6) ON CONFLICT (reserve_pub) DO NOTHING ", &[ - &Timestamp::now().as_sql_micros(), &(amount.decimal.value as i64), &(amount.decimal.fraction as i32), &reserve_pub.as_ref(), &eth_payto_url(&credit_addr).as_ref(), &state.payto.as_ref() + &Timestamp::now().as_sql_micros(), &(amount.decimal.val as i64), &(amount.decimal.frac as i32), &reserve_pub.as_ref(), &eth_payto_url(&credit_addr).as_ref(), &state.payto.as_ref() ])?; if nb > 0 { info!( @@ -353,7 +353,7 @@ fn sync_chain_outgoing(tx: &SyncTransaction, db: &mut Client, state: &WireState) // Else add to database let nb = db.execute( "INSERT INTO tx_out (created, amount, wtid, debit_acc, credit_acc, exchange_url, status, txid, request_uid) VALUES ($1, ($2, $3)::taler_amount, $4, $5, $6, $7, $8, $9, $10) ON CONFLICT (wtid) DO NOTHING", - &[&Timestamp::now().as_sql_micros(), &(amount.decimal.value as i64), &(amount.decimal.fraction as i32), &wtid.as_ref(), &eth_payto_url(&state.address).as_ref(), &eth_payto_url(&credit_addr).as_ref(), &state.base_url.as_ref(), &(DebitStatus::Sent as i16), &tx.hash.as_ref(), &None::<&[u8]>], + &[&Timestamp::now().as_sql_micros(), &(amount.decimal.val as i64), &(amount.decimal.frac as i32), &wtid.as_ref(), &eth_payto_url(&state.address).as_ref(), &eth_payto_url(&credit_addr).as_ref(), &state.base_url.as_ref(), &(DebitStatus::Sent as i16), &tx.hash.as_ref(), &None::<&[u8]>], )?; if nb > 0 { warn!( diff --git a/eth-wire/src/taler_util.rs b/eth-wire/src/taler_util.rs @@ -15,11 +15,15 @@ */ use std::str::FromStr; -use common::{currency::CurrencyEth, taler_common::amount::Amount, url::Url}; +use common::{ + currency::CurrencyEth, + taler_common::amount::{Amount, FRAC_BASE}, + url::Url, +}; use ethereum_types::{Address, U256}; pub const WEI: u64 = 1_000_000_000_000_000_000; -pub const TRUNC: u64 = 10_000_000_000; +pub const TRUNC: u64 = WEI / FRAC_BASE as u64; /// Generate a payto uri from an eth address pub fn eth_payto_url(addr: &Address) -> Url { @@ -53,7 +57,7 @@ pub fn eth_to_taler(amount: &U256, currency: CurrencyEth) -> Amount { /// Transform a eth amount into a btc amount pub fn taler_to_eth(amount: &Amount, currency: CurrencyEth) -> Result<U256, String> { - if (&amount.currency).as_ref() != currency.to_str() { + if amount.currency.as_ref() != currency.to_str() { return Err(format!( "expected currency {} got {}", currency.to_str(), @@ -61,5 +65,5 @@ pub fn taler_to_eth(amount: &Amount, currency: CurrencyEth) -> Result<U256, Stri )); } - Ok(U256::from(amount.decimal.value) * WEI + U256::from(amount.decimal.fraction) * TRUNC) + Ok(U256::from(amount.decimal.val) * WEI + U256::from(amount.decimal.frac) * TRUNC) } diff --git a/instrumentation/src/gateway.rs b/instrumentation/src/gateway.rs @@ -164,7 +164,7 @@ pub fn api(ctx: TestCtx) { 200 ); // Collision - request.amount.decimal.fraction += 42; + request.amount.decimal.frac += 42; assert_eq!( http_code(ureq::post(&format!("{}transfer", ctx.gateway_url)).send_json(&request)), 409 diff --git a/wire-gateway/src/main.rs b/wire-gateway/src/main.rs @@ -43,10 +43,7 @@ use std::{ time::Duration, }; use taler_api::{ - db::{ - query_helper::{page, SqlQueryHelper}, - type_helper::SqlTypeHelper, - }, + db::{page, BindHelper, TypeHelper}, error::{failure, failure_status, ApiResult}, wire_gateway_api, WireGatewayImpl, };