From c7cd2a10b63afc35f9e2c4c9176077aaff40e77a Mon Sep 17 00:00:00 2001 From: Docusaurus bot Date: Tue, 2 Feb 2021 00:00:50 +0000 Subject: [PATCH] Deploy website Deploy website version based on 9f36250646cc663443dd6117bed5dfe729dcc24c --- docs/next/applications/cli.html | 15 +++++++- docs/next/applications/cli/index.html | 15 +++++++- docs/next/core/addresses.html | 10 +++--- docs/next/core/addresses/index.html | 10 +++--- docs/next/core/hd-keys.html | 12 +++---- docs/next/core/hd-keys/index.html | 12 +++---- docs/next/core/txbuilder.html | 36 ++++++++++---------- docs/next/core/txbuilder/index.html | 36 ++++++++++---------- docs/next/crypto/sign.html | 4 +-- docs/next/crypto/sign/index.html | 4 +-- docs/next/getting-started.html | 2 +- docs/next/getting-started/index.html | 2 +- docs/next/key-manager/key-manager.html | 22 ++++++------ docs/next/key-manager/key-manager/index.html | 22 ++++++------ docs/next/secp256k1/secp256k1.html | 4 +-- docs/next/secp256k1/secp256k1/index.html | 4 +-- 16 files changed, 118 insertions(+), 92 deletions(-) diff --git a/docs/next/applications/cli.html b/docs/next/applications/cli.html index 8c84dbecf1..75407c364e 100644 --- a/docs/next/applications/cli.html +++ b/docs/next/applications/cli.html @@ -82,7 +82,20 @@ Usage: bitcoin-s-cli [options] [<cmd>] <cmd> The command and arguments to be executed. Try bitcoin-s-cli help for a list of all commands

Now you are are ready to start the server that the cli sends commands to. Take a look at our server documentation on how to build and start the server.

-
Getting Bitcoin-S installed on your machineApplication Server
Edit

TxBuilder Example

Bitcoin-S features a transaction building API that allows you to construct and sign Bitcoin transactions. Here's an example of how to use it

implicit val ec: ExecutionContext = ExecutionContext.Implicits.global
-// ec: ExecutionContext = scala.concurrent.impl.ExecutionContextImpl$$anon$3@1af57bfc[Running, parallelism = 2, size = 2, active = 0, running = 0, steals = 33, tasks = 0, submissions = 0]
+// ec: ExecutionContext = scala.concurrent.impl.ExecutionContextImpl$$anon$3@dadfdc0[Running, parallelism = 2, size = 2, active = 0, running = 0, steals = 33, tasks = 0, submissions = 0]
 
 // Initialize a transaction builder
 val builder = RawTxBuilder()
@@ -74,19 +74,19 @@
 val privKey = ECPrivateKey.freshPrivateKey
 // privKey: ECPrivateKey = Masked(ECPrivateKeyImpl)
 val pubKey = privKey.publicKey
-// pubKey: ECPublicKey = ECPublicKey(03fac23c9955469e619455287bbc87b0f64114281ba2aa6888e71acf0431bda51e)
+// pubKey: ECPublicKey = ECPublicKey(0368327aa150fe438d3292c0dd637006648d99c9b1fa11c81447c93e2efa911787)
 
 // this is the script that the TxBuilder is going to create a
 // script signature that validly spends this scriptPubKey
 val creditingSpk = P2PKHScriptPubKey(pubKey = privKey.publicKey)
-// creditingSpk: P2PKHScriptPubKey = pkh(173d7cabc17c18c1c5ffc5f87c8160739097d59b)
+// creditingSpk: P2PKHScriptPubKey = pkh(9bdf4d39596bd85e5b58ce4b02462a30b3379bc0)
 val amount = 10000.satoshis
 // amount: Satoshis = 10000 sats
 
 // this is the UTXO we are going to be spending
 val utxo =
   TransactionOutput(value = amount, scriptPubKey = creditingSpk)
-// utxo: TransactionOutput = TransactionOutput(10000 sats,pkh(173d7cabc17c18c1c5ffc5f87c8160739097d59b))
+// utxo: TransactionOutput = TransactionOutput(10000 sats,pkh(9bdf4d39596bd85e5b58ce4b02462a30b3379bc0))
 
 // the private key that locks the funds for the script we are spending too
 val destinationPrivKey = ECPrivateKey.freshPrivateKey
