diff --git a/crates/cli/src/commands/regtest.rs b/crates/cli/src/commands/regtest.rs index 4c44eea..5cb705c 100644 --- a/crates/cli/src/commands/regtest.rs +++ b/crates/cli/src/commands/regtest.rs @@ -29,7 +29,7 @@ impl Regtest { println!("Esplora: {}", client.esplora_url()); println!("User: {:?}, Password: {:?}", auth.0.unwrap(), auth.1.unwrap()); println!(); - println!("Signer: {:?}", signer.get_wpkh_address()?); + println!("Signer: {:?}", signer.get_address()); println!("======================================"); while running.load(Ordering::SeqCst) {} diff --git a/crates/regtest/src/error.rs b/crates/regtest/src/error.rs index c439a6d..77d953b 100644 --- a/crates/regtest/src/error.rs +++ b/crates/regtest/src/error.rs @@ -1,14 +1,10 @@ use std::io; -use smplx_sdk::provider::ProviderError; use smplx_sdk::provider::RpcError; use smplx_sdk::signer::SignerError; #[derive(thiserror::Error, Debug)] pub enum RegtestError { - #[error(transparent)] - Provider(#[from] ProviderError), - #[error(transparent)] Rpc(#[from] RpcError), diff --git a/crates/regtest/src/regtest.rs b/crates/regtest/src/regtest.rs index c99386a..e132f71 100644 --- a/crates/regtest/src/regtest.rs +++ b/crates/regtest/src/regtest.rs @@ -21,9 +21,9 @@ impl Regtest { client.rpc_url(), client.auth(), SimplicityNetwork::default_regtest(), - )?); + )); - let signer = Signer::new(config.mnemonic.as_str(), provider)?; + let signer = Signer::new(config.mnemonic.as_str(), provider); Self::prepare_signer(&client, &signer, config.bitcoins)?; @@ -38,13 +38,13 @@ impl Regtest { rpc_provider.sweep_initialfreecoins()?; rpc_provider.generate_blocks(100)?; - rpc_provider.send_to_address(&signer.get_wpkh_address()?, btc2sat(bitcoins), None)?; + rpc_provider.send_to_address(&signer.get_address(), btc2sat(bitcoins), None)?; // wait for electrs to index let mut attempts = 0; loop { - if !(signer.get_wpkh_utxos()?).is_empty() { + if !(signer.get_utxos()?).is_empty() { break; } diff --git a/crates/sdk/src/lib.rs b/crates/sdk/src/lib.rs index 5dc4e44..0849165 100644 --- a/crates/sdk/src/lib.rs +++ b/crates/sdk/src/lib.rs @@ -1,5 +1,4 @@ pub mod constants; -pub mod presets; pub mod program; pub mod provider; pub mod signer; diff --git a/crates/sdk/src/presets/mod.rs b/crates/sdk/src/presets/mod.rs deleted file mode 100644 index 90c5352..0000000 --- a/crates/sdk/src/presets/mod.rs +++ /dev/null @@ -1,4 +0,0 @@ -pub mod p2pk; - -pub use p2pk::P2PK; -pub use p2pk::p2pk_build::{P2PKArguments, P2PKWitness}; diff --git a/crates/sdk/src/presets/p2pk.rs b/crates/sdk/src/presets/p2pk.rs deleted file mode 100644 index 7f70a04..0000000 --- a/crates/sdk/src/presets/p2pk.rs +++ /dev/null @@ -1,66 +0,0 @@ -use crate::program::ArgumentsTrait; -use crate::program::Program; - -use simplicityhl::simplicity::bitcoin::XOnlyPublicKey; - -// TODO macro -pub struct P2PK { - program: Program, -} - -impl P2PK { - pub const SOURCE: &'static str = include_str!("./simf/p2pk.simf"); - - pub fn new(public_key: XOnlyPublicKey, arguments: impl ArgumentsTrait + 'static) -> Self { - Self { - program: Program::new(Self::SOURCE, public_key, Box::new(arguments)), - } - } - - pub fn get_program(&self) -> &Program { - &self.program - } - - pub fn get_program_mut(&mut self) -> &mut Program { - &mut self.program - } -} - -pub mod p2pk_build { - use crate::program::ArgumentsTrait; - use crate::program::WitnessTrait; - use simplicityhl::num::U256; - use simplicityhl::str::WitnessName; - use simplicityhl::value::UIntValue; - use simplicityhl::value::ValueConstructible; - use simplicityhl::{Arguments, Value, WitnessValues}; - use std::collections::HashMap; - - #[derive(Clone)] - pub struct P2PKWitness { - pub signature: [u8; 64usize], - } - - #[derive(Clone)] - pub struct P2PKArguments { - pub public_key: [u8; 32], - } - - impl WitnessTrait for P2PKWitness { - fn build_witness(&self) -> WitnessValues { - WitnessValues::from(HashMap::from([( - WitnessName::from_str_unchecked("SIGNATURE"), - Value::byte_array(self.signature), - )])) - } - } - - impl ArgumentsTrait for P2PKArguments { - fn build_arguments(&self) -> Arguments { - Arguments::from(HashMap::from([( - WitnessName::from_str_unchecked("PUBLIC_KEY"), - Value::from(UIntValue::U256(U256::from_byte_array(self.public_key))), - )])) - } - } -} diff --git a/crates/sdk/src/presets/simf/p2pk.simf b/crates/sdk/src/presets/simf/p2pk.simf deleted file mode 100644 index f6a75e6..0000000 --- a/crates/sdk/src/presets/simf/p2pk.simf +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - jet::bip_0340_verify((param::PUBLIC_KEY, jet::sig_all_hash()), witness::SIGNATURE) -} diff --git a/crates/sdk/src/program/core.rs b/crates/sdk/src/program/core.rs index 9aea929..45c1304 100644 --- a/crates/sdk/src/program/core.rs +++ b/crates/sdk/src/program/core.rs @@ -5,11 +5,11 @@ use dyn_clone::DynClone; use simplicityhl::CompiledProgram; use simplicityhl::WitnessValues; use simplicityhl::elements::pset::PartiallySignedTransaction; -use simplicityhl::elements::{Address, Script, Transaction, TxOut, script, taproot}; +use simplicityhl::elements::{Address, Script, Transaction, TxOut, taproot}; use simplicityhl::simplicity::bitcoin::{XOnlyPublicKey, secp256k1}; use simplicityhl::simplicity::jet::Elements; use simplicityhl::simplicity::jet::elements::{ElementsEnv, ElementsUtxo}; -use simplicityhl::simplicity::{BitMachine, RedeemNode, Value}; +use simplicityhl::simplicity::{BitMachine, RedeemNode, Value, leaf_version}; use simplicityhl::tracker::{DefaultTracker, TrackerLogLevel}; use super::arguments::ArgumentsTrait; @@ -71,7 +71,7 @@ impl ProgramTrait for Program { } let target_utxo = &utxos[input_index]; - let script_pubkey = self.get_tr_address(network)?.script_pubkey(); + let script_pubkey = self.get_tr_address(network).script_pubkey(); if target_utxo.script_pubkey != script_pubkey { return Err(ProgramError::ScriptPubkeyMismatch { @@ -110,6 +110,7 @@ impl ProgramTrait for Program { .satisfy(witness.clone()) .map_err(ProgramError::WitnessSatisfaction)?; + // TODO: global config for TrackerLogLevel let mut tracker = DefaultTracker::new(satisfied.debug_symbols()).with_log_level(TrackerLogLevel::Debug); let env = self.get_env(pst, input_index, network)?; @@ -152,24 +153,24 @@ impl Program { } } - pub fn get_tr_address(&self, network: &SimplicityNetwork) -> Result
{ - let spend_info = self.taproot_spending_info()?; + pub fn get_tr_address(&self, network: &SimplicityNetwork) -> Address { + let spend_info = self.taproot_spending_info().unwrap(); - Ok(Address::p2tr( + Address::p2tr( secp256k1::SECP256K1, spend_info.internal_key(), spend_info.merkle_root(), None, network.address_params(), - )) + ) } - pub fn get_script_pubkey(&self, network: &SimplicityNetwork) -> Result