Skip to content

Commit

Permalink
Merge branch 'develop' into release/v1.10.0
Browse files Browse the repository at this point in the history
  • Loading branch information
briancorbin committed Aug 17, 2022
2 parents 7cedc22 + 074d2b0 commit e3d0a3f
Show file tree
Hide file tree
Showing 23 changed files with 615 additions and 543 deletions.
10 changes: 10 additions & 0 deletions Cargo.lock

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

3 changes: 2 additions & 1 deletion full-service/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ diesel-derive-enum = { version = "1", features = ["sqlite"] }
diesel_migrations = { version = "1.4.0", features = ["sqlite"] }
displaydoc = {version = "0.2", default-features = false }
dotenv = "0.15.0"
grpcio = { version ="0.10.2", default-features = false, features = [ "openssl" ] }
grpcio = "0.10.3"
hex = {version = "0.4", default-features = false }
num_cpus = "1.12"
rand = { version = "0.8", default-features = false }
Expand All @@ -65,6 +65,7 @@ retry = "1.3"
rocket = { version = "0.4.5", default-features = false }
rocket_contrib = { version = "0.4.5", default-features = false, features = ["json", "diesel_sqlite_pool"] }
serde = { version = "1.0", default-features = false, features = ["alloc", "derive"] }
serde-big-array = "0.4.1"
serde_derive = "1.0"
serde_json = { version = "1.0", features = ["preserve_order"] }
structopt = "0.3"
Expand Down
19 changes: 15 additions & 4 deletions full-service/src/bin/transaction-signer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ enum Opts {
#[structopt(short, long)]
name: Option<String>,
},
Import {
#[structopt(short, long)]
name: Option<String>,
mnemonic: String,
},
r#Sync {
secret_mnemonic: String,
sync_request: String,
Expand All @@ -61,7 +66,11 @@ fn main() {
match opts {
Opts::Create { ref name } => {
let name = name.clone().unwrap_or_else(|| "".into());
create_account(&name);
create_account(&name, None);
}
Opts::Import { mnemonic, name } => {
let name = name.unwrap_or_else(|| "".into());
create_account(&name, Some(&mnemonic));
}
Opts::ViewOnlyImportPackage {
ref secret_mnemonic,
Expand All @@ -84,11 +93,13 @@ fn main() {
}
}

fn create_account(name: &str) {
fn create_account(name: &str, mnemonic: Option<&str>) {
println!("Creating account {}", name);

// Generate new seed mnemonic.
let mnemonic = Mnemonic::new(MnemonicType::Words24, Language::English);
let mnemonic = match mnemonic {
Some(mnemonic) => Mnemonic::from_phrase(mnemonic, Language::English).unwrap(),
None => Mnemonic::new(MnemonicType::Words24, Language::English),
};

let fog_report_url = "".to_string();
let fog_report_id = "".to_string();
Expand Down
53 changes: 33 additions & 20 deletions full-service/src/db/transaction_log.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,19 @@ use mc_crypto_digestible::{Digestible, MerlinTranscript};
use mc_transaction_core::{tx::Tx, Amount, TokenId};
use std::fmt;

use crate::db::{
account::{AccountID, AccountModel},
models::{
Account, NewTransactionInputTxo, NewTransactionLog, TransactionInputTxo, TransactionLog,
TransactionOutputTxo, Txo,
use crate::{
db::{
account::{AccountID, AccountModel},
models::{
Account, NewTransactionInputTxo, NewTransactionLog, TransactionInputTxo,
TransactionLog, TransactionOutputTxo, Txo,
},
txo::{TxoID, TxoModel},
Conn, WalletDbError,
},
txo::{TxoID, TxoModel},
Conn, WalletDbError,
service::models::tx_proposal::TxProposal,
};

use crate::service::models::tx_proposal::TxProposal;

#[derive(Debug)]
pub struct TransactionID(pub String);

Expand Down Expand Up @@ -582,7 +583,10 @@ mod tests {

use crate::{
db::{account::AccountID, transaction_log::TransactionID, txo::TxoStatus},
service::{sync::SyncThread, transaction_builder::WalletTransactionBuilder},
service::{
sync::SyncThread, transaction::TransactionMemo,
transaction_builder::WalletTransactionBuilder,
},
test_utils::{
add_block_from_transaction_log, add_block_with_tx_outs, builder_for_random_recipient,
get_resolver_factory, get_test_ledger, manually_sync_account,
Expand Down Expand Up @@ -625,13 +629,15 @@ mod tests {
// Build a transaction
let conn = wallet_db.get_conn().unwrap();
let (recipient, mut builder) =
builder_for_random_recipient(&account_key, &ledger_db, &mut rng, &logger);
builder_for_random_recipient(&account_key, &ledger_db, &mut rng);
builder
.add_recipient(recipient.clone(), 50 * MOB, Mob::ID)
.unwrap();
builder.set_tombstone(0).unwrap();
builder.select_txos(&conn, None).unwrap();
let tx_proposal = builder.build(&conn).unwrap();
let unsigned_tx = builder.build(TransactionMemo::RTH).unwrap();
let fog_resolver = builder.get_fs_fog_resolver(&conn).unwrap();
let tx_proposal = unsigned_tx.sign(&account_key, fog_resolver).unwrap();

// Log submitted transaction from tx_proposal
let tx_log = TransactionLog::log_submitted(
Expand Down Expand Up @@ -781,7 +787,7 @@ mod tests {
// Build a transaction
let conn = wallet_db.get_conn().unwrap();
let (recipient, mut builder) =
builder_for_random_recipient(&account_key, &ledger_db, &mut rng, &logger);
builder_for_random_recipient(&account_key, &ledger_db, &mut rng);
// Add outlays all to the same recipient, so that we exceed u64::MAX in this tx
let value = 100 * MOB - Mob::MINIMUM_FEE;
builder
Expand All @@ -790,7 +796,9 @@ mod tests {

builder.set_tombstone(0).unwrap();
builder.select_txos(&conn, None).unwrap();
let tx_proposal = builder.build(&conn).unwrap();
let unsigned_tx = builder.build(TransactionMemo::RTH).unwrap();
let fog_resolver = builder.get_fs_fog_resolver(&conn).unwrap();
let tx_proposal = unsigned_tx.sign(&account_key, fog_resolver).unwrap();

let tx_log = TransactionLog::log_submitted(
&tx_proposal,
Expand Down Expand Up @@ -862,13 +870,15 @@ mod tests {
// Build a transaction
let conn = wallet_db.get_conn().unwrap();
let (recipient, mut builder) =
builder_for_random_recipient(&account_key, &ledger_db, &mut rng, &logger);
builder_for_random_recipient(&account_key, &ledger_db, &mut rng);
builder
.add_recipient(recipient.clone(), 50 * MOB, Mob::ID)
.unwrap();
builder.set_tombstone(0).unwrap();
builder.select_txos(&conn, None).unwrap();
let tx_proposal = builder.build(&conn).unwrap();
let unsigned_tx = builder.build(TransactionMemo::RTH).unwrap();
let fog_resolver = builder.get_fs_fog_resolver(&conn).unwrap();
let tx_proposal = unsigned_tx.sign(&account_key, fog_resolver).unwrap();

// Log submitted transaction from tx_proposal
TransactionLog::log_submitted(
Expand Down Expand Up @@ -959,13 +969,15 @@ mod tests {
// Build a transaction for > i64::Max
let conn = wallet_db.get_conn().unwrap();
let (recipient, mut builder) =
builder_for_random_recipient(&account_key, &ledger_db, &mut rng, &logger);
builder_for_random_recipient(&account_key, &ledger_db, &mut rng);
builder
.add_recipient(recipient.clone(), 10_000_000 * MOB, Mob::ID)
.unwrap();
builder.set_tombstone(0).unwrap();
builder.select_txos(&conn, None).unwrap();
let tx_proposal = builder.build(&conn).unwrap();
let unsigned_tx = builder.build(TransactionMemo::RTH).unwrap();
let fog_resolver = builder.get_fs_fog_resolver(&conn).unwrap();
let tx_proposal = unsigned_tx.sign(&account_key, fog_resolver).unwrap();

assert_eq!(
tx_proposal.payload_txos[0].amount.value,
Expand Down Expand Up @@ -1024,15 +1036,16 @@ mod tests {
AccountID::from(&account_key).to_string(),
ledger_db.clone(),
get_resolver_factory(&mut rng).unwrap(),
logger.clone(),
);
// Add self at main subaddress as the recipient
builder
.add_recipient(account_key.subaddress(0), 12 * MOB, Mob::ID)
.unwrap();
builder.set_tombstone(0).unwrap();
builder.select_txos(&conn, None).unwrap();
let tx_proposal = builder.build(&conn).unwrap();
let unsigned_tx = builder.build(TransactionMemo::RTH).unwrap();
let fog_resolver = builder.get_fs_fog_resolver(&conn).unwrap();
let tx_proposal = unsigned_tx.sign(&account_key, fog_resolver).unwrap();

// Log submitted transaction from tx_proposal
let tx_log = TransactionLog::log_submitted(
Expand Down
Loading

0 comments on commit e3d0a3f

Please sign in to comment.