@@ -99,7 +99,7 @@
 // the script that corresponds to destination private key, this is what is receiving the money
 val destinationSPK =
   P2PKHScriptPubKey(pubKey = destinationPrivKey.publicKey)
-// destinationSPK: P2PKHScriptPubKey = pkh(566f958c07b03c4126408b5d4f969c507f8072c1)
+// destinationSPK: P2PKHScriptPubKey = pkh(b307380f01e31000b875c0adf6846beb8151e9a5)
 
 // this is where we are sending money too
 // we could add more destinations here if we
@@ -110,7 +110,7 @@
 
     Vector(destination0)
 }
-// destinations: Vector[TransactionOutput] = Vector(TransactionOutput(5000 sats,pkh(566f958c07b03c4126408b5d4f969c507f8072c1)))
+// destinations: Vector[TransactionOutput] = Vector(TransactionOutput(5000 sats,pkh(b307380f01e31000b875c0adf6846beb8151e9a5)))
 
 // Add the destinations to the tx builder
 builder ++= destinations
@@ -123,17 +123,17 @@ builder ++= destinations
                                   inputs = Vector.empty,
                                   outputs = Vector(utxo),
                                   lockTime = UInt32.zero)
-// creditingTx: BaseTransaction = BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(173d7cabc17c18c1c5ffc5f87c8160739097d59b))),UInt32Impl(0))
+// creditingTx: BaseTransaction = BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(9bdf4d39596bd85e5b58ce4b02462a30b3379bc0))),UInt32Impl(0))
 
 // this is the information we need from the crediting TX
 // to properly "link" it in the transaction we are creating
 val outPoint = TransactionOutPoint(creditingTx.txId, UInt32.zero)
-// outPoint: TransactionOutPoint = TransactionOutPoint(b0371b3cedce2ec442dbadd45356219f844200b2b3976bd848f4a09caafc5b2b:0)
+// outPoint: TransactionOutPoint = TransactionOutPoint(56ec874017daa6ee1956f754f90c5f8cbef9597d4a86e562bfcc1168fcf7e53f:0)
 val input = TransactionInput(
     outPoint,
     EmptyScriptSignature,
     sequenceNumber = UInt32.zero)
-// input: TransactionInput = TransactionInputImpl(TransactionOutPoint(b0371b3cedce2ec442dbadd45356219f844200b2b3976bd848f4a09caafc5b2b:0),EmptyScriptSignature,UInt32Impl(0))
+// input: TransactionInput = TransactionInputImpl(TransactionOutPoint(56ec874017daa6ee1956f754f90c5f8cbef9597d4a86e562bfcc1168fcf7e53f:0),EmptyScriptSignature,UInt32Impl(0))
 
 // Add a new input to our builder
 builder += input
@@ -141,11 +141,11 @@ builder += input
 
 // We can now generate a RawTxBuilderResult ready to be finalized
 val builderResult = builder.result()
-// builderResult: RawTxBuilderResult = RawTxBuilderResult(Int32Impl(2),Vector(TransactionInputImpl(TransactionOutPoint(b0371b3cedce2ec442dbadd45356219f844200b2b3976bd848f4a09caafc5b2b:0),EmptyScriptSignature,UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(566f958c07b03c4126408b5d4f969c507f8072c1))),UInt32Impl(0))
+// builderResult: RawTxBuilderResult = RawTxBuilderResult(Int32Impl(2),Vector(TransactionInputImpl(TransactionOutPoint(56ec874017daa6ee1956f754f90c5f8cbef9597d4a86e562bfcc1168fcf7e53f:0),EmptyScriptSignature,UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(b307380f01e31000b875c0adf6846beb8151e9a5))),UInt32Impl(0))
 
 // this contains the information needed to analyze our input during finalization
 val inputInfo = P2PKHInputInfo(outPoint, amount, privKey.publicKey)
-// inputInfo: P2PKHInputInfo = P2PKHInputInfo(TransactionOutPoint(b0371b3cedce2ec442dbadd45356219f844200b2b3976bd848f4a09caafc5b2b:0),10000 sats,ECPublicKey(03fac23c9955469e619455287bbc87b0f64114281ba2aa6888e71acf0431bda51e))
+// inputInfo: P2PKHInputInfo = P2PKHInputInfo(TransactionOutPoint(56ec874017daa6ee1956f754f90c5f8cbef9597d4a86e562bfcc1168fcf7e53f:0),10000 sats,ECPublicKey(0368327aa150fe438d3292c0dd637006648d99c9b1fa11c81447c93e2efa911787))
 
 // this is how much we are going to pay as a fee to the network
 // for this example, we are going to pay 1 satoshi per byte
