Browse Source

newaddr: deprecate 'address' output.

It doesn't make sense with 'all', and it's ok to be explicit.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
pr-2391
Rusty Russell 6 years ago
committed by Christian Decker
parent
commit
e0862f59d0
No known key found for this signature in database GPG Key ID: 1416D83DC4F0E86D
  1. 2
      CHANGELOG.md
  2. 6
      tests/test_closing.py
  3. 18
      tests/test_connection.py
  4. 4
      tests/test_invoices.py
  5. 12
      tests/test_misc.py
  6. 6
      tests/utils.py
  7. 4
      wallet/walletrpc.c

2
CHANGELOG.md

@ -17,6 +17,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
Note: You should always set `allow-deprecated-apis=false` to test for
changes.
- JSON API: `newaddr` output field `address`: use `bech32` or `p2sh-segwit` instead.
### Removed
### Fixed

6
tests/test_closing.py

@ -198,7 +198,7 @@ def test_closing_different_fees(node_factory, bitcoind, executor):
amounts = [0, 545999, 546000]
num_peers = len(feerates) * len(amounts)
addr = l1.rpc.newaddr()['address']
addr = l1.rpc.newaddr()['bech32']
bitcoind.rpc.sendtoaddress(addr, 1)
numfunds = len(l1.rpc.listfunds()['outputs'])
bitcoind.generate_block(1)
@ -501,7 +501,7 @@ def test_onchain_unwatch(node_factory, bitcoind):
# Now test unrelated onchain churn.
# Daemon gets told about wallet; says it doesn't care.
l1.rpc.withdraw(l1.rpc.newaddr()['address'], 'all')
l1.rpc.withdraw(l1.rpc.newaddr()['bech32'], 'all')
bitcoind.generate_block(1)
l1.daemon.wait_for_log("but we don't care")
@ -510,7 +510,7 @@ def test_onchain_unwatch(node_factory, bitcoind):
# So these should not generate further messages
for i in range(5):
l1.rpc.withdraw(l1.rpc.newaddr()['address'], 'all')
l1.rpc.withdraw(l1.rpc.newaddr()['bech32'], 'all')
bitcoind.generate_block(1)
# Make sure it digests the block
sync_blockheight(bitcoind, [l1])

18
tests/test_connection.py

@ -621,7 +621,7 @@ def test_funding_fail(node_factory, bitcoind):
funds = 1000000
addr = l1.rpc.newaddr()['address']
addr = l1.rpc.newaddr()['bech32']
l1.bitcoin.rpc.sendtoaddress(addr, funds / 10**8)
bitcoind.generate_block(1)
@ -661,7 +661,7 @@ def test_funding_toolarge(node_factory, bitcoind):
# Send funds.
amount = 2**24
bitcoind.rpc.sendtoaddress(l1.rpc.newaddr()['address'], amount / 10**8 + 0.01)
bitcoind.rpc.sendtoaddress(l1.rpc.newaddr()['bech32'], amount / 10**8 + 0.01)
bitcoind.generate_block(1)
# Wait for it to arrive.
@ -701,7 +701,7 @@ def test_lockin_between_restart(node_factory, bitcoind):
def test_funding_while_offline(node_factory, bitcoind):
l1 = node_factory.get_node()
addr = l1.rpc.newaddr()['address']
addr = l1.rpc.newaddr()['bech32']
sync_blockheight(bitcoind, [l1])
# l1 goes down.
@ -1154,13 +1154,13 @@ def test_no_fee_estimate(node_factory, bitcoind, executor):
# Can't withdraw either.
with pytest.raises(RpcError, match=r'Cannot estimate fees'):
l1.rpc.withdraw(l2.rpc.newaddr()['address'], 'all')
l1.rpc.withdraw(l2.rpc.newaddr()['bech32'], 'all')
# Can't use feerate names, either.
with pytest.raises(RpcError, match=r'Cannot estimate fees'):
l1.rpc.withdraw(l2.rpc.newaddr()['address'], 'all', 'urgent')
l1.rpc.withdraw(l2.rpc.newaddr()['address'], 'all', 'normal')
l1.rpc.withdraw(l2.rpc.newaddr()['address'], 'all', 'slow')
l1.rpc.withdraw(l2.rpc.newaddr()['bech32'], 'all', 'urgent')
l1.rpc.withdraw(l2.rpc.newaddr()['bech32'], 'all', 'normal')
l1.rpc.withdraw(l2.rpc.newaddr()['bech32'], 'all', 'slow')
with pytest.raises(RpcError, match=r'Cannot estimate fees'):
l1.rpc.fundchannel(l2.info['id'], 10**6, 'urgent')
@ -1168,7 +1168,7 @@ def test_no_fee_estimate(node_factory, bitcoind, executor):
l1.rpc.fundchannel(l2.info['id'], 10**6, 'slow')
# Can with manual feerate.
l1.rpc.withdraw(l2.rpc.newaddr()['address'], 10000, '1500perkb')
l1.rpc.withdraw(l2.rpc.newaddr()['bech32'], 10000, '1500perkb')
l1.rpc.fundchannel(l2.info['id'], 10**6, '2000perkw', minconf=0)
# Make sure we clean up cahnnel for later attempt.
@ -1210,7 +1210,7 @@ def test_no_fee_estimate(node_factory, bitcoind, executor):
l1.rpc.fundchannel(l2.info['id'], 10**6, 'slow')
# Can withdraw (use urgent feerate).
l1.rpc.withdraw(l2.rpc.newaddr()['address'], 'all', 'urgent')
l1.rpc.withdraw(l2.rpc.newaddr()['bech32'], 'all', 'urgent')
@unittest.skipIf(not DEVELOPER, "needs --dev-disconnect")

