Add Starname (IOV) support

This commit is contained in:
Dave Puchyr
2021-02-25 15:51:45 +01:00
parent 23f393acfb
commit 20bd34b014
3 changed files with 34 additions and 10 deletions

View File

@@ -1,13 +1,13 @@
function CosmosBufferToPublic(pubBuf) { function CosmosBufferToPublic(pubBuf, hrp = "cosmos") {
const Buffer = libs.buffer.Buffer; const Buffer = libs.buffer.Buffer;
const AminoSecp256k1PubkeyPrefix = Buffer.from("EB5AE987", "hex"); const AminoSecp256k1PubkeyPrefix = Buffer.from("EB5AE987", "hex");
const AminoSecp256k1PubkeyLength = Buffer.from("21", "hex"); const AminoSecp256k1PubkeyLength = Buffer.from("21", "hex");
pubBuf = Buffer.concat([AminoSecp256k1PubkeyPrefix, AminoSecp256k1PubkeyLength, pubBuf]); pubBuf = Buffer.concat([AminoSecp256k1PubkeyPrefix, AminoSecp256k1PubkeyLength, pubBuf]);
return libs.bech32.encode("cosmospub", libs.bech32.toWords(pubBuf)); return libs.bech32.encode(`${hrp}pub`, libs.bech32.toWords(pubBuf));
} }
function CosmosBufferToAddress(pubBuf) { function CosmosBufferToAddress(pubBuf, hrp = "cosmos") {
const sha256_ed = libs.createHash("sha256").update(pubBuf).digest(); const sha256_ed = libs.createHash("sha256").update(pubBuf).digest();
const ripemd160_ed = libs.createHash("rmd160").update(sha256_ed).digest(); const ripemd160_ed = libs.createHash("rmd160").update(sha256_ed).digest();
return libs.bech32.encode("cosmos", libs.bech32.toWords(ripemd160_ed)); return libs.bech32.encode(hrp, libs.bech32.toWords(ripemd160_ed));
} }

View File

@@ -1350,21 +1350,21 @@
} }
// ZooBC address format may vary // ZooBC address format may vary
if (networks[DOM.network.val()].name == "ZBC - ZooBlockchain") { if (networks[DOM.network.val()].name == "ZBC - ZooBlockchain") {
var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44); var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
var coin = parseIntNoNaN(DOM.bip44coin.val(), 0); var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
var path = "m/"; var path = "m/";
path += purpose + "'/"; path += purpose + "'/";
path += coin + "'/" + index + "'"; path += coin + "'/" + index + "'";
var result = libs.zoobcUtil.getKeypair(path, seed); var result = libs.zoobcUtil.getKeypair(path, seed);
let publicKey = result.pubKey.slice(1, 33); let publicKey = result.pubKey.slice(1, 33);
let privateKey = result.key; let privateKey = result.key;
privkey = privateKey.toString('hex'); privkey = privateKey.toString('hex');
pubkey = publicKey.toString('hex'); pubkey = publicKey.toString('hex');
indexText = path; indexText = path;
address = libs.zoobcUtil.getZBCAddress(publicKey, 'ZBC'); address = libs.zoobcUtil.getZBCAddress(publicKey, 'ZBC');
} }
@@ -1425,7 +1425,14 @@
privkey = keyPair.d.toBuffer().toString("base64"); privkey = keyPair.d.toBuffer().toString("base64");
} }
//Groestlcoin Addresses are different if (networks[DOM.network.val()].name == "IOV - Starname") {
const hrp = "star";
address = CosmosBufferToAddress(keyPair.getPublicKeyBuffer(), hrp);
pubkey = CosmosBufferToPublic(keyPair.getPublicKeyBuffer(), hrp);
privkey = keyPair.d.toBuffer().toString("base64");
}
//Groestlcoin Addresses are different
if(isGRS()) { if(isGRS()) {
if (isSegwit) { if (isSegwit) {
@@ -2851,6 +2858,13 @@
}, },
}, },
{ {
name: "IOV - Starname",
onSelect: function() {
network = libs.bitcoin.networks.bitcoin;
setHdCoin(234);
},
},
{
name: "IXC - Ixcoin", name: "IXC - Ixcoin",
onSelect: function() { onSelect: function() {
network = libs.bitcoin.networks.ixcoin; network = libs.bitcoin.networks.ixcoin;

View File

@@ -1355,6 +1355,16 @@ it('Allows selection of Iop', function(done) {
}; };
testNetwork(done, params); testNetwork(done, params);
}); });
it('Allows selection of Starname', function(done) {
var params = {
selectText: "IOV - Starname",
phrase: "abandon abandon ability",
firstAddress: "star1xgfvgq40r7ff8ylw9l95dw56xnr0pvtjnlp7h4",
firstPubKey: "starpub1addwnpepqg9x5cft48hcgx25vyzeyygntl7pt763datr6v50hrecafyane54xlqdxkd",
firstPrivKey: "bGI4BNRvMYT1lbCOoH000HvNFPkyXms9n3Xp1X/7E80=",
};
testNetwork(done, params);
});
it('Allows selection of Ixcoin', function(done) { it('Allows selection of Ixcoin', function(done) {
var params = { var params = {
selectText: "IXC - Ixcoin", selectText: "IXC - Ixcoin",