@@ -155,18 +155,18 @@ builder += input
 val changePrivKey = ECPrivateKey.freshPrivateKey
 // changePrivKey: ECPrivateKey = Masked(ECPrivateKeyImpl)
 val changeSPK = P2PKHScriptPubKey(pubKey = changePrivKey.publicKey)
-// changeSPK: P2PKHScriptPubKey = pkh(03d35af5dbf5549f433a3a13de9c73bb8c4223bf)
+// changeSPK: P2PKHScriptPubKey = pkh(12f8b139b909ffe219866f40fe5080d307e5928b)
 
 // We chose a finalizer that adds a change output to our tx based on a fee rate
 val finalizer = StandardNonInteractiveFinalizer(
     Vector(inputInfo),
     feeRate,
     changeSPK)
-// finalizer: StandardNonInteractiveFinalizer = StandardNonInteractiveFinalizer(Vector(P2PKHInputInfo(TransactionOutPoint(b0371b3cedce2ec442dbadd45356219f844200b2b3976bd848f4a09caafc5b2b:0),10000 sats,ECPublicKey(03fac23c9955469e619455287bbc87b0f64114281ba2aa6888e71acf0431bda51e))),1 sats/byte,pkh(03d35af5dbf5549f433a3a13de9c73bb8c4223bf))
+// finalizer: StandardNonInteractiveFinalizer = StandardNonInteractiveFinalizer(Vector(P2PKHInputInfo(TransactionOutPoint(56ec874017daa6ee1956f754f90c5f8cbef9597d4a86e562bfcc1168fcf7e53f:0),10000 sats,ECPublicKey(0368327aa150fe438d3292c0dd637006648d99c9b1fa11c81447c93e2efa911787))),1 sats/byte,pkh(12f8b139b909ffe219866f40fe5080d307e5928b))
 
 // We can now finalize the tx builder result from earlier with this finalizer
 val unsignedTxF: Future[Transaction] = finalizer.buildTx(builderResult)
-// unsignedTxF: Future[Transaction] = Future(Success(BaseTransaction(Int32Impl(2),Vector(TransactionInputImpl(TransactionOutPoint(b0371b3cedce2ec442dbadd45356219f844200b2b3976bd848f4a09caafc5b2b:0),EmptyScriptSignature,UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(566f958c07b03c4126408b5d4f969c507f8072c1)), TransactionOutput(4775 sats,pkh(03d35af5dbf5549f433a3a13de9c73bb8c4223bf))),UInt32Impl(0))))
+// unsignedTxF: Future[Transaction] = Future(Success(BaseTransaction(Int32Impl(2),Vector(TransactionInputImpl(TransactionOutPoint(56ec874017daa6ee1956f754f90c5f8cbef9597d4a86e562bfcc1168fcf7e53f:0),EmptyScriptSignature,UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(b307380f01e31000b875c0adf6846beb8151e9a5)), TransactionOutput(4775 sats,pkh(12f8b139b909ffe219866f40fe5080d307e5928b))),UInt32Impl(0))))
 
 // We now turn to signing the unsigned transaction
 // this contains all the information we need to
@@ -176,12 +176,12 @@ builder += input
                                      signers = Vector(privKey),
                                      hashType =
                                          HashType.sigHashAll)
-// utxoInfo: ScriptSignatureParams[P2PKHInputInfo] = ScriptSignatureParams(P2PKHInputInfo(TransactionOutPoint(b0371b3cedce2ec442dbadd45356219f844200b2b3976bd848f4a09caafc5b2b:0),10000 sats,ECPublicKey(03fac23c9955469e619455287bbc87b0f64114281ba2aa6888e71acf0431bda51e)),BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(173d7cabc17c18c1c5ffc5f87c8160739097d59b))),UInt32Impl(0)),Vector(Masked(ECPrivateKeyImpl)),SIGHASH_ALL(Int32Impl(1)))
+// utxoInfo: ScriptSignatureParams[P2PKHInputInfo] = ScriptSignatureParams(P2PKHInputInfo(TransactionOutPoint(56ec874017daa6ee1956f754f90c5f8cbef9597d4a86e562bfcc1168fcf7e53f:0),10000 sats,ECPublicKey(0368327aa150fe438d3292c0dd637006648d99c9b1fa11c81447c93e2efa911787)),BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(9bdf4d39596bd85e5b58ce4b02462a30b3379bc0))),UInt32Impl(0)),Vector(Masked(ECPrivateKeyImpl)),SIGHASH_ALL(Int32Impl(1)))
 
 // all of the UTXO spending information, since we only have
 // one input, this is just one element
 val utxoInfos: Vector[ScriptSignatureParams[InputInfo]] = Vector(utxoInfo)
