Skip to content

Commit

Permalink
QA: Original BTC/kB and sat/B tests
Browse files Browse the repository at this point in the history
Github-Pull: bitcoin#11413
Rebased-From: 2b9e3a8 (partial)
  • Loading branch information
kallewoof authored and luke-jr committed Jan 27, 2021
1 parent a26e3a7 commit b42abc5
Showing 1 changed file with 73 additions and 0 deletions.
73 changes: 73 additions & 0 deletions test/functional/wallet_basic.py
Expand Up @@ -230,6 +230,79 @@ def run_test(self):
assert_equal(self.nodes[2].getbalance(), node_2_bal)
node_0_bal = self.check_fee_amount(self.nodes[0].getbalance(), node_0_bal + Decimal('10'), fee_per_byte, self.get_vsize(self.nodes[2].gettransaction(txid)['hex']))

# Sendmany with explicit fee (BTC/kB)
fee_per_kb = 0.0002500
explicit_fee_per_byte = Decimal(fee_per_kb) / 1000
txid = self.nodes[2].sendmany(
amounts={ address: 10 },
conf_target=fee_per_kb,
estimate_mode='bTc/kB',
)
self.nodes[2].generate(1)
self.sync_all(self.nodes[0:3])
node_2_bal = self.check_fee_amount(self.nodes[2].getbalance(), node_2_bal - Decimal('10'), explicit_fee_per_byte, self.get_vsize(self.nodes[2].gettransaction(txid)['hex']))
assert_equal(self.nodes[2].getbalance(), node_2_bal)
node_0_bal += Decimal('10')
assert_equal(self.nodes[0].getbalance(), node_0_bal)

# Sendmany with explicit fee (SAT/B)
fee_sat_per_b = 2
fee_per_kb = fee_sat_per_b / 100000.0
explicit_fee_per_byte = Decimal(fee_per_kb) / 1000
txid = self.nodes[2].sendmany(
amounts={ address: 10 },
conf_target=fee_sat_per_b,
estimate_mode='sAT/b',
)
self.nodes[2].generate(1)
self.sync_all(self.nodes[0:3])
node_2_bal = self.check_fee_amount(self.nodes[2].getbalance(), node_2_bal - Decimal('10'), explicit_fee_per_byte, self.get_vsize(self.nodes[2].gettransaction(txid)['hex']))
assert_equal(self.nodes[2].getbalance(), node_2_bal)
node_0_bal += Decimal('10')
assert_equal(self.nodes[0].getbalance(), node_0_bal)

# send with explicit btc/kb fee
self.log.info("test explicit fee (sendtoaddress as btc/kb)")
self.nodes[0].generate(1)
self.sync_all(self.nodes[0:3])
prebalance = self.nodes[2].getbalance()
assert prebalance > 2
txid = self.nodes[2].sendtoaddress(
address=self.nodes[1].getnewaddress(),
amount=1.0,
conf_target=0.00002500,
estimate_mode='btc/kb',
)
tx_size = self.get_vsize(self.nodes[2].gettransaction(txid)['hex'])
self.sync_all(self.nodes[0:3])
self.nodes[0].generate(1)
self.sync_all(self.nodes[0:3])
postbalance = self.nodes[2].getbalance()
fee = prebalance - postbalance - Decimal('1')
assert_fee_amount(fee, tx_size, Decimal('0.00002500'))

# send with explicit sat/b fee
self.sync_all(self.nodes[0:3])
self.log.info("test explicit fee (sendtoaddress as sat/b)")
self.nodes[0].generate(1)
prebalance = self.nodes[2].getbalance()
assert prebalance > 2
txid = self.nodes[2].sendtoaddress(
address=self.nodes[1].getnewaddress(),
amount=1.0,
conf_target=2,
estimate_mode='SAT/B',
)
tx_size = self.get_vsize(self.nodes[2].gettransaction(txid)['hex'])
self.sync_all(self.nodes[0:3])
self.nodes[0].generate(1)
self.sync_all(self.nodes[0:3])
postbalance = self.nodes[2].getbalance()
fee = prebalance - postbalance - Decimal('1')
assert_fee_amount(fee, tx_size, Decimal('0.00002000'))

node_2_bal = self.nodes[2].getbalance()

self.log.info("Test sendmany with fee_rate param (explicit fee rate in sat/vB)")
fee_rate_sat_vb = 2
fee_rate_btc_kvb = fee_rate_sat_vb * 1e3 / 1e8
Expand Down

0 comments on commit b42abc5

Please sign in to comment.