From 43541e04d3aca09faf8bb5c1331b62e98ad2e20e Mon Sep 17 00:00:00 2001 From: Docusaurus bot Date: Tue, 29 Dec 2020 21:22:55 +0000 Subject: [PATCH] Deploy website Deploy website version based on 4e862b7297668272933101d73b6867dd211ea026 --- 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/fee-provider/fee-provider.html | 2 +- .../next/fee-provider/fee-provider/index.html | 2 +- docs/next/getting-started.html | 2 +- docs/next/getting-started/index.html | 2 +- docs/next/key-manager/key-manager.html | 24 +++--- docs/next/key-manager/key-manager/index.html | 24 +++--- ...key-manager title: Server Key Manager.html | 81 +++++++++++++++++++ .../index.html | 81 +++++++++++++++++++ docs/next/node/node.html | 3 + docs/next/node/node/index.html | 3 + docs/next/secp256k1/secp256k1.html | 4 +- docs/next/secp256k1/secp256k1/index.html | 4 +- docs/next/wallet/wallet.html | 2 +- docs/next/wallet/wallet/index.html | 2 +- sitemap.xml | 2 +- 23 files changed, 265 insertions(+), 97 deletions(-) create mode 100644 docs/next/key-manager/server-key-manager title: Server Key Manager.html create mode 100644 docs/next/key-manager/server-key-manager title: Server Key Manager/index.html diff --git a/docs/next/core/addresses.html b/docs/next/core/addresses.html index 59e0fb20e2..01c0c3850c 100644 --- a/docs/next/core/addresses.html +++ b/docs/next/core/addresses.html @@ -80,7 +80,7 @@ reason to keep using legacy transaction formats.

val privkey = ECPrivateKey() // privkey: ECPrivateKey = Masked(ECPrivateKeyImpl) val pubkey = privkey.publicKey -// pubkey: org.bitcoins.crypto.ECPublicKey = ECPublicKey(03be4b2391480088f2357ef674fa895c16918184db4422b83ae9c253e687d9a8ae) +// pubkey: org.bitcoins.crypto.ECPublicKey = ECPublicKey(02625e0916de24f5b1eec4e50e23cb6aad62179db6a1b42e1b7363c16d3344f352) val segwitAddress = { // see https://bitcoin.org/en/glossary/pubkey-script @@ -89,10 +89,10 @@ reason to keep using legacy transaction formats.

val scriptPubKey = P2WPKHWitnessSPKV0(pubkey) Bech32Address(scriptPubKey, TestNet3) } -// segwitAddress: Bech32Address = tb1quyygm352uwtjq3j2k3cvak34vydv6e39uxjn3n +// segwitAddress: Bech32Address = tb1qdw9wr8lehjfn2uu9rr4cc2e06rpphrvr6eehll println(segwitAddress.toString) -// tb1quyygm352uwtjq3j2k3cvak34vydv6e39uxjn3n +// tb1qdw9wr8lehjfn2uu9rr4cc2e06rpphrvr6eehll

Generating legacy (base58) addresses

If you need to generate legacy addresses for backwards @@ -101,10 +101,10 @@ Take a look:

// we're reusing the same private/public key pair
 // from before. don't do this in an actual application!
 val legacyAddress = P2PKHAddress(pubkey, TestNet3)
-// legacyAddress: P2PKHAddress = n22paYZpozvtjdFZfSkgqFraiaBtuvgsK7
+// legacyAddress: P2PKHAddress = mqKayE1LYutHPFNCXHAZPHt7KHmQS6CyMY
 
 println(legacyAddress.toString)
-// n22paYZpozvtjdFZfSkgqFraiaBtuvgsK7
+// mqKayE1LYutHPFNCXHAZPHt7KHmQS6CyMY
 
Core ModuleHD Key Generation
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@3fcd0a8c[Running, parallelism = 2, size = 2, active = 0, running = 0, steals = 33, tasks = 0, submissions = 0]
+// ec: ExecutionContext = scala.concurrent.impl.ExecutionContextImpl$$anon$3@13a6357c[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(032c9f596867fba33a0a4bc0b74e701dea5c678740ed3b0a9b3e33bf025743ffdf)
+// pubKey: ECPublicKey = ECPublicKey(02af3e17f2fd73718b63bcbcc740e4f3dffb5731e64d4fccf10043c37ce0ee0073)
 
 // 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(519528d184c6466cd6c4d62d1d7eceff9dfc4163)
+// creditingSpk: P2PKHScriptPubKey = pkh(ac1aade05633d5bf25b7f2a68db4518a4c44d0c7)
 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(519528d184c6466cd6c4d62d1d7eceff9dfc4163))
+// utxo: TransactionOutput = TransactionOutput(10000 sats,pkh(ac1aade05633d5bf25b7f2a68db4518a4c44d0c7))
 
 // 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(a7c9351e1dbd6f90ed9f035216d6e48f85b5fa26)
+// destinationSPK: P2PKHScriptPubKey = pkh(3004a2ba707c15ec9188f18d973bed8a7ef27bc0)
 
 // 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(a7c9351e1dbd6f90ed9f035216d6e48f85b5fa26)))
+// destinations: Vector[TransactionOutput] = Vector(TransactionOutput(5000 sats,pkh(3004a2ba707c15ec9188f18d973bed8a7ef27bc0)))
 
 // 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(519528d184c6466cd6c4d62d1d7eceff9dfc4163))),UInt32Impl(0))
+// creditingTx: BaseTransaction = BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(ac1aade05633d5bf25b7f2a68db4518a4c44d0c7))),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(61b34cfce2645aa18dc83bb54fa53da5a11754b0197afa1bbc21b9ff7b807174:0)
+// outPoint: TransactionOutPoint = TransactionOutPoint(aec8528b5808ef3b87974cda7c3f20f1df9edd7b3fe6681ee637b97698202af6:0)
 val input = TransactionInput(
     outPoint,
     EmptyScriptSignature,
     sequenceNumber = UInt32.zero)
-// input: TransactionInput = TransactionInputImpl(TransactionOutPoint(61b34cfce2645aa18dc83bb54fa53da5a11754b0197afa1bbc21b9ff7b807174:0),EmptyScriptSignature,UInt32Impl(0))
+// input: TransactionInput = TransactionInputImpl(TransactionOutPoint(aec8528b5808ef3b87974cda7c3f20f1df9edd7b3fe6681ee637b97698202af6: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(61b34cfce2645aa18dc83bb54fa53da5a11754b0197afa1bbc21b9ff7b807174:0),EmptyScriptSignature,UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(a7c9351e1dbd6f90ed9f035216d6e48f85b5fa26))),UInt32Impl(0))
+// builderResult: RawTxBuilderResult = RawTxBuilderResult(Int32Impl(2),Vector(TransactionInputImpl(TransactionOutPoint(aec8528b5808ef3b87974cda7c3f20f1df9edd7b3fe6681ee637b97698202af6:0),EmptyScriptSignature,UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(3004a2ba707c15ec9188f18d973bed8a7ef27bc0))),UInt32Impl(0))
 
 // this contains the information needed to analyze our input during finalization
 val inputInfo = P2PKHInputInfo(outPoint, amount, privKey.publicKey)