-// utxoInfos: Vector[ScriptSignatureParams[InputInfo]] = Vector(ScriptSignatureParams(P2PKHInputInfo(TransactionOutPoint(b0371b3cedce2ec442dbadd45356219f844200b2b3976bd848f4a09caafc5b2b:0),10000 sats,ECPublicKey(03fac23c9955469e619455287bbc87b0f64114281ba2aa6888e71acf0431bda51e)),BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(173d7cabc17c18c1c5ffc5f87c8160739097d59b))),UInt32Impl(0)),Vector(Masked(ECPrivateKeyImpl)),SIGHASH_ALL(Int32Impl(1))))
+// utxoInfos: Vector[ScriptSignatureParams[InputInfo]] = Vector(ScriptSignatureParams(P2PKHInputInfo(TransactionOutPoint(56ec874017daa6ee1956f754f90c5f8cbef9597d4a86e562bfcc1168fcf7e53f:0),10000 sats,ECPublicKey(0368327aa150fe438d3292c0dd637006648d99c9b1fa11c81447c93e2efa911787)),BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(9bdf4d39596bd85e5b58ce4b02462a30b3379bc0))),UInt32Impl(0)),Vector(Masked(ECPrivateKeyImpl)),SIGHASH_ALL(Int32Impl(1))))
 
 // Yay! Now we use the RawTxSigner object to sign the tx.
 // The 'sign' method is going produce a validly signed transaction
@@ -201,7 +201,7 @@ builder += input
   }
   Await.result(signedTxF, 30.seconds)
 }
-// signedTx: Transaction = BaseTransaction(Int32Impl(2),Vector(TransactionInputImpl(TransactionOutPoint(b0371b3cedce2ec442dbadd45356219f844200b2b3976bd848f4a09caafc5b2b:0),P2PKHScriptSignature(ECPublicKey(03fac23c9955469e619455287bbc87b0f64114281ba2aa6888e71acf0431bda51e), ECDigitalSignature(3044022071e9e879ed71c1a9bc5c2c5a42e3cb511873961846d070693dddd10eea4c02f502202da80ebbc235cbe4c148dabdb811a0f508147db16bf2bf0e09b71dba9dfc399201)),UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(566f958c07b03c4126408b5d4f969c507f8072c1)), TransactionOutput(4775 sats,pkh(03d35af5dbf5549f433a3a13de9c73bb8c4223bf))),UInt32Impl(0))
+// signedTx: Transaction = BaseTransaction(Int32Impl(2),Vector(TransactionInputImpl(TransactionOutPoint(56ec874017daa6ee1956f754f90c5f8cbef9597d4a86e562bfcc1168fcf7e53f:0),P2PKHScriptSignature(ECPublicKey(0368327aa150fe438d3292c0dd637006648d99c9b1fa11c81447c93e2efa911787), ECDigitalSignature(3044022067254297396cb5e8c37ee8b09c25a04c137d1bdccd51237d580298dc2f9bc71602207ecb7c3b6f96bd9397acab1c50951910549f8285581def08b7db0feeebdc867f01)),UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(b307380f01e31000b875c0adf6846beb8151e9a5)), TransactionOutput(4775 sats,pkh(12f8b139b909ffe219866f40fe5080d307e5928b))),UInt32Impl(0))
 
signedTx.inputs.length
 // res2: Int = 1
@@ -211,7 +211,7 @@ signedTx.outputs.length
 
 //remember, you can call .hex on any bitcoin-s data structure to get the hex representation!
 signedTx.hex
