From 0702ecd3520c44cb8016f80329dcb5a3c8df88fc Mon Sep 17 00:00:00 2001 From: xarakas Date: Mon, 30 Apr 2018 17:40:27 +0300 Subject: [PATCH] Add zcash support --- src/js/bitcoinjs-3.3.2.js | 25 ++++++++++++++++++------- src/js/bitcoinjs-extensions.js | 11 +++++++++++ src/js/index.js | 8 ++++++++ tests/spec/tests.js | 7 +++++++ 4 files changed, 44 insertions(+), 7 deletions(-) diff --git a/src/js/bitcoinjs-3.3.2.js b/src/js/bitcoinjs-3.3.2.js index de75eaf..2390168 100644 --- a/src/js/bitcoinjs-3.3.2.js +++ b/src/js/bitcoinjs-3.3.2.js @@ -8662,13 +8662,24 @@ function fromBech32 (address) { } function toBase58Check (hash, version) { - typeforce(types.tuple(types.Hash160bit, types.UInt8), arguments) + if (version < 256){ + typeforce(types.tuple(types.Hash160bit, types.UInt8), arguments) - var payload = Buffer.allocUnsafe(21) - payload.writeUInt8(version, 0) - hash.copy(payload, 1) + var payload = Buffer.allocUnsafe(21) + payload.writeUInt8(version, 0) + hash.copy(payload, 1) - return bs58check.encode(payload) + return bs58check.encode(payload) + } + else{ + typeforce(types.tuple(types.Hash160bit, types.UInt16), arguments) + + var payload = Buffer.allocUnsafe(22) + payload.writeUInt16BE(version, 0) + hash.copy(payload, 2) + + return bs58check.encode(payload) + } } function toBech32 (data, version, prefix) { @@ -12162,8 +12173,8 @@ var Network = typeforce.compile({ public: typeforce.UInt32, private: typeforce.UInt32 }, - pubKeyHash: typeforce.UInt8, - scriptHash: typeforce.UInt8, + pubKeyHash: typeforce.oneOf(typeforce.UInt8, typeforce.UInt16), + scriptHash: typeforce.oneOf(typeforce.UInt8, typeforce.UInt16), wif: typeforce.UInt8 }) diff --git a/src/js/bitcoinjs-extensions.js b/src/js/bitcoinjs-extensions.js index b556f42..8c0f79e 100644 --- a/src/js/bitcoinjs-extensions.js +++ b/src/js/bitcoinjs-extensions.js @@ -1199,3 +1199,14 @@ bitcoinjs.bitcoin.networks.zcoin = { scriptHash: 0x07, wif: 0xd2, }; + +bitcoinjs.bitcoin.networks.zcash = { + messagePrefix: '\x18Zcash Signed Message:\n', + bip32: { + public: 0x0488B21E, + private: 0x0488ADE4, + }, + pubKeyHash: 0x1CB8, + scriptHash: 0x1CBD, + wif: 0x80, +}; diff --git a/src/js/index.js b/src/js/index.js index 758b840..fc7e13b 100644 --- a/src/js/index.js +++ b/src/js/index.js @@ -2428,6 +2428,14 @@ setHdCoin(136); }, }, + { + name: "ZEC - Zcash", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.zcash; + setHdCoin(133); + }, + }, ] var clients = [ diff --git a/tests/spec/tests.js b/tests/spec/tests.js index ac2151e..fe83447 100644 --- a/tests/spec/tests.js +++ b/tests/spec/tests.js @@ -1166,6 +1166,13 @@ it('Allows selection of Zcoin', function(done) { }; testNetwork(done, params); }); +it('Allows selection of Zcash', function(done) { + var params = { + selectText: "ZEC - Zcash", + firstAddress: "t1Sz8AneMcVuzUg3tPJ8et5AS5LFJ7K2EF9", + }; + testNetwork(done, params); +}); // BIP39 seed is set from phrase -- 2.41.0