4
tests/test_invoices.py

@ -11,8 +11,8 @@ import unittest
def test_invoice(node_factory):
l1, l2 = node_factory.line_graph(2, fundchannel=False)
addr1 = l2.rpc.newaddr('bech32')['address']
addr2 = l2.rpc.newaddr('p2sh-segwit')['address']
addr1 = l2.rpc.newaddr('bech32')['bech32']
addr2 = l2.rpc.newaddr('p2sh-segwit')['p2sh-segwit']
before = int(time.time())
inv = l1.rpc.invoice(123000, 'label', 'description', '3700', [addr1, addr2])
after = int(time.time())

12
tests/test_misc.py

@ -365,7 +365,7 @@ def test_withdraw(node_factory, bitcoind):
# Don't get any funds from previous runs.
l1 = node_factory.get_node(random_hsm=True)
l2 = node_factory.get_node(random_hsm=True)
addr = l1.rpc.newaddr()['address']
addr = l1.rpc.newaddr()['bech32']
# Add some funds to withdraw later
for i in range(10):
@ -401,7 +401,7 @@ def test_withdraw(node_factory, bitcoind):
# Now send some money to l2.
# lightningd uses P2SH-P2WPKH
waddr = l2.rpc.newaddr('bech32')['address']
waddr = l2.rpc.newaddr('bech32')['bech32']
l1.rpc.withdraw(waddr, 2 * amount)
bitcoind.generate_block(1)
@ -471,7 +471,7 @@ def test_withdraw(node_factory, bitcoind):
assert l1.db_query('SELECT COUNT(*) as c FROM outputs WHERE status=0')[0]['c'] == 6
# Test withdrawal to self.
l1.rpc.withdraw(l1.rpc.newaddr('bech32')['address'], 'all', minconf=0)
l1.rpc.withdraw(l1.rpc.newaddr('bech32')['bech32'], 'all', minconf=0)
bitcoind.generate_block(1)
assert l1.db_query('SELECT COUNT(*) as c FROM outputs WHERE status=0')[0]['c'] == 1
@ -489,7 +489,7 @@ def test_addfunds_from_block(node_factory, bitcoind):
# Previous runs with same bitcoind can leave funds!
l1 = node_factory.get_node(random_hsm=True)
addr = l1.rpc.newaddr()['address']
addr = l1.rpc.newaddr()['bech32']
bitcoind.rpc.sendtoaddress(addr, 0.1)
bitcoind.generate_block(1)
@ -503,7 +503,7 @@ def test_addfunds_from_block(node_factory, bitcoind):
assert output['address'] == addr
# Send all our money to a P2WPKH address this time.
addr = l1.rpc.newaddr("bech32")['address']
addr = l1.rpc.newaddr("bech32")['bech32']
l1.rpc.withdraw(addr, "all")
bitcoind.generate_block(1)
time.sleep(1)
@ -804,7 +804,7 @@ def test_blockchaintrack(node_factory, bitcoind):
"""Check that we track the blockchain correctly across reorgs
"""
l1 = node_factory.get_node(random_hsm=True)
addr = l1.rpc.newaddr()['address']
addr = l1.rpc.newaddr()['bech32']
######################################################################
# First failure scenario: rollback on startup doesn't work,

6
tests/utils.py

@ -438,7 +438,7 @@ class LightningNode(object):
return {'address': addr, 'wallettxid': wallettxid, 'fundingtx': fundingtx}
def fundwallet(self, sats, addrtype="p2sh-segwit"):
addr = self.rpc.newaddr(addrtype)['address']
addr = self.rpc.newaddr(addrtype)[addrtype]
txid = self.bitcoin.rpc.sendtoaddress(addr, sats / 10**8)
self.bitcoin.generate_block(1)
self.daemon.wait_for_log('Owning output .* txid {}'.format(txid))
@ -529,7 +529,7 @@ class LightningNode(object):
def fund_channel(self, l2, amount, wait_for_active=True):
# Give yourself some funds to work with
addr = self.rpc.newaddr()['address']
addr = self.rpc.newaddr()['bech32']
self.bitcoin.rpc.sendtoaddress(addr, (amount + 1000000) / 10**8)
numfunds = len(self.rpc.listfunds()['outputs'])
self.bitcoin.generate_block(1)
@ -847,7 +847,7 @@ class NodeFactory(object):
# If we got here, we want to fund channels
for src, dst in connections:
addr = src.rpc.newaddr()['address']
addr = src.rpc.newaddr()['bech32']
src.bitcoin.rpc.sendtoaddress(addr, (fundamount + 1000000) / 10**8)
bitcoin.generate_block(1)

4
wallet/walletrpc.c

@ -21,6 +21,7 @@
#include <lightningd/jsonrpc.h>
#include <lightningd/lightningd.h>
#include <lightningd/log.h>
#include <lightningd/options.h>
#include <lightningd/peer_control.h>
#include <lightningd/subd.h>
#include <wally_bip32.h>
@ -336,7 +337,8 @@ static struct command_result *json_newaddr(struct command *cmd,
response = json_stream_success(cmd);
json_object_start(response, NULL);
json_add_string(response, "address", bech32 ? bech32 : p2sh);
if (deprecated_apis)
json_add_string(response, "address", bech32 ? bech32 : p2sh);
if (*addrtype & ADDR_BECH32)
json_add_string(response, "bech32", bech32);
if (*addrtype & ADDR_P2SH_SEGWIT)

Loading…
Cancel
Save