2023-10-27 14:13:44 -04:00
|
|
|
package org.bitcoindevkit
|
|
|
|
|
2024-02-01 10:34:59 -05:00
|
|
|
import kotlin.test.Ignore
|
2023-10-27 14:13:44 -04:00
|
|
|
import kotlin.test.Test
|
|
|
|
import kotlin.test.assertTrue
|
|
|
|
|
|
|
|
class LiveTxBuilderTest {
|
2024-02-01 10:34:59 -05:00
|
|
|
@Ignore("The Esplora client's fullScan method requires a Wallet instead of a WalletNoPersist.")
|
2023-10-27 14:13:44 -04:00
|
|
|
@Test
|
|
|
|
fun testTxBuilder() {
|
|
|
|
val descriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)", Network.TESTNET)
|
2024-02-01 10:34:59 -05:00
|
|
|
// val wallet = WalletNoPersist(descriptor, null, Network.TESTNET)
|
2023-10-27 14:13:44 -04:00
|
|
|
val esploraClient = EsploraClient("https://mempool.space/testnet/api")
|
2024-02-01 10:34:59 -05:00
|
|
|
// val update = esploraClient.fullScan(wallet, 10uL, 1uL)
|
|
|
|
// wallet.applyUpdate(update)
|
|
|
|
// println("Balance: ${wallet.getBalance().total}")
|
|
|
|
//
|
|
|
|
// assert(wallet.getBalance().total > 0uL)
|
|
|
|
//
|
|
|
|
// val recipient: Address = Address("tb1qrnfslnrve9uncz9pzpvf83k3ukz22ljgees989", Network.TESTNET)
|
|
|
|
// val psbt: PartiallySignedTransaction = TxBuilder()
|
|
|
|
// .addRecipient(recipient.scriptPubkey(), 4200uL)
|
|
|
|
// .feeRate(FeeRate.fromSatPerVb(2.0f))
|
|
|
|
// .finish(wallet)
|
|
|
|
//
|
|
|
|
// println(psbt.serialize())
|
|
|
|
//
|
|
|
|
// assertTrue(psbt.serialize().startsWith("cHNi"), "PSBT should start with 'cHNi'")
|
2023-10-27 14:13:44 -04:00
|
|
|
}
|
2023-12-14 12:19:01 -05:00
|
|
|
|
2024-02-01 10:34:59 -05:00
|
|
|
@Ignore("The Esplora client's fullScan method requires a Wallet instead of a WalletNoPersist.")
|
2023-12-14 12:19:01 -05:00
|
|
|
@Test
|
|
|
|
fun complexTxBuilder() {
|
|
|
|
val externalDescriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)", Network.TESTNET)
|
|
|
|
val changeDescriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)", Network.TESTNET)
|
2024-02-01 10:34:59 -05:00
|
|
|
// val wallet = WalletNoPersist(externalDescriptor, changeDescriptor, Network.TESTNET)
|
|
|
|
// val esploraClient = EsploraClient("https://mempool.space/testnet/api")
|
|
|
|
// val update = esploraClient.fullScan(wallet, 10uL, 1uL)
|
|
|
|
// wallet.applyUpdate(update)
|
|
|
|
// println("Balance: ${wallet.getBalance().total}")
|
|
|
|
//
|
|
|
|
// assert(wallet.getBalance().total > 0uL)
|
|
|
|
//
|
|
|
|
// val recipient1: Address = Address("tb1qrnfslnrve9uncz9pzpvf83k3ukz22ljgees989", Network.TESTNET)
|
|
|
|
// val recipient2: Address = Address("tb1qw2c3lxufxqe2x9s4rdzh65tpf4d7fssjgh8nv6", Network.TESTNET)
|
|
|
|
// val allRecipients: List<ScriptAmount> = listOf(
|
|
|
|
// ScriptAmount(recipient1.scriptPubkey(), 4200uL),
|
|
|
|
// ScriptAmount(recipient2.scriptPubkey(), 4200uL),
|
|
|
|
// )
|
|
|
|
//
|
|
|
|
// val psbt: PartiallySignedTransaction = TxBuilder()
|
|
|
|
// .setRecipients(allRecipients)
|
|
|
|
// .feeRate(FeeRate.fromSatPerVb(4.0f))
|
|
|
|
// .changePolicy(ChangeSpendPolicy.CHANGE_FORBIDDEN)
|
|
|
|
// .enableRbf()
|
|
|
|
// .finish(wallet)
|
|
|
|
//
|
|
|
|
// wallet.sign(psbt)
|
|
|
|
// assertTrue(psbt.serialize().startsWith("cHNi"), "PSBT should start with 'cHNi'")
|
2023-12-14 12:19:01 -05:00
|
|
|
}
|
2023-10-27 14:13:44 -04:00
|
|
|
}
|