-// res4: String = 02000000012b5bfcaa9ca0f448d86b97b3b20042849f215653d4addb42c42eceed3c1b37b0000000006a473044022071e9e879ed71c1a9bc5c2c5a42e3cb511873961846d070693dddd10eea4c02f502202da80ebbc235cbe4c148dabdb811a0f508147db16bf2bf0e09b71dba9dfc3992012103fac23c9955469e619455287bbc87b0f64114281ba2aa6888e71acf0431bda51e000000000288130000000000001976a914566f958c07b03c4126408b5d4f969c507f8072c188aca7120000000000001976a91403d35af5dbf5549f433a3a13de9c73bb8c4223bf88ac00000000
+// res4: String = 02000000013fe5f7fc6811ccbf62e5864a7d59f9be8c5f0cf954f75619eea6da174087ec56000000006a473044022067254297396cb5e8c37ee8b09c25a04c137d1bdccd51237d580298dc2f9bc71602207ecb7c3b6f96bd9397acab1c50951910549f8285581def08b7db0feeebdc867f01210368327aa150fe438d3292c0dd637006648d99c9b1fa11c81447c93e2efa911787000000000288130000000000001976a914b307380f01e31000b875c0adf6846beb8151e9a588aca7120000000000001976a91412f8b139b909ffe219866f40fe5080d307e5928b88ac00000000
 
Edit

TxBuilder Example

Bitcoin-S features a transaction building API that allows you to construct and sign Bitcoin transactions. Here's an example of how to use it

implicit val ec: ExecutionContext = ExecutionContext.Implicits.global
-// ec: ExecutionContext = scala.concurrent.impl.ExecutionContextImpl$$anon$3@1af57bfc[Running, parallelism = 2, size = 2, active = 0, running = 0, steals = 33, tasks = 0, submissions = 0]
+// ec: ExecutionContext = scala.concurrent.impl.ExecutionContextImpl$$anon$3@dadfdc0[Running, parallelism = 2, size = 2, active = 0, running = 0, steals = 33, tasks = 0, submissions = 0]
 
 // Initialize a transaction builder
 val builder = RawTxBuilder()
@@ -74,19 +74,19 @@
 val privKey = ECPrivateKey.freshPrivateKey
 // privKey: ECPrivateKey = Masked(ECPrivateKeyImpl)
 val pubKey = privKey.publicKey
-// pubKey: ECPublicKey = ECPublicKey(03fac23c9955469e619455287bbc87b0f64114281ba2aa6888e71acf0431bda51e)
+// pubKey: ECPublicKey = ECPublicKey(0368327aa150fe438d3292c0dd637006648d99c9b1fa11c81447c93e2efa911787)
 
 // this is the script that the TxBuilder is going to create a
 // script signature that validly spends this scriptPubKey
 val creditingSpk = P2PKHScriptPubKey(pubKey = privKey.publicKey)
-// creditingSpk: P2PKHScriptPubKey = pkh(173d7cabc17c18c1c5ffc5f87c8160739097d59b)
+// creditingSpk: P2PKHScriptPubKey = pkh(9bdf4d39596bd85e5b58ce4b02462a30b3379bc0)
 val amount = 10000.satoshis
 // amount: Satoshis = 10000 sats
 
 // this is the UTXO we are going to be spending
 val utxo =
   TransactionOutput(value = amount, scriptPubKey = creditingSpk)
-// utxo: TransactionOutput = TransactionOutput(10000 sats,pkh(173d7cabc17c18c1c5ffc5f87c8160739097d59b))
+// utxo: TransactionOutput = TransactionOutput(10000 sats,pkh(9bdf4d39596bd85e5b58ce4b02462a30b3379bc0))
 
 // the private key that locks the funds for the script we are spending too
 val destinationPrivKey = ECPrivateKey.freshPrivateKey
@@ -99,7 +99,7 @@
 // the script that corresponds to destination private key, this is what is receiving the money
 val destinationSPK =
   P2PKHScriptPubKey(pubKey = destinationPrivKey.publicKey)
-// destinationSPK: P2PKHScriptPubKey = pkh(566f958c07b03c4126408b5d4f969c507f8072c1)
+// destinationSPK: P2PKHScriptPubKey = pkh(b307380f01e31000b875c0adf6846beb8151e9a5)
 
 // this is where we are sending money too
 // we could add more destinations here if we
@@ -110,7 +110,7 @@
 
     Vector(destination0)
 }
-// destinations: Vector[TransactionOutput] = Vector(TransactionOutput(5000 sats,pkh(566f958c07b03c4126408b5d4f969c507f8072c1)))
+// destinations: Vector[TransactionOutput] = Vector(TransactionOutput(5000 sats,pkh(b307380f01e31000b875c0adf6846beb8151e9a5)))
 
 // Add the destinations to the tx builder
 builder ++= destinations