-// inputInfo: P2PKHInputInfo = P2PKHInputInfo(TransactionOutPoint(61b34cfce2645aa18dc83bb54fa53da5a11754b0197afa1bbc21b9ff7b807174:0),10000 sats,ECPublicKey(032c9f596867fba33a0a4bc0b74e701dea5c678740ed3b0a9b3e33bf025743ffdf))
+// inputInfo: P2PKHInputInfo = P2PKHInputInfo(TransactionOutPoint(aec8528b5808ef3b87974cda7c3f20f1df9edd7b3fe6681ee637b97698202af6:0),10000 sats,ECPublicKey(02af3e17f2fd73718b63bcbcc740e4f3dffb5731e64d4fccf10043c37ce0ee0073))
 
 // 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(65cbac3f9e8bebff88860097cda85603ac90506e)
+// changeSPK: P2PKHScriptPubKey = pkh(cbb9f7f4438f80ee9560287200db6be1bd041a0e)
 
 // 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(61b34cfce2645aa18dc83bb54fa53da5a11754b0197afa1bbc21b9ff7b807174:0),10000 sats,ECPublicKey(032c9f596867fba33a0a4bc0b74e701dea5c678740ed3b0a9b3e33bf025743ffdf))),1 sats/byte,pkh(65cbac3f9e8bebff88860097cda85603ac90506e))
+// finalizer: StandardNonInteractiveFinalizer = StandardNonInteractiveFinalizer(Vector(P2PKHInputInfo(TransactionOutPoint(aec8528b5808ef3b87974cda7c3f20f1df9edd7b3fe6681ee637b97698202af6:0),10000 sats,ECPublicKey(02af3e17f2fd73718b63bcbcc740e4f3dffb5731e64d4fccf10043c37ce0ee0073))),1 sats/byte,pkh(cbb9f7f4438f80ee9560287200db6be1bd041a0e))
 
 // 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(61b34cfce2645aa18dc83bb54fa53da5a11754b0197afa1bbc21b9ff7b807174:0),EmptyScriptSignature,UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(a7c9351e1dbd6f90ed9f035216d6e48f85b5fa26)), TransactionOutput(4775 sats,pkh(65cbac3f9e8bebff88860097cda85603ac90506e))),UInt32Impl(0))))
+// unsignedTxF: Future[Transaction] = Future(Success(BaseTransaction(Int32Impl(2),Vector(TransactionInputImpl(TransactionOutPoint(aec8528b5808ef3b87974cda7c3f20f1df9edd7b3fe6681ee637b97698202af6:0),EmptyScriptSignature,UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(3004a2ba707c15ec9188f18d973bed8a7ef27bc0)), TransactionOutput(4775 sats,pkh(cbb9f7f4438f80ee9560287200db6be1bd041a0e))),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(61b34cfce2645aa18dc83bb54fa53da5a11754b0197afa1bbc21b9ff7b807174:0),10000 sats,ECPublicKey(032c9f596867fba33a0a4bc0b74e701dea5c678740ed3b0a9b3e33bf025743ffdf)),BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(519528d184c6466cd6c4d62d1d7eceff9dfc4163))),UInt32Impl(0)),Vector(Masked(ECPrivateKeyImpl)),SIGHASH_ALL(Int32Impl(1)))
+// utxoInfo: ScriptSignatureParams[P2PKHInputInfo] = ScriptSignatureParams(P2PKHInputInfo(TransactionOutPoint(aec8528b5808ef3b87974cda7c3f20f1df9edd7b3fe6681ee637b97698202af6:0),10000 sats,ECPublicKey(02af3e17f2fd73718b63bcbcc740e4f3dffb5731e64d4fccf10043c37ce0ee0073)),BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(ac1aade05633d5bf25b7f2a68db4518a4c44d0c7))),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(61b34cfce2645aa18dc83bb54fa53da5a11754b0197afa1bbc21b9ff7b807174:0),10000 sats,ECPublicKey(032c9f596867fba33a0a4bc0b74e701dea5c678740ed3b0a9b3e33bf025743ffdf)),BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(519528d184c6466cd6c4d62d1d7eceff9dfc4163))),UInt32Impl(0)),Vector(Masked(ECPrivateKeyImpl)),SIGHASH_ALL(Int32Impl(1))))
+// utxoInfos: Vector[ScriptSignatureParams[InputInfo]] = Vector(ScriptSignatureParams(P2PKHInputInfo(TransactionOutPoint(aec8528b5808ef3b87974cda7c3f20f1df9edd7b3fe6681ee637b97698202af6:0),10000 sats,ECPublicKey(02af3e17f2fd73718b63bcbcc740e4f3dffb5731e64d4fccf10043c37ce0ee0073)),BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(ac1aade05633d5bf25b7f2a68db4518a4c44d0c7))),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(61b34cfce2645aa18dc83bb54fa53da5a11754b0197afa1bbc21b9ff7b807174:0),P2PKHScriptSignature(ECPublicKey(032c9f596867fba33a0a4bc0b74e701dea5c678740ed3b0a9b3e33bf025743ffdf), ECDigitalSignature(304402204d4108a23b7136c1cf4a325b02ee55ff20280670a8238e9d6973f511be1f7484022030acdb56c05f71502572bb893a09cf7b7fee03c141fecf197c91caac66af8e2901)),UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(a7c9351e1dbd6f90ed9f035216d6e48f85b5fa26)), TransactionOutput(4775 sats,pkh(65cbac3f9e8bebff88860097cda85603ac90506e))),UInt32Impl(0))
+// signedTx: Transaction = BaseTransaction(Int32Impl(2),Vector(TransactionInputImpl(TransactionOutPoint(aec8528b5808ef3b87974cda7c3f20f1df9edd7b3fe6681ee637b97698202af6:0),P2PKHScriptSignature(ECPublicKey(02af3e17f2fd73718b63bcbcc740e4f3dffb5731e64d4fccf10043c37ce0ee0073), ECDigitalSignature(304402205ae60f0e468500067787d8332ed6610aa1e95861bd404104adc1e3e25e9df581022038d5ff08a01c4cfc23dd320e91b32507258697f7a803506fd4dc6b67da730e2501)),UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(3004a2ba707c15ec9188f18d973bed8a7ef27bc0)), TransactionOutput(4775 sats,pkh(cbb9f7f4438f80ee9560287200db6be1bd041a0e))),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 = 02000000017471807bffb921bc1bfa7a19b05417a1a53da54fb53bc88da15a64e2fc4cb361000000006a47304402204d4108a23b7136c1cf4a325b02ee55ff20280670a8238e9d6973f511be1f7484022030acdb56c05f71502572bb893a09cf7b7fee03c141fecf197c91caac66af8e290121032c9f596867fba33a0a4bc0b74e701dea5c678740ed3b0a9b3e33bf025743ffdf000000000288130000000000001976a914a7c9351e1dbd6f90ed9f035216d6e48f85b5fa2688aca7120000000000001976a91465cbac3f9e8bebff88860097cda85603ac90506e88ac00000000
+// res4: String = 0200000001f62a209876b937e61e68e63f7bdd9edff1203f7cda4c97873bef08588b52c8ae000000006a47304402205ae60f0e468500067787d8332ed6610aa1e95861bd404104adc1e3e25e9df581022038d5ff08a01c4cfc23dd320e91b32507258697f7a803506fd4dc6b67da730e25012102af3e17f2fd73718b63bcbcc740e4f3dffb5731e64d4fccf10043c37ce0ee0073000000000288130000000000001976a9143004a2ba707c15ec9188f18d973bed8a7ef27bc088aca7120000000000001976a914cbb9f7f4438f80ee9560287200db6be1bd041a0e88ac00000000
 
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@3fcd0a8c[Running, parallelism = 2, size = 2, active = 0, running = 0, steals = 33, tasks = 0, submissions = 0]
+// ec: ExecutionContext = scala.concurrent.impl.ExecutionContextImpl$$anon$3@13a6357c[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(032c9f596867fba33a0a4bc0b74e701dea5c678740ed3b0a9b3e33bf025743ffdf)
+// pubKey: ECPublicKey = ECPublicKey(02af3e17f2fd73718b63bcbcc740e4f3dffb5731e64d4fccf10043c37ce0ee0073)
 
 // 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(519528d184c6466cd6c4d62d1d7eceff9dfc4163)
