Change Address::from_str(s) to s.parse
`s.parse` is more idiomatic and produces more helpful error messages. This has been changed for parsing a string as an `Address`.
This commit is contained in:
parent
64e668f99e
commit
4ad86148c7
|
@ -23,7 +23,6 @@
|
||||||
//!
|
//!
|
||||||
//! The miner's fee will be 10,000 satoshis.
|
//! The miner's fee will be 10,000 satoshis.
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
use std::str::FromStr;
|
|
||||||
|
|
||||||
use bitcoin::address::script_pubkey::ScriptBufExt as _;
|
use bitcoin::address::script_pubkey::ScriptBufExt as _;
|
||||||
use bitcoin::bip32::{ChildNumber, DerivationPath, Fingerprint, IntoDerivationPath, Xpriv, Xpub};
|
use bitcoin::bip32::{ChildNumber, DerivationPath, Fingerprint, IntoDerivationPath, Xpriv, Xpub};
|
||||||
|
@ -85,7 +84,7 @@ fn get_internal_address_xpriv<C: Signing>(
|
||||||
|
|
||||||
// The address to send to.
|
// The address to send to.
|
||||||
fn receivers_address() -> Address {
|
fn receivers_address() -> Address {
|
||||||
Address::from_str("bc1q7cyrfmck2ffu2ud3rn5l5a8yv6f0chkp0zpemf")
|
"bc1q7cyrfmck2ffu2ud3rn5l5a8yv6f0chkp0zpemf".parse::<Address<_>>()
|
||||||
.expect("a valid address")
|
.expect("a valid address")
|
||||||
.require_network(Network::Bitcoin)
|
.require_network(Network::Bitcoin)
|
||||||
.expect("valid address for mainnet")
|
.expect("valid address for mainnet")
|
||||||
|
@ -93,7 +92,7 @@ fn receivers_address() -> Address {
|
||||||
|
|
||||||
// The dummy unspent transaction outputs that we control.
|
// The dummy unspent transaction outputs that we control.
|
||||||
fn dummy_unspent_transaction_outputs() -> Vec<(OutPoint, TxOut)> {
|
fn dummy_unspent_transaction_outputs() -> Vec<(OutPoint, TxOut)> {
|
||||||
let script_pubkey_1 = Address::from_str("bc1qrwuu3ydv0jfza4a0ehtfd03m9l4vw3fy0hfm50")
|
let script_pubkey_1 = "bc1qrwuu3ydv0jfza4a0ehtfd03m9l4vw3fy0hfm50".parse::<Address<_>>()
|
||||||
.expect("a valid address")
|
.expect("a valid address")
|
||||||
.require_network(Network::Bitcoin)
|
.require_network(Network::Bitcoin)
|
||||||
.expect("valid address for mainnet")
|
.expect("valid address for mainnet")
|
||||||
|
@ -106,7 +105,7 @@ fn dummy_unspent_transaction_outputs() -> Vec<(OutPoint, TxOut)> {
|
||||||
|
|
||||||
let utxo_1 = TxOut { value: DUMMY_UTXO_AMOUNT_INPUT_1, script_pubkey: script_pubkey_1 };
|
let utxo_1 = TxOut { value: DUMMY_UTXO_AMOUNT_INPUT_1, script_pubkey: script_pubkey_1 };
|
||||||
|
|
||||||
let script_pubkey_2 = Address::from_str("bc1qy7swwpejlw7a2rp774pa8rymh8tw3xvd2x2xkd")
|
let script_pubkey_2 = "bc1qy7swwpejlw7a2rp774pa8rymh8tw3xvd2x2xkd".parse::<Address<_>>()
|
||||||
.expect("a valid address")
|
.expect("a valid address")
|
||||||
.require_network(Network::Bitcoin)
|
.require_network(Network::Bitcoin)
|
||||||
.expect("valid address for mainnet")
|
.expect("valid address for mainnet")
|
||||||
|
|
|
@ -30,7 +30,6 @@
|
||||||
|
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::str::FromStr;
|
|
||||||
|
|
||||||
use bitcoin::address::script_pubkey::ScriptBufExt as _;
|
use bitcoin::address::script_pubkey::ScriptBufExt as _;
|
||||||
use bitcoin::bip32::{ChildNumber, DerivationPath, Fingerprint, IntoDerivationPath, Xpriv, Xpub};
|
use bitcoin::bip32::{ChildNumber, DerivationPath, Fingerprint, IntoDerivationPath, Xpriv, Xpub};
|
||||||
|
@ -175,7 +174,7 @@ impl WatchOnly {
|
||||||
|
|
||||||
/// Creates the PSBT, in BIP174 parlance this is the 'Creator'.
|
/// Creates the PSBT, in BIP174 parlance this is the 'Creator'.
|
||||||
fn create_psbt<C: Verification>(&self, secp: &Secp256k1<C>) -> Result<Psbt> {
|
fn create_psbt<C: Verification>(&self, secp: &Secp256k1<C>) -> Result<Psbt> {
|
||||||
let to_address = Address::from_str(RECEIVE_ADDRESS)?.require_network(Network::Regtest)?;
|
let to_address = RECEIVE_ADDRESS.parse::<Address<_>>()?.require_network(Network::Regtest)?;
|
||||||
let to_amount = OUTPUT_AMOUNT_BTC.parse::<Amount>()?;
|
let to_amount = OUTPUT_AMOUNT_BTC.parse::<Amount>()?;
|
||||||
|
|
||||||
let (_, change_address, _) = self.change_address(secp)?;
|
let (_, change_address, _) = self.change_address(secp)?;
|
||||||
|
|
|
@ -2,8 +2,6 @@
|
||||||
|
|
||||||
//! Demonstrate creating a transaction that spends to and from p2wpkh outputs.
|
//! Demonstrate creating a transaction that spends to and from p2wpkh outputs.
|
||||||
|
|
||||||
use std::str::FromStr;
|
|
||||||
|
|
||||||
use bitcoin::address::script_pubkey::ScriptBufExt as _;
|
use bitcoin::address::script_pubkey::ScriptBufExt as _;
|
||||||
use bitcoin::locktime::absolute;
|
use bitcoin::locktime::absolute;
|
||||||
use bitcoin::secp256k1::{rand, Message, Secp256k1, SecretKey, Signing};
|
use bitcoin::secp256k1::{rand, Message, Secp256k1, SecretKey, Signing};
|
||||||
|
@ -102,7 +100,7 @@ fn senders_keys<C: Signing>(secp: &Secp256k1<C>) -> (SecretKey, WPubkeyHash) {
|
||||||
///
|
///
|
||||||
/// (FWIW this is a random mainnet address from block 80219.)
|
/// (FWIW this is a random mainnet address from block 80219.)
|
||||||
fn receivers_address() -> Address {
|
fn receivers_address() -> Address {
|
||||||
Address::from_str("bc1q7cyrfmck2ffu2ud3rn5l5a8yv6f0chkp0zpemf")
|
"bc1q7cyrfmck2ffu2ud3rn5l5a8yv6f0chkp0zpemf".parse::<Address<_>>()
|
||||||
.expect("a valid address")
|
.expect("a valid address")
|
||||||
.require_network(Network::Bitcoin)
|
.require_network(Network::Bitcoin)
|
||||||
.expect("valid address for mainnet")
|
.expect("valid address for mainnet")
|
||||||
|
|
|
@ -2,8 +2,6 @@
|
||||||
|
|
||||||
//! Demonstrate creating a transaction that spends to and from p2tr outputs.
|
//! Demonstrate creating a transaction that spends to and from p2tr outputs.
|
||||||
|
|
||||||
use std::str::FromStr;
|
|
||||||
|
|
||||||
use bitcoin::address::script_pubkey::ScriptBufExt as _;
|
use bitcoin::address::script_pubkey::ScriptBufExt as _;
|
||||||
use bitcoin::key::{Keypair, TapTweak, TweakedKeypair, UntweakedPublicKey};
|
use bitcoin::key::{Keypair, TapTweak, TweakedKeypair, UntweakedPublicKey};
|
||||||
use bitcoin::locktime::absolute;
|
use bitcoin::locktime::absolute;
|
||||||
|
@ -99,7 +97,7 @@ fn senders_keys<C: Signing>(secp: &Secp256k1<C>) -> Keypair {
|
||||||
///
|
///
|
||||||
/// (FWIW this is an arbitrary mainnet address from block 805222.)
|
/// (FWIW this is an arbitrary mainnet address from block 805222.)
|
||||||
fn receivers_address() -> Address {
|
fn receivers_address() -> Address {
|
||||||
Address::from_str("bc1p0dq0tzg2r780hldthn5mrznmpxsxc0jux5f20fwj0z3wqxxk6fpqm7q0va")
|
"bc1p0dq0tzg2r780hldthn5mrznmpxsxc0jux5f20fwj0z3wqxxk6fpqm7q0va".parse::<Address<_>>()
|
||||||
.expect("a valid address")
|
.expect("a valid address")
|
||||||
.require_network(Network::Bitcoin)
|
.require_network(Network::Bitcoin)
|
||||||
.expect("valid address for mainnet")
|
.expect("valid address for mainnet")
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
//!
|
//!
|
||||||
//! The miner's fee will be 10,000 satoshis.
|
//! The miner's fee will be 10,000 satoshis.
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
use std::str::FromStr;
|
|
||||||
|
|
||||||
use bitcoin::address::script_pubkey::ScriptBufExt as _;
|
use bitcoin::address::script_pubkey::ScriptBufExt as _;
|
||||||
use bitcoin::bip32::{ChildNumber, DerivationPath, Fingerprint, IntoDerivationPath, Xpriv, Xpub};
|
use bitcoin::bip32::{ChildNumber, DerivationPath, Fingerprint, IntoDerivationPath, Xpriv, Xpub};
|
||||||
|
@ -95,7 +94,7 @@ fn get_tap_key_origin(
|
||||||
|
|
||||||
// The address to send to.
|
// The address to send to.
|
||||||
fn receivers_address() -> Address {
|
fn receivers_address() -> Address {
|
||||||
Address::from_str("bc1p0dq0tzg2r780hldthn5mrznmpxsxc0jux5f20fwj0z3wqxxk6fpqm7q0va")
|
"bc1p0dq0tzg2r780hldthn5mrznmpxsxc0jux5f20fwj0z3wqxxk6fpqm7q0va".parse::<Address<_>>()
|
||||||
.expect("a valid address")
|
.expect("a valid address")
|
||||||
.require_network(Network::Bitcoin)
|
.require_network(Network::Bitcoin)
|
||||||
.expect("valid address for mainnet")
|
.expect("valid address for mainnet")
|
||||||
|
@ -104,7 +103,7 @@ fn receivers_address() -> Address {
|
||||||
// The dummy unspent transaction outputs that we control.
|
// The dummy unspent transaction outputs that we control.
|
||||||
fn dummy_unspent_transaction_outputs() -> Vec<(OutPoint, TxOut)> {
|
fn dummy_unspent_transaction_outputs() -> Vec<(OutPoint, TxOut)> {
|
||||||
let script_pubkey_1 =
|
let script_pubkey_1 =
|
||||||
Address::from_str("bc1p80lanj0xee8q667aqcnn0xchlykllfsz3gu5skfv9vjsytaujmdqtv52vu")
|
"bc1p80lanj0xee8q667aqcnn0xchlykllfsz3gu5skfv9vjsytaujmdqtv52vu".parse::<Address<_>>()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.require_network(Network::Bitcoin)
|
.require_network(Network::Bitcoin)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
@ -118,7 +117,7 @@ fn dummy_unspent_transaction_outputs() -> Vec<(OutPoint, TxOut)> {
|
||||||
let utxo_1 = TxOut { value: DUMMY_UTXO_AMOUNT_INPUT_1, script_pubkey: script_pubkey_1 };
|
let utxo_1 = TxOut { value: DUMMY_UTXO_AMOUNT_INPUT_1, script_pubkey: script_pubkey_1 };
|
||||||
|
|
||||||
let script_pubkey_2 =
|
let script_pubkey_2 =
|
||||||
Address::from_str("bc1pfd0jmmdnp278vppcw68tkkmquxtq50xchy7f6wdmjtjm7fgsr8dszdcqce")
|
"bc1pfd0jmmdnp278vppcw68tkkmquxtq50xchy7f6wdmjtjm7fgsr8dszdcqce".parse::<Address<_>>()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.require_network(Network::Bitcoin)
|
.require_network(Network::Bitcoin)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
|
|
@ -76,7 +76,6 @@ const UTXO_3: P2trUtxo = P2trUtxo {
|
||||||
};
|
};
|
||||||
|
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
use std::str::FromStr;
|
|
||||||
|
|
||||||
use bitcoin::address::script_pubkey::{BuilderExt as _, ScriptBufExt as _};
|
use bitcoin::address::script_pubkey::{BuilderExt as _, ScriptBufExt as _};
|
||||||
use bitcoin::bip32::{ChildNumber, DerivationPath, Fingerprint, Xpriv, Xpub};
|
use bitcoin::bip32::{ChildNumber, DerivationPath, Fingerprint, Xpriv, Xpub};
|
||||||
|
@ -101,10 +100,10 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
|
|
||||||
// Just some addresses for outputs from our wallets. Not really important.
|
// Just some addresses for outputs from our wallets. Not really important.
|
||||||
let to_address =
|
let to_address =
|
||||||
Address::from_str("bcrt1p0p3rvwww0v9znrclp00uneq8ytre9kj922v8fxhnezm3mgsmn9usdxaefc")?
|
"bcrt1p0p3rvwww0v9znrclp00uneq8ytre9kj922v8fxhnezm3mgsmn9usdxaefc".parse::<Address<_>>()?
|
||||||
.require_network(Network::Regtest)?;
|
.require_network(Network::Regtest)?;
|
||||||
let change_address =
|
let change_address =
|
||||||
Address::from_str("bcrt1pz449kexzydh2kaypatup5ultru3ej284t6eguhnkn6wkhswt0l7q3a7j76")?
|
"bcrt1pz449kexzydh2kaypatup5ultru3ej284t6eguhnkn6wkhswt0l7q3a7j76".parse::<Address<_>>()?
|
||||||
.require_network(Network::Regtest)?;
|
.require_network(Network::Regtest)?;
|
||||||
let amount_to_send_in_sats = Amount::ONE_BTC;
|
let amount_to_send_in_sats = Amount::ONE_BTC;
|
||||||
let change_amount = UTXO_1
|
let change_amount = UTXO_1
|
||||||
|
|
|
@ -309,7 +309,7 @@ pub enum AddressData {
|
||||||
/// ```
|
/// ```
|
||||||
/// # use std::str::FromStr;
|
/// # use std::str::FromStr;
|
||||||
/// # use bitcoin::address::{Address, NetworkChecked};
|
/// # use bitcoin::address::{Address, NetworkChecked};
|
||||||
/// let address: Address<NetworkChecked> = Address::from_str("132F25rTsvBdp9JzLLBHP5mvGY66i1xdiM")
|
/// let address: Address<NetworkChecked> = "132F25rTsvBdp9JzLLBHP5mvGY66i1xdiM".parse::<Address<_>>()
|
||||||
/// .unwrap().assume_checked();
|
/// .unwrap().assume_checked();
|
||||||
/// assert_eq!(address.to_string(), "132F25rTsvBdp9JzLLBHP5mvGY66i1xdiM");
|
/// assert_eq!(address.to_string(), "132F25rTsvBdp9JzLLBHP5mvGY66i1xdiM");
|
||||||
/// ```
|
/// ```
|
||||||
|
@ -317,7 +317,7 @@ pub enum AddressData {
|
||||||
/// ```ignore
|
/// ```ignore
|
||||||
/// # use std::str::FromStr;
|
/// # use std::str::FromStr;
|
||||||
/// # use bitcoin::address::{Address, NetworkChecked};
|
/// # use bitcoin::address::{Address, NetworkChecked};
|
||||||
/// let address: Address<NetworkUnchecked> = Address::from_str("132F25rTsvBdp9JzLLBHP5mvGY66i1xdiM")
|
/// let address: Address<NetworkUnchecked> = "132F25rTsvBdp9JzLLBHP5mvGY66i1xdiM".parse::<Address<_>>()
|
||||||
/// .unwrap();
|
/// .unwrap();
|
||||||
/// let s = address.to_string(); // does not compile
|
/// let s = address.to_string(); // does not compile
|
||||||
/// ```
|
/// ```
|
||||||
|
@ -329,7 +329,7 @@ pub enum AddressData {
|
||||||
/// ```
|
/// ```
|
||||||
/// # use std::str::FromStr;
|
/// # use std::str::FromStr;
|
||||||
/// # use bitcoin::address::{Address, NetworkUnchecked};
|
/// # use bitcoin::address::{Address, NetworkUnchecked};
|
||||||
/// let address: Address<NetworkUnchecked> = Address::from_str("132F25rTsvBdp9JzLLBHP5mvGY66i1xdiM")
|
/// let address: Address<NetworkUnchecked> = "132F25rTsvBdp9JzLLBHP5mvGY66i1xdiM".parse::<Address<_>>()
|
||||||
/// .unwrap();
|
/// .unwrap();
|
||||||
/// assert_eq!(format!("{:?}", address), "Address<NetworkUnchecked>(132F25rTsvBdp9JzLLBHP5mvGY66i1xdiM)");
|
/// assert_eq!(format!("{:?}", address), "Address<NetworkUnchecked>(132F25rTsvBdp9JzLLBHP5mvGY66i1xdiM)");
|
||||||
/// ```
|
/// ```
|
||||||
|
@ -337,7 +337,7 @@ pub enum AddressData {
|
||||||
/// ```
|
/// ```
|
||||||
/// # use std::str::FromStr;
|
/// # use std::str::FromStr;
|
||||||
/// # use bitcoin::address::{Address, NetworkChecked};
|
/// # use bitcoin::address::{Address, NetworkChecked};
|
||||||
/// let address: Address<NetworkChecked> = Address::from_str("132F25rTsvBdp9JzLLBHP5mvGY66i1xdiM")
|
/// let address: Address<NetworkChecked> = "132F25rTsvBdp9JzLLBHP5mvGY66i1xdiM".parse::<Address<_>>()
|
||||||
/// .unwrap().assume_checked();
|
/// .unwrap().assume_checked();
|
||||||
/// assert_eq!(format!("{:?}", address), "132F25rTsvBdp9JzLLBHP5mvGY66i1xdiM");
|
/// assert_eq!(format!("{:?}", address), "132F25rTsvBdp9JzLLBHP5mvGY66i1xdiM");
|
||||||
/// ```
|
/// ```
|
||||||
|
|
Loading…
Reference in New Issue