@@ -123,17 +123,17 @@ builder ++= destinations
                                   inputs = Vector.empty,
                                   outputs = Vector(utxo),
                                   lockTime = UInt32.zero)
-// creditingTx: BaseTransaction = BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(173d7cabc17c18c1c5ffc5f87c8160739097d59b))),UInt32Impl(0))
+// creditingTx: BaseTransaction = BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(9bdf4d39596bd85e5b58ce4b02462a30b3379bc0))),UInt32Impl(0))
 
 // this is the information we need from the crediting TX
 // to properly "link" it in the transaction we are creating
 val outPoint = TransactionOutPoint(creditingTx.txId, UInt32.zero)
-// outPoint: TransactionOutPoint = TransactionOutPoint(b0371b3cedce2ec442dbadd45356219f844200b2b3976bd848f4a09caafc5b2b:0)
+// outPoint: TransactionOutPoint = TransactionOutPoint(56ec874017daa6ee1956f754f90c5f8cbef9597d4a86e562bfcc1168fcf7e53f:0)
 val input = TransactionInput(
     outPoint,
     EmptyScriptSignature,
     sequenceNumber = UInt32.zero)
-// input: TransactionInput = TransactionInputImpl(TransactionOutPoint(b0371b3cedce2ec442dbadd45356219f844200b2b3976bd848f4a09caafc5b2b:0),EmptyScriptSignature,UInt32Impl(0))
+// input: TransactionInput = TransactionInputImpl(TransactionOutPoint(56ec874017daa6ee1956f754f90c5f8cbef9597d4a86e562bfcc1168fcf7e53f:0),EmptyScriptSignature,UInt32Impl(0))
 
 // Add a new input to our builder
 builder += input
@@ -141,11 +141,11 @@ builder += input
 
 // We can now generate a RawTxBuilderResult ready to be finalized
 val builderResult = builder.result()
-// builderResult: RawTxBuilderResult = RawTxBuilderResult(Int32Impl(2),Vector(TransactionInputImpl(TransactionOutPoint(b0371b3cedce2ec442dbadd45356219f844200b2b3976bd848f4a09caafc5b2b:0),EmptyScriptSignature,UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(566f958c07b03c4126408b5d4f969c507f8072c1))),UInt32Impl(0))
+// builderResult: RawTxBuilderResult = RawTxBuilderResult(Int32Impl(2),Vector(TransactionInputImpl(TransactionOutPoint(56ec874017daa6ee1956f754f90c5f8cbef9597d4a86e562bfcc1168fcf7e53f:0),EmptyScriptSignature,UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(b307380f01e31000b875c0adf6846beb8151e9a5))),UInt32Impl(0))
 
 // this contains the information needed to analyze our input during finalization
 val inputInfo = P2PKHInputInfo(outPoint, amount, privKey.publicKey)
-// inputInfo: P2PKHInputInfo = P2PKHInputInfo(TransactionOutPoint(b0371b3cedce2ec442dbadd45356219f844200b2b3976bd848f4a09caafc5b2b:0),10000 sats,ECPublicKey(03fac23c9955469e619455287bbc87b0f64114281ba2aa6888e71acf0431bda51e))
+// inputInfo: P2PKHInputInfo = P2PKHInputInfo(TransactionOutPoint(56ec874017daa6ee1956f754f90c5f8cbef9597d4a86e562bfcc1168fcf7e53f:0),10000 sats,ECPublicKey(0368327aa150fe438d3292c0dd637006648d99c9b1fa11c81447c93e2efa911787))
 
 // this is how much we are going to pay as a fee to the network
 // for this example, we are going to pay 1 satoshi per byte
@@ -155,18 +155,18 @@ builder += input
 val changePrivKey = ECPrivateKey.freshPrivateKey
 // changePrivKey: ECPrivateKey = Masked(ECPrivateKeyImpl)
 val changeSPK = P2PKHScriptPubKey(pubKey = changePrivKey.publicKey)
-// changeSPK: P2PKHScriptPubKey = pkh(03d35af5dbf5549f433a3a13de9c73bb8c4223bf)
+// changeSPK: P2PKHScriptPubKey = pkh(12f8b139b909ffe219866f40fe5080d307e5928b)
 
 // We chose a finalizer that adds a change output to our tx based on a fee rate
 val finalizer = StandardNonInteractiveFinalizer(
     Vector(inputInfo),
     feeRate,
     changeSPK)