+// creditingSpk: P2PKHScriptPubKey = pkh(ac1aade05633d5bf25b7f2a68db4518a4c44d0c7)
 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(519528d184c6466cd6c4d62d1d7eceff9dfc4163))
+// utxo: TransactionOutput = TransactionOutput(10000 sats,pkh(ac1aade05633d5bf25b7f2a68db4518a4c44d0c7))
 
 // 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(a7c9351e1dbd6f90ed9f035216d6e48f85b5fa26)
+// destinationSPK: P2PKHScriptPubKey = pkh(3004a2ba707c15ec9188f18d973bed8a7ef27bc0)
 
 // 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(a7c9351e1dbd6f90ed9f035216d6e48f85b5fa26)))
+// destinations: Vector[TransactionOutput] = Vector(TransactionOutput(5000 sats,pkh(3004a2ba707c15ec9188f18d973bed8a7ef27bc0)))
 
 // 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(519528d184c6466cd6c4d62d1d7eceff9dfc4163))),UInt32Impl(0))
+// creditingTx: BaseTransaction = BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(ac1aade05633d5bf25b7f2a68db4518a4c44d0c7))),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(61b34cfce2645aa18dc83bb54fa53da5a11754b0197afa1bbc21b9ff7b807174:0)
+// outPoint: TransactionOutPoint = TransactionOutPoint(aec8528b5808ef3b87974cda7c3f20f1df9edd7b3fe6681ee637b97698202af6:0)
 val input = TransactionInput(
     outPoint,
     EmptyScriptSignature,
     sequenceNumber = UInt32.zero)
-// input: TransactionInput = TransactionInputImpl(TransactionOutPoint(61b34cfce2645aa18dc83bb54fa53da5a11754b0197afa1bbc21b9ff7b807174:0),EmptyScriptSignature,UInt32Impl(0))
+// input: TransactionInput = TransactionInputImpl(TransactionOutPoint(aec8528b5808ef3b87974cda7c3f20f1df9edd7b3fe6681ee637b97698202af6: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(61b34cfce2645aa18dc83bb54fa53da5a11754b0197afa1bbc21b9ff7b807174:0),EmptyScriptSignature,UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(a7c9351e1dbd6f90ed9f035216d6e48f85b5fa26))),UInt32Impl(0))
+// builderResult: RawTxBuilderResult = RawTxBuilderResult(Int32Impl(2),Vector(TransactionInputImpl(TransactionOutPoint(aec8528b5808ef3b87974cda7c3f20f1df9edd7b3fe6681ee637b97698202af6:0),EmptyScriptSignature,UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(3004a2ba707c15ec9188f18d973bed8a7ef27bc0))),UInt32Impl(0))
 
 // this contains the information needed to analyze our input during finalization
 val inputInfo = P2PKHInputInfo(outPoint, amount, privKey.publicKey)
-// inputInfo: P2PKHInputInfo = P2PKHInputInfo(TransactionOutPoint(61b34cfce2645aa18dc83bb54fa53da5a11754b0197afa1bbc21b9ff7b807174:0),10000 sats,ECPublicKey(032c9f596867fba33a0a4bc0b74e701dea5c678740ed3b0a9b3e33bf025743ffdf))
+// inputInfo: P2PKHInputInfo = P2PKHInputInfo(TransactionOutPoint(aec8528b5808ef3b87974cda7c3f20f1df9edd7b3fe6681ee637b97698202af6:0),10000 sats,ECPublicKey(02af3e17f2fd73718b63bcbcc740e4f3dffb5731e64d4fccf10043c37ce0ee0073))
 
 // 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(65cbac3f9e8bebff88860097cda85603ac90506e)
+// changeSPK: P2PKHScriptPubKey = pkh(cbb9f7f4438f80ee9560287200db6be1bd041a0e)
 
 // 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(61b34cfce2645aa18dc83bb54fa53da5a11754b0197afa1bbc21b9ff7b807174:0),10000 sats,ECPublicKey(032c9f596867fba33a0a4bc0b74e701dea5c678740ed3b0a9b3e33bf025743ffdf))),1 sats/byte,pkh(65cbac3f9e8bebff88860097cda85603ac90506e))
+// finalizer: StandardNonInteractiveFinalizer = StandardNonInteractiveFinalizer(Vector(P2PKHInputInfo(TransactionOutPoint(aec8528b5808ef3b87974cda7c3f20f1df9edd7b3fe6681ee637b97698202af6:0),10000 sats,ECPublicKey(02af3e17f2fd73718b63bcbcc740e4f3dffb5731e64d4fccf10043c37ce0ee0073))),1 sats/byte,pkh(cbb9f7f4438f80ee9560287200db6be1bd041a0e))
 
 // 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(61b34cfce2645aa18dc83bb54fa53da5a11754b0197afa1bbc21b9ff7b807174:0),EmptyScriptSignature,UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(a7c9351e1dbd6f90ed9f035216d6e48f85b5fa26)), TransactionOutput(4775 sats,pkh(65cbac3f9e8bebff88860097cda85603ac90506e))),UInt32Impl(0))))
