new Crown address format. May not be elegant solution, but bitcoinjs has limitation of network prefix length and I don't want to modify it. This approach is isolated and does not affect others

This commit is contained in:
Pawel Cioch
2019-04-16 23:17:16 -05:00
parent 30d6779baa
commit bf13c95fb0
3 changed files with 41 additions and 2 deletions

View File

@@ -39,7 +39,27 @@ bitcoinjs.bitcoin.networks.crown = {
}, },
pubKeyHash: 0x00, pubKeyHash: 0x00,
scriptHash: 0x05, scriptHash: 0x05,
wif: 0x80 wif: 0x80,
toNewAddress: function(oldAddress)
{
var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
var b58 = basex(ALPHABET);
var addrBytes = b58.decode(oldAddress);
var hash160 = new Uint16Array(23);
hash160[0]= 0x01; //C
hash160[1]= 0x75; //R
hash160[2]= 0x07; //W
addrBytes.copy(hash160, 3, 1, 21);
var checksum = bitcoinjs.bitcoin.crypto.hash256(hash160).subarray(0, 4);
var binaryAddr = new Uint16Array(27);
binaryAddr.set(hash160,0);
checksum.copy(binaryAddr, 23, 0, 4);
var newAddress = b58.encode(binaryAddr);
return newAddress;
}
}; };
bitcoinjs.bitcoin.networks.dash = { bitcoinjs.bitcoin.networks.dash = {

View File

@@ -977,6 +977,11 @@
address = bitcoinjs.bitcoin.address.fromOutputScript(scriptpubkey, network) address = bitcoinjs.bitcoin.address.fromOutputScript(scriptpubkey, network)
} }
} }
if ((networks[DOM.network.val()].name == "CRW - Crown")) {
address = bitcoinjs.bitcoin.networks.crown.toNewAddress(address);
}
addAddressToList(indexText, address, pubkey, privkey); addAddressToList(indexText, address, pubkey, privkey);
if (isLast) { if (isLast) {
hidePending(); hidePending();
@@ -1874,6 +1879,13 @@
setHdCoin(186); setHdCoin(186);
}, },
}, },
{
name: "CRW - Crown (Legacy)",
onSelect: function() {
network = bitcoinjs.bitcoin.networks.crown;
setHdCoin(72);
},
},
{ {
name: "CRW - Crown", name: "CRW - Crown",
onSelect: function() { onSelect: function() {

View File

@@ -472,10 +472,17 @@ it('Allows selection of clam', function(done) {
}; };
testNetwork(done, params); testNetwork(done, params);
}); });
it('Allows selection of crown', function(done) {
var params = {
selectText: "CRW - Crown (Legacy)",
firstAddress: "18pWSwSUAQdiwMHUfFZB1fM2xue9X1FqE5",
};
testNetwork(done, params);
});
it('Allows selection of crown', function(done) { it('Allows selection of crown', function(done) {
var params = { var params = {
selectText: "CRW - Crown", selectText: "CRW - Crown",
firstAddress: "18pWSwSUAQdiwMHUfFZB1fM2xue9X1FqE5", firstAddress: "CRWKnVmVhvH1KWTYe6sq8xV4dFGcFpBEEkPQ",
}; };
testNetwork(done, params); testNetwork(done, params);
}); });