-// finalizer: StandardNonInteractiveFinalizer = StandardNonInteractiveFinalizer(Vector(P2PKHInputInfo(TransactionOutPoint(b0371b3cedce2ec442dbadd45356219f844200b2b3976bd848f4a09caafc5b2b:0),10000 sats,ECPublicKey(03fac23c9955469e619455287bbc87b0f64114281ba2aa6888e71acf0431bda51e))),1 sats/byte,pkh(03d35af5dbf5549f433a3a13de9c73bb8c4223bf))
+// finalizer: StandardNonInteractiveFinalizer = StandardNonInteractiveFinalizer(Vector(P2PKHInputInfo(TransactionOutPoint(56ec874017daa6ee1956f754f90c5f8cbef9597d4a86e562bfcc1168fcf7e53f:0),10000 sats,ECPublicKey(0368327aa150fe438d3292c0dd637006648d99c9b1fa11c81447c93e2efa911787))),1 sats/byte,pkh(12f8b139b909ffe219866f40fe5080d307e5928b))
 
 // We can now finalize the tx builder result from earlier with this finalizer
 val unsignedTxF: Future[Transaction] = finalizer.buildTx(builderResult)
-// unsignedTxF: Future[Transaction] = Future(Success(BaseTransaction(Int32Impl(2),Vector(TransactionInputImpl(TransactionOutPoint(b0371b3cedce2ec442dbadd45356219f844200b2b3976bd848f4a09caafc5b2b:0),EmptyScriptSignature,UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(566f958c07b03c4126408b5d4f969c507f8072c1)), TransactionOutput(4775 sats,pkh(03d35af5dbf5549f433a3a13de9c73bb8c4223bf))),UInt32Impl(0))))
+// unsignedTxF: Future[Transaction] = Future(Success(BaseTransaction(Int32Impl(2),Vector(TransactionInputImpl(TransactionOutPoint(56ec874017daa6ee1956f754f90c5f8cbef9597d4a86e562bfcc1168fcf7e53f:0),EmptyScriptSignature,UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(b307380f01e31000b875c0adf6846beb8151e9a5)), TransactionOutput(4775 sats,pkh(12f8b139b909ffe219866f40fe5080d307e5928b))),UInt32Impl(0))))
 
 // We now turn to signing the unsigned transaction
 // this contains all the information we need to
@@ -176,12 +176,12 @@ builder += input
                                      signers = Vector(privKey),
                                      hashType =
                                          HashType.sigHashAll)
-// utxoInfo: ScriptSignatureParams[P2PKHInputInfo] = ScriptSignatureParams(P2PKHInputInfo(TransactionOutPoint(b0371b3cedce2ec442dbadd45356219f844200b2b3976bd848f4a09caafc5b2b:0),10000 sats,ECPublicKey(03fac23c9955469e619455287bbc87b0f64114281ba2aa6888e71acf0431bda51e)),BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(173d7cabc17c18c1c5ffc5f87c8160739097d59b))),UInt32Impl(0)),Vector(Masked(ECPrivateKeyImpl)),SIGHASH_ALL(Int32Impl(1)))
+// utxoInfo: ScriptSignatureParams[P2PKHInputInfo] = ScriptSignatureParams(P2PKHInputInfo(TransactionOutPoint(56ec874017daa6ee1956f754f90c5f8cbef9597d4a86e562bfcc1168fcf7e53f:0),10000 sats,ECPublicKey(0368327aa150fe438d3292c0dd637006648d99c9b1fa11c81447c93e2efa911787)),BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(9bdf4d39596bd85e5b58ce4b02462a30b3379bc0))),UInt32Impl(0)),Vector(Masked(ECPrivateKeyImpl)),SIGHASH_ALL(Int32Impl(1)))
 
 // all of the UTXO spending information, since we only have
 // one input, this is just one element
 val utxoInfos: Vector[ScriptSignatureParams[InputInfo]] = Vector(utxoInfo)
