|
|
@ -1536,7 +1536,10 @@ def test_gossip_no_backtalk(node_factory): |
|
|
|
|
|
|
|
|
|
|
|
@unittest.skipIf(not DEVELOPER, "Needs --dev-gossip") |
|
|
|
@unittest.skipIf(TEST_NETWORK != 'regtest', "Channel announcement contains genesis hash, receiving node discards on mismatch") |
|
|
|
@unittest.skipIf( |
|
|
|
TEST_NETWORK != 'regtest', |
|
|
|
"Channel announcement contains genesis hash, receiving node discards on mismatch" |
|
|
|
) |
|
|
|
def test_gossip_ratelimit(node_factory, bitcoind): |
|
|
|
"""Check that we ratelimit incoming gossip. |
|
|
|
|
|
|
@ -1573,35 +1576,46 @@ def test_gossip_ratelimit(node_factory, bitcoind): |
|
|
|
bitcoind.generate_block(6) |
|
|
|
sync_blockheight(bitcoind, [l3, ]) |
|
|
|
|
|
|
|
def channel_fees(node): |
|
|
|
channels = node.rpc.listchannels()['channels'] |
|
|
|
return [c['fee_per_millionth'] for c in channels] |
|
|
|
|
|
|
|
# Here are some ones I generated earlier (by removing gossip |
|
|
|
# ratelimiting) |
|
|
|
subprocess.run(['devtools/gossipwith', |
|
|
|
'--max-messages=0', |
|
|
|
'{}@localhost:{}'.format(l3.info['id'], l3.port), |
|
|
|
# announcement |
|
|
|
'0100987b271fc95a37dbed78e6159e0ab792cda64603780454ce80832b4e31f63a6760abc8fdc53be35bb7cfccd125ee3d15b4fbdfb42165098970c19c7822bb413f46390e0c043c777226927eacd2186a03f064e4bdc30f891cb6e4990af49967d34b338755e99d728987e3d49227815e17f3ab40092434a59e33548e870071176db7d44d8c8f4c4cac27ae6554eb9350e97d47617e3a1355296c78e8234446fa2f138ad1b03439f18520227fb9e9eb92689b3a0ed36e6764f5a41777e9a2a4ce1026d19a4e4d8f7715c13ac2d6bf3238608a1ccf9afd91f774d84d170d9edddebf7460c54d49bd6cd81410bc3eeeba2b7278b1b5f7e748d77d793f31086847d582000006226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f0000670000010001022d223620a359a47ff7f7ac447c85c46c923da53389221a0054c11c1e3ca31d590266e4598d1d3c415f572a8488830b60f7e744ed9235eb0b1ba93283b315c0351802e3bd38009866c9da8ec4aa99cc4ea9c6c0dd46df15c61ef0ce1f271291714e5702324266de8403b3ab157a09f1f784d587af61831c998c151bcc21bb74c2b2314b', |
|
|
|
# first update is free |
|
|
|
'010225bfd9c5e2c5660188a14deb4002cd645ee67f00ad3b82146e46711ec460cb0c6819fdd1c680cb6d24e3906679ef071f13243a04a123e4b83310ebf0518ffd4206226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f00006700000100015d773ffb010100060000000000000000000000010000000a000000003b023380'], |
|
|
|
check=True, timeout=TIMEOUT) |
|
|
|
subprocess.check_call( |
|
|
|
[ |
|
|
|
'devtools/gossipwith', |
|
|
|
'--max-messages=0', |
|
|
|
'{}@localhost:{}'.format(l3.info['id'], l3.port), |
|
|
|
# announcement |
|
|
|
'0100987b271fc95a37dbed78e6159e0ab792cda64603780454ce80832b4e31f63a6760abc8fdc53be35bb7cfccd125ee3d15b4fbdfb42165098970c19c7822bb413f46390e0c043c777226927eacd2186a03f064e4bdc30f891cb6e4990af49967d34b338755e99d728987e3d49227815e17f3ab40092434a59e33548e870071176db7d44d8c8f4c4cac27ae6554eb9350e97d47617e3a1355296c78e8234446fa2f138ad1b03439f18520227fb9e9eb92689b3a0ed36e6764f5a41777e9a2a4ce1026d19a4e4d8f7715c13ac2d6bf3238608a1ccf9afd91f774d84d170d9edddebf7460c54d49bd6cd81410bc3eeeba2b7278b1b5f7e748d77d793f31086847d582000006226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f0000670000010001022d223620a359a47ff7f7ac447c85c46c923da53389221a0054c11c1e3ca31d590266e4598d1d3c415f572a8488830b60f7e744ed9235eb0b1ba93283b315c0351802e3bd38009866c9da8ec4aa99cc4ea9c6c0dd46df15c61ef0ce1f271291714e5702324266de8403b3ab157a09f1f784d587af61831c998c151bcc21bb74c2b2314b', |
|
|
|
# first update is free |
|
|
|
'010225bfd9c5e2c5660188a14deb4002cd645ee67f00ad3b82146e46711ec460cb0c6819fdd1c680cb6d24e3906679ef071f13243a04a123e4b83310ebf0518ffd4206226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f00006700000100015d773ffb010100060000000000000000000000010000000a000000003b023380' |
|
|
|
], |
|
|
|
timeout=TIMEOUT |
|
|
|
) |
|
|
|
|
|
|
|
# Wait for it to process channel. |
|
|
|
wait_for(lambda: [c['fee_per_millionth'] for c in l3.rpc.listchannels()['channels']] == [10]) |
|
|
|
wait_for(lambda: channel_fees(l3) == [10]) |
|
|
|
|
|
|
|
subprocess.run(['devtools/gossipwith', |
|
|
|
'--max-messages=0', |
|
|
|
'{}@localhost:{}'.format(l3.info['id'], l3.port), |
|
|
|
# next 4 are let through... |
|
|
|
'01023a892ad9c9953a54ad3b8e2e03a93d1c973241b62f9a5cd1f17d5cdf08de0e8b4fcd24aa8bd45a48b788fe9dab3d416f28dfa390bc900ec0176ec5bd1afd435706226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f00006700000100015d77400001010006000000000000000000000014000003e9000000003b023380', |
|
|
|
'010245966763623ebc16796165263d4b21711ef04ebf3929491e695ff89ed2b8ccc0668ceb9e35e0ff5b8901d95732a119c1ed84ac99861daa2de462118f7b70049f06226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f00006700000100015d77400101010006000000000000000000000014000003ea000000003b023380', |
|
|
|
'0102c479b7684b9db496b844f6925f4ffd8a27c5840a020d1b537623c1545dcd8e195776381bbf51213e541a853a4a49a0faf84316e7ccca5e7074901a96bbabe04e06226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f00006700000100015d77400201010006000000000000000000000014000003eb000000003b023380', |
|
|
|
# timestamp=1568096259, fee_proportional_millionths=1004 |
|
|
|
'01024b866012d995d3d7aec7b7218a283de2d03492dbfa21e71dd546ec2e36c3d4200453420aa02f476f99c73fe1e223ea192f5fa544b70a8319f2a216f1513d503d06226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f00006700000100015d77400301010006000000000000000000000014000003ec000000003b023380', |
|
|
|
# update 5 marks you as a nasty spammer! |
|
|
|
'01025b5b5a0daed874ab02bd3356d38190ff46bbaf5f10db5067da70f3ca203480ca78059e6621c6143f3da4e454d0adda6d01a9980ed48e71ccd0c613af73570a7106226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f00006700000100015d77400401010006000000000000000000000014000003ed000000003b023380'], |
|
|
|
check=True, timeout=TIMEOUT) |
|
|
|
subprocess.check_call( |
|
|
|
[ |
|
|
|
'devtools/gossipwith', |
|
|
|
'--max-messages=0', |
|
|
|
'{}@localhost:{}'.format(l3.info['id'], l3.port), |
|
|
|
# next 4 are let through... |
|
|
|
'01023a892ad9c9953a54ad3b8e2e03a93d1c973241b62f9a5cd1f17d5cdf08de0e8b4fcd24aa8bd45a48b788fe9dab3d416f28dfa390bc900ec0176ec5bd1afd435706226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f00006700000100015d77400001010006000000000000000000000014000003e9000000003b023380', |
|
|
|
'010245966763623ebc16796165263d4b21711ef04ebf3929491e695ff89ed2b8ccc0668ceb9e35e0ff5b8901d95732a119c1ed84ac99861daa2de462118f7b70049f06226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f00006700000100015d77400101010006000000000000000000000014000003ea000000003b023380', |
|
|
|
'0102c479b7684b9db496b844f6925f4ffd8a27c5840a020d1b537623c1545dcd8e195776381bbf51213e541a853a4a49a0faf84316e7ccca5e7074901a96bbabe04e06226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f00006700000100015d77400201010006000000000000000000000014000003eb000000003b023380', |
|
|
|
# timestamp=1568096259, fee_proportional_millionths=1004 |
|
|
|
'01024b866012d995d3d7aec7b7218a283de2d03492dbfa21e71dd546ec2e36c3d4200453420aa02f476f99c73fe1e223ea192f5fa544b70a8319f2a216f1513d503d06226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f00006700000100015d77400301010006000000000000000000000014000003ec000000003b023380', |
|
|
|
# update 5 marks you as a nasty spammer! |
|
|
|
'01025b5b5a0daed874ab02bd3356d38190ff46bbaf5f10db5067da70f3ca203480ca78059e6621c6143f3da4e454d0adda6d01a9980ed48e71ccd0c613af73570a7106226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f00006700000100015d77400401010006000000000000000000000014000003ed000000003b023380' |
|
|
|
], |
|
|
|
timeout=TIMEOUT |
|
|
|
) |
|
|
|
|
|
|
|
wait_for(lambda: [c['fee_per_millionth'] for c in l3.rpc.listchannels()['channels']] == [1004]) |
|
|
|
wait_for(lambda: channel_fees(l3) == [1004]) |
|
|
|
|
|
|
|
# 24 seconds later, it will accept another. |
|
|
|
l3.rpc.call('dev-gossip-set-time', [1568096251 + 24]) |
|
|
@ -1613,7 +1627,7 @@ def test_gossip_ratelimit(node_factory, bitcoind): |
|
|
|
'010282d24bcd984956bd9b891848404ee59d89643923b21641d2c2c0770a51b8f5da00cef82458add970f0b654aa4c8d54f68a9a1cc6470a35810303b09437f1f73d06226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f00006700000100015d77401c01010006000000000000000000000014000003ee000000003b023380'], |
|
|
|
check=True, timeout=TIMEOUT) |
|
|
|
|
|
|
|
wait_for(lambda: [c['fee_per_millionth'] for c in l3.rpc.listchannels()['channels']] == [1006]) |
|
|
|
wait_for(lambda: channel_fees(l3) == [1006]) |
|
|
|
|
|
|
|
|
|
|
|
def check_socket(ip_addr, port): |
|
|
|