spec/keychain_spec.rb in btcruby-1.1.4 vs spec/keychain_spec.rb in btcruby-1.1.5
- old
+ new
@@ -2,22 +2,22 @@
describe BTC::Keychain do
it "should support tpub/tprv prefixes for testnet" do
seed = "000102030405060708090a0b0c0d0e0f".from_hex
- master = Keychain.new(seed: seed)
- master.network = Network.testnet
+ master = BTC::Keychain.new(seed: seed)
+ master.network = BTC::Network.testnet
master.xpub.must_equal "tpubD6NzVbkrYhZ4XgiXtGrdW5XDAPFCL9h7we1vwNCpn8tGbBcgfVYjXyhWo4E1xkh56hjod1RhGjxbaTLV3X4FyWuejifB9jusQ46QzG87VKp"
master.xprv.must_equal "tprv8ZgxMBicQKsPeDgjzdC36fs6bMjGApWDNLR9erAXMs5skhMv36j9MV5ecvfavji5khqjWaWSFhN3YcCUUdiKH6isR4Pwy3U5y5egddBr16m"
- master.network = Network.mainnet
+ master.network = BTC::Network.mainnet
master.xpub.must_equal "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8"
master.xprv.must_equal "xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi"
end
it "should support path API" do
seed = "000102030405060708090a0b0c0d0e0f".from_hex
- master = Keychain.new(seed: seed)
+ master = BTC::Keychain.new(seed: seed)
master.derived_keychain("").xpub.must_equal "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8"
master.derived_keychain("m").xpub.must_equal "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8"
master.derived_keychain("0'").xpub.must_equal "xpub68Gmy5EdvgibQVfPdqkBBCHxA5htiqg55crXYuXoQRKfDBFA1WEjWgP6LHhwBZeNK1VTsfTFUHCdrfp1bgwQ9xv5ski8PX9rL2dZXvgGDnw"
master.derived_keychain("m/0'").xpub.must_equal "xpub68Gmy5EdvgibQVfPdqkBBCHxA5htiqg55crXYuXoQRKfDBFA1WEjWgP6LHhwBZeNK1VTsfTFUHCdrfp1bgwQ9xv5ski8PX9rL2dZXvgGDnw"
master.derived_keychain("0'").xpub.must_equal "xpub68Gmy5EdvgibQVfPdqkBBCHxA5htiqg55crXYuXoQRKfDBFA1WEjWgP6LHhwBZeNK1VTsfTFUHCdrfp1bgwQ9xv5ski8PX9rL2dZXvgGDnw"
@@ -49,11 +49,11 @@
# * [Chain m/0'/1/2'/2/1000000000]
# * ext pub: xpub6H1LXWLaKsWFhvm6RVpEL9P4KfRZSW7abD2ttkWP3SSQvnyA8FSVqNTEcYFgJS2UaFcxupHiYkro49S8yGasTvXEYBVPamhGW6cFJodrTHy
# * ext prv: xprvA41z7zogVVwxVSgdKUHDy1SKmdb533PjDz7J6N6mV6uS3ze1ai8FHa8kmHScGpWmj4WggLyQjgPie1rFSruoUihUZREPSL39UNdE3BBDu76
seed = "000102030405060708090a0b0c0d0e0f".from_hex
- master = Keychain.new(seed: seed)
+ master = BTC::Keychain.new(seed: seed)
master.key.address.to_s.must_equal "15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma"
master.key.address.to_s.must_equal master.public_keychain.key.address.to_s
master.parent_fingerprint.must_equal 0
@@ -68,11 +68,11 @@
master.hardened?.must_equal false
master.xpub.must_equal "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8"
master.xprv.must_equal "xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi"
- master2 = Keychain.new(xprv: master.extended_private_key)
+ master2 = BTC::Keychain.new(xprv: master.extended_private_key)
master2.private?.must_equal true
(master2 == master).must_equal true
master2.xpub.must_equal master.xpub
master2.xprv.must_equal master.xprv
@@ -133,11 +133,11 @@
# * [Chain m/0/2147483647'/1/2147483646'/2]
# * ext pub: xpub6FnCn6nSzZAw5Tw7cgR9bi15UV96gLZhjDstkXXxvCLsUXBGXPdSnLFbdpq8p9HmGsApME5hQTZ3emM2rnY5agb9rXpVGyy3bdW6EEgAtqt
# * ext prv: xprvA2nrNbFZABcdryreWet9Ea4LvTJcGsqrMzxHx98MMrotbir7yrKCEXw7nadnHM8Dq38EGfSh6dqA9QWTyefMLEcBYJUuekgW4BYPJcr9E7j
seed = "fffcf9f6f3f0edeae7e4e1dedbd8d5d2cfccc9c6c3c0bdbab7b4b1aeaba8a5a29f9c999693908d8a8784817e7b7875726f6c696663605d5a5754514e4b484542".from_hex
- master = Keychain.new(seed: seed)
+ master = BTC::Keychain.new(seed: seed)
master.parent_fingerprint.must_equal 0
master.identifier.to_hex.must_equal "bd16bee53961a47d6ad888e29545434a89bdfe95"
master.fingerprint.must_equal 3172384485
master.depth.must_equal 0
@@ -171,11 +171,11 @@
m0pubFFprv1pubFEprv2.extended_public_key.must_equal "xpub6FnCn6nSzZAw5Tw7cgR9bi15UV96gLZhjDstkXXxvCLsUXBGXPdSnLFbdpq8p9HmGsApME5hQTZ3emM2rnY5agb9rXpVGyy3bdW6EEgAtqt"
m0pubFFprv1pubFEprv2.extended_private_key.must_equal "xprvA2nrNbFZABcdryreWet9Ea4LvTJcGsqrMzxHx98MMrotbir7yrKCEXw7nadnHM8Dq38EGfSh6dqA9QWTyefMLEcBYJUuekgW4BYPJcr9E7j"
end
it "should behave correctly on privkeys below 32-byte size" do
- keychain = Keychain.new(seed: "stress test")
+ keychain = BTC::Keychain.new(seed: "stress test")
#puts keychain.extended_private_key
# Uncomment this to figure out the indexes for the shorter keys
if false
indexes = []
10000.times do |i|
@@ -219,11 +219,11 @@
keychain.derived_key(455, hardened: true).private_key.bytes[0].must_equal 0x00
end
it "should verify a certain regression test" do
extprv = "xprv9s21ZrQH143K3ZhiFsU612wiYCnd5miCTnWRMRJCmbTUxnn3F2WXuTXcoEyWpsit8ZqS5ddNvsoaEQuwzNwH8nmVDS24NwHbiu5oCrj85Kz"
- keychain = Keychain.new(xprv: extprv)
+ keychain = BTC::Keychain.new(xprv: extprv)
key0 = keychain.derived_keychain(0, hardened: false).key
# puts "UNCOMPR: #{key0.uncompressed_key.address.to_s}"
# puts " COMPR: #{key0.compressed_key.address.to_s}"
# puts "DEFAULT: #{key0.address.to_s}"
# Test reports: 1MLjpNJZ3KZUdd5J9ZVnhxjFioC8DnhSr4
@@ -231,11 +231,11 @@
key0.address.to_s.must_equal "15aALBTZkDrW8iZBKXrUHQo9dPJtGPEHSy"
end
it "should support conversion to public keychain" do
seed = "000102030405060708090a0b0c0d0e0f".from_hex
- master = Keychain.new(seed: seed)
+ master = BTC::Keychain.new(seed: seed)
m0prv = master.derived_keychain(0, hardened:true)
m0prv_pub = m0prv.public_keychain
m0prv.private?.must_equal true
@@ -246,15 +246,15 @@
m0prv_pub.extended_private_key.must_equal nil
m0prv_pub.private?.must_equal false
m0prv_pub.public?.must_equal true
m0prv_pub.hardened?.must_equal true
- m0prv_pub2 = Keychain.new(extended_key: m0prv.extended_public_key)
+ m0prv_pub2 = BTC::Keychain.new(extended_key: m0prv.extended_public_key)
m0prv_pub2.must_equal m0prv_pub
end
it "should support public-only derivation" do
- keychain = Keychain.new(xpub: "xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB")
+ keychain = BTC::Keychain.new(xpub: "xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB")
m0pub = keychain.derived_keychain(0)
m0pub.extended_public_key.must_equal "xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH"
m0pub.extended_private_key.must_equal nil
end
end