diff --git a/lib/bitcoin.rb b/lib/bitcoin.rb index 9157c9a9..f99b94c2 100644 --- a/lib/bitcoin.rb +++ b/lib/bitcoin.rb @@ -578,7 +578,7 @@ def self.network=(name) @network end - [:bitcoin, :namecoin, :litecoin, :dogecoin, :dogecoin_testnet].each do |n| + [:bitcoin, :bitcoin_cash, :namecoin, :litecoin, :dogecoin, :dogecoin_testnet].each do |n| instance_eval "def #{n}?; network_project == :#{n}; end" end @@ -727,6 +727,38 @@ def self.network=(name) } }) + NETWORKS[:bitcoin_cash] = NETWORKS[:bitcoin].merge({ + project: :bitcoin_cash, + magic_head: "\xE3\xE1\xF3\xE8", + protocol_version: 70015, + dns_seeds: [ + 'seed.bitcoinabc.org', + 'seed-abc.bitcoinforks.org', + 'seed.bitprim.org', + 'seed.deadalnix.me', + 'seeder.criptolayer.net' + ] + }) + + NETWORKS[:bitcoin_cash_testnet3] = NETWORKS[:testnet3].merge({ + project: :bitcoin_cash, + magic_head: "\xF4\xE5\xF3\xF4", + protocol_version: 70015, + dns_seeds: [ + 'testnet-seed.bitcoinabc.org', + 'testnet-seed-abc.bitcoinforks.org', + 'testnet-seed.bitprim.org', + 'testnet-seed.deadalnix.me', + 'testnet-seeder.criptolayer.net' + ] + }) + + NETWORKS[:bitcoin_cash_regtest] = NETWORKS[:regtest].merge({ + project: :bitcoin_cash, + magic_head: "\xDA\xB5\xBF\xFA", + protocol_version: 70015 + }) + NETWORKS[:litecoin] = NETWORKS[:bitcoin].merge({ project: :litecoin, magic_head: "\xfb\xc0\xb6\xdb", diff --git a/spec/bitcoin/bitcoin_spec.rb b/spec/bitcoin/bitcoin_spec.rb index 87e14669..28154d00 100644 --- a/spec/bitcoin/bitcoin_spec.rb +++ b/spec/bitcoin/bitcoin_spec.rb @@ -163,6 +163,10 @@ success = false if Bitcoin.valid_address?(addr[0]) != true } success.should == true + + Bitcoin::network = :bitcoin_cash + Bitcoin.valid_address?("1D3KpY5kXnYhTbdCbZ9kXb2ZY7ZapD85cW").should == true + Bitcoin.valid_address?("mpXwg4jMtRhuSpVq4xS3HFHmCmWp9NyGKt").should == false end it 'validate bitcoin public key' do @@ -339,7 +343,7 @@ Bitcoin.hash_mrkl_tree(["aa", "bb", "cc"]).last.should != Bitcoin.hash_mrkl_tree(["aa", "bb", "cc", "cc"]).last end - + it 'return a value even if a merkle branch is empty' do branch = [] mrkl_index = 0 @@ -530,7 +534,7 @@ prev_block_bits = 0x1a05db8b last_retarget_time = 1348092851 new_difficulty = Bitcoin.block_new_target(prev_height, prev_block_time, prev_block_bits, last_retarget_time) - + Bitcoin.decode_compact_bits(new_difficulty.should) == Bitcoin.decode_compact_bits(0x1a057e08) end