+// unsignedTxF: Future[Transaction] = Future(Success(BaseTransaction(Int32Impl(2),Vector(TransactionInputImpl(TransactionOutPoint(aec8528b5808ef3b87974cda7c3f20f1df9edd7b3fe6681ee637b97698202af6:0),EmptyScriptSignature,UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(3004a2ba707c15ec9188f18d973bed8a7ef27bc0)), TransactionOutput(4775 sats,pkh(cbb9f7f4438f80ee9560287200db6be1bd041a0e))),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(61b34cfce2645aa18dc83bb54fa53da5a11754b0197afa1bbc21b9ff7b807174:0),10000 sats,ECPublicKey(032c9f596867fba33a0a4bc0b74e701dea5c678740ed3b0a9b3e33bf025743ffdf)),BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(519528d184c6466cd6c4d62d1d7eceff9dfc4163))),UInt32Impl(0)),Vector(Masked(ECPrivateKeyImpl)),SIGHASH_ALL(Int32Impl(1)))
+// utxoInfo: ScriptSignatureParams[P2PKHInputInfo] = ScriptSignatureParams(P2PKHInputInfo(TransactionOutPoint(aec8528b5808ef3b87974cda7c3f20f1df9edd7b3fe6681ee637b97698202af6:0),10000 sats,ECPublicKey(02af3e17f2fd73718b63bcbcc740e4f3dffb5731e64d4fccf10043c37ce0ee0073)),BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(ac1aade05633d5bf25b7f2a68db4518a4c44d0c7))),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(61b34cfce2645aa18dc83bb54fa53da5a11754b0197afa1bbc21b9ff7b807174:0),10000 sats,ECPublicKey(032c9f596867fba33a0a4bc0b74e701dea5c678740ed3b0a9b3e33bf025743ffdf)),BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(519528d184c6466cd6c4d62d1d7eceff9dfc4163))),UInt32Impl(0)),Vector(Masked(ECPrivateKeyImpl)),SIGHASH_ALL(Int32Impl(1))))
+// utxoInfos: Vector[ScriptSignatureParams[InputInfo]] = Vector(ScriptSignatureParams(P2PKHInputInfo(TransactionOutPoint(aec8528b5808ef3b87974cda7c3f20f1df9edd7b3fe6681ee637b97698202af6:0),10000 sats,ECPublicKey(02af3e17f2fd73718b63bcbcc740e4f3dffb5731e64d4fccf10043c37ce0ee0073)),BaseTransaction(Int32Impl(1),Vector(),Vector(TransactionOutput(10000 sats,pkh(ac1aade05633d5bf25b7f2a68db4518a4c44d0c7))),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(61b34cfce2645aa18dc83bb54fa53da5a11754b0197afa1bbc21b9ff7b807174:0),P2PKHScriptSignature(ECPublicKey(032c9f596867fba33a0a4bc0b74e701dea5c678740ed3b0a9b3e33bf025743ffdf), ECDigitalSignature(304402204d4108a23b7136c1cf4a325b02ee55ff20280670a8238e9d6973f511be1f7484022030acdb56c05f71502572bb893a09cf7b7fee03c141fecf197c91caac66af8e2901)),UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(a7c9351e1dbd6f90ed9f035216d6e48f85b5fa26)), TransactionOutput(4775 sats,pkh(65cbac3f9e8bebff88860097cda85603ac90506e))),UInt32Impl(0))
+// signedTx: Transaction = BaseTransaction(Int32Impl(2),Vector(TransactionInputImpl(TransactionOutPoint(aec8528b5808ef3b87974cda7c3f20f1df9edd7b3fe6681ee637b97698202af6:0),P2PKHScriptSignature(ECPublicKey(02af3e17f2fd73718b63bcbcc740e4f3dffb5731e64d4fccf10043c37ce0ee0073), ECDigitalSignature(304402205ae60f0e468500067787d8332ed6610aa1e95861bd404104adc1e3e25e9df581022038d5ff08a01c4cfc23dd320e91b32507258697f7a803506fd4dc6b67da730e2501)),UInt32Impl(0))),Vector(TransactionOutput(5000 sats,pkh(3004a2ba707c15ec9188f18d973bed8a7ef27bc0)), TransactionOutput(4775 sats,pkh(cbb9f7f4438f80ee9560287200db6be1bd041a0e))),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 = 02000000017471807bffb921bc1bfa7a19b05417a1a53da54fb53bc88da15a64e2fc4cb361000000006a47304402204d4108a23b7136c1cf4a325b02ee55ff20280670a8238e9d6973f511be1f7484022030acdb56c05f71502572bb893a09cf7b7fee03c141fecf197c91caac66af8e290121032c9f596867fba33a0a4bc0b74e701dea5c678740ed3b0a9b3e33bf025743ffdf000000000288130000000000001976a914a7c9351e1dbd6f90ed9f035216d6e48f85b5fa2688aca7120000000000001976a91465cbac3f9e8bebff88860097cda85603ac90506e88ac00000000
+// res4: String = 0200000001f62a209876b937e61e68e63f7bdd9edff1203f7cda4c97873bef08588b52c8ae000000006a47304402205ae60f0e468500067787d8332ed6610aa1e95861bd404104adc1e3e25e9df581022038d5ff08a01c4cfc23dd320e91b32507258697f7a803506fd4dc6b67da730e25012102af3e17f2fd73718b63bcbcc740e4f3dffb5731e64d4fccf10043c37ce0ee0073000000000288130000000000001976a9143004a2ba707c15ec9188f18d973bed8a7ef27bc088aca7120000000000001976a914cbb9f7f4438f80ee9560287200db6be1bd041a0e88ac00000000
 
\ No newline at end of file diff --git a/docs/next/key-manager/server-key-manager title: Server Key Manager/index.html b/docs/next/key-manager/server-key-manager title: Server Key Manager/index.html new file mode 100644 index 0000000000..b42f173bac --- /dev/null +++ b/docs/next/key-manager/server-key-manager title: Server Key Manager/index.html @@ -0,0 +1,81 @@ +key-manager/server-key-manager title: Server Key Manager · bitcoin-s
\ No newline at end of file diff --git a/docs/next/node/node.html b/docs/next/node/node.html index 1a25cf9383..8ddc6e152d 100644 --- a/docs/next/node/node.html +++ b/docs/next/node/node.html @@ -67,6 +67,9 @@

Bitcoin-s has experimental support for neutrino which is a new lite client proposal on the bitcoin p2p network. You can read more about how neutrino works here. At this time, bitcoin-s only supports connecting to one trusted peer.

+

Limitations

+

Currently, the node does not have an active mempool. +It is only aware of transactions it broadcasts and ones confirmed in blocks.

Callbacks

