@tatumio/bch 2.0.1-alpha.224 → 2.0.1-alpha.227
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +7 -7
- package/src/index.js +1 -4
- package/src/index.js.map +1 -1
- package/src/lib/bch.sdk.errors.js +5 -9
- package/src/lib/bch.sdk.errors.js.map +1 -1
- package/src/lib/bch.sdk.js +15 -19
- package/src/lib/bch.sdk.js.map +1 -1
- package/src/lib/bch.sdk.tx.js +29 -33
- package/src/lib/bch.sdk.tx.js.map +1 -1
- package/src/lib/bch.sdk.wallet.js +17 -22
- package/src/lib/bch.sdk.wallet.js.map +1 -1
- package/src/lib/utils/bch.address.js +15 -19
- package/src/lib/utils/bch.address.js.map +1 -1
package/package.json
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
{
|
2
2
|
"name": "@tatumio/bch",
|
3
|
-
"version": "2.0.1-alpha.
|
3
|
+
"version": "2.0.1-alpha.227",
|
4
4
|
"license": "MIT",
|
5
5
|
"main": "./src/index.js",
|
6
6
|
"typings": "./src/index.d.ts",
|
7
7
|
"dependencies": {
|
8
|
-
"@tatumio/shared-testing": "2.0.1-alpha.
|
9
|
-
"@tatumio/shared-blockchain-btc-based": "2.0.1-alpha.
|
10
|
-
"@tatumio/shared-core": "2.0.1-alpha.
|
8
|
+
"@tatumio/shared-testing": "2.0.1-alpha.224",
|
9
|
+
"@tatumio/shared-blockchain-btc-based": "2.0.1-alpha.224",
|
10
|
+
"@tatumio/shared-core": "2.0.1-alpha.224",
|
11
11
|
"axios": "^0.24.0",
|
12
|
-
"@tatumio/api-client": "2.0.1-alpha.
|
12
|
+
"@tatumio/api-client": "2.0.1-alpha.224",
|
13
13
|
"cross-blob": "^3.0.0",
|
14
14
|
"form-data": "^4.0.0",
|
15
|
-
"@tatumio/shared-blockchain-abstract": "2.0.1-alpha.
|
16
|
-
"@tatumio/shared-abstract-sdk": "2.0.1-alpha.
|
15
|
+
"@tatumio/shared-blockchain-abstract": "2.0.1-alpha.224",
|
16
|
+
"@tatumio/shared-abstract-sdk": "2.0.1-alpha.224",
|
17
17
|
"bignumber.js": "^9.0.2",
|
18
18
|
"bip32": "^2.0.5",
|
19
19
|
"bip39": "^3.0.2",
|
package/src/index.js
CHANGED
package/src/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/blockchain/bch/src/index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/blockchain/bch/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA"}
|
@@ -1,11 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
const shared_abstract_sdk_1 = require("@tatumio/shared-abstract-sdk");
|
5
|
-
exports.BCH_ERRORS_MAPPING = {
|
6
|
-
'Transaction has absurd fees': shared_abstract_sdk_1.SdkErrorCode.BTC_FEE_IS_TOO_LARGE,
|
1
|
+
import { SdkError, SdkErrorCode } from '@tatumio/shared-abstract-sdk';
|
2
|
+
export const BCH_ERRORS_MAPPING = {
|
3
|
+
'Transaction has absurd fees': SdkErrorCode.BTC_FEE_IS_TOO_LARGE,
|
7
4
|
};
|
8
|
-
class BchSdkError extends
|
5
|
+
export class BchSdkError extends SdkError {
|
9
6
|
constructor(error) {
|
10
7
|
if (typeof error === 'string') {
|
11
8
|
super({
|
@@ -15,10 +12,9 @@ class BchSdkError extends shared_abstract_sdk_1.SdkError {
|
|
15
12
|
else {
|
16
13
|
super({
|
17
14
|
originalError: error,
|
18
|
-
errorSubstringMapping:
|
15
|
+
errorSubstringMapping: BCH_ERRORS_MAPPING,
|
19
16
|
});
|
20
17
|
}
|
21
18
|
}
|
22
19
|
}
|
23
|
-
exports.BchSdkError = BchSdkError;
|
24
20
|
//# sourceMappingURL=bch.sdk.errors.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"bch.sdk.errors.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/bch/src/lib/bch.sdk.errors.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"bch.sdk.errors.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/bch/src/lib/bch.sdk.errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAErE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,6BAA6B,EAAE,YAAY,CAAC,oBAAoB;CACjE,CAAA;AAOD,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,YAAY,KAA8B;QACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,KAAK,CAAC;gBACJ,IAAI,EAAE,KAAK;aACZ,CAAC,CAAA;SACH;aAAM;YACL,KAAK,CAAC;gBACJ,aAAa,EAAE,KAAK;gBACpB,qBAAqB,EAAE,kBAAkB;aAC1C,CAAC,CAAA;SACH;IACH,CAAC;CACF"}
|
package/src/lib/bch.sdk.js
CHANGED
@@ -1,22 +1,18 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
const
|
7
|
-
const
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
getTxForAccount: api_client_1.BlockchainBitcoinCashService.bchGetTxByAddress,
|
17
|
-
getTransaction: api_client_1.BlockchainBitcoinCashService.bchGetRawTransaction,
|
18
|
-
send: api_client_1.BlockchainBitcoinCashService.bchTransferBlockchain,
|
1
|
+
import { Blockchain } from '@tatumio/shared-core';
|
2
|
+
import { btcBasedSdk } from '@tatumio/shared-blockchain-btc-based';
|
3
|
+
import { BlockchainBitcoinCashService } from '@tatumio/api-client';
|
4
|
+
import { bchTransactions } from './bch.sdk.tx';
|
5
|
+
import { bchWallet } from './bch.sdk.wallet';
|
6
|
+
const blockchain = Blockchain.BCH;
|
7
|
+
export const TatumBchSDK = (args) => {
|
8
|
+
return Object.assign(Object.assign({}, btcBasedSdk(Object.assign(Object.assign({}, args), { blockchain }))), { wallet: bchWallet(Object.assign(Object.assign({}, args), { blockchain })), transaction: bchTransactions(), blockchain: {
|
9
|
+
info: BlockchainBitcoinCashService.bchGetBlockChainInfo,
|
10
|
+
broadcast: BlockchainBitcoinCashService.bchBroadcast,
|
11
|
+
getBlockHash: BlockchainBitcoinCashService.bchGetBlockHash,
|
12
|
+
getBlock: BlockchainBitcoinCashService.bchGetBlock,
|
13
|
+
getTxForAccount: BlockchainBitcoinCashService.bchGetTxByAddress,
|
14
|
+
getTransaction: BlockchainBitcoinCashService.bchGetRawTransaction,
|
15
|
+
send: BlockchainBitcoinCashService.bchTransferBlockchain,
|
19
16
|
} });
|
20
17
|
};
|
21
|
-
exports.TatumBchSDK = TatumBchSDK;
|
22
18
|
//# sourceMappingURL=bch.sdk.js.map
|
package/src/lib/bch.sdk.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"bch.sdk.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/bch/src/lib/bch.sdk.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"bch.sdk.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/bch/src/lib/bch.sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAClE,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAA;AAEjC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAkB,EAAE,EAAE;IAChD,uCACK,WAAW,iCAAM,IAAI,KAAE,UAAU,IAAG,KACvC,MAAM,EAAE,SAAS,iCAAM,IAAI,KAAE,UAAU,IAAG,EAC1C,WAAW,EAAE,eAAe,EAAE,EAC9B,UAAU,EAAE;YACV,IAAI,EAAE,4BAA4B,CAAC,oBAAoB;YACvD,SAAS,EAAE,4BAA4B,CAAC,YAAY;YACpD,YAAY,EAAE,4BAA4B,CAAC,eAAe;YAC1D,QAAQ,EAAE,4BAA4B,CAAC,WAAW;YAClD,eAAe,EAAE,4BAA4B,CAAC,iBAAiB;YAC/D,cAAc,EAAE,4BAA4B,CAAC,oBAAoB;YACjE,IAAI,EAAE,4BAA4B,CAAC,qBAAqB;SACzD,IACF;AACH,CAAC,CAAA"}
|
package/src/lib/bch.sdk.tx.js
CHANGED
@@ -1,26 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
const
|
10
|
-
|
11
|
-
const bignumber_js_1 = (0, tslib_1.__importDefault)(require("bignumber.js"));
|
12
|
-
const sendTransaction = (body, args) => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
|
13
|
-
return api_client_1.ApiServices.blockchain.bcash.bchBroadcast({
|
1
|
+
import { __awaiter } from "tslib";
|
2
|
+
import { ApiServices, } from '@tatumio/api-client';
|
3
|
+
import { bcashAddressHelper } from './utils/bch.address';
|
4
|
+
import { BchSdkError } from './bch.sdk.errors';
|
5
|
+
import { amountUtils, SdkErrorCode } from '@tatumio/shared-abstract-sdk';
|
6
|
+
import coininfo from 'coininfo';
|
7
|
+
import { ECPair, ECSignature, TransactionBuilder } from '@tatumio/bitcoincashjs2-lib';
|
8
|
+
import BigNumber from 'bignumber.js';
|
9
|
+
const sendTransaction = (body, args) => __awaiter(void 0, void 0, void 0, function* () {
|
10
|
+
return ApiServices.blockchain.bcash.bchBroadcast({
|
14
11
|
txData: yield prepareSignedTransaction(body, args),
|
15
12
|
});
|
16
13
|
});
|
17
14
|
// @TODO add support - by address
|
18
|
-
const prepareSignedTransaction = (body, args) =>
|
15
|
+
const prepareSignedTransaction = (body, args) => __awaiter(void 0, void 0, void 0, function* () {
|
19
16
|
try {
|
20
17
|
const network = args.testnet
|
21
|
-
?
|
22
|
-
:
|
23
|
-
const transactionBuilder = new
|
18
|
+
? coininfo.bitcoincash.test.toBitcoinJS()
|
19
|
+
: coininfo.bitcoincash.main.toBitcoinJS();
|
20
|
+
const transactionBuilder = new TransactionBuilder(network);
|
24
21
|
const privateKeysToSign = [];
|
25
22
|
const amountToSign = [];
|
26
23
|
const txs = yield getTransactions(body.fromUTXO.map((u) => u.txHash));
|
@@ -32,51 +29,50 @@ const prepareSignedTransaction = (body, args) => (0, tslib_1.__awaiter)(void 0,
|
|
32
29
|
privateKeysToSign.push(item.privateKey);
|
33
30
|
const vout = txs[i].vout[item.index];
|
34
31
|
if (!vout)
|
35
|
-
throw new
|
36
|
-
amountToSign.push(
|
32
|
+
throw new BchSdkError(SdkErrorCode.BTC_UTXO_NOT_FOUND);
|
33
|
+
amountToSign.push(amountUtils.toSatoshis(vout.value));
|
37
34
|
const fromUTXO = body.fromUTXO;
|
38
35
|
if (fromUTXO && 'signatureId' in fromUTXO[0] && fromUTXO[0].signatureId) {
|
39
36
|
return JSON.stringify({ txData: JSON.stringify(txs[i]), privateKeysToSign });
|
40
37
|
}
|
41
38
|
}
|
42
39
|
body.to.forEach((item) => {
|
43
|
-
transactionBuilder.addOutput(
|
40
|
+
transactionBuilder.addOutput(bcashAddressHelper.getAddress(item.address), amountUtils.toSatoshis(item.value));
|
44
41
|
});
|
45
42
|
verifyAmounts(amountToSign, body);
|
46
43
|
for (let i = 0; i < privateKeysToSign.length; i++) {
|
47
|
-
const ecPair =
|
48
|
-
transactionBuilder.sign(i, ecPair, undefined, 0x01, amountToSign[i], undefined,
|
44
|
+
const ecPair = ECPair.fromWIF(privateKeysToSign[i], network);
|
45
|
+
transactionBuilder.sign(i, ecPair, undefined, 0x01, amountToSign[i], undefined, ECSignature.SCHNORR);
|
49
46
|
}
|
50
47
|
return transactionBuilder.build().toHex();
|
51
48
|
}
|
52
49
|
catch (e) {
|
53
|
-
throw new
|
50
|
+
throw new BchSdkError(e);
|
54
51
|
}
|
55
52
|
});
|
56
53
|
function verifyAmounts(amountToSign, body) {
|
57
54
|
const outputsSum = body.to
|
58
|
-
.map((to) =>
|
59
|
-
.reduce((e, acc) => e.plus(acc), new
|
55
|
+
.map((to) => amountUtils.toSatoshis(to.value))
|
56
|
+
.reduce((e, acc) => e.plus(acc), new BigNumber(0));
|
60
57
|
const inputsSum = amountToSign
|
61
|
-
.map((i) => new
|
62
|
-
.reduce((v, acc) => v.plus(acc), new
|
58
|
+
.map((i) => new BigNumber(i))
|
59
|
+
.reduce((v, acc) => v.plus(acc), new BigNumber(0));
|
63
60
|
if (outputsSum.eq(inputsSum)) {
|
64
|
-
throw new
|
61
|
+
throw new BchSdkError(SdkErrorCode.BTC_FEE_TOO_SMALL);
|
65
62
|
}
|
66
63
|
if (outputsSum.gt(inputsSum)) {
|
67
|
-
throw new
|
64
|
+
throw new BchSdkError(SdkErrorCode.BTC_NOT_ENOUGH_BALANCE);
|
68
65
|
}
|
69
66
|
}
|
70
|
-
const getTransactions = (txHash) =>
|
67
|
+
const getTransactions = (txHash) => __awaiter(void 0, void 0, void 0, function* () {
|
71
68
|
const result = [];
|
72
69
|
for (const tx of txHash) {
|
73
|
-
result.push(
|
70
|
+
result.push(ApiServices.blockchain.bcash.bchGetRawTransaction(tx));
|
74
71
|
}
|
75
72
|
return Promise.all(result);
|
76
73
|
});
|
77
|
-
const bchTransactions = () => ({
|
74
|
+
export const bchTransactions = () => ({
|
78
75
|
sendTransaction,
|
79
76
|
prepareSignedTransaction,
|
80
77
|
});
|
81
|
-
exports.bchTransactions = bchTransactions;
|
82
78
|
//# sourceMappingURL=bch.sdk.tx.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"bch.sdk.tx.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/bch/src/lib/bch.sdk.tx.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"bch.sdk.tx.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/bch/src/lib/bch.sdk.tx.ts"],"names":[],"mappings":"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"}
|
@@ -1,28 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
const
|
8
|
-
const
|
9
|
-
const bch_address_1 = require("./utils/bch.address");
|
10
|
-
const bitcoinjs_lib_1 = require("bitcoinjs-lib");
|
11
|
-
const bchWallet = (args) => {
|
12
|
-
const btcBased = (0, shared_blockchain_btc_based_1.btcBasedWallet)(args);
|
1
|
+
import { blockchainUtils } from '@tatumio/shared-core';
|
2
|
+
import bcash from '@tatumio/bitcoincashjs2-lib';
|
3
|
+
import cashaddr from 'cashaddrjs';
|
4
|
+
import { btcBasedWallet } from '@tatumio/shared-blockchain-btc-based';
|
5
|
+
import { bcashAddressHelper } from './utils/bch.address';
|
6
|
+
import { ECPair, payments } from 'bitcoinjs-lib';
|
7
|
+
export const bchWallet = (args) => {
|
8
|
+
const btcBased = btcBasedWallet(args);
|
13
9
|
return Object.assign(Object.assign({}, btcBased), { generateAddressFromXPub: (xpub, i, options) => {
|
14
|
-
const network =
|
15
|
-
const hdNode =
|
10
|
+
const network = blockchainUtils.getNetworkConfig(args.blockchain, options);
|
11
|
+
const hdNode = bcash.HDNode.fromBase58(xpub, network);
|
16
12
|
const legacy = hdNode.derivePath(String(i)).getAddress();
|
17
|
-
const decoded =
|
18
|
-
return
|
13
|
+
const decoded = bcashAddressHelper.decode(legacy);
|
14
|
+
return cashaddr.encode(decoded.prefix, decoded.type, decoded.hash);
|
19
15
|
}, generateAddressFromPrivateKey: (privateKey, options) => {
|
20
|
-
const network =
|
21
|
-
const keyPair =
|
22
|
-
const legacy =
|
23
|
-
const decoded =
|
24
|
-
return
|
16
|
+
const network = blockchainUtils.getNetworkConfig(args.blockchain, options);
|
17
|
+
const keyPair = ECPair.fromWIF(privateKey, network);
|
18
|
+
const legacy = payments.p2pkh({ pubkey: keyPair.publicKey, network }).address;
|
19
|
+
const decoded = bcashAddressHelper.decode(legacy);
|
20
|
+
return cashaddr.encode(decoded.prefix, decoded.type, decoded.hash);
|
25
21
|
} });
|
26
22
|
};
|
27
|
-
exports.bchWallet = bchWallet;
|
28
23
|
//# sourceMappingURL=bch.sdk.wallet.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"bch.sdk.wallet.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/bch/src/lib/bch.sdk.wallet.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"bch.sdk.wallet.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/bch/src/lib/bch.sdk.wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAsB,MAAM,sBAAsB,CAAA;AAE1E,OAAO,KAAK,MAAM,6BAA6B,CAAA;AAC/C,OAAO,QAAQ,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAExD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAEhD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAwC,EAA0B,EAAE;IAC5F,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;IAErC,uCACK,QAAQ,KACX,uBAAuB,EAAE,CAAC,IAAY,EAAE,CAAS,EAAE,OAA8B,EAAU,EAAE;YAC3F,MAAM,OAAO,GAAG,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YACrD,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;YAExD,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAEjD,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QACpE,CAAC,EACD,6BAA6B,EAAE,CAAC,UAAkB,EAAE,OAA8B,EAAU,EAAE;YAC5F,MAAM,OAAO,GAAG,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YAC1E,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAA;YAC7E,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAEjD,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QACpE,CAAC,IACF;AACH,CAAC,CAAA"}
|
@@ -1,30 +1,26 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.bcashAddressHelper = void 0;
|
4
|
-
const tslib_1 = require("tslib");
|
5
1
|
// @ts-ignore
|
6
|
-
|
2
|
+
import coininfo from 'coininfo';
|
7
3
|
// @ts-ignore
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
import bcash from '@tatumio/bitcoincashjs2-lib';
|
5
|
+
import { networks } from 'bitcoinjs-lib';
|
6
|
+
export const bcashAddressHelper = {
|
11
7
|
getAddress: (address) => {
|
12
8
|
try {
|
13
|
-
return
|
9
|
+
return bcashAddressHelper.toLegacyAddress(address);
|
14
10
|
}
|
15
11
|
catch (e) {
|
16
12
|
return address;
|
17
13
|
}
|
18
14
|
},
|
19
15
|
toLegacyAddress: (address) => {
|
20
|
-
const { prefix, type, hash } =
|
21
|
-
let bitcoincash =
|
16
|
+
const { prefix, type, hash } = bcashAddressHelper.decode(address);
|
17
|
+
let bitcoincash = coininfo.bitcoincash.main;
|
22
18
|
switch (prefix) {
|
23
19
|
case 'bitcoincash':
|
24
|
-
bitcoincash =
|
20
|
+
bitcoincash = coininfo.bitcoincash.main;
|
25
21
|
break;
|
26
22
|
case 'bchtest':
|
27
|
-
bitcoincash =
|
23
|
+
bitcoincash = coininfo.bitcoincash.test;
|
28
24
|
break;
|
29
25
|
}
|
30
26
|
let version = bitcoincash.versions.public;
|
@@ -37,10 +33,10 @@ exports.bcashAddressHelper = {
|
|
37
33
|
break;
|
38
34
|
}
|
39
35
|
const hashBuf = Buffer.from(hash);
|
40
|
-
return
|
36
|
+
return bcash.address.toBase58Check(hashBuf, version);
|
41
37
|
},
|
42
38
|
decode: (address) => {
|
43
|
-
const { version, hash } =
|
39
|
+
const { version, hash } = bcash.address.fromBase58Check(address);
|
44
40
|
let decoded = {
|
45
41
|
prefix: '',
|
46
42
|
type: '',
|
@@ -48,7 +44,7 @@ exports.bcashAddressHelper = {
|
|
48
44
|
format: '',
|
49
45
|
};
|
50
46
|
switch (version) {
|
51
|
-
case
|
47
|
+
case networks.bitcoin.pubKeyHash:
|
52
48
|
decoded = {
|
53
49
|
prefix: 'bitcoincash',
|
54
50
|
type: 'P2PKH',
|
@@ -56,7 +52,7 @@ exports.bcashAddressHelper = {
|
|
56
52
|
format: 'legacy',
|
57
53
|
};
|
58
54
|
break;
|
59
|
-
case
|
55
|
+
case networks.bitcoin.scriptHash:
|
60
56
|
decoded = {
|
61
57
|
prefix: 'bitcoincash',
|
62
58
|
type: 'P2SH',
|
@@ -64,7 +60,7 @@ exports.bcashAddressHelper = {
|
|
64
60
|
format: 'legacy',
|
65
61
|
};
|
66
62
|
break;
|
67
|
-
case
|
63
|
+
case networks.testnet.pubKeyHash:
|
68
64
|
decoded = {
|
69
65
|
prefix: 'bchtest',
|
70
66
|
type: 'P2PKH',
|
@@ -72,7 +68,7 @@ exports.bcashAddressHelper = {
|
|
72
68
|
format: 'legacy',
|
73
69
|
};
|
74
70
|
break;
|
75
|
-
case
|
71
|
+
case networks.testnet.scriptHash:
|
76
72
|
decoded = {
|
77
73
|
prefix: 'bchtest',
|
78
74
|
type: 'P2SH',
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"bch.address.js","sourceRoot":"","sources":["../../../../../../../packages/blockchain/bch/src/lib/utils/bch.address.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"bch.address.js","sourceRoot":"","sources":["../../../../../../../packages/blockchain/bch/src/lib/utils/bch.address.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,aAAa;AACb,OAAO,KAAK,MAAM,6BAA6B,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAgBxC,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,UAAU,EAAE,CAAC,OAAe,EAAE,EAAE;QAC9B,IAAI;YACF,OAAO,kBAAkB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;SACnD;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,OAAO,CAAA;SACf;IACH,CAAC;IACD,eAAe,EAAE,CAAC,OAAe,EAAE,EAAE;QACnC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAY,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC1E,IAAI,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAA;QAC3C,QAAQ,MAAM,EAAE;YACd,KAAK,aAAa;gBAChB,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAA;gBACvC,MAAK;YACP,KAAK,SAAS;gBACZ,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAA;gBACvC,MAAK;SACR;QAED,IAAI,OAAO,GAAW,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAA;QACjD,QAAQ,IAAI,EAAE;YACZ,KAAK,OAAO;gBACV,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAA;gBACrC,MAAK;YACP,KAAK,MAAM;gBACT,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAA;gBACzC,MAAK;SACR;QAED,MAAM,OAAO,GAAW,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEzC,OAAO,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACtD,CAAC;IACD,MAAM,EAAE,CAAC,OAAe,EAAW,EAAE;QACnC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAU,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;QAEvE,IAAI,OAAO,GAAY;YACrB,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,EAAE;YACR,IAAI;YACJ,MAAM,EAAE,EAAE;SACX,CAAA;QACD,QAAQ,OAAO,EAAE;YACf,KAAK,QAAQ,CAAC,OAAO,CAAC,UAAU;gBAC9B,OAAO,GAAG;oBACR,MAAM,EAAE,aAAa;oBACrB,IAAI,EAAE,OAAO;oBACb,IAAI;oBACJ,MAAM,EAAE,QAAQ;iBACjB,CAAA;gBACD,MAAK;YACP,KAAK,QAAQ,CAAC,OAAO,CAAC,UAAU;gBAC9B,OAAO,GAAG;oBACR,MAAM,EAAE,aAAa;oBACrB,IAAI,EAAE,MAAM;oBACZ,IAAI;oBACJ,MAAM,EAAE,QAAQ;iBACjB,CAAA;gBACD,MAAK;YACP,KAAK,QAAQ,CAAC,OAAO,CAAC,UAAU;gBAC9B,OAAO,GAAG;oBACR,MAAM,EAAE,SAAS;oBACjB,IAAI,EAAE,OAAO;oBACb,IAAI;oBACJ,MAAM,EAAE,QAAQ;iBACjB,CAAA;gBACD,MAAK;YACP,KAAK,QAAQ,CAAC,OAAO,CAAC,UAAU;gBAC9B,OAAO,GAAG;oBACR,MAAM,EAAE,SAAS;oBACjB,IAAI,EAAE,MAAM;oBACZ,IAAI;oBACJ,MAAM,EAAE,QAAQ;iBACjB,CAAA;gBACD,MAAK;SACR;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;CACF,CAAA"}
|