mirror of
https://github.com/OneKeyHQ/bip39.git
synced 2026-05-28 03:24:44 +00:00
@@ -1175,6 +1175,31 @@ libs.bitcoin.networks.revolutionvr = {
|
|||||||
wif: 0xc6,
|
wif: 0xc6,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
libs.bitcoin.networks.rsk = {
|
||||||
|
messagePrefix: '\x18RSK Signed Message:\n',
|
||||||
|
bip32: {
|
||||||
|
public: 0x0488b21e,
|
||||||
|
private: 0x0488ade4
|
||||||
|
},
|
||||||
|
// TODO defaulting to Bitcoin value, check this
|
||||||
|
pubKeyHash: 0x00,
|
||||||
|
// TODO defaulting to Bitcoin value, check this
|
||||||
|
scriptHash: 0x05,
|
||||||
|
// TODO defaulting to Bitcoin value, check this
|
||||||
|
wif: 0x80
|
||||||
|
};
|
||||||
|
|
||||||
|
libs.bitcoin.networks.rsktestnet = {
|
||||||
|
messagePrefix: '\x18RSK Testnet Signed Message:\n',
|
||||||
|
bip32: {
|
||||||
|
public: 0x043587cf,
|
||||||
|
private: 0x04358394
|
||||||
|
},
|
||||||
|
pubKeyHash: 0x6f,
|
||||||
|
scriptHash: 0xc4,
|
||||||
|
wif: 0xef
|
||||||
|
};
|
||||||
|
|
||||||
libs.bitcoin.networks.rubycoin = {
|
libs.bitcoin.networks.rubycoin = {
|
||||||
messagePrefix: '\x18Rubycoin Signed Message:\n',
|
messagePrefix: '\x18Rubycoin Signed Message:\n',
|
||||||
bip32: {
|
bip32: {
|
||||||
|
|||||||
+79
-4
@@ -1140,11 +1140,40 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RSK values are different
|
||||||
|
if (networkIsRsk()) {
|
||||||
|
var pubkeyBuffer = keyPair.getPublicKeyBuffer();
|
||||||
|
var ethPubkey = libs.ethUtil.importPublic(pubkeyBuffer);
|
||||||
|
var addressBuffer = libs.ethUtil.publicToAddress(ethPubkey);
|
||||||
|
var hexAddress = addressBuffer.toString('hex');
|
||||||
|
// Use chainId based on selected network
|
||||||
|
// Ref: https://developers.rsk.co/rsk/architecture/account-based/#chainid
|
||||||
|
var chainId;
|
||||||
|
var rskNetworkName = networks[DOM.network.val()].name;
|
||||||
|
switch (rskNetworkName) {
|
||||||
|
case "R-BTC - RSK":
|
||||||
|
chainId = 30;
|
||||||
|
break;
|
||||||
|
case "tR-BTC - RSK Testnet":
|
||||||
|
chainId = 31;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
chainId = null;
|
||||||
|
}
|
||||||
|
var checksumAddress = toChecksumAddressForRsk(hexAddress, chainId);
|
||||||
|
address = libs.ethUtil.addHexPrefix(checksumAddress);
|
||||||
|
pubkey = libs.ethUtil.addHexPrefix(pubkey);
|
||||||
|
if (hasPrivkey) {
|
||||||
|
privkey = libs.ethUtil.bufferToHex(keyPair.d.toBuffer());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Handshake values are different
|
// Handshake values are different
|
||||||
if (networks[DOM.network.val()].name == "HNS - Handshake") {
|
if (networks[DOM.network.val()].name == "HNS - Handshake") {
|
||||||
var ring = libs.handshake.KeyRing.fromPublic(keyPair.getPublicKeyBuffer())
|
var ring = libs.handshake.KeyRing.fromPublic(keyPair.getPublicKeyBuffer())
|
||||||
address = ring.getAddress().toString();
|
address = ring.getAddress().toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stellar is different
|
// Stellar is different
|
||||||
if (networks[DOM.network.val()].name == "XLM - Stellar") {
|
if (networks[DOM.network.val()].name == "XLM - Stellar") {
|
||||||
var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
|
var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
|
||||||
@@ -1860,6 +1889,12 @@
|
|||||||
|| (name == "ERE - EtherCore")
|
|| (name == "ERE - EtherCore")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function networkIsRsk() {
|
||||||
|
var name = networks[DOM.network.val()].name;
|
||||||
|
return (name == "R-BTC - RSK")
|
||||||
|
|| (name == "tR-BTC - RSK Testnet");
|
||||||
|
}
|
||||||
|
|
||||||
function networkHasSegwit() {
|
function networkHasSegwit() {
|
||||||
var n = network;
|
var n = network;
|
||||||
if ("baseNetwork" in network) {
|
if ("baseNetwork" in network) {
|
||||||
@@ -3004,16 +3039,16 @@
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "RBTC - RSK",
|
name: "R-BTC - RSK",
|
||||||
onSelect: function() {
|
onSelect: function() {
|
||||||
network = libs.bitcoin.networks.rubycoin;
|
network = libs.bitcoin.networks.rsk;
|
||||||
setHdCoin(137);
|
setHdCoin(137);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "tRBTC - RSK Testnet",
|
name: "tR-BTC - RSK Testnet",
|
||||||
onSelect: function() {
|
onSelect: function() {
|
||||||
network = libs.bitcoin.networks.rubycoin;
|
network = libs.bitcoin.networks.rsktestnet;
|
||||||
setHdCoin(37310);
|
setHdCoin(37310);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -3394,6 +3429,46 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
// RSK - RSK functions - begin
|
||||||
|
function stripHexPrefix(address) {
|
||||||
|
if (typeof address !== "string") {
|
||||||
|
throw new Error("address parameter should be a string.");
|
||||||
|
}
|
||||||
|
|
||||||
|
var hasPrefix = (address.substring(0, 2) === "0x" ||
|
||||||
|
address.substring(0, 2) === "0X");
|
||||||
|
|
||||||
|
return hasPrefix ? address.slice(2) : address;
|
||||||
|
};
|
||||||
|
|
||||||
|
function toChecksumAddressForRsk(address, chainId = null) {
|
||||||
|
if (typeof address !== "string") {
|
||||||
|
throw new Error("address parameter should be a string.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!/^(0x)?[0-9a-f]{40}$/i.test(address)) {
|
||||||
|
throw new Error("Given address is not a valid RSK address: " + address);
|
||||||
|
}
|
||||||
|
|
||||||
|
var stripAddress = stripHexPrefix(address).toLowerCase();
|
||||||
|
var prefix = chainId != null ? chainId.toString() + "0x" : "";
|
||||||
|
var keccakHash = libs.ethUtil.keccak256(prefix + stripAddress)
|
||||||
|
.toString("hex")
|
||||||
|
.replace(/^0x/i, "");
|
||||||
|
var checksumAddress = "0x";
|
||||||
|
|
||||||
|
for (var i = 0; i < stripAddress.length; i++) {
|
||||||
|
checksumAddress +=
|
||||||
|
parseInt(keccakHash[i], 16) >= 8 ?
|
||||||
|
stripAddress[i].toUpperCase() :
|
||||||
|
stripAddress[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
return checksumAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
// RSK - RSK functions - end
|
||||||
|
|
||||||
// ELA - Elastos functions - begin
|
// ELA - Elastos functions - begin
|
||||||
function displayBip44InfoForELA() {
|
function displayBip44InfoForELA() {
|
||||||
if (!isELA()) {
|
if (!isELA()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user