Bitcoin-S support call backs for the following events that happen on the bitcoin p2p network:

    diff --git a/docs/next/node/node/index.html b/docs/next/node/node/index.html index 1a25cf9383..8ddc6e152d 100644 --- a/docs/next/node/node/index.html +++ b/docs/next/node/node/index.html @@ -67,6 +67,9 @@

    Bitcoin-s has experimental support for neutrino which is a new lite client proposal on the bitcoin p2p network. You can read more about how neutrino works here. At this time, bitcoin-s only supports connecting to one trusted peer.

    +

    Limitations

    +

    Currently, the node does not have an active mempool. +It is only aware of transactions it broadcasts and ones confirmed in blocks.

    Callbacks

    Bitcoin-S support call backs for the following events that happen on the bitcoin p2p network:

      diff --git a/docs/next/secp256k1/secp256k1.html b/docs/next/secp256k1/secp256k1.html index b979e00124..bfebf49dd6 100644 --- a/docs/next/secp256k1/secp256k1.html +++ b/docs/next/secp256k1/secp256k1.html @@ -114,12 +114,12 @@ println(s"Verified with NativeSecp256k1 again=val privKey = ECPrivateKey.freshPrivateKey // privKey: ECPrivateKey = Masked(ECPrivateKeyImpl) val publicKey = privKey.publicKeyWithBouncyCastle -// publicKey: ECPublicKey = ECPublicKey(02e157f4aa1a804dfba203397c8456b4e2942a84ba7e4b090041855fe0b99216d5) +// publicKey: ECPublicKey = ECPublicKey(033f81a465c7cd6386db274f35ada7106361a269de02e48273acd143d04e4c2bed) val dataToSign = DoubleSha256Digest.empty // dataToSign: DoubleSha256Digest = DoubleSha256Digest(0000000000000000000000000000000000000000000000000000000000000000) val signature = privKey.signWithBouncyCastle(dataToSign.bytes) -// signature: ECDigitalSignature = ECDigitalSignature(3045022100dcbbb51eb3938908076f1d6d165c5a5f1c6f231f0a0b6930c486409585d6330f02205e1aeacd58d39ec81976df0d64a28a300a1cc30f4df8d1c1a20a47449f25bafc) +// signature: ECDigitalSignature = ECDigitalSignature(3045022100bc40333f65fbe8e4ddd5f4c73e87e1a6ac1938cd60988c742932b5e93546ed7b0220626440132261b3853ee3065f07c23c83d86715c2a91c395d9bc1be394d22314d) val verified = publicKey.verifyWithBouncyCastle(dataToSign.bytes, signature) // verified: Boolean = true diff --git a/docs/next/secp256k1/secp256k1/index.html b/docs/next/secp256k1/secp256k1/index.html index b979e00124..bfebf49dd6 100644 --- a/docs/next/secp256k1/secp256k1/index.html +++ b/docs/next/secp256k1/secp256k1/index.html @@ -114,12 +114,12 @@ println(s"Verified with NativeSecp256k1 again=val privKey = ECPrivateKey.freshPrivateKey // privKey: ECPrivateKey = Masked(ECPrivateKeyImpl) val publicKey = privKey.publicKeyWithBouncyCastle -// publicKey: ECPublicKey = ECPublicKey(02e157f4aa1a804dfba203397c8456b4e2942a84ba7e4b090041855fe0b99216d5) +// publicKey: ECPublicKey = ECPublicKey(033f81a465c7cd6386db274f35ada7106361a269de02e48273acd143d04e4c2bed) val dataToSign = DoubleSha256Digest.empty // dataToSign: DoubleSha256Digest = DoubleSha256Digest(0000000000000000000000000000000000000000000000000000000000000000) val signature = privKey.signWithBouncyCastle(dataToSign.bytes) -// signature: ECDigitalSignature = ECDigitalSignature(3045022100dcbbb51eb3938908076f1d6d165c5a5f1c6f231f0a0b6930c486409585d6330f02205e1aeacd58d39ec81976df0d64a28a300a1cc30f4df8d1c1a20a47449f25bafc) +// signature: ECDigitalSignature = ECDigitalSignature(3045022100bc40333f65fbe8e4ddd5f4c73e87e1a6ac1938cd60988c742932b5e93546ed7b0220626440132261b3853ee3065f07c23c83d86715c2a91c395d9bc1be394d22314d) val verified = publicKey.verifyWithBouncyCastle(dataToSign.bytes, signature) // verified: Boolean = true diff --git a/docs/next/wallet/wallet.html b/docs/next/wallet/wallet.html index 2d73303af8..a0252a5c43 100644 --- a/docs/next/wallet/wallet.html +++ b/docs/next/wallet/wallet.html @@ -75,7 +75,7 @@ ready. Use at your own risk, and without too much money depending on it.

      All key interactions are delegated to the key-manager which is a minimal dependency library to store and use key material.

      By default, we store the encrypted root key in $HOME/.bitcoin-s/seeds/encrypted-bitcoin-s-seed.json. This is the seed that is used for each of the wallets on each bitcoin network. Multiple wallet seeds can be saved using the bitcoin-s.wallet.walletName config option. -You can read more in the key manager docs.

      +You can read more in the [key manager docs](/docs/next/key-manager/server-key-manager title: Server Key Manager).

      The wallet itself is used to manage the utxo life cycle, create transactions, and update wallet balances to show how much money you have the on a bitcoin network.

      We use slick as middleware to support different database types. Depending on your use case, you can use something as simple as sqlite, or something much more scalable like postgres.

      Example

      diff --git a/docs/next/wallet/wallet/index.html b/docs/next/wallet/wallet/index.html index 2d73303af8..a0252a5c43 100644 --- a/docs/next/wallet/wallet/index.html +++ b/docs/next/wallet/wallet/index.html @@ -75,7 +75,7 @@ ready. Use at your own risk, and without too much money depending on it.

      All key interactions are delegated to the key-manager which is a minimal dependency library to store and use key material.

      By default, we store the encrypted root key in $HOME/.bitcoin-s/seeds/encrypted-bitcoin-s-seed.json. This is the seed that is used for each of the wallets on each bitcoin network. Multiple wallet seeds can be saved using the bitcoin-s.wallet.walletName config option. -You can read more in the key manager docs.

      +You can read more in the [key manager docs](/docs/next/key-manager/server-key-manager title: Server Key Manager).

      The wallet itself is used to manage the utxo life cycle, create transactions, and update wallet balances to show how much money you have the on a bitcoin network.

      We use slick as middleware to support different database types. Depending on your use case, you can use something as simple as sqlite, or something much more scalable like postgres.

      Example

      diff --git a/sitemap.xml b/sitemap.xml index 268b77dc71..4e6c9ae8db 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://bitcoin-s.org/helpweekly0.5https://bitcoin-s.org/indexweekly0.5https://bitcoin-s.org/usersweekly0.5https://bitcoin-s.org/versionsweekly0.5https://bitcoin-s.org/docs/next/applications/clihourly1.0https://bitcoin-s.org/docs/next/applications/guihourly1.0https://bitcoin-s.org/docs/next/applications/serverhourly1.0https://bitcoin-s.org/docs/next/bipshourly1.0https://bitcoin-s.org/docs/next/chain/chain-query-apihourly1.0https://bitcoin-s.org/docs/next/chain/chainhourly1.0https://bitcoin-s.org/docs/next/chain/filter-synchourly1.0https://bitcoin-s.org/docs/next/config/configurationhourly1.0https://bitcoin-s.org/docs/next/contributing-websitehourly1.0https://bitcoin-s.org/docs/next/contributinghourly1.0https://bitcoin-s.org/docs/next/core/adding-spkshourly1.0https://bitcoin-s.org/docs/next/core/addresseshourly1.0https://bitcoin-s.org/docs/next/core/core-introhourly1.0https://bitcoin-s.org/docs/next/core/hd-keyshourly1.0https://bitcoin-s.org/docs/next/core/lightning-networkhourly1.0https://bitcoin-s.org/docs/next/core/psbtshourly1.0https://bitcoin-s.org/docs/next/core/spending-infohourly1.0https://bitcoin-s.org/docs/next/core/txbuilderhourly1.0https://bitcoin-s.org/docs/next/crypto/crypto-introhourly1.0https://bitcoin-s.org/docs/next/crypto/signhourly1.0https://bitcoin-s.org/docs/next/fee-provider/fee-providerhourly1.0https://bitcoin-s.org/docs/next/getting-setuphourly1.0https://bitcoin-s.org/docs/next/getting-startedhourly1.0https://bitcoin-s.org/docs/next/key-manager/key-managerhourly1.0https://bitcoin-s.org/docs/next/node/node-apihourly1.0https://bitcoin-s.org/docs/next/node/nodehourly1.0https://bitcoin-s.org/docs/next/oracle/oracle-serverhourly1.0https://bitcoin-s.org/docs/next/rpc/rpc-bitcoindhourly1.0https://bitcoin-s.org/docs/next/rpc/rpc-eclairhourly1.0https://bitcoin-s.org/docs/next/rpc/rpc-clients-introhourly1.0https://bitcoin-s.org/docs/next/secp256k1/jni-modifyhourly1.0https://bitcoin-s.org/docs/next/secp256k1/secp256k1hourly1.0https://bitcoin-s.org/docs/next/securityhourly1.0https://bitcoin-s.org/docs/next/testkit/testkithourly1.0https://bitcoin-s.org/docs/next/wallet/address-tagginghourly1.0https://bitcoin-s.org/docs/next/wallet/dlchourly1.0https://bitcoin-s.org/docs/next/wallet/wallet-callbackshourly1.0https://bitcoin-s.org/docs/next/wallet/wallet-get-addresshourly1.0https://bitcoin-s.org/docs/next/wallet/wallet-rescanhourly1.0https://bitcoin-s.org/docs/next/wallet/wallethourly1.0https://bitcoin-s.org/docs/next/windows-usershourly1.0https://bitcoin-s.org/docs/contributing-websitehourly1.0https://bitcoin-s.org/docs/contributinghourly1.0https://bitcoin-s.org/docs/core/addresseshourly1.0https://bitcoin-s.org/docs/core/core-introhourly1.0https://bitcoin-s.org/docs/core/hd-keyshourly1.0https://bitcoin-s.org/docs/core/txbuilderhourly1.0https://bitcoin-s.org/docs/getting-startedhourly1.0https://bitcoin-s.org/docs/rpc/rpc-bitcoindhourly1.0https://bitcoin-s.org/docs/rpc/rpc-eclairhourly1.0https://bitcoin-s.org/docs/rpc/rpc-clients-introhourly1.0https://bitcoin-s.org/docs/securityhourly1.0https://bitcoin-s.org/docs/applications/chainhourly1.0https://bitcoin-s.org/docs/applications/clihourly1.0https://bitcoin-s.org/docs/applications/configurationhourly1.0https://bitcoin-s.org/docs/applications/key-managerhourly1.0https://bitcoin-s.org/docs/applications/nodehourly1.0https://bitcoin-s.org/docs/applications/wallethourly1.0https://bitcoin-s.org/docs/windows-usershourly1.0https://bitcoin-s.org/docs/applications/dlchourly1.0https://bitcoin-s.org/docs/applications/filter-synchourly1.0https://bitcoin-s.org/docs/applications/serverhourly1.0https://bitcoin-s.org/docs/chain/chainhourly1.0https://bitcoin-s.org/docs/chain/filter-synchourly1.0https://bitcoin-s.org/docs/config/configurationhourly1.0https://bitcoin-s.org/docs/core/adding-spkshourly1.0https://bitcoin-s.org/docs/core/psbtshourly1.0https://bitcoin-s.org/docs/core/signhourly1.0https://bitcoin-s.org/docs/core/spending-infohourly1.0https://bitcoin-s.org/docs/getting-setuphourly1.0https://bitcoin-s.org/docs/key-manager/key-managerhourly1.0https://bitcoin-s.org/docs/node/nodehourly1.0https://bitcoin-s.org/docs/secp256k1/secp256k1hourly1.0https://bitcoin-s.org/docs/testkit/testkithourly1.0https://bitcoin-s.org/docs/wallet/chain-query-apihourly1.0https://bitcoin-s.org/docs/wallet/dlchourly1.0https://bitcoin-s.org/docs/wallet/node-apihourly1.0https://bitcoin-s.org/docs/wallet/wallet-rescanhourly1.0https://bitcoin-s.org/docs/wallet/wallethourly1.0https://bitcoin-s.org/docs/applications/guihourly1.0https://bitcoin-s.org/docs/chain/chain-query-apihourly1.0https://bitcoin-s.org/docs/core/lightning-networkhourly1.0https://bitcoin-s.org/docs/crypto/crypto-introhourly1.0https://bitcoin-s.org/docs/crypto/signhourly1.0https://bitcoin-s.org/docs/fee-provider/fee-providerhourly1.0https://bitcoin-s.org/docs/node/node-apihourly1.0https://bitcoin-s.org/docs/secp256k1/jni-modifyhourly1.0https://bitcoin-s.org/docs/wallet/address-tagginghourly1.0https://bitcoin-s.org/docs/wallet/wallet-callbackshourly1.0https://bitcoin-s.org/docs/wallet/wallet-get-addresshourly1.0https://bitcoin-s.org/docs/0.3.0/contributing-websitehourly1.0https://bitcoin-s.org/docs/0.3.0/contributinghourly1.0https://bitcoin-s.org/docs/0.3.0/core/addresseshourly1.0https://bitcoin-s.org/docs/0.3.0/core/core-introhourly1.0https://bitcoin-s.org/docs/0.3.0/core/hd-keyshourly1.0https://bitcoin-s.org/docs/0.3.0/core/txbuilderhourly1.0https://bitcoin-s.org/docs/0.3.0/getting-startedhourly1.0https://bitcoin-s.org/docs/0.3.0/rpc/rpc-bitcoindhourly1.0https://bitcoin-s.org/docs/0.3.0/rpc/rpc-eclairhourly1.0https://bitcoin-s.org/docs/0.3.0/rpc/rpc-clients-introhourly1.0https://bitcoin-s.org/docs/0.3.0/securityhourly1.0https://bitcoin-s.org/docs/0.3.0/applications/chainhourly1.0https://bitcoin-s.org/docs/0.3.0/applications/clihourly1.0https://bitcoin-s.org/docs/0.3.0/applications/configurationhourly1.0https://bitcoin-s.org/docs/0.3.0/applications/key-managerhourly1.0https://bitcoin-s.org/docs/0.3.0/applications/nodehourly1.0https://bitcoin-s.org/docs/0.3.0/applications/wallethourly1.0https://bitcoin-s.org/docs/0.3.0/windows-usershourly1.0https://bitcoin-s.org/docs/0.3.0/applications/dlchourly1.0https://bitcoin-s.org/docs/0.3.0/applications/filter-synchourly1.0https://bitcoin-s.org/docs/0.3.0/applications/serverhourly1.0https://bitcoin-s.org/docs/0.3.0/chain/chainhourly1.0https://bitcoin-s.org/docs/0.3.0/chain/filter-synchourly1.0https://bitcoin-s.org/docs/0.3.0/config/configurationhourly1.0https://bitcoin-s.org/docs/0.3.0/core/adding-spkshourly1.0https://bitcoin-s.org/docs/0.3.0/core/psbtshourly1.0https://bitcoin-s.org/docs/0.3.0/core/signhourly1.0https://bitcoin-s.org/docs/0.3.0/core/spending-infohourly1.0https://bitcoin-s.org/docs/0.3.0/getting-setuphourly1.0https://bitcoin-s.org/docs/0.3.0/key-manager/key-managerhourly1.0https://bitcoin-s.org/docs/0.3.0/node/nodehourly1.0https://bitcoin-s.org/docs/0.3.0/secp256k1/secp256k1hourly1.0https://bitcoin-s.org/docs/0.3.0/testkit/testkithourly1.0https://bitcoin-s.org/docs/0.3.0/wallet/chain-query-apihourly1.0https://bitcoin-s.org/docs/0.3.0/wallet/dlchourly1.0https://bitcoin-s.org/docs/0.3.0/wallet/node-apihourly1.0https://bitcoin-s.org/docs/0.3.0/wallet/wallet-rescanhourly1.0https://bitcoin-s.org/docs/0.3.0/wallet/wallethourly1.0https://bitcoin-s.org/docs/0.2.0/contributing-websitehourly1.0https://bitcoin-s.org/docs/0.2.0/contributinghourly1.0https://bitcoin-s.org/docs/0.2.0/core/addresseshourly1.0https://bitcoin-s.org/docs/0.2.0/core/core-introhourly1.0https://bitcoin-s.org/docs/0.2.0/core/hd-keyshourly1.0https://bitcoin-s.org/docs/0.2.0/core/txbuilderhourly1.0https://bitcoin-s.org/docs/0.2.0/getting-startedhourly1.0https://bitcoin-s.org/docs/0.2.0/rpc/rpc-bitcoindhourly1.0https://bitcoin-s.org/docs/0.2.0/rpc/rpc-eclairhourly1.0https://bitcoin-s.org/docs/0.2.0/rpc/rpc-clients-introhourly1.0https://bitcoin-s.org/docs/0.2.0/securityhourly1.0https://bitcoin-s.org/docs/0.2.0/applications/chainhourly1.0https://bitcoin-s.org/docs/0.2.0/applications/clihourly1.0https://bitcoin-s.org/docs/0.2.0/applications/configurationhourly1.0https://bitcoin-s.org/docs/0.2.0/applications/key-managerhourly1.0https://bitcoin-s.org/docs/0.2.0/applications/nodehourly1.0https://bitcoin-s.org/docs/0.2.0/applications/wallethourly1.0https://bitcoin-s.org/docs/0.2.0/windows-usershourly1.0https://bitcoin-s.org/docs/0.1.0/contributing-websitehourly1.0https://bitcoin-s.org/docs/0.1.0/contributinghourly1.0https://bitcoin-s.org/docs/0.1.0/core/addresseshourly1.0https://bitcoin-s.org/docs/0.1.0/core/core-introhourly1.0https://bitcoin-s.org/docs/0.1.0/core/hd-keyshourly1.0https://bitcoin-s.org/docs/0.1.0/core/txbuilderhourly1.0https://bitcoin-s.org/docs/0.1.0/getting-startedhourly1.0https://bitcoin-s.org/docs/0.1.0/rpc/rpc-bitcoindhourly1.0https://bitcoin-s.org/docs/0.1.0/rpc/rpc-eclairhourly1.0https://bitcoin-s.org/docs/0.1.0/rpc/rpc-clients-introhourly1.0https://bitcoin-s.org/docs/0.1.0/securityhourly1.0 \ No newline at end of file +https://bitcoin-s.org/helpweekly0.5https://bitcoin-s.org/indexweekly0.5https://bitcoin-s.org/usersweekly0.5https://bitcoin-s.org/versionsweekly0.5https://bitcoin-s.org/docs/next/applications/clihourly1.0https://bitcoin-s.org/docs/next/applications/guihourly1.0https://bitcoin-s.org/docs/next/applications/serverhourly1.0https://bitcoin-s.org/docs/next/bipshourly1.0https://bitcoin-s.org/docs/next/chain/chain-query-apihourly1.0https://bitcoin-s.org/docs/next/chain/chainhourly1.0https://bitcoin-s.org/docs/next/chain/filter-synchourly1.0https://bitcoin-s.org/docs/next/config/configurationhourly1.0https://bitcoin-s.org/docs/next/contributing-websitehourly1.0https://bitcoin-s.org/docs/next/contributinghourly1.0https://bitcoin-s.org/docs/next/core/adding-spkshourly1.0https://bitcoin-s.org/docs/next/core/addresseshourly1.0https://bitcoin-s.org/docs/next/core/core-introhourly1.0https://bitcoin-s.org/docs/next/core/hd-keyshourly1.0https://bitcoin-s.org/docs/next/core/lightning-networkhourly1.0https://bitcoin-s.org/docs/next/core/psbtshourly1.0https://bitcoin-s.org/docs/next/core/spending-infohourly1.0https://bitcoin-s.org/docs/next/core/txbuilderhourly1.0https://bitcoin-s.org/docs/next/crypto/crypto-introhourly1.0https://bitcoin-s.org/docs/next/crypto/signhourly1.0https://bitcoin-s.org/docs/next/fee-provider/fee-providerhourly1.0https://bitcoin-s.org/docs/next/getting-setuphourly1.0https://bitcoin-s.org/docs/next/getting-startedhourly1.0https://bitcoin-s.org/docs/next/key-manager/key-managerhourly1.0https://bitcoin-s.org/docs/next/key-manager/server-key-manager%20title:%20Server%20Key%20Managerhourly1.0https://bitcoin-s.org/docs/next/node/node-apihourly1.0https://bitcoin-s.org/docs/next/node/nodehourly1.0https://bitcoin-s.org/docs/next/oracle/oracle-serverhourly1.0https://bitcoin-s.org/docs/next/rpc/rpc-bitcoindhourly1.0https://bitcoin-s.org/docs/next/rpc/rpc-eclairhourly1.0https://bitcoin-s.org/docs/next/rpc/rpc-clients-introhourly1.0https://bitcoin-s.org/docs/next/secp256k1/jni-modifyhourly1.0https://bitcoin-s.org/docs/next/secp256k1/secp256k1hourly1.0https://bitcoin-s.org/docs/next/securityhourly1.0https://bitcoin-s.org/docs/next/testkit/testkithourly1.0https://bitcoin-s.org/docs/next/wallet/address-tagginghourly1.0https://bitcoin-s.org/docs/next/wallet/dlchourly1.0https://bitcoin-s.org/docs/next/wallet/wallet-callbackshourly1.0https://bitcoin-s.org/docs/next/wallet/wallet-get-addresshourly1.0https://bitcoin-s.org/docs/next/wallet/wallet-rescanhourly1.0https://bitcoin-s.org/docs/next/wallet/wallethourly1.0https://bitcoin-s.org/docs/next/windows-usershourly1.0https://bitcoin-s.org/docs/contributing-websitehourly1.0https://bitcoin-s.org/docs/contributinghourly1.0https://bitcoin-s.org/docs/core/addresseshourly1.0https://bitcoin-s.org/docs/core/core-introhourly1.0https://bitcoin-s.org/docs/core/hd-keyshourly1.0https://bitcoin-s.org/docs/core/txbuilderhourly1.0https://bitcoin-s.org/docs/getting-startedhourly1.0https://bitcoin-s.org/docs/rpc/rpc-bitcoindhourly1.0https://bitcoin-s.org/docs/rpc/rpc-eclairhourly1.0https://bitcoin-s.org/docs/rpc/rpc-clients-introhourly1.0https://bitcoin-s.org/docs/securityhourly1.0https://bitcoin-s.org/docs/applications/chainhourly1.0https://bitcoin-s.org/docs/applications/clihourly1.0https://bitcoin-s.org/docs/applications/configurationhourly1.0https://bitcoin-s.org/docs/applications/key-managerhourly1.0https://bitcoin-s.org/docs/applications/nodehourly1.0https://bitcoin-s.org/docs/applications/wallethourly1.0https://bitcoin-s.org/docs/windows-usershourly1.0https://bitcoin-s.org/docs/applications/dlchourly1.0https://bitcoin-s.org/docs/applications/filter-synchourly1.0https://bitcoin-s.org/docs/applications/serverhourly1.0https://bitcoin-s.org/docs/chain/chainhourly1.0https://bitcoin-s.org/docs/chain/filter-synchourly1.0https://bitcoin-s.org/docs/config/configurationhourly1.0https://bitcoin-s.org/docs/core/adding-spkshourly1.0https://bitcoin-s.org/docs/core/psbtshourly1.0https://bitcoin-s.org/docs/core/signhourly1.0https://bitcoin-s.org/docs/core/spending-infohourly1.0https://bitcoin-s.org/docs/getting-setuphourly1.0https://bitcoin-s.org/docs/key-manager/key-managerhourly1.0https://bitcoin-s.org/docs/node/nodehourly1.0https://bitcoin-s.org/docs/secp256k1/secp256k1hourly1.0https://bitcoin-s.org/docs/testkit/testkithourly1.0https://bitcoin-s.org/docs/wallet/chain-query-apihourly1.0https://bitcoin-s.org/docs/wallet/dlchourly1.0https://bitcoin-s.org/docs/wallet/node-apihourly1.0https://bitcoin-s.org/docs/wallet/wallet-rescanhourly1.0https://bitcoin-s.org/docs/wallet/wallethourly1.0https://bitcoin-s.org/docs/applications/guihourly1.0https://bitcoin-s.org/docs/chain/chain-query-apihourly1.0https://bitcoin-s.org/docs/core/lightning-networkhourly1.0https://bitcoin-s.org/docs/crypto/crypto-introhourly1.0https://bitcoin-s.org/docs/crypto/signhourly1.0https://bitcoin-s.org/docs/fee-provider/fee-providerhourly1.0https://bitcoin-s.org/docs/node/node-apihourly1.0https://bitcoin-s.org/docs/secp256k1/jni-modifyhourly1.0https://bitcoin-s.org/docs/wallet/address-tagginghourly1.0https://bitcoin-s.org/docs/wallet/wallet-callbackshourly1.0https://bitcoin-s.org/docs/wallet/wallet-get-addresshourly1.0https://bitcoin-s.org/docs/0.3.0/contributing-websitehourly1.0https://bitcoin-s.org/docs/0.3.0/contributinghourly1.0https://bitcoin-s.org/docs/0.3.0/core/addresseshourly1.0https://bitcoin-s.org/docs/0.3.0/core/core-introhourly1.0https://bitcoin-s.org/docs/0.3.0/core/hd-keyshourly1.0https://bitcoin-s.org/docs/0.3.0/core/txbuilderhourly1.0https://bitcoin-s.org/docs/0.3.0/getting-startedhourly1.0https://bitcoin-s.org/docs/0.3.0/rpc/rpc-bitcoindhourly1.0https://bitcoin-s.org/docs/0.3.0/rpc/rpc-eclairhourly1.0https://bitcoin-s.org/docs/0.3.0/rpc/rpc-clients-introhourly1.0https://bitcoin-s.org/docs/0.3.0/securityhourly1.0https://bitcoin-s.org/docs/0.3.0/applications/chainhourly1.0https://bitcoin-s.org/docs/0.3.0/applications/clihourly1.0https://bitcoin-s.org/docs/0.3.0/applications/configurationhourly1.0https://bitcoin-s.org/docs/0.3.0/applications/key-managerhourly1.0https://bitcoin-s.org/docs/0.3.0/applications/nodehourly1.0https://bitcoin-s.org/docs/0.3.0/applications/wallethourly1.0https://bitcoin-s.org/docs/0.3.0/windows-usershourly1.0https://bitcoin-s.org/docs/0.3.0/applications/dlchourly1.0https://bitcoin-s.org/docs/0.3.0/applications/filter-synchourly1.0https://bitcoin-s.org/docs/0.3.0/applications/serverhourly1.0https://bitcoin-s.org/docs/0.3.0/chain/chainhourly1.0https://bitcoin-s.org/docs/0.3.0/chain/filter-synchourly1.0https://bitcoin-s.org/docs/0.3.0/config/configurationhourly1.0https://bitcoin-s.org/docs/0.3.0/core/adding-spkshourly1.0https://bitcoin-s.org/docs/0.3.0/core/psbtshourly1.0https://bitcoin-s.org/docs/0.3.0/core/signhourly1.0https://bitcoin-s.org/docs/0.3.0/core/spending-infohourly1.0https://bitcoin-s.org/docs/0.3.0/getting-setuphourly1.0https://bitcoin-s.org/docs/0.3.0/key-manager/key-managerhourly1.0https://bitcoin-s.org/docs/0.3.0/node/nodehourly1.0https://bitcoin-s.org/docs/0.3.0/secp256k1/secp256k1hourly1.0https://bitcoin-s.org/docs/0.3.0/testkit/testkithourly1.0https://bitcoin-s.org/docs/0.3.0/wallet/chain-query-apihourly1.0https://bitcoin-s.org/docs/0.3.0/wallet/dlchourly1.0https://bitcoin-s.org/docs/0.3.0/wallet/node-apihourly1.0https://bitcoin-s.org/docs/0.3.0/wallet/wallet-rescanhourly1.0https://bitcoin-s.org/docs/0.3.0/wallet/wallethourly1.0https://bitcoin-s.org/docs/0.2.0/contributing-websitehourly1.0https://bitcoin-s.org/docs/0.2.0/contributinghourly1.0https://bitcoin-s.org/docs/0.2.0/core/addresseshourly1.0https://bitcoin-s.org/docs/0.2.0/core/core-introhourly1.0https://bitcoin-s.org/docs/0.2.0/core/hd-keyshourly1.0https://bitcoin-s.org/docs/0.2.0/core/txbuilderhourly1.0https://bitcoin-s.org/docs/0.2.0/getting-startedhourly1.0https://bitcoin-s.org/docs/0.2.0/rpc/rpc-bitcoindhourly1.0https://bitcoin-s.org/docs/0.2.0/rpc/rpc-eclairhourly1.0https://bitcoin-s.org/docs/0.2.0/rpc/rpc-clients-introhourly1.0https://bitcoin-s.org/docs/0.2.0/securityhourly1.0https://bitcoin-s.org/docs/0.2.0/applications/chainhourly1.0https://bitcoin-s.org/docs/0.2.0/applications/clihourly1.0https://bitcoin-s.org/docs/0.2.0/applications/configurationhourly1.0https://bitcoin-s.org/docs/0.2.0/applications/key-managerhourly1.0https://bitcoin-s.org/docs/0.2.0/applications/nodehourly1.0https://bitcoin-s.org/docs/0.2.0/applications/wallethourly1.0https://bitcoin-s.org/docs/0.2.0/windows-usershourly1.0https://bitcoin-s.org/docs/0.1.0/contributing-websitehourly1.0https://bitcoin-s.org/docs/0.1.0/contributinghourly1.0https://bitcoin-s.org/docs/0.1.0/core/addresseshourly1.0https://bitcoin-s.org/docs/0.1.0/core/core-introhourly1.0https://bitcoin-s.org/docs/0.1.0/core/hd-keyshourly1.0https://bitcoin-s.org/docs/0.1.0/core/txbuilderhourly1.0https://bitcoin-s.org/docs/0.1.0/getting-startedhourly1.0https://bitcoin-s.org/docs/0.1.0/rpc/rpc-bitcoindhourly1.0https://bitcoin-s.org/docs/0.1.0/rpc/rpc-eclairhourly1.0https://bitcoin-s.org/docs/0.1.0/rpc/rpc-clients-introhourly1.0https://bitcoin-s.org/docs/0.1.0/securityhourly1.0 \ No newline at end of file