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