-// utxoInfos: Vector[ScriptSignatureParams[InputInfo]] = Vector(ScriptSignatureParams(P2PKHInputInfo(TransactionOutPoint(b0371b3cedce2ec442dbadd45356219f844200b2b3976bd848f4a09caafc5b2b:0),10000 sats,ECPublicKey(03fac23c9955469e619455287bbc87b0f64114281ba2aa6888e71acf0431bda51e)),BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(173d7cabc17c18c1c5ffc5f87c8160739097d59b))),UInt32Impl(0)),Vector(Masked(ECPrivateKeyImpl)),SIGHASH_ALL(Int32Impl(1))))
+// utxoInfos: Vector[ScriptSignatureParams[InputInfo]] = Vector(ScriptSignatureParams(P2PKHInputInfo(TransactionOutPoint(56ec874017daa6ee1956f754f90c5f8cbef9597d4a86e562bfcc1168fcf7e53f:0),10000 sats,ECPublicKey(0368327aa150fe438d3292c0dd637006648d99c9b1fa11c81447c93e2efa911787)),BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(9bdf4d39596bd85e5b58ce4b02462a30b3379bc0))),UInt32Impl(0)),Vector(Masked(ECPrivateKeyImpl)),SIGHASH_ALL(Int32Impl(1))))
 
 // Yay! Now we use the RawTxSigner object to sign the tx.
 // The 'sign' method is going produce a validly signed transaction
@@ -201,7 +201,7 @@ builder += input
   }
   Await.result(signedTxF, 30.seconds)
 }
-// signedTx: Transaction = BaseTransaction(Int32Impl(2),Vector(TransactionInputImpl(TransactionOutPoint(b0371b3cedce2ec442dbadd45356219f844200b2b3976bd848f4a09caafc5b2b:0),P2PKHScriptSignature(ECPublicKey(03fac23c9955469e619455287bbc87b0f64114281ba2aa6888e71acf0431bda51e), ECDigitalSignature(3044022071e9e879ed71c1a9bc5c2c5a42e3cb511873961846d070693dddd10eea4c02f502202da80ebbc235cbe4c148dabdb811a0f508147db16bf2bf0e09b71dba9dfc399201)),UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(566f958c07b03c4126408b5d4f969c507f8072c1)), TransactionOutput(4775 sats,pkh(03d35af5dbf5549f433a3a13de9c73bb8c4223bf))),UInt32Impl(0))
+// signedTx: Transaction = BaseTransaction(Int32Impl(2),Vector(TransactionInputImpl(TransactionOutPoint(56ec874017daa6ee1956f754f90c5f8cbef9597d4a86e562bfcc1168fcf7e53f:0),P2PKHScriptSignature(ECPublicKey(0368327aa150fe438d3292c0dd637006648d99c9b1fa11c81447c93e2efa911787), ECDigitalSignature(3044022067254297396cb5e8c37ee8b09c25a04c137d1bdccd51237d580298dc2f9bc71602207ecb7c3b6f96bd9397acab1c50951910549f8285581def08b7db0feeebdc867f01)),UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(b307380f01e31000b875c0adf6846beb8151e9a5)), TransactionOutput(4775 sats,pkh(12f8b139b909ffe219866f40fe5080d307e5928b))),UInt32Impl(0))
 
signedTx.inputs.length
 // res2: Int = 1
@@ -211,7 +211,7 @@ signedTx.outputs.length
 
 //remember, you can call .hex on any bitcoin-s data structure to get the hex representation!
 signedTx.hex
-// res4: String = 02000000012b5bfcaa9ca0f448d86b97b3b20042849f215653d4addb42c42eceed3c1b37b0000000006a473044022071e9e879ed71c1a9bc5c2c5a42e3cb511873961846d070693dddd10eea4c02f502202da80ebbc235cbe4c148dabdb811a0f508147db16bf2bf0e09b71dba9dfc3992012103fac23c9955469e619455287bbc87b0f64114281ba2aa6888e71acf0431bda51e000000000288130000000000001976a914566f958c07b03c4126408b5d4f969c507f8072c188aca7120000000000001976a91403d35af5dbf5549f433a3a13de9c73bb8c4223bf88ac00000000
+// res4: String = 02000000013fe5f7fc6811ccbf62e5864a7d59f9be8c5f0cf954f75619eea6da174087ec56000000006a473044022067254297396cb5e8c37ee8b09c25a04c137d1bdccd51237d580298dc2f9bc71602207ecb7c3b6f96bd9397acab1c50951910549f8285581def08b7db0feeebdc867f01210368327aa150fe438d3292c0dd637006648d99c9b1fa11c81447c93e2efa911787000000000288130000000000001976a914b307380f01e31000b875c0adf6846beb8151e9a588aca7120000000000001976a91412f8b139b909ffe219866f40fe5080d307e5928b88ac00000000