X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=p2pool%2Fbitcoin%2Fnetworks.py;h=9db3252eb4b947b3dfc6b41cd162435493cb526c;hb=f732111a6e08d7d0649c330d1c703535a8ea80b5;hp=52b1a87aed648f5422d18fee4ccfc252f6519aec;hpb=903ae8ae7b1f5ba0b6a54b34aad6a292e6aa785a;p=p2pool.git diff --git a/p2pool/bitcoin/networks.py b/p2pool/bitcoin/networks.py index 52b1a87..9db3252 100644 --- a/p2pool/bitcoin/networks.py +++ b/p2pool/bitcoin/networks.py @@ -1,79 +1,67 @@ +import os +import platform + from twisted.internet import defer from . import data -from p2pool.util import math +from p2pool.util import math, pack, jsonrpc -BitcoinMainnet = math.Object( - P2P_PREFIX='f9beb4d9'.decode('hex'), - P2P_PORT=8333, - ADDRESS_VERSION=0, - RPC_PORT=8332, - RPC_CHECK=defer.inlineCallbacks(lambda bitcoind: defer.returnValue( - 'bitcoinaddress' in (yield bitcoind.rpc_help()) and - not (yield bitcoind.rpc_getinfo())['testnet'] - )), - POW_FUNC=data.block_header_type.hash256, - SYMBOL='BTC', -) -BitcoinTestnet = math.Object( - P2P_PREFIX='fabfb5da'.decode('hex'), - P2P_PORT=18333, - ADDRESS_VERSION=111, - RPC_PORT=8332, - RPC_CHECK=defer.inlineCallbacks(lambda bitcoind: defer.returnValue( - 'bitcoinaddress' in (yield bitcoind.rpc_help()) and - (yield bitcoind.rpc_getinfo())['testnet'] - )), - POW_FUNC=data.block_header_type.hash256, - SYMBOL='tBTC', -) +@defer.inlineCallbacks +def check_genesis_block(bitcoind, genesis_block_hash): + try: + yield bitcoind.rpc_getblock(genesis_block_hash) + except jsonrpc.Error_for_code(-5): + defer.returnValue(False) + else: + defer.returnValue(True) -NamecoinMainnet = math.Object( - P2P_PREFIX='f9beb4fe'.decode('hex'), - P2P_PORT=8334, - ADDRESS_VERSION=52, - RPC_PORT=8332, - RPC_CHECK=defer.inlineCallbacks(lambda bitcoind: defer.returnValue( - 'namecoinaddress' in (yield bitcoind.rpc_help()) and - not (yield bitcoind.rpc_getinfo())['testnet'] - )), - POW_FUNC=data.block_header_type.hash256, - SYMBOL='NMC', -) -NamecoinTestnet = math.Object( - P2P_PREFIX='fabfb5fe'.decode('hex'), - P2P_PORT=18334, - ADDRESS_VERSION=111, - RPC_PORT=8332, - RPC_CHECK=defer.inlineCallbacks(lambda bitcoind: defer.returnValue( - 'namecoinaddress' in (yield bitcoind.rpc_help()) and - (yield bitcoind.rpc_getinfo())['testnet'] - )), - POW_FUNC=data.block_header_type.hash256, - SYMBOL='tNMC', -) +@defer.inlineCallbacks +def get_subsidy(bitcoind, target): + res = yield bitcoind.rpc_getblock(target) -LitecoinMainnet = math.Object( - P2P_PREFIX='fbc0b6db'.decode('hex'), - P2P_PORT=9333, - ADDRESS_VERSION=48, - RPC_PORT=9332, - RPC_CHECK=defer.inlineCallbacks(lambda bitcoind: defer.returnValue( - 'litecoinaddress' in (yield bitcoind.rpc_help()) and - not (yield bitcoind.rpc_getinfo())['testnet'] - )), - POW_FUNC=data.block_header_type.scrypt, - SYMBOL='LTC', -) -LitecoinTestnet = math.Object( - P2P_PREFIX='fcc1b7dc'.decode('hex'), - P2P_PORT=19333, - ADDRESS_VERSION=111, - RPC_PORT=19332, - RPC_CHECK=defer.inlineCallbacks(lambda bitcoind: defer.returnValue( - 'litecoinaddress' in (yield bitcoind.rpc_help()) and - (yield bitcoind.rpc_getinfo())['testnet'] - )), - POW_FUNC=data.block_header_type.scrypt, - SYMBOL='tLTC', + defer.returnValue(res) + +nets = dict( + novacoin=math.Object( + P2P_PREFIX='e4e8e9e5'.decode('hex'), + P2P_PORT=7777, + ADDRESS_VERSION=8, + RPC_PORT=8344, + RPC_CHECK=defer.inlineCallbacks(lambda bitcoind: defer.returnValue( + 0 == (yield bitcoind.rpc_getblock('00000a060336cbb72fe969666d337b87198b1add2abaa59cca226820b32933a4'))['height'] and + not (yield bitcoind.rpc_getinfo())['testnet'] + )), + SUBSIDY_FUNC=lambda bitcoind, target: get_subsidy(bitcoind, target), + BLOCK_PERIOD=600, # s + SYMBOL='NVC', + CONF_FILE_FUNC=lambda: os.path.join(os.path.join(os.environ['APPDATA'], 'NovaCoin') if platform.system() == 'Windows' else os.path.expanduser('~/Library/Application Support/NovaCoin/') if platform.system() == 'Darwin' else os.path.expanduser('~/.novacoin'), 'novacoin.conf'), + BLOCK_EXPLORER_URL_PREFIX='http://explorer.novaco.in/block/', + ADDRESS_EXPLORER_URL_PREFIX='http://explorer.novaco.in/address/', + TX_EXPLORER_URL_PREFIX='http://explorer.novaco.in/tx/', + SANE_TARGET_RANGE=(2**256//1000000000 - 1, 2**256//1000 - 1), + DUMB_SCRYPT_DIFF=2**16, + DUST_THRESHOLD=0.01e6, + ), + novacoin_testnet=math.Object( + P2P_PREFIX='cdf2c0ef'.decode('hex'), + P2P_PORT=17777, + ADDRESS_VERSION=111, + RPC_PORT=18344, + RPC_CHECK=defer.inlineCallbacks(lambda bitcoind: defer.returnValue( + 0 == (yield bitcoind.rpc_getblock('0000c763e402f2436da9ed36c7286f62c3f6e5dbafce9ff289bd43d7459327eb'))['height'] and + (yield bitcoind.rpc_getinfo())['testnet'] + )), + SUBSIDY_FUNC=lambda bitcoind, target: get_subsidy(bitcoind, target), + BLOCK_PERIOD=600, # s + SYMBOL='tNVC', + CONF_FILE_FUNC=lambda: os.path.join(os.path.join(os.environ['APPDATA'], 'NovaCoin') if platform.system() == 'Windows' else os.path.expanduser('~/Library/Application Support/NovaCoin/') if platform.system() == 'Darwin' else os.path.expanduser('~/.novacoin'), 'novacoin.conf'), + BLOCK_EXPLORER_URL_PREFIX='http://novacoin.su/block/', + ADDRESS_EXPLORER_URL_PREFIX='http://novacoin.su/address/', + TX_EXPLORER_URL_PREFIX='http://novacoin.su/tx/', + SANE_TARGET_RANGE=(2**256//1000000000 - 1, 2**256//1000 - 1), + DUMB_SCRYPT_DIFF=2**16, + DUST_THRESHOLD=0.01e6, + ), ) +for net_name, net in nets.iteritems(): + net.NAME = net_name