test: update tests for alpha 13 release
This commit is contained in:
parent
f66f8417cf
commit
3b89af5a6e
@ -13,8 +13,9 @@ private const val TESTNET_ESPLORA_URL = "https://esplora.testnet.kuutamo.cloud"
|
|||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class LiveTxBuilderTest {
|
class LiveTxBuilderTest {
|
||||||
private val persistenceFilePath = InstrumentationRegistry
|
private val persistenceFilePath = InstrumentationRegistry.getInstrumentation().targetContext.filesDir.path + "/bdk_persistence3.sqlite"
|
||||||
.getInstrumentation().targetContext.filesDir.path + "/bdk_persistence3.sqlite"
|
private val descriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)", Network.SIGNET)
|
||||||
|
private val changeDescriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)", Network.SIGNET)
|
||||||
|
|
||||||
@AfterTest
|
@AfterTest
|
||||||
fun cleanup() {
|
fun cleanup() {
|
||||||
@ -26,16 +27,14 @@ class LiveTxBuilderTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testTxBuilder() {
|
fun testTxBuilder() {
|
||||||
val descriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)", Network.SIGNET)
|
val wallet = Wallet(descriptor, changeDescriptor, Network.SIGNET)
|
||||||
val wallet = Wallet(descriptor, null, persistenceFilePath, Network.SIGNET)
|
|
||||||
val esploraClient: EsploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
val esploraClient: EsploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
||||||
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
||||||
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
|
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
|
||||||
wallet.applyUpdate(update)
|
wallet.applyUpdate(update)
|
||||||
wallet.commit()
|
println("Balance: ${wallet.balance().total.toSat()}")
|
||||||
println("Balance: ${wallet.getBalance().total.toSat()}")
|
|
||||||
|
|
||||||
assert(wallet.getBalance().total.toSat() > 0uL) {
|
assert(wallet.balance().total.toSat() > 0uL) {
|
||||||
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,17 +50,15 @@ class LiveTxBuilderTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun complexTxBuilder() {
|
fun complexTxBuilder() {
|
||||||
val externalDescriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)", Network.SIGNET)
|
val wallet = Wallet(descriptor, changeDescriptor, Network.SIGNET)
|
||||||
val changeDescriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)", Network.SIGNET)
|
|
||||||
val wallet = Wallet(externalDescriptor, changeDescriptor, persistenceFilePath, Network.SIGNET)
|
|
||||||
val esploraClient: EsploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
val esploraClient: EsploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
||||||
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
||||||
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
|
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
|
||||||
wallet.applyUpdate(update)
|
wallet.applyUpdate(update)
|
||||||
wallet.commit()
|
|
||||||
println("Balance: ${wallet.getBalance().total.toSat()}")
|
|
||||||
|
|
||||||
assert(wallet.getBalance().total.toSat() > 0uL) {
|
println("Balance: ${wallet.balance().total.toSat()}")
|
||||||
|
|
||||||
|
assert(wallet.balance().total.toSat() > 0uL) {
|
||||||
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,6 +15,8 @@ private const val TESTNET_ESPLORA_URL = "https://esplora.testnet.kuutamo.cloud"
|
|||||||
class LiveWalletTest {
|
class LiveWalletTest {
|
||||||
private val persistenceFilePath = InstrumentationRegistry
|
private val persistenceFilePath = InstrumentationRegistry
|
||||||
.getInstrumentation().targetContext.filesDir.path + "/bdk_persistence2.sqlite"
|
.getInstrumentation().targetContext.filesDir.path + "/bdk_persistence2.sqlite"
|
||||||
|
private val descriptor: Descriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)", Network.SIGNET)
|
||||||
|
private val changeDescriptor: Descriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)", Network.SIGNET)
|
||||||
|
|
||||||
@AfterTest
|
@AfterTest
|
||||||
fun cleanup() {
|
fun cleanup() {
|
||||||
@ -26,18 +28,16 @@ class LiveWalletTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testSyncedBalance() {
|
fun testSyncedBalance() {
|
||||||
val descriptor: Descriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)", Network.SIGNET)
|
val wallet: Wallet = Wallet(descriptor, changeDescriptor, Network.SIGNET)
|
||||||
val wallet: Wallet = Wallet(descriptor, null, persistenceFilePath, Network.SIGNET)
|
|
||||||
val esploraClient: EsploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
val esploraClient: EsploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
||||||
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
||||||
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
|
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
|
||||||
wallet.applyUpdate(update)
|
wallet.applyUpdate(update)
|
||||||
wallet.commit()
|
println("Balance: ${wallet.balance().total.toSat()}")
|
||||||
println("Balance: ${wallet.getBalance().total.toSat()}")
|
val balance: Balance = wallet.balance()
|
||||||
val balance: Balance = wallet.getBalance()
|
|
||||||
println("Balance: $balance")
|
println("Balance: $balance")
|
||||||
|
|
||||||
assert(wallet.getBalance().total.toSat() > 0uL) {
|
assert(wallet.balance().total.toSat() > 0uL) {
|
||||||
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,7 +45,7 @@ class LiveWalletTest {
|
|||||||
val transactions = wallet.transactions().take(3)
|
val transactions = wallet.transactions().take(3)
|
||||||
for (tx in transactions) {
|
for (tx in transactions) {
|
||||||
val sentAndReceived = wallet.sentAndReceived(tx.transaction)
|
val sentAndReceived = wallet.sentAndReceived(tx.transaction)
|
||||||
println("Transaction: ${tx.transaction.txid()}")
|
println("Transaction: ${tx.transaction.computeTxid()}")
|
||||||
println("Sent ${sentAndReceived.sent}")
|
println("Sent ${sentAndReceived.sent}")
|
||||||
println("Received ${sentAndReceived.received}")
|
println("Received ${sentAndReceived.received}")
|
||||||
}
|
}
|
||||||
@ -53,16 +53,14 @@ class LiveWalletTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testBroadcastTransaction() {
|
fun testBroadcastTransaction() {
|
||||||
val descriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)", Network.SIGNET)
|
val wallet = Wallet(descriptor, changeDescriptor, Network.SIGNET)
|
||||||
val wallet = Wallet(descriptor, null, persistenceFilePath, Network.SIGNET)
|
|
||||||
val esploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
val esploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
||||||
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
||||||
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
|
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
|
||||||
wallet.applyUpdate(update)
|
wallet.applyUpdate(update)
|
||||||
wallet.commit()
|
println("Balance: ${wallet.balance().total.toSat()}")
|
||||||
println("Balance: ${wallet.getBalance().total.toSat()}")
|
|
||||||
|
|
||||||
assert(wallet.getBalance().total.toSat() > 0uL) {
|
assert(wallet.balance().total.toSat() > 0uL) {
|
||||||
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,10 +78,10 @@ class LiveWalletTest {
|
|||||||
assertTrue(walletDidSign)
|
assertTrue(walletDidSign)
|
||||||
|
|
||||||
val tx: Transaction = psbt.extractTx()
|
val tx: Transaction = psbt.extractTx()
|
||||||
println("Txid is: ${tx.txid()}")
|
println("Txid is: ${tx.computeTxid()}")
|
||||||
|
|
||||||
val txFee: ULong = wallet.calculateFee(tx)
|
val txFee: Amount = wallet.calculateFee(tx)
|
||||||
println("Tx fee is: $txFee")
|
println("Tx fee is: ${txFee.toSat()}")
|
||||||
|
|
||||||
val feeRate: FeeRate = wallet.calculateFeeRate(tx)
|
val feeRate: FeeRate = wallet.calculateFeeRate(tx)
|
||||||
println("Tx fee rate is: ${feeRate.toSatPerVbCeil()} sat/vB")
|
println("Tx fee rate is: ${feeRate.toSatPerVbCeil()} sat/vB")
|
||||||
|
@ -14,6 +14,8 @@ import kotlin.test.AfterTest
|
|||||||
class OfflineWalletTest {
|
class OfflineWalletTest {
|
||||||
private val persistenceFilePath = InstrumentationRegistry
|
private val persistenceFilePath = InstrumentationRegistry
|
||||||
.getInstrumentation().targetContext.filesDir.path + "/bdk_persistence1.sqlite"
|
.getInstrumentation().targetContext.filesDir.path + "/bdk_persistence1.sqlite"
|
||||||
|
private val descriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)", Network.TESTNET)
|
||||||
|
private val changeDescriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)", Network.TESTNET)
|
||||||
|
|
||||||
@AfterTest
|
@AfterTest
|
||||||
fun cleanup() {
|
fun cleanup() {
|
||||||
@ -34,14 +36,9 @@ class OfflineWalletTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testNewAddress() {
|
fun testNewAddress() {
|
||||||
val descriptor: Descriptor = Descriptor(
|
|
||||||
"wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)",
|
|
||||||
Network.TESTNET
|
|
||||||
)
|
|
||||||
val wallet: Wallet = Wallet(
|
val wallet: Wallet = Wallet(
|
||||||
descriptor,
|
descriptor,
|
||||||
null,
|
changeDescriptor,
|
||||||
persistenceFilePath,
|
|
||||||
Network.TESTNET
|
Network.TESTNET
|
||||||
)
|
)
|
||||||
val addressInfo: AddressInfo = wallet.revealNextAddress(KeychainKind.EXTERNAL)
|
val addressInfo: AddressInfo = wallet.revealNextAddress(KeychainKind.EXTERNAL)
|
||||||
@ -52,27 +49,22 @@ class OfflineWalletTest {
|
|||||||
assertFalse(addressInfo.address.isValidForNetwork(Network.BITCOIN), "Address is valid for bitcoin network, but it shouldn't be")
|
assertFalse(addressInfo.address.isValidForNetwork(Network.BITCOIN), "Address is valid for bitcoin network, but it shouldn't be")
|
||||||
|
|
||||||
assertEquals(
|
assertEquals(
|
||||||
expected = "tb1qzg4mckdh50nwdm9hkzq06528rsu73hjxxzem3e",
|
expected = "tb1qrnfslnrve9uncz9pzpvf83k3ukz22ljgees989",
|
||||||
actual = addressInfo.address.toString()
|
actual = addressInfo.address.toString()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testBalance() {
|
fun testBalance() {
|
||||||
val descriptor: Descriptor = Descriptor(
|
|
||||||
"wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)",
|
|
||||||
Network.TESTNET
|
|
||||||
)
|
|
||||||
val wallet: Wallet = Wallet(
|
val wallet: Wallet = Wallet(
|
||||||
descriptor,
|
descriptor,
|
||||||
null,
|
changeDescriptor,
|
||||||
persistenceFilePath,
|
|
||||||
Network.TESTNET
|
Network.TESTNET
|
||||||
)
|
)
|
||||||
|
|
||||||
assertEquals(
|
assertEquals(
|
||||||
expected = 0uL,
|
expected = 0uL,
|
||||||
actual = wallet.getBalance().total.toSat()
|
actual = wallet.balance().total.toSat()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,21 +5,25 @@ import kotlin.test.Test
|
|||||||
private const val SIGNET_ELECTRUM_URL = "ssl://mempool.space:60602"
|
private const val SIGNET_ELECTRUM_URL = "ssl://mempool.space:60602"
|
||||||
|
|
||||||
class LiveElectrumClientTest {
|
class LiveElectrumClientTest {
|
||||||
@Test
|
private val descriptor: Descriptor = Descriptor(
|
||||||
fun testSyncedBalance() {
|
|
||||||
val descriptor: Descriptor = Descriptor(
|
|
||||||
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
||||||
Network.SIGNET
|
Network.SIGNET
|
||||||
)
|
)
|
||||||
val wallet: Wallet = Wallet.newNoPersist(descriptor, null, Network.SIGNET)
|
private val changeDescriptor: Descriptor = Descriptor(
|
||||||
|
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)",
|
||||||
|
Network.SIGNET
|
||||||
|
)
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testSyncedBalance() {
|
||||||
|
val wallet: Wallet = Wallet(descriptor, changeDescriptor, Network.SIGNET)
|
||||||
val electrumClient: ElectrumClient = ElectrumClient(SIGNET_ELECTRUM_URL)
|
val electrumClient: ElectrumClient = ElectrumClient(SIGNET_ELECTRUM_URL)
|
||||||
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
||||||
val update = electrumClient.fullScan(fullScanRequest, 10uL, 10uL, false)
|
val update = electrumClient.fullScan(fullScanRequest, 10uL, 10uL, false)
|
||||||
wallet.applyUpdate(update)
|
wallet.applyUpdate(update)
|
||||||
wallet.commit()
|
println("Balance: ${wallet.balance().total.toSat()}")
|
||||||
println("Balance: ${wallet.getBalance().total.toSat()}")
|
|
||||||
|
|
||||||
assert(wallet.getBalance().total.toSat() > 0uL) {
|
assert(wallet.balance().total.toSat() > 0uL) {
|
||||||
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -27,7 +31,7 @@ class LiveElectrumClientTest {
|
|||||||
val transactions = wallet.transactions().take(3)
|
val transactions = wallet.transactions().take(3)
|
||||||
for (tx in transactions) {
|
for (tx in transactions) {
|
||||||
val sentAndReceived = wallet.sentAndReceived(tx.transaction)
|
val sentAndReceived = wallet.sentAndReceived(tx.transaction)
|
||||||
println("Transaction: ${tx.transaction.txid()}")
|
println("Transaction: ${tx.transaction.computeTxid()}")
|
||||||
println("Sent ${sentAndReceived.sent.toSat()}")
|
println("Sent ${sentAndReceived.sent.toSat()}")
|
||||||
println("Received ${sentAndReceived.received.toSat()}")
|
println("Received ${sentAndReceived.received.toSat()}")
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,14 @@ private const val SIGNET_ESPLORA_URL = "http://signet.bitcoindevkit.net"
|
|||||||
private const val TESTNET_ESPLORA_URL = "https://esplora.testnet.kuutamo.cloud"
|
private const val TESTNET_ESPLORA_URL = "https://esplora.testnet.kuutamo.cloud"
|
||||||
|
|
||||||
class LiveMemoryWalletTest {
|
class LiveMemoryWalletTest {
|
||||||
|
private val descriptor: Descriptor = Descriptor(
|
||||||
|
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
||||||
|
Network.SIGNET
|
||||||
|
)
|
||||||
|
private val changeDescriptor: Descriptor = Descriptor(
|
||||||
|
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)",
|
||||||
|
Network.SIGNET
|
||||||
|
)
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testSyncedBalance() {
|
fun testSyncedBalance() {
|
||||||
@ -13,15 +21,14 @@ class LiveMemoryWalletTest {
|
|||||||
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
||||||
Network.SIGNET
|
Network.SIGNET
|
||||||
)
|
)
|
||||||
val wallet: Wallet = Wallet.newNoPersist(descriptor, null, Network.SIGNET)
|
val wallet: Wallet = Wallet(descriptor, changeDescriptor, Network.SIGNET)
|
||||||
val esploraClient: EsploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
val esploraClient: EsploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
||||||
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
||||||
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
|
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
|
||||||
wallet.applyUpdate(update)
|
wallet.applyUpdate(update)
|
||||||
wallet.commit()
|
println("Balance: ${wallet.balance().total.toSat()}")
|
||||||
println("Balance: ${wallet.getBalance().total.toSat()}")
|
|
||||||
|
|
||||||
assert(wallet.getBalance().total.toSat() > 0uL) {
|
assert(wallet.balance().total.toSat() > 0uL) {
|
||||||
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,7 +36,7 @@ class LiveMemoryWalletTest {
|
|||||||
val transactions = wallet.transactions().take(3)
|
val transactions = wallet.transactions().take(3)
|
||||||
for (tx in transactions) {
|
for (tx in transactions) {
|
||||||
val sentAndReceived = wallet.sentAndReceived(tx.transaction)
|
val sentAndReceived = wallet.sentAndReceived(tx.transaction)
|
||||||
println("Transaction: ${tx.transaction.txid()}")
|
println("Transaction: ${tx.transaction.computeTxid()}")
|
||||||
println("Sent ${sentAndReceived.sent.toSat()}")
|
println("Sent ${sentAndReceived.sent.toSat()}")
|
||||||
println("Received ${sentAndReceived.received.toSat()}")
|
println("Received ${sentAndReceived.received.toSat()}")
|
||||||
}
|
}
|
||||||
@ -37,15 +44,7 @@ class LiveMemoryWalletTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testScriptInspector() {
|
fun testScriptInspector() {
|
||||||
val descriptor: Descriptor = Descriptor(
|
val wallet: Wallet = Wallet(descriptor, changeDescriptor, Network.SIGNET)
|
||||||
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
|
||||||
Network.SIGNET
|
|
||||||
)
|
|
||||||
val changeDescriptor: Descriptor = Descriptor(
|
|
||||||
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)",
|
|
||||||
Network.SIGNET
|
|
||||||
)
|
|
||||||
val wallet: Wallet = Wallet.newNoPersist(descriptor, changeDescriptor, Network.SIGNET)
|
|
||||||
val esploraClient: EsploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
val esploraClient: EsploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
||||||
|
|
||||||
val scriptInspector: FullScriptInspector = FullScriptInspector()
|
val scriptInspector: FullScriptInspector = FullScriptInspector()
|
||||||
@ -53,15 +52,12 @@ class LiveMemoryWalletTest {
|
|||||||
val update = esploraClient.fullScan(fullScanRequest, 21uL, 1uL)
|
val update = esploraClient.fullScan(fullScanRequest, 21uL, 1uL)
|
||||||
|
|
||||||
wallet.applyUpdate(update)
|
wallet.applyUpdate(update)
|
||||||
wallet.commit()
|
println("Balance: ${wallet.balance().total.toSat()}")
|
||||||
println("Balance: ${wallet.getBalance().total.toSat()}")
|
|
||||||
|
|
||||||
assert(wallet.getBalance().total.toSat() > 0uL) {
|
assert(wallet.balance().total.toSat() > 0uL) {
|
||||||
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class FullScriptInspector: FullScanScriptInspector {
|
class FullScriptInspector: FullScanScriptInspector {
|
||||||
|
@ -6,27 +6,35 @@ private const val SIGNET_ESPLORA_URL = "http://signet.bitcoindevkit.net"
|
|||||||
private const val TESTNET_ESPLORA_URL = "https://esplora.testnet.kuutamo.cloud"
|
private const val TESTNET_ESPLORA_URL = "https://esplora.testnet.kuutamo.cloud"
|
||||||
|
|
||||||
class LiveTransactionTests {
|
class LiveTransactionTests {
|
||||||
|
private val descriptor: Descriptor = Descriptor(
|
||||||
|
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
||||||
|
Network.SIGNET
|
||||||
|
)
|
||||||
|
private val changeDescriptor: Descriptor = Descriptor(
|
||||||
|
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)",
|
||||||
|
Network.SIGNET
|
||||||
|
)
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testSyncedBalance() {
|
fun testSyncedBalance() {
|
||||||
val descriptor: Descriptor = Descriptor(
|
val descriptor: Descriptor = Descriptor(
|
||||||
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
||||||
Network.SIGNET
|
Network.SIGNET
|
||||||
)
|
)
|
||||||
val wallet: Wallet = Wallet.newNoPersist(descriptor, null, Network.SIGNET)
|
val wallet: Wallet = Wallet(descriptor, changeDescriptor, Network.SIGNET)
|
||||||
val esploraClient: EsploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
val esploraClient: EsploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
||||||
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
||||||
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
|
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
|
||||||
wallet.applyUpdate(update)
|
wallet.applyUpdate(update)
|
||||||
wallet.commit()
|
println("Wallet balance: ${wallet.balance().total.toSat()}")
|
||||||
println("Wallet balance: ${wallet.getBalance().total.toSat()}")
|
|
||||||
|
|
||||||
assert(wallet.getBalance().total.toSat() > 0uL) {
|
assert(wallet.balance().total.toSat() > 0uL) {
|
||||||
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
||||||
}
|
}
|
||||||
|
|
||||||
val transaction: Transaction = wallet.transactions().first().transaction
|
val transaction: Transaction = wallet.transactions().first().transaction
|
||||||
println("First transaction:")
|
println("First transaction:")
|
||||||
println("Txid: ${transaction.txid()}")
|
println("Txid: ${transaction.computeTxid()}")
|
||||||
println("Version: ${transaction.version()}")
|
println("Version: ${transaction.version()}")
|
||||||
println("Total size: ${transaction.totalSize()}")
|
println("Total size: ${transaction.totalSize()}")
|
||||||
println("Vsize: ${transaction.vsize()}")
|
println("Vsize: ${transaction.vsize()}")
|
||||||
|
@ -13,6 +13,14 @@ class LiveTxBuilderTest {
|
|||||||
val currentDirectory = System.getProperty("user.dir")
|
val currentDirectory = System.getProperty("user.dir")
|
||||||
"$currentDirectory/bdk_persistence.sqlite"
|
"$currentDirectory/bdk_persistence.sqlite"
|
||||||
}
|
}
|
||||||
|
private val descriptor: Descriptor = Descriptor(
|
||||||
|
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
||||||
|
Network.SIGNET
|
||||||
|
)
|
||||||
|
private val changeDescriptor: Descriptor = Descriptor(
|
||||||
|
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)",
|
||||||
|
Network.SIGNET
|
||||||
|
)
|
||||||
|
|
||||||
@AfterTest
|
@AfterTest
|
||||||
fun cleanup() {
|
fun cleanup() {
|
||||||
@ -25,15 +33,14 @@ class LiveTxBuilderTest {
|
|||||||
@Test
|
@Test
|
||||||
fun testTxBuilder() {
|
fun testTxBuilder() {
|
||||||
val descriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)", Network.TESTNET)
|
val descriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)", Network.TESTNET)
|
||||||
val wallet = Wallet(descriptor, null, persistenceFilePath, Network.SIGNET)
|
val wallet = Wallet(descriptor, changeDescriptor, Network.SIGNET)
|
||||||
val esploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
val esploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
||||||
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
||||||
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
|
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
|
||||||
wallet.applyUpdate(update)
|
wallet.applyUpdate(update)
|
||||||
wallet.commit()
|
println("Balance: ${wallet.balance().total.toSat()}")
|
||||||
println("Balance: ${wallet.getBalance().total.toSat()}")
|
|
||||||
|
|
||||||
assert(wallet.getBalance().total.toSat() > 0uL) {
|
assert(wallet.balance().total.toSat() > 0uL) {
|
||||||
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,17 +57,14 @@ class LiveTxBuilderTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun complexTxBuilder() {
|
fun complexTxBuilder() {
|
||||||
val externalDescriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)", Network.TESTNET)
|
val wallet = Wallet(descriptor, changeDescriptor, Network.SIGNET)
|
||||||
val changeDescriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)", Network.TESTNET)
|
|
||||||
val wallet = Wallet(externalDescriptor, changeDescriptor, persistenceFilePath, Network.SIGNET)
|
|
||||||
val esploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
val esploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
||||||
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
||||||
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
|
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
|
||||||
wallet.applyUpdate(update)
|
wallet.applyUpdate(update)
|
||||||
wallet.commit()
|
println("Balance: ${wallet.balance().total.toSat()}")
|
||||||
println("Balance: ${wallet.getBalance().total.toSat()}")
|
|
||||||
|
|
||||||
assert(wallet.getBalance().total.toSat() > 0uL) {
|
assert(wallet.balance().total.toSat() > 0uL) {
|
||||||
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,6 +13,14 @@ class LiveWalletTest {
|
|||||||
val currentDirectory = System.getProperty("user.dir")
|
val currentDirectory = System.getProperty("user.dir")
|
||||||
"$currentDirectory/bdk_persistence.sqlite"
|
"$currentDirectory/bdk_persistence.sqlite"
|
||||||
}
|
}
|
||||||
|
private val descriptor: Descriptor = Descriptor(
|
||||||
|
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
||||||
|
Network.SIGNET
|
||||||
|
)
|
||||||
|
private val changeDescriptor: Descriptor = Descriptor(
|
||||||
|
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)",
|
||||||
|
Network.SIGNET
|
||||||
|
)
|
||||||
|
|
||||||
@AfterTest
|
@AfterTest
|
||||||
fun cleanup() {
|
fun cleanup() {
|
||||||
@ -24,16 +32,14 @@ class LiveWalletTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testSyncedBalance() {
|
fun testSyncedBalance() {
|
||||||
val descriptor: Descriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)", Network.SIGNET)
|
val wallet: Wallet = Wallet(descriptor, changeDescriptor, Network.SIGNET)
|
||||||
val wallet: Wallet = Wallet(descriptor, null, persistenceFilePath, Network.SIGNET)
|
|
||||||
val esploraClient: EsploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
val esploraClient: EsploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
||||||
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
||||||
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
|
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
|
||||||
wallet.applyUpdate(update)
|
wallet.applyUpdate(update)
|
||||||
wallet.commit()
|
println("Balance: ${wallet.balance().total.toSat()}")
|
||||||
println("Balance: ${wallet.getBalance().total.toSat()}")
|
|
||||||
|
|
||||||
assert(wallet.getBalance().total.toSat() > 0uL) {
|
assert(wallet.balance().total.toSat() > 0uL) {
|
||||||
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,7 +47,7 @@ class LiveWalletTest {
|
|||||||
val transactions = wallet.transactions().take(3)
|
val transactions = wallet.transactions().take(3)
|
||||||
for (tx in transactions) {
|
for (tx in transactions) {
|
||||||
val sentAndReceived = wallet.sentAndReceived(tx.transaction)
|
val sentAndReceived = wallet.sentAndReceived(tx.transaction)
|
||||||
println("Transaction: ${tx.transaction.txid()}")
|
println("Transaction: ${tx.transaction.computeTxid()}")
|
||||||
println("Sent ${sentAndReceived.sent}")
|
println("Sent ${sentAndReceived.sent}")
|
||||||
println("Received ${sentAndReceived.received}")
|
println("Received ${sentAndReceived.received}")
|
||||||
}
|
}
|
||||||
@ -50,15 +56,14 @@ class LiveWalletTest {
|
|||||||
@Test
|
@Test
|
||||||
fun testBroadcastTransaction() {
|
fun testBroadcastTransaction() {
|
||||||
val descriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)", Network.SIGNET)
|
val descriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)", Network.SIGNET)
|
||||||
val wallet: Wallet = Wallet(descriptor, null, persistenceFilePath, Network.SIGNET)
|
val wallet: Wallet = Wallet(descriptor, changeDescriptor, Network.SIGNET)
|
||||||
val esploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
val esploraClient = EsploraClient(SIGNET_ESPLORA_URL)
|
||||||
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
val fullScanRequest: FullScanRequest = wallet.startFullScan()
|
||||||
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
|
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
|
||||||
wallet.applyUpdate(update)
|
wallet.applyUpdate(update)
|
||||||
wallet.commit()
|
println("Balance: ${wallet.balance().total.toSat()}")
|
||||||
println("Balance: ${wallet.getBalance().total.toSat()}")
|
|
||||||
|
|
||||||
assert(wallet.getBalance().total.toSat() > 0uL) {
|
assert(wallet.balance().total.toSat() > 0uL) {
|
||||||
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
"Wallet balance must be greater than 0! Please send funds to ${wallet.revealNextAddress(KeychainKind.EXTERNAL).address} and try again."
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,9 +81,9 @@ class LiveWalletTest {
|
|||||||
assertTrue(walletDidSign)
|
assertTrue(walletDidSign)
|
||||||
|
|
||||||
val tx: Transaction = psbt.extractTx()
|
val tx: Transaction = psbt.extractTx()
|
||||||
println("Txid is: ${tx.txid()}")
|
println("Txid is: ${tx.computeTxid()}")
|
||||||
|
|
||||||
val txFee: ULong = wallet.calculateFee(tx)
|
val txFee: Amount = wallet.calculateFee(tx)
|
||||||
println("Tx fee is: ${txFee}")
|
println("Tx fee is: ${txFee}")
|
||||||
|
|
||||||
val feeRate: FeeRate = wallet.calculateFeeRate(tx)
|
val feeRate: FeeRate = wallet.calculateFeeRate(tx)
|
||||||
|
@ -12,6 +12,14 @@ class OfflineWalletTest {
|
|||||||
val currentDirectory = System.getProperty("user.dir")
|
val currentDirectory = System.getProperty("user.dir")
|
||||||
"$currentDirectory/bdk_persistence.sqlite"
|
"$currentDirectory/bdk_persistence.sqlite"
|
||||||
}
|
}
|
||||||
|
private val descriptor: Descriptor = Descriptor(
|
||||||
|
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
||||||
|
Network.TESTNET
|
||||||
|
)
|
||||||
|
private val changeDescriptor: Descriptor = Descriptor(
|
||||||
|
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)",
|
||||||
|
Network.TESTNET
|
||||||
|
)
|
||||||
|
|
||||||
@AfterTest
|
@AfterTest
|
||||||
fun cleanup() {
|
fun cleanup() {
|
||||||
@ -32,14 +40,9 @@ class OfflineWalletTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testNewAddress() {
|
fun testNewAddress() {
|
||||||
val descriptor: Descriptor = Descriptor(
|
|
||||||
"wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)",
|
|
||||||
Network.TESTNET
|
|
||||||
)
|
|
||||||
val wallet: Wallet = Wallet(
|
val wallet: Wallet = Wallet(
|
||||||
descriptor,
|
descriptor,
|
||||||
null,
|
changeDescriptor,
|
||||||
persistenceFilePath,
|
|
||||||
Network.TESTNET
|
Network.TESTNET
|
||||||
)
|
)
|
||||||
val addressInfo: AddressInfo = wallet.revealNextAddress(KeychainKind.EXTERNAL)
|
val addressInfo: AddressInfo = wallet.revealNextAddress(KeychainKind.EXTERNAL)
|
||||||
@ -50,27 +53,22 @@ class OfflineWalletTest {
|
|||||||
assertFalse(addressInfo.address.isValidForNetwork(Network.BITCOIN), "Address is valid for bitcoin network, but it shouldn't be")
|
assertFalse(addressInfo.address.isValidForNetwork(Network.BITCOIN), "Address is valid for bitcoin network, but it shouldn't be")
|
||||||
|
|
||||||
assertEquals(
|
assertEquals(
|
||||||
expected = "tb1qzg4mckdh50nwdm9hkzq06528rsu73hjxxzem3e",
|
expected = "tb1qrnfslnrve9uncz9pzpvf83k3ukz22ljgees989",
|
||||||
actual = addressInfo.address.toString()
|
actual = addressInfo.address.toString()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testBalance() {
|
fun testBalance() {
|
||||||
val descriptor: Descriptor = Descriptor(
|
|
||||||
"wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)",
|
|
||||||
Network.TESTNET
|
|
||||||
)
|
|
||||||
val wallet: Wallet = Wallet(
|
val wallet: Wallet = Wallet(
|
||||||
descriptor,
|
descriptor,
|
||||||
null,
|
changeDescriptor,
|
||||||
persistenceFilePath,
|
|
||||||
Network.TESTNET
|
Network.TESTNET
|
||||||
)
|
)
|
||||||
|
|
||||||
assertEquals(
|
assertEquals(
|
||||||
expected = 0uL,
|
expected = 0uL,
|
||||||
actual = wallet.getBalance().total.toSat()
|
actual = wallet.balance().total.toSat()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,15 @@ import os
|
|||||||
SIGNET_ESPLORA_URL = "http://signet.bitcoindevkit.net"
|
SIGNET_ESPLORA_URL = "http://signet.bitcoindevkit.net"
|
||||||
TESTNET_ESPLORA_URL = "https://esplora.testnet.kuutamo.cloud"
|
TESTNET_ESPLORA_URL = "https://esplora.testnet.kuutamo.cloud"
|
||||||
|
|
||||||
|
descriptor: bdk.Descriptor = bdk.Descriptor(
|
||||||
|
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
||||||
|
bdk.Network.TESTNET
|
||||||
|
)
|
||||||
|
change_descriptor: bdk.Descriptor = bdk.Descriptor(
|
||||||
|
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)",
|
||||||
|
bdk.Network.TESTNET
|
||||||
|
)
|
||||||
|
|
||||||
class LiveTxBuilderTest(unittest.TestCase):
|
class LiveTxBuilderTest(unittest.TestCase):
|
||||||
|
|
||||||
def tearDown(self) -> None:
|
def tearDown(self) -> None:
|
||||||
@ -18,8 +27,7 @@ class LiveTxBuilderTest(unittest.TestCase):
|
|||||||
)
|
)
|
||||||
wallet: bdk.Wallet = bdk.Wallet(
|
wallet: bdk.Wallet = bdk.Wallet(
|
||||||
descriptor,
|
descriptor,
|
||||||
None,
|
change_descriptor,
|
||||||
"./bdk_persistence.sqlite",
|
|
||||||
bdk.Network.SIGNET
|
bdk.Network.SIGNET
|
||||||
)
|
)
|
||||||
esplora_client: bdk.EsploraClient = bdk.EsploraClient(url = SIGNET_ESPLORA_URL)
|
esplora_client: bdk.EsploraClient = bdk.EsploraClient(url = SIGNET_ESPLORA_URL)
|
||||||
@ -30,10 +38,9 @@ class LiveTxBuilderTest(unittest.TestCase):
|
|||||||
parallel_requests=1
|
parallel_requests=1
|
||||||
)
|
)
|
||||||
wallet.apply_update(update)
|
wallet.apply_update(update)
|
||||||
wallet.commit()
|
|
||||||
|
|
||||||
self.assertGreater(
|
self.assertGreater(
|
||||||
wallet.get_balance().total.to_sat(),
|
wallet.balance().total.to_sat(),
|
||||||
0,
|
0,
|
||||||
f"Wallet balance must be greater than 0! Please send funds to {wallet.reveal_next_address(bdk.KeychainKind.EXTERNAL).address} and try again."
|
f"Wallet balance must be greater than 0! Please send funds to {wallet.reveal_next_address(bdk.KeychainKind.EXTERNAL).address} and try again."
|
||||||
)
|
)
|
||||||
@ -48,14 +55,9 @@ class LiveTxBuilderTest(unittest.TestCase):
|
|||||||
self.assertTrue(psbt.serialize().startswith("cHNi"), "The PSBT should start with cHNi")
|
self.assertTrue(psbt.serialize().startswith("cHNi"), "The PSBT should start with cHNi")
|
||||||
|
|
||||||
def complex_tx_builder(self):
|
def complex_tx_builder(self):
|
||||||
descriptor: bdk.Descriptor = bdk.Descriptor(
|
|
||||||
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
|
||||||
bdk.Network.SIGNET
|
|
||||||
)
|
|
||||||
wallet: bdk.Wallet = bdk.Wallet(
|
wallet: bdk.Wallet = bdk.Wallet(
|
||||||
descriptor,
|
descriptor,
|
||||||
None,
|
change_descriptor,
|
||||||
"./bdk_persistence.sqlite",
|
|
||||||
bdk.Network.SIGNET
|
bdk.Network.SIGNET
|
||||||
)
|
)
|
||||||
esplora_client: bdk.EsploraClient = bdk.EsploraClient(url = SIGNET_ESPLORA_URL)
|
esplora_client: bdk.EsploraClient = bdk.EsploraClient(url = SIGNET_ESPLORA_URL)
|
||||||
@ -66,10 +68,9 @@ class LiveTxBuilderTest(unittest.TestCase):
|
|||||||
parallel_requests=1
|
parallel_requests=1
|
||||||
)
|
)
|
||||||
wallet.apply_update(update)
|
wallet.apply_update(update)
|
||||||
wallet.commit()
|
|
||||||
|
|
||||||
self.assertGreater(
|
self.assertGreater(
|
||||||
wallet.get_balance().total.to_sat(),
|
wallet.balance().total.to_sat(),
|
||||||
0,
|
0,
|
||||||
f"Wallet balance must be greater than 0! Please send funds to {wallet.reveal_next_address(bdk.KeychainKind.EXTERNAL).address} and try again."
|
f"Wallet balance must be greater than 0! Please send funds to {wallet.reveal_next_address(bdk.KeychainKind.EXTERNAL).address} and try again."
|
||||||
)
|
)
|
||||||
|
@ -5,6 +5,15 @@ import os
|
|||||||
SIGNET_ESPLORA_URL = "http://signet.bitcoindevkit.net"
|
SIGNET_ESPLORA_URL = "http://signet.bitcoindevkit.net"
|
||||||
TESTNET_ESPLORA_URL = "https://esplora.testnet.kuutamo.cloud"
|
TESTNET_ESPLORA_URL = "https://esplora.testnet.kuutamo.cloud"
|
||||||
|
|
||||||
|
descriptor: bdk.Descriptor = bdk.Descriptor(
|
||||||
|
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
||||||
|
bdk.Network.TESTNET
|
||||||
|
)
|
||||||
|
change_descriptor: bdk.Descriptor = bdk.Descriptor(
|
||||||
|
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)",
|
||||||
|
bdk.Network.TESTNET
|
||||||
|
)
|
||||||
|
|
||||||
class LiveWalletTest(unittest.TestCase):
|
class LiveWalletTest(unittest.TestCase):
|
||||||
|
|
||||||
def tearDown(self) -> None:
|
def tearDown(self) -> None:
|
||||||
@ -12,14 +21,9 @@ class LiveWalletTest(unittest.TestCase):
|
|||||||
os.remove("./bdk_persistence.sqlite")
|
os.remove("./bdk_persistence.sqlite")
|
||||||
|
|
||||||
def test_synced_balance(self):
|
def test_synced_balance(self):
|
||||||
descriptor: bdk.Descriptor = bdk.Descriptor(
|
|
||||||
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
|
||||||
bdk.Network.SIGNET
|
|
||||||
)
|
|
||||||
wallet: bdk.Wallet = bdk.Wallet(
|
wallet: bdk.Wallet = bdk.Wallet(
|
||||||
descriptor,
|
descriptor,
|
||||||
None,
|
change_descriptor,
|
||||||
"./bdk_persistence.sqlite",
|
|
||||||
bdk.Network.SIGNET
|
bdk.Network.SIGNET
|
||||||
)
|
)
|
||||||
esplora_client: bdk.EsploraClient = bdk.EsploraClient(url = SIGNET_ESPLORA_URL)
|
esplora_client: bdk.EsploraClient = bdk.EsploraClient(url = SIGNET_ESPLORA_URL)
|
||||||
@ -30,10 +34,9 @@ class LiveWalletTest(unittest.TestCase):
|
|||||||
parallel_requests=1
|
parallel_requests=1
|
||||||
)
|
)
|
||||||
wallet.apply_update(update)
|
wallet.apply_update(update)
|
||||||
wallet.commit()
|
|
||||||
|
|
||||||
self.assertGreater(
|
self.assertGreater(
|
||||||
wallet.get_balance().total.to_sat(),
|
wallet.balance().total.to_sat(),
|
||||||
0,
|
0,
|
||||||
f"Wallet balance must be greater than 0! Please send funds to {wallet.reveal_next_address(bdk.KeychainKind.EXTERNAL).address} and try again."
|
f"Wallet balance must be greater than 0! Please send funds to {wallet.reveal_next_address(bdk.KeychainKind.EXTERNAL).address} and try again."
|
||||||
)
|
)
|
||||||
@ -42,20 +45,15 @@ class LiveWalletTest(unittest.TestCase):
|
|||||||
transactions = wallet.transactions()[:3]
|
transactions = wallet.transactions()[:3]
|
||||||
for tx in transactions:
|
for tx in transactions:
|
||||||
sent_and_received = wallet.sent_and_received(tx.transaction)
|
sent_and_received = wallet.sent_and_received(tx.transaction)
|
||||||
print(f"Transaction: {tx.transaction.txid()}")
|
print(f"Transaction: {tx.transaction.compute_txid()}")
|
||||||
print(f"Sent {sent_and_received.sent.to_sat()}")
|
print(f"Sent {sent_and_received.sent.to_sat()}")
|
||||||
print(f"Received {sent_and_received.received.to_sat()}")
|
print(f"Received {sent_and_received.received.to_sat()}")
|
||||||
|
|
||||||
|
|
||||||
def test_broadcast_transaction(self):
|
def test_broadcast_transaction(self):
|
||||||
descriptor: bdk.Descriptor = bdk.Descriptor(
|
|
||||||
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
|
||||||
bdk.Network.SIGNET
|
|
||||||
)
|
|
||||||
wallet: bdk.Wallet = bdk.Wallet(
|
wallet: bdk.Wallet = bdk.Wallet(
|
||||||
descriptor,
|
descriptor,
|
||||||
None,
|
change_descriptor,
|
||||||
"./bdk_persistence.sqlite",
|
|
||||||
bdk.Network.SIGNET
|
bdk.Network.SIGNET
|
||||||
)
|
)
|
||||||
esplora_client: bdk.EsploraClient = bdk.EsploraClient(url = SIGNET_ESPLORA_URL)
|
esplora_client: bdk.EsploraClient = bdk.EsploraClient(url = SIGNET_ESPLORA_URL)
|
||||||
@ -66,10 +64,9 @@ class LiveWalletTest(unittest.TestCase):
|
|||||||
parallel_requests=1
|
parallel_requests=1
|
||||||
)
|
)
|
||||||
wallet.apply_update(update)
|
wallet.apply_update(update)
|
||||||
wallet.commit()
|
|
||||||
|
|
||||||
self.assertGreater(
|
self.assertGreater(
|
||||||
wallet.get_balance().total.to_sat(),
|
wallet.balance().total.to_sat(),
|
||||||
0,
|
0,
|
||||||
f"Wallet balance must be greater than 0! Please send funds to {wallet.reveal_next_address(bdk.KeychainKind.EXTERNAL).address} and try again."
|
f"Wallet balance must be greater than 0! Please send funds to {wallet.reveal_next_address(bdk.KeychainKind.EXTERNAL).address} and try again."
|
||||||
)
|
)
|
||||||
@ -85,9 +82,9 @@ class LiveWalletTest(unittest.TestCase):
|
|||||||
walletDidSign = wallet.sign(psbt)
|
walletDidSign = wallet.sign(psbt)
|
||||||
self.assertTrue(walletDidSign)
|
self.assertTrue(walletDidSign)
|
||||||
tx = psbt.extract_tx()
|
tx = psbt.extract_tx()
|
||||||
print(f"Transaction Id: {tx.txid()}")
|
print(f"Transaction Id: {tx.compute_txid()}")
|
||||||
fee = wallet.calculate_fee(tx)
|
fee = wallet.calculate_fee(tx)
|
||||||
print(f"Transaction Fee: {fee}")
|
print(f"Transaction Fee: {fee.to_sat()}")
|
||||||
fee_rate = wallet.calculate_fee_rate(tx)
|
fee_rate = wallet.calculate_fee_rate(tx)
|
||||||
print(f"Transaction Fee Rate: {fee_rate.to_sat_per_vb_ceil()} sat/vB")
|
print(f"Transaction Fee Rate: {fee_rate.to_sat_per_vb_ceil()} sat/vB")
|
||||||
|
|
||||||
|
@ -2,6 +2,15 @@ import bdkpython as bdk
|
|||||||
import unittest
|
import unittest
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
descriptor: bdk.Descriptor = bdk.Descriptor(
|
||||||
|
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
||||||
|
bdk.Network.TESTNET
|
||||||
|
)
|
||||||
|
change_descriptor: bdk.Descriptor = bdk.Descriptor(
|
||||||
|
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)",
|
||||||
|
bdk.Network.TESTNET
|
||||||
|
)
|
||||||
|
|
||||||
class OfflineWalletTest(unittest.TestCase):
|
class OfflineWalletTest(unittest.TestCase):
|
||||||
|
|
||||||
def tearDown(self) -> None:
|
def tearDown(self) -> None:
|
||||||
@ -9,14 +18,9 @@ class OfflineWalletTest(unittest.TestCase):
|
|||||||
os.remove("./bdk_persistence.sqlite")
|
os.remove("./bdk_persistence.sqlite")
|
||||||
|
|
||||||
def test_new_address(self):
|
def test_new_address(self):
|
||||||
descriptor: bdk.Descriptor = bdk.Descriptor(
|
|
||||||
"wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)",
|
|
||||||
bdk.Network.TESTNET
|
|
||||||
)
|
|
||||||
wallet: Wallet = bdk.Wallet(
|
wallet: Wallet = bdk.Wallet(
|
||||||
descriptor,
|
descriptor,
|
||||||
None,
|
change_descriptor,
|
||||||
"./bdk_persistence.sqlite",
|
|
||||||
bdk.Network.TESTNET
|
bdk.Network.TESTNET
|
||||||
)
|
)
|
||||||
address_info: bdk.AddressInfo = wallet.reveal_next_address(bdk.KeychainKind.EXTERNAL)
|
address_info: bdk.AddressInfo = wallet.reveal_next_address(bdk.KeychainKind.EXTERNAL)
|
||||||
@ -26,21 +30,16 @@ class OfflineWalletTest(unittest.TestCase):
|
|||||||
self.assertFalse(address_info.address.is_valid_for_network(bdk.Network.REGTEST), "Address is valid for regtest network, but it shouldn't be")
|
self.assertFalse(address_info.address.is_valid_for_network(bdk.Network.REGTEST), "Address is valid for regtest network, but it shouldn't be")
|
||||||
self.assertFalse(address_info.address.is_valid_for_network(bdk.Network.BITCOIN), "Address is valid for bitcoin network, but it shouldn't be")
|
self.assertFalse(address_info.address.is_valid_for_network(bdk.Network.BITCOIN), "Address is valid for bitcoin network, but it shouldn't be")
|
||||||
|
|
||||||
self.assertEqual("tb1qzg4mckdh50nwdm9hkzq06528rsu73hjxxzem3e", address_info.address.__str__())
|
self.assertEqual("tb1qrnfslnrve9uncz9pzpvf83k3ukz22ljgees989", address_info.address.__str__())
|
||||||
|
|
||||||
def test_balance(self):
|
def test_balance(self):
|
||||||
descriptor: bdk.Descriptor = bdk.Descriptor(
|
|
||||||
"wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)",
|
|
||||||
bdk.Network.TESTNET
|
|
||||||
)
|
|
||||||
wallet: bdk.Wallet = bdk.Wallet(
|
wallet: bdk.Wallet = bdk.Wallet(
|
||||||
descriptor,
|
descriptor,
|
||||||
None,
|
change_descriptor,
|
||||||
"./bdk_persistence.sqlite",
|
|
||||||
bdk.Network.TESTNET
|
bdk.Network.TESTNET
|
||||||
)
|
)
|
||||||
|
|
||||||
self.assertEqual(wallet.get_balance().total.to_sat(), 0)
|
self.assertEqual(wallet.balance().total.to_sat(), 0)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
@ -2,17 +2,21 @@ import XCTest
|
|||||||
@testable import BitcoinDevKit
|
@testable import BitcoinDevKit
|
||||||
|
|
||||||
private let SIGNET_ELECTRUM_URL = "ssl://mempool.space:60602"
|
private let SIGNET_ELECTRUM_URL = "ssl://mempool.space:60602"
|
||||||
|
private let descriptor = try! Descriptor(
|
||||||
final class LiveElectrumClientTests: XCTestCase {
|
|
||||||
func testSyncedBalance() throws {
|
|
||||||
let descriptor = try Descriptor(
|
|
||||||
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
||||||
network: Network.signet
|
network: Network.signet
|
||||||
)
|
)
|
||||||
let wallet = try Wallet.newNoPersist(
|
private let changeDescriptor = try! Descriptor(
|
||||||
|
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)",
|
||||||
|
network: Network.signet
|
||||||
|
)
|
||||||
|
|
||||||
|
final class LiveElectrumClientTests: XCTestCase {
|
||||||
|
func testSyncedBalance() throws {
|
||||||
|
let wallet = try Wallet(
|
||||||
descriptor: descriptor,
|
descriptor: descriptor,
|
||||||
changeDescriptor: nil,
|
changeDescriptor: changeDescriptor,
|
||||||
network: .signet
|
network: Network.signet
|
||||||
)
|
)
|
||||||
let electrumClient: ElectrumClient = try ElectrumClient(url: SIGNET_ELECTRUM_URL)
|
let electrumClient: ElectrumClient = try ElectrumClient(url: SIGNET_ELECTRUM_URL)
|
||||||
let fullScanRequest: FullScanRequest = wallet.startFullScan()
|
let fullScanRequest: FullScanRequest = wallet.startFullScan()
|
||||||
@ -23,11 +27,10 @@ final class LiveElectrumClientTests: XCTestCase {
|
|||||||
fetchPrevTxouts: false
|
fetchPrevTxouts: false
|
||||||
)
|
)
|
||||||
try wallet.applyUpdate(update: update)
|
try wallet.applyUpdate(update: update)
|
||||||
let _ = try wallet.commit()
|
let address = wallet.revealNextAddress(keychain: KeychainKind.external).address
|
||||||
let address = try wallet.revealNextAddress(keychain: KeychainKind.external).address
|
|
||||||
|
|
||||||
XCTAssertGreaterThan(
|
XCTAssertGreaterThan(
|
||||||
wallet.getBalance().total.toSat(),
|
wallet.balance().total.toSat(),
|
||||||
UInt64(0),
|
UInt64(0),
|
||||||
"Wallet must have positive balance, please send funds to \(address)"
|
"Wallet must have positive balance, please send funds to \(address)"
|
||||||
)
|
)
|
||||||
@ -36,7 +39,7 @@ final class LiveElectrumClientTests: XCTestCase {
|
|||||||
let transactions = wallet.transactions().prefix(3)
|
let transactions = wallet.transactions().prefix(3)
|
||||||
for tx in transactions {
|
for tx in transactions {
|
||||||
let sentAndReceived = wallet.sentAndReceived(tx: tx.transaction)
|
let sentAndReceived = wallet.sentAndReceived(tx: tx.transaction)
|
||||||
print("Transaction: \(tx.transaction.txid())")
|
print("Transaction: \(tx.transaction.computeTxid())")
|
||||||
print("Sent \(sentAndReceived.sent.toSat())")
|
print("Sent \(sentAndReceived.sent.toSat())")
|
||||||
print("Received \(sentAndReceived.received.toSat())")
|
print("Received \(sentAndReceived.received.toSat())")
|
||||||
}
|
}
|
||||||
|
@ -3,17 +3,21 @@ import XCTest
|
|||||||
|
|
||||||
private let SIGNET_ESPLORA_URL = "http://signet.bitcoindevkit.net"
|
private let SIGNET_ESPLORA_URL = "http://signet.bitcoindevkit.net"
|
||||||
private let TESTNET_ESPLORA_URL = "https://esplora.testnet.kuutamo.cloud"
|
private let TESTNET_ESPLORA_URL = "https://esplora.testnet.kuutamo.cloud"
|
||||||
|
private let descriptor = try! Descriptor(
|
||||||
|
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
||||||
|
network: Network.signet
|
||||||
|
)
|
||||||
|
private let changeDescriptor = try! Descriptor(
|
||||||
|
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)",
|
||||||
|
network: Network.signet
|
||||||
|
)
|
||||||
|
|
||||||
final class LiveMemoryWalletTests: XCTestCase {
|
final class LiveMemoryWalletTests: XCTestCase {
|
||||||
|
|
||||||
func testSyncedBalance() throws {
|
func testSyncedBalance() throws {
|
||||||
let descriptor = try Descriptor(
|
let wallet = try Wallet(
|
||||||
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
|
||||||
network: Network.signet
|
|
||||||
)
|
|
||||||
let wallet = try Wallet.newNoPersist(
|
|
||||||
descriptor: descriptor,
|
descriptor: descriptor,
|
||||||
changeDescriptor: nil,
|
changeDescriptor: changeDescriptor,
|
||||||
network: .signet
|
network: .signet
|
||||||
)
|
)
|
||||||
let esploraClient = EsploraClient(url: SIGNET_ESPLORA_URL)
|
let esploraClient = EsploraClient(url: SIGNET_ESPLORA_URL)
|
||||||
@ -24,11 +28,10 @@ final class LiveMemoryWalletTests: XCTestCase {
|
|||||||
parallelRequests: 1
|
parallelRequests: 1
|
||||||
)
|
)
|
||||||
try wallet.applyUpdate(update: update)
|
try wallet.applyUpdate(update: update)
|
||||||
let _ = try wallet.commit()
|
let address = wallet.revealNextAddress(keychain: KeychainKind.external).address.description
|
||||||
let address = try wallet.revealNextAddress(keychain: KeychainKind.external).address.description
|
|
||||||
|
|
||||||
XCTAssertGreaterThan(
|
XCTAssertGreaterThan(
|
||||||
wallet.getBalance().total.toSat(),
|
wallet.balance().total.toSat(),
|
||||||
UInt64(0),
|
UInt64(0),
|
||||||
"Wallet must have positive balance, please send funds to \(address)"
|
"Wallet must have positive balance, please send funds to \(address)"
|
||||||
)
|
)
|
||||||
@ -37,22 +40,14 @@ final class LiveMemoryWalletTests: XCTestCase {
|
|||||||
let transactions = wallet.transactions().prefix(3)
|
let transactions = wallet.transactions().prefix(3)
|
||||||
for tx in transactions {
|
for tx in transactions {
|
||||||
let sentAndReceived = wallet.sentAndReceived(tx: tx.transaction)
|
let sentAndReceived = wallet.sentAndReceived(tx: tx.transaction)
|
||||||
print("Transaction: \(tx.transaction.txid())")
|
print("Transaction: \(tx.transaction.computeTxid())")
|
||||||
print("Sent \(sentAndReceived.sent.toSat())")
|
print("Sent \(sentAndReceived.sent.toSat())")
|
||||||
print("Received \(sentAndReceived.received.toSat())")
|
print("Received \(sentAndReceived.received.toSat())")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func testScriptInspector() throws {
|
func testScriptInspector() throws {
|
||||||
let descriptor = try Descriptor(
|
let wallet = try Wallet(
|
||||||
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
|
||||||
network: Network.signet
|
|
||||||
)
|
|
||||||
let changeDescriptor = try Descriptor(
|
|
||||||
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)",
|
|
||||||
network: Network.signet
|
|
||||||
)
|
|
||||||
let wallet = try Wallet.newNoPersist(
|
|
||||||
descriptor: descriptor,
|
descriptor: descriptor,
|
||||||
changeDescriptor: changeDescriptor,
|
changeDescriptor: changeDescriptor,
|
||||||
network: .signet
|
network: .signet
|
||||||
@ -67,11 +62,10 @@ final class LiveMemoryWalletTests: XCTestCase {
|
|||||||
parallelRequests: 1
|
parallelRequests: 1
|
||||||
)
|
)
|
||||||
try wallet.applyUpdate(update: update)
|
try wallet.applyUpdate(update: update)
|
||||||
let _ = try wallet.commit()
|
let address = wallet.revealNextAddress(keychain: KeychainKind.external).address.description
|
||||||
let address = try wallet.revealNextAddress(keychain: KeychainKind.external).address.description
|
|
||||||
|
|
||||||
XCTAssertGreaterThan(
|
XCTAssertGreaterThan(
|
||||||
wallet.getBalance().total.toSat(),
|
wallet.balance().total.toSat(),
|
||||||
UInt64(0),
|
UInt64(0),
|
||||||
"Wallet must have positive balance, please send funds to \(address)"
|
"Wallet must have positive balance, please send funds to \(address)"
|
||||||
)
|
)
|
||||||
|
@ -3,16 +3,20 @@ import XCTest
|
|||||||
|
|
||||||
private let SIGNET_ESPLORA_URL = "http://signet.bitcoindevkit.net"
|
private let SIGNET_ESPLORA_URL = "http://signet.bitcoindevkit.net"
|
||||||
private let TESTNET_ESPLORA_URL = "https://esplora.testnet.kuutamo.cloud"
|
private let TESTNET_ESPLORA_URL = "https://esplora.testnet.kuutamo.cloud"
|
||||||
|
private let descriptor = try! Descriptor(
|
||||||
final class LiveTransactionTests: XCTestCase {
|
|
||||||
func testSyncedBalance() throws {
|
|
||||||
let descriptor = try Descriptor(
|
|
||||||
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
||||||
network: Network.signet
|
network: Network.signet
|
||||||
)
|
)
|
||||||
let wallet = try Wallet.newNoPersist(
|
private let changeDescriptor = try! Descriptor(
|
||||||
|
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)",
|
||||||
|
network: Network.signet
|
||||||
|
)
|
||||||
|
|
||||||
|
final class LiveTransactionTests: XCTestCase {
|
||||||
|
func testSyncedBalance() throws {
|
||||||
|
let wallet = try Wallet(
|
||||||
descriptor: descriptor,
|
descriptor: descriptor,
|
||||||
changeDescriptor: nil,
|
changeDescriptor: changeDescriptor,
|
||||||
network: .signet
|
network: .signet
|
||||||
)
|
)
|
||||||
let esploraClient = EsploraClient(url: SIGNET_ESPLORA_URL)
|
let esploraClient = EsploraClient(url: SIGNET_ESPLORA_URL)
|
||||||
@ -23,11 +27,10 @@ final class LiveTransactionTests: XCTestCase {
|
|||||||
parallelRequests: 1
|
parallelRequests: 1
|
||||||
)
|
)
|
||||||
try wallet.applyUpdate(update: update)
|
try wallet.applyUpdate(update: update)
|
||||||
let _ = try wallet.commit()
|
let address = wallet.revealNextAddress(keychain: KeychainKind.external).address.description
|
||||||
let address = try wallet.revealNextAddress(keychain: KeychainKind.external).address.description
|
|
||||||
|
|
||||||
XCTAssertGreaterThan(
|
XCTAssertGreaterThan(
|
||||||
wallet.getBalance().total.toSat(),
|
wallet.balance().total.toSat(),
|
||||||
UInt64(0),
|
UInt64(0),
|
||||||
"Wallet must have positive balance, please send funds to \(address)"
|
"Wallet must have positive balance, please send funds to \(address)"
|
||||||
)
|
)
|
||||||
@ -37,7 +40,7 @@ final class LiveTransactionTests: XCTestCase {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
print("First transaction:")
|
print("First transaction:")
|
||||||
print("Txid: \(transaction.txid())")
|
print("Txid: \(transaction.computeTxid())")
|
||||||
print("Version: \(transaction.version())")
|
print("Version: \(transaction.version())")
|
||||||
print("Total size: \(transaction.totalSize())")
|
print("Total size: \(transaction.totalSize())")
|
||||||
print("Vsize: \(transaction.vsize())")
|
print("Vsize: \(transaction.vsize())")
|
||||||
|
@ -3,6 +3,14 @@ import XCTest
|
|||||||
|
|
||||||
private let SIGNET_ESPLORA_URL = "http://signet.bitcoindevkit.net"
|
private let SIGNET_ESPLORA_URL = "http://signet.bitcoindevkit.net"
|
||||||
private let TESTNET_ESPLORA_URL = "https://esplora.testnet.kuutamo.cloud"
|
private let TESTNET_ESPLORA_URL = "https://esplora.testnet.kuutamo.cloud"
|
||||||
|
private let descriptor = try! Descriptor(
|
||||||
|
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
||||||
|
network: Network.signet
|
||||||
|
)
|
||||||
|
private let changeDescriptor = try! Descriptor(
|
||||||
|
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)",
|
||||||
|
network: Network.signet
|
||||||
|
)
|
||||||
|
|
||||||
final class LiveTxBuilderTests: XCTestCase {
|
final class LiveTxBuilderTests: XCTestCase {
|
||||||
var dbFilePath: URL!
|
var dbFilePath: URL!
|
||||||
@ -27,14 +35,9 @@ final class LiveTxBuilderTests: XCTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func testTxBuilder() throws {
|
func testTxBuilder() throws {
|
||||||
let descriptor = try Descriptor(
|
|
||||||
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
|
||||||
network: Network.signet
|
|
||||||
)
|
|
||||||
let wallet = try Wallet(
|
let wallet = try Wallet(
|
||||||
descriptor: descriptor,
|
descriptor: descriptor,
|
||||||
changeDescriptor: nil,
|
changeDescriptor: changeDescriptor,
|
||||||
persistenceBackendPath: dbFilePath.path,
|
|
||||||
network: .signet
|
network: .signet
|
||||||
)
|
)
|
||||||
let esploraClient = EsploraClient(url: SIGNET_ESPLORA_URL)
|
let esploraClient = EsploraClient(url: SIGNET_ESPLORA_URL)
|
||||||
@ -45,11 +48,10 @@ final class LiveTxBuilderTests: XCTestCase {
|
|||||||
parallelRequests: 1
|
parallelRequests: 1
|
||||||
)
|
)
|
||||||
try wallet.applyUpdate(update: update)
|
try wallet.applyUpdate(update: update)
|
||||||
let _ = try wallet.commit()
|
let address = wallet.revealNextAddress(keychain: KeychainKind.external).address.description
|
||||||
let address = try wallet.revealNextAddress(keychain: KeychainKind.external).address.description
|
|
||||||
|
|
||||||
XCTAssertGreaterThan(
|
XCTAssertGreaterThan(
|
||||||
wallet.getBalance().total.toSat(),
|
wallet.balance().total.toSat(),
|
||||||
UInt64(0),
|
UInt64(0),
|
||||||
"Wallet must have positive balance, please send funds to \(address)"
|
"Wallet must have positive balance, please send funds to \(address)"
|
||||||
)
|
)
|
||||||
@ -76,7 +78,6 @@ final class LiveTxBuilderTests: XCTestCase {
|
|||||||
let wallet = try Wallet(
|
let wallet = try Wallet(
|
||||||
descriptor: descriptor,
|
descriptor: descriptor,
|
||||||
changeDescriptor: changeDescriptor,
|
changeDescriptor: changeDescriptor,
|
||||||
persistenceBackendPath: dbFilePath.path,
|
|
||||||
network: .signet
|
network: .signet
|
||||||
)
|
)
|
||||||
let esploraClient = EsploraClient(url: SIGNET_ESPLORA_URL)
|
let esploraClient = EsploraClient(url: SIGNET_ESPLORA_URL)
|
||||||
@ -87,11 +88,10 @@ final class LiveTxBuilderTests: XCTestCase {
|
|||||||
parallelRequests: 1
|
parallelRequests: 1
|
||||||
)
|
)
|
||||||
try wallet.applyUpdate(update: update)
|
try wallet.applyUpdate(update: update)
|
||||||
let _ = try wallet.commit()
|
let address = wallet.revealNextAddress(keychain: KeychainKind.external).address.description
|
||||||
let address = try wallet.revealNextAddress(keychain: KeychainKind.external).address.description
|
|
||||||
|
|
||||||
XCTAssertGreaterThan(
|
XCTAssertGreaterThan(
|
||||||
wallet.getBalance().total.toSat(),
|
wallet.balance().total.toSat(),
|
||||||
UInt64(0),
|
UInt64(0),
|
||||||
"Wallet must have positive balance, please send funds to \(address)"
|
"Wallet must have positive balance, please send funds to \(address)"
|
||||||
)
|
)
|
||||||
|
@ -3,6 +3,14 @@ import XCTest
|
|||||||
|
|
||||||
private let SIGNET_ESPLORA_URL = "http://signet.bitcoindevkit.net"
|
private let SIGNET_ESPLORA_URL = "http://signet.bitcoindevkit.net"
|
||||||
private let TESTNET_ESPLORA_URL = "https://esplora.testnet.kuutamo.cloud"
|
private let TESTNET_ESPLORA_URL = "https://esplora.testnet.kuutamo.cloud"
|
||||||
|
private let descriptor = try! Descriptor(
|
||||||
|
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
||||||
|
network: Network.signet
|
||||||
|
)
|
||||||
|
private let changeDescriptor = try! Descriptor(
|
||||||
|
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)",
|
||||||
|
network: Network.signet
|
||||||
|
)
|
||||||
|
|
||||||
final class LiveWalletTests: XCTestCase {
|
final class LiveWalletTests: XCTestCase {
|
||||||
var dbFilePath: URL!
|
var dbFilePath: URL!
|
||||||
@ -27,14 +35,9 @@ final class LiveWalletTests: XCTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func testSyncedBalance() throws {
|
func testSyncedBalance() throws {
|
||||||
let descriptor = try Descriptor(
|
|
||||||
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
|
||||||
network: Network.signet
|
|
||||||
)
|
|
||||||
let wallet = try Wallet(
|
let wallet = try Wallet(
|
||||||
descriptor: descriptor,
|
descriptor: descriptor,
|
||||||
changeDescriptor: nil,
|
changeDescriptor: changeDescriptor,
|
||||||
persistenceBackendPath: dbFilePath.path,
|
|
||||||
network: .signet
|
network: .signet
|
||||||
)
|
)
|
||||||
let esploraClient = EsploraClient(url: SIGNET_ESPLORA_URL)
|
let esploraClient = EsploraClient(url: SIGNET_ESPLORA_URL)
|
||||||
@ -45,11 +48,10 @@ final class LiveWalletTests: XCTestCase {
|
|||||||
parallelRequests: 1
|
parallelRequests: 1
|
||||||
)
|
)
|
||||||
try wallet.applyUpdate(update: update)
|
try wallet.applyUpdate(update: update)
|
||||||
let _ = try wallet.commit()
|
let address = wallet.revealNextAddress(keychain: KeychainKind.external).address.description
|
||||||
let address = try wallet.revealNextAddress(keychain: KeychainKind.external).address.description
|
|
||||||
|
|
||||||
XCTAssertGreaterThan(
|
XCTAssertGreaterThan(
|
||||||
wallet.getBalance().total.toSat(),
|
wallet.balance().total.toSat(),
|
||||||
UInt64(0),
|
UInt64(0),
|
||||||
"Wallet must have positive balance, please send funds to \(address)"
|
"Wallet must have positive balance, please send funds to \(address)"
|
||||||
)
|
)
|
||||||
@ -58,21 +60,16 @@ final class LiveWalletTests: XCTestCase {
|
|||||||
let transactions = wallet.transactions().prefix(3)
|
let transactions = wallet.transactions().prefix(3)
|
||||||
for tx in transactions {
|
for tx in transactions {
|
||||||
let sentAndReceived = wallet.sentAndReceived(tx: tx.transaction)
|
let sentAndReceived = wallet.sentAndReceived(tx: tx.transaction)
|
||||||
print("Transaction: \(tx.transaction.txid())")
|
print("Transaction: \(tx.transaction.computeTxid())")
|
||||||
print("Sent \(sentAndReceived.sent.toSat())")
|
print("Sent \(sentAndReceived.sent.toSat())")
|
||||||
print("Received \(sentAndReceived.received.toSat())")
|
print("Received \(sentAndReceived.received.toSat())")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func testBroadcastTransaction() throws {
|
func testBroadcastTransaction() throws {
|
||||||
let descriptor = try Descriptor(
|
|
||||||
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
|
||||||
network: Network.signet
|
|
||||||
)
|
|
||||||
let wallet = try Wallet(
|
let wallet = try Wallet(
|
||||||
descriptor: descriptor,
|
descriptor: descriptor,
|
||||||
changeDescriptor: nil,
|
changeDescriptor: changeDescriptor,
|
||||||
persistenceBackendPath: dbFilePath.path,
|
|
||||||
network: .signet
|
network: .signet
|
||||||
)
|
)
|
||||||
let esploraClient = EsploraClient(url: SIGNET_ESPLORA_URL)
|
let esploraClient = EsploraClient(url: SIGNET_ESPLORA_URL)
|
||||||
@ -83,16 +80,15 @@ final class LiveWalletTests: XCTestCase {
|
|||||||
parallelRequests: 1
|
parallelRequests: 1
|
||||||
)
|
)
|
||||||
try wallet.applyUpdate(update: update)
|
try wallet.applyUpdate(update: update)
|
||||||
let _ = try wallet.commit()
|
let address = wallet.revealNextAddress(keychain: KeychainKind.external).address.description
|
||||||
let address = try wallet.revealNextAddress(keychain: KeychainKind.external).address.description
|
|
||||||
|
|
||||||
XCTAssertGreaterThan(
|
XCTAssertGreaterThan(
|
||||||
wallet.getBalance().total.toSat(),
|
wallet.balance().total.toSat(),
|
||||||
UInt64(0),
|
UInt64(0),
|
||||||
"Wallet must have positive balance, please send funds to \(address)"
|
"Wallet must have positive balance, please send funds to \(address)"
|
||||||
)
|
)
|
||||||
|
|
||||||
print("Balance: \(wallet.getBalance().total)")
|
print("Balance: \(wallet.balance().total)")
|
||||||
|
|
||||||
let recipient: Address = try Address(address: "tb1qrnfslnrve9uncz9pzpvf83k3ukz22ljgees989", network: .signet)
|
let recipient: Address = try Address(address: "tb1qrnfslnrve9uncz9pzpvf83k3ukz22ljgees989", network: .signet)
|
||||||
let psbt: Psbt = try
|
let psbt: Psbt = try
|
||||||
@ -108,8 +104,8 @@ final class LiveWalletTests: XCTestCase {
|
|||||||
XCTAssertTrue(walletDidSign, "Wallet did not sign transaction")
|
XCTAssertTrue(walletDidSign, "Wallet did not sign transaction")
|
||||||
|
|
||||||
let tx: Transaction = try! psbt.extractTx()
|
let tx: Transaction = try! psbt.extractTx()
|
||||||
print(tx.txid())
|
print(tx.computeTxid())
|
||||||
let fee: UInt64 = try wallet.calculateFee(tx: tx)
|
let fee: Amount = try wallet.calculateFee(tx: tx)
|
||||||
print("Transaction Fee: \(fee)")
|
print("Transaction Fee: \(fee)")
|
||||||
let feeRate: FeeRate = try wallet.calculateFeeRate(tx: tx)
|
let feeRate: FeeRate = try wallet.calculateFeeRate(tx: tx)
|
||||||
print("Transaction Fee Rate: \(feeRate.toSatPerVbCeil()) sat/vB")
|
print("Transaction Fee Rate: \(feeRate.toSatPerVbCeil()) sat/vB")
|
||||||
|
@ -1,6 +1,15 @@
|
|||||||
import XCTest
|
import XCTest
|
||||||
@testable import BitcoinDevKit
|
@testable import BitcoinDevKit
|
||||||
|
|
||||||
|
private let descriptor = try! Descriptor(
|
||||||
|
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
||||||
|
network: Network.signet
|
||||||
|
)
|
||||||
|
private let changeDescriptor = try! Descriptor(
|
||||||
|
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)",
|
||||||
|
network: Network.signet
|
||||||
|
)
|
||||||
|
|
||||||
final class OfflineWalletTests: XCTestCase {
|
final class OfflineWalletTests: XCTestCase {
|
||||||
var dbFilePath: URL!
|
var dbFilePath: URL!
|
||||||
|
|
||||||
@ -24,17 +33,12 @@ final class OfflineWalletTests: XCTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func testNewAddress() throws {
|
func testNewAddress() throws {
|
||||||
let descriptor: Descriptor = try Descriptor(
|
|
||||||
descriptor: "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)",
|
|
||||||
network: Network.testnet
|
|
||||||
)
|
|
||||||
let wallet = try Wallet(
|
let wallet = try Wallet(
|
||||||
descriptor: descriptor,
|
descriptor: descriptor,
|
||||||
changeDescriptor: nil,
|
changeDescriptor: changeDescriptor,
|
||||||
persistenceBackendPath: dbFilePath.path,
|
|
||||||
network: .testnet
|
network: .testnet
|
||||||
)
|
)
|
||||||
let addressInfo: AddressInfo = try wallet.revealNextAddress(keychain: KeychainKind.external)
|
let addressInfo: AddressInfo = wallet.revealNextAddress(keychain: KeychainKind.external)
|
||||||
|
|
||||||
XCTAssertTrue(addressInfo.address.isValidForNetwork(network: Network.testnet),
|
XCTAssertTrue(addressInfo.address.isValidForNetwork(network: Network.testnet),
|
||||||
"Address is not valid for testnet network")
|
"Address is not valid for testnet network")
|
||||||
@ -45,21 +49,16 @@ final class OfflineWalletTests: XCTestCase {
|
|||||||
XCTAssertFalse(addressInfo.address.isValidForNetwork(network: Network.bitcoin),
|
XCTAssertFalse(addressInfo.address.isValidForNetwork(network: Network.bitcoin),
|
||||||
"Address is valid for bitcoin network, but it shouldn't be")
|
"Address is valid for bitcoin network, but it shouldn't be")
|
||||||
|
|
||||||
XCTAssertEqual(addressInfo.address.description, "tb1qzg4mckdh50nwdm9hkzq06528rsu73hjxxzem3e")
|
XCTAssertEqual(addressInfo.address.description, "tb1qrnfslnrve9uncz9pzpvf83k3ukz22ljgees989")
|
||||||
}
|
}
|
||||||
|
|
||||||
func testBalance() throws {
|
func testBalance() throws {
|
||||||
let descriptor: Descriptor = try Descriptor(
|
|
||||||
descriptor: "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)",
|
|
||||||
network: Network.testnet
|
|
||||||
)
|
|
||||||
let wallet = try Wallet(
|
let wallet = try Wallet(
|
||||||
descriptor: descriptor,
|
descriptor: descriptor,
|
||||||
changeDescriptor: nil,
|
changeDescriptor: changeDescriptor,
|
||||||
persistenceBackendPath: dbFilePath.path,
|
|
||||||
network: .testnet
|
network: .testnet
|
||||||
)
|
)
|
||||||
|
|
||||||
XCTAssertEqual(wallet.getBalance().total.toSat(), 0)
|
XCTAssertEqual(wallet.balance().total.toSat(), 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user