From b201f139f5f6abb73bd31ac613ad8cca8a9ef704 Mon Sep 17 00:00:00 2001 From: Alejandro Cavallero Date: Mon, 8 Nov 2021 14:41:07 -0300 Subject: [PATCH 1/3] RSK support for Bitcore Wallet Client --- packages/bitcore-wallet-client/src/lib/api.ts | 9 ++++++--- .../bitcore-wallet-client/src/lib/common/constants.ts | 4 +++- packages/bitcore-wallet-client/src/lib/common/utils.ts | 3 ++- packages/bitcore-wallet-client/src/lib/credentials.ts | 2 ++ packages/bitcore-wallet-client/src/lib/key.ts | 2 ++ 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/bitcore-wallet-client/src/lib/api.ts b/packages/bitcore-wallet-client/src/lib/api.ts index 74a3bbddca9..d6022ccde96 100644 --- a/packages/bitcore-wallet-client/src/lib/api.ts +++ b/packages/bitcore-wallet-client/src/lib/api.ts @@ -23,7 +23,8 @@ var Bitcore_ = { eth: CWC.BitcoreLib, xrp: CWC.BitcoreLib, doge: CWC.BitcoreLibDoge, - ltc: CWC.BitcoreLibLtc + ltc: CWC.BitcoreLibLtc, + rsk: CWC.BitcoreLib }; var Mnemonic = require('bitcore-mnemonic'); var url = require('url'); @@ -468,7 +469,7 @@ export class API extends EventEmitter { if (!_.includes(Constants.COINS, coin)) return cb(new Error('Invalid coin')); - if (coin == 'eth') + if (coin == 'eth' || coin == 'rsk' || coin == 'rbtc') return cb(new Error('ETH not supported for this action')); var B = Bitcore_[coin]; @@ -703,6 +704,7 @@ export class API extends EventEmitter { switch (chain) { case 'XRP': case 'ETH': + case 'RSK': const unsignedTxs = t.uncheckedSerialize(); const signedTxs = []; for (let index = 0; index < signatures.length; index++) { @@ -2515,7 +2517,7 @@ export class API extends EventEmitter { // * @return {Callback} cb - Return error (if exists) and nonce // */ getNonce(opts, cb) { - $.checkArgument(opts.coin == 'eth', 'Invalid coin: must be "eth"'); + $.checkArgument(opts.coin == 'eth' || opts.coin == 'rsk', 'Invalid coin: must be "eth"'); var qs = []; qs.push(`coin=${opts.coin}`); @@ -2933,6 +2935,7 @@ export class API extends EventEmitter { ['doge', 'testnet'], ['ltc', 'testnet'], ['ltc', 'livenet'], + ['rsk', 'livenet'], ['btc', 'livenet', true], ['bch', 'livenet', true], ['doge', 'livenet', true], diff --git a/packages/bitcore-wallet-client/src/lib/common/constants.ts b/packages/bitcore-wallet-client/src/lib/common/constants.ts index 7f21acc5e95..88aed3aa668 100644 --- a/packages/bitcore-wallet-client/src/lib/common/constants.ts +++ b/packages/bitcore-wallet-client/src/lib/common/constants.ts @@ -33,7 +33,9 @@ export const Constants = { 'gusd', 'busd', 'dai', - 'wbtc' + 'wbtc', + 'rsk', + 'rbtc' ], ERC20: ['usdc', 'pax', 'gusd', 'busd', 'dai', 'wbtc'], UTXO_COINS: ['btc', 'bch', 'doge', 'ltc'], diff --git a/packages/bitcore-wallet-client/src/lib/common/utils.ts b/packages/bitcore-wallet-client/src/lib/common/utils.ts index 0a653764679..7de2dc3904c 100644 --- a/packages/bitcore-wallet-client/src/lib/common/utils.ts +++ b/packages/bitcore-wallet-client/src/lib/common/utils.ts @@ -24,7 +24,8 @@ const Bitcore_ = { eth: Bitcore, xrp: Bitcore, doge: BitcoreLibDoge, - ltc: BitcoreLibLtc + ltc: BitcoreLibLtc, + rsk: Bitcore }; const PrivateKey = Bitcore.PrivateKey; const PublicKey = Bitcore.PublicKey; diff --git a/packages/bitcore-wallet-client/src/lib/credentials.ts b/packages/bitcore-wallet-client/src/lib/credentials.ts index 4b4bce664c3..8f7e796ad71 100644 --- a/packages/bitcore-wallet-client/src/lib/credentials.ts +++ b/packages/bitcore-wallet-client/src/lib/credentials.ts @@ -210,6 +210,8 @@ export class Credentials { coin = '3'; } else if (this.coin == 'ltc') { coin = '2'; + } else if (this.coin == 'rsk' || this.coin == 'rbtc') { + coin = '137'; } else { throw new Error('unknown coin: ' + this.coin); } diff --git a/packages/bitcore-wallet-client/src/lib/key.ts b/packages/bitcore-wallet-client/src/lib/key.ts index 1f4062ec03a..59223af00c2 100644 --- a/packages/bitcore-wallet-client/src/lib/key.ts +++ b/packages/bitcore-wallet-client/src/lib/key.ts @@ -399,6 +399,8 @@ export class Key { coinCode = '3'; } else if (opts.coin == 'ltc') { coinCode = '2'; + } else if (opts.coin == 'rsk' || opts.coin == 'rbtc') { + coinCode = '137'; } else { throw new Error('unknown coin: ' + opts.coin); } From 4d2cafec411e3ea13fe53dda58bb9c90aea3f539 Mon Sep 17 00:00:00 2001 From: Alejandro Cavallero Date: Mon, 8 Nov 2021 15:12:11 -0300 Subject: [PATCH 2/3] fix --- packages/bitcore-wallet-client/src/lib/api.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/bitcore-wallet-client/src/lib/api.ts b/packages/bitcore-wallet-client/src/lib/api.ts index d6022ccde96..e1f733a75df 100644 --- a/packages/bitcore-wallet-client/src/lib/api.ts +++ b/packages/bitcore-wallet-client/src/lib/api.ts @@ -2517,7 +2517,7 @@ export class API extends EventEmitter { // * @return {Callback} cb - Return error (if exists) and nonce // */ getNonce(opts, cb) { - $.checkArgument(opts.coin == 'eth' || opts.coin == 'rsk', 'Invalid coin: must be "eth"'); + $.checkArgument(opts.coin == 'eth' || opts.coin == 'rsk' || opts.coin == 'rbtc', 'Invalid coin: must be "eth"'); var qs = []; qs.push(`coin=${opts.coin}`); @@ -2936,6 +2936,7 @@ export class API extends EventEmitter { ['ltc', 'testnet'], ['ltc', 'livenet'], ['rsk', 'livenet'], + ['rbtc', 'livenet'], ['btc', 'livenet', true], ['bch', 'livenet', true], ['doge', 'livenet', true], From e054d9e0e8a378a3b6eb55d1c5609947a603f2e0 Mon Sep 17 00:00:00 2001 From: Alejandro Cavallero Date: Mon, 8 Nov 2021 16:03:13 -0300 Subject: [PATCH 3/3] Fix message --- packages/bitcore-wallet-client/src/lib/api.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bitcore-wallet-client/src/lib/api.ts b/packages/bitcore-wallet-client/src/lib/api.ts index e1f733a75df..b6bdc5f6a58 100644 --- a/packages/bitcore-wallet-client/src/lib/api.ts +++ b/packages/bitcore-wallet-client/src/lib/api.ts @@ -2517,7 +2517,7 @@ export class API extends EventEmitter { // * @return {Callback} cb - Return error (if exists) and nonce // */ getNonce(opts, cb) { - $.checkArgument(opts.coin == 'eth' || opts.coin == 'rsk' || opts.coin == 'rbtc', 'Invalid coin: must be "eth"'); + $.checkArgument(opts.coin == 'eth' || opts.coin == 'rsk' || opts.coin == 'rbtc', 'Invalid coin: must be "eth" or "rsk"'); var qs = []; qs.push(`coin=${opts.coin}`);