mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-30 04:32:21 +02:00
Currently, using the getcoins.py with a custom signet executes successfully and shows the transaction as complete, however for obvious reasons, it should not. This PR adds a sanity check for custom signet by comparing the current network's first block hash with global signet's respective hash.
52 lines
2.3 KiB
Python
Executable File
52 lines
2.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# Copyright (c) 2020 The Bitcoin Core developers
|
|
# Distributed under the MIT software license, see the accompanying
|
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
import argparse
|
|
import subprocess
|
|
import sys
|
|
import requests
|
|
|
|
DEFAULT_GLOBAL_FAUCET = 'https://signetfaucet.com/claim'
|
|
GLOBAL_FIRST_BLOCK_HASH = '00000086d6b2636cb2a392d45edc4ec544a10024d30141c9adf4bfd9de533b53'
|
|
|
|
parser = argparse.ArgumentParser(description='Script to get coins from a faucet.', epilog='You may need to start with double-dash (--) when providing bitcoin-cli arguments.')
|
|
parser.add_argument('-c', '--cmd', dest='cmd', default='bitcoin-cli', help='bitcoin-cli command to use')
|
|
parser.add_argument('-f', '--faucet', dest='faucet', default=DEFAULT_GLOBAL_FAUCET, help='URL of the faucet')
|
|
parser.add_argument('-a', '--addr', dest='addr', default='', help='Bitcoin address to which the faucet should send')
|
|
parser.add_argument('-p', '--password', dest='password', default='', help='Faucet password, if any')
|
|
parser.add_argument('bitcoin_cli_args', nargs='*', help='Arguments to pass on to bitcoin-cli (default: -signet)')
|
|
|
|
args = parser.parse_args()
|
|
|
|
if args.bitcoin_cli_args == []:
|
|
args.bitcoin_cli_args = ['-signet']
|
|
|
|
if args.faucet.lower() == DEFAULT_GLOBAL_FAUCET:
|
|
# Get the hash of the block at height 1 of the currently active signet chain
|
|
try:
|
|
curr_signet_hash = subprocess.check_output([args.cmd] + args.bitcoin_cli_args + ['getblockhash', '1']).strip().decode()
|
|
except FileNotFoundError:
|
|
print('The binary', args.cmd, 'could not be found.')
|
|
exit()
|
|
if curr_signet_hash != GLOBAL_FIRST_BLOCK_HASH:
|
|
print('The global faucet cannot be used with a custom Signet network. Please use the global signet or setup your custom faucet to use this functionality.\n')
|
|
exit()
|
|
|
|
if args.addr == '':
|
|
# get address for receiving coins
|
|
try:
|
|
args.addr = subprocess.check_output([args.cmd] + args.bitcoin_cli_args + ['getnewaddress', 'faucet', 'bech32']).strip()
|
|
except FileNotFoundError:
|
|
print('The binary', args.cmd, 'could not be found.')
|
|
exit()
|
|
|
|
data = {'address': args.addr, 'password': args.password}
|
|
try:
|
|
res = requests.post(args.faucet, data=data)
|
|
except:
|
|
print('Unexpected error when contacting faucet:', sys.exc_info()[0])
|
|
exit()
|
|
print(res.text)
|