diff --git a/CHANGELOG.md b/CHANGELOG.md index 356bb998e..2d0db4385 100644 --- a/CHANGELOG.md +++ b/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 diff --git a/tests/test_closing.py b/tests/test_closing.py index 246f478ee..fd76bd42d 100644 --- a/tests/test_closing.py +++ b/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]) diff --git a/tests/test_connection.py b/tests/test_connection.py index 61d5c5b1d..38cec7dbf 100644 --- a/tests/test_connection.py +++ b/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") diff --git a/tests/test_invoices.py b/tests/test_invoices.py index f512ec403..7e9904356 100644 --- a/tests/test_invoices.py +++ b/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()) diff --git a/tests/test_misc.py b/tests/test_misc.py index 2a17c3a5f..701d00c27 100644 --- a/tests/test_misc.py +++ b/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, diff --git a/tests/utils.py b/tests/utils.py index fc4803cee..8ef51a448 100644 --- a/tests/utils.py +++ b/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) diff --git a/wallet/walletrpc.c b/wallet/walletrpc.c index 6c4c34a7c..84d824307 100644 --- a/wallet/walletrpc.c +++ b/wallet/walletrpc.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -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)