@tatumio/bch 2.0.1-alpha.227 → 2.0.1-alpha.228
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +7 -8
- package/src/index.js +4 -1
- package/src/index.js.map +1 -1
- package/src/lib/bch.sdk.errors.js +9 -5
- package/src/lib/bch.sdk.errors.js.map +1 -1
- package/src/lib/bch.sdk.js +19 -15
- package/src/lib/bch.sdk.js.map +1 -1
- package/src/lib/bch.sdk.tx.js +33 -29
- package/src/lib/bch.sdk.tx.js.map +1 -1
- package/src/lib/bch.sdk.wallet.js +22 -17
- package/src/lib/bch.sdk.wallet.js.map +1 -1
- package/src/lib/utils/bch.address.js +19 -15
- package/src/lib/utils/bch.address.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tatumio/bch",
|
|
3
|
-
"version": "2.0.1-alpha.
|
|
3
|
+
"version": "2.0.1-alpha.228",
|
|
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.227",
|
|
9
|
+
"@tatumio/shared-blockchain-btc-based": "2.0.1-alpha.227",
|
|
10
|
+
"@tatumio/shared-core": "2.0.1-alpha.227",
|
|
11
11
|
"axios": "^0.24.0",
|
|
12
|
-
"@tatumio/api-client": "2.0.1-alpha.
|
|
13
|
-
"cross-blob": "^3.0.0",
|
|
12
|
+
"@tatumio/api-client": "2.0.1-alpha.227",
|
|
14
13
|
"form-data": "^4.0.0",
|
|
15
|
-
"@tatumio/shared-blockchain-abstract": "2.0.1-alpha.
|
|
16
|
-
"@tatumio/shared-abstract-sdk": "2.0.1-alpha.
|
|
14
|
+
"@tatumio/shared-blockchain-abstract": "2.0.1-alpha.227",
|
|
15
|
+
"@tatumio/shared-abstract-sdk": "2.0.1-alpha.227",
|
|
17
16
|
"bignumber.js": "^9.0.2",
|
|
18
17
|
"bip32": "^2.0.5",
|
|
19
18
|
"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":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/blockchain/bch/src/index.ts"],"names":[],"mappings":";;;AAAA,6DAA6B"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BchSdkError = exports.BCH_ERRORS_MAPPING = void 0;
|
|
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,
|
|
4
7
|
};
|
|
5
|
-
|
|
8
|
+
class BchSdkError extends shared_abstract_sdk_1.SdkError {
|
|
6
9
|
constructor(error) {
|
|
7
10
|
if (typeof error === 'string') {
|
|
8
11
|
super({
|
|
@@ -12,9 +15,10 @@ export class BchSdkError extends SdkError {
|
|
|
12
15
|
else {
|
|
13
16
|
super({
|
|
14
17
|
originalError: error,
|
|
15
|
-
errorSubstringMapping: BCH_ERRORS_MAPPING,
|
|
18
|
+
errorSubstringMapping: exports.BCH_ERRORS_MAPPING,
|
|
16
19
|
});
|
|
17
20
|
}
|
|
18
21
|
}
|
|
19
22
|
}
|
|
23
|
+
exports.BchSdkError = BchSdkError;
|
|
20
24
|
//# 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":"AAAA,
|
|
1
|
+
{"version":3,"file":"bch.sdk.errors.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/bch/src/lib/bch.sdk.errors.ts"],"names":[],"mappings":";;;AAAA,sEAAqE;AAExD,QAAA,kBAAkB,GAAG;IAChC,6BAA6B,EAAE,kCAAY,CAAC,oBAAoB;CACjE,CAAA;AAOD,MAAa,WAAY,SAAQ,8BAAQ;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,0BAAkB;aAC1C,CAAC,CAAA;SACH;IACH,CAAC;CACF;AAbD,kCAaC"}
|
package/src/lib/bch.sdk.js
CHANGED
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TatumBchSDK = void 0;
|
|
4
|
+
const shared_core_1 = require("@tatumio/shared-core");
|
|
5
|
+
const shared_blockchain_btc_based_1 = require("@tatumio/shared-blockchain-btc-based");
|
|
6
|
+
const api_client_1 = require("@tatumio/api-client");
|
|
7
|
+
const bch_sdk_tx_1 = require("./bch.sdk.tx");
|
|
8
|
+
const bch_sdk_wallet_1 = require("./bch.sdk.wallet");
|
|
9
|
+
const blockchain = shared_core_1.Blockchain.BCH;
|
|
10
|
+
const TatumBchSDK = (args) => {
|
|
11
|
+
return Object.assign(Object.assign({}, (0, shared_blockchain_btc_based_1.btcBasedSdk)(Object.assign(Object.assign({}, args), { blockchain }))), { wallet: (0, bch_sdk_wallet_1.bchWallet)(Object.assign(Object.assign({}, args), { blockchain })), transaction: (0, bch_sdk_tx_1.bchTransactions)(), blockchain: {
|
|
12
|
+
info: api_client_1.BlockchainBitcoinCashService.bchGetBlockChainInfo,
|
|
13
|
+
broadcast: api_client_1.BlockchainBitcoinCashService.bchBroadcast,
|
|
14
|
+
getBlockHash: api_client_1.BlockchainBitcoinCashService.bchGetBlockHash,
|
|
15
|
+
getBlock: api_client_1.BlockchainBitcoinCashService.bchGetBlock,
|
|
16
|
+
getTxForAccount: api_client_1.BlockchainBitcoinCashService.bchGetTxByAddress,
|
|
17
|
+
getTransaction: api_client_1.BlockchainBitcoinCashService.bchGetRawTransaction,
|
|
18
|
+
send: api_client_1.BlockchainBitcoinCashService.bchTransferBlockchain,
|
|
16
19
|
} });
|
|
17
20
|
};
|
|
21
|
+
exports.TatumBchSDK = TatumBchSDK;
|
|
18
22
|
//# 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":"AAAA,
|
|
1
|
+
{"version":3,"file":"bch.sdk.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/bch/src/lib/bch.sdk.ts"],"names":[],"mappings":";;;AAAA,sDAAiD;AACjD,sFAAkE;AAClE,oDAAkE;AAElE,6CAA8C;AAC9C,qDAA4C;AAE5C,MAAM,UAAU,GAAG,wBAAU,CAAC,GAAG,CAAA;AAE1B,MAAM,WAAW,GAAG,CAAC,IAAkB,EAAE,EAAE;IAChD,uCACK,IAAA,yCAAW,kCAAM,IAAI,KAAE,UAAU,IAAG,KACvC,MAAM,EAAE,IAAA,0BAAS,kCAAM,IAAI,KAAE,UAAU,IAAG,EAC1C,WAAW,EAAE,IAAA,4BAAe,GAAE,EAC9B,UAAU,EAAE;YACV,IAAI,EAAE,yCAA4B,CAAC,oBAAoB;YACvD,SAAS,EAAE,yCAA4B,CAAC,YAAY;YACpD,YAAY,EAAE,yCAA4B,CAAC,eAAe;YAC1D,QAAQ,EAAE,yCAA4B,CAAC,WAAW;YAClD,eAAe,EAAE,yCAA4B,CAAC,iBAAiB;YAC/D,cAAc,EAAE,yCAA4B,CAAC,oBAAoB;YACjE,IAAI,EAAE,yCAA4B,CAAC,qBAAqB;SACzD,IACF;AACH,CAAC,CAAA;AAfY,QAAA,WAAW,eAevB"}
|
package/src/lib/bch.sdk.tx.js
CHANGED
|
@@ -1,23 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.bchTransactions = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const api_client_1 = require("@tatumio/api-client");
|
|
6
|
+
const bch_address_1 = require("./utils/bch.address");
|
|
7
|
+
const bch_sdk_errors_1 = require("./bch.sdk.errors");
|
|
8
|
+
const shared_abstract_sdk_1 = require("@tatumio/shared-abstract-sdk");
|
|
9
|
+
const coininfo_1 = (0, tslib_1.__importDefault)(require("coininfo"));
|
|
10
|
+
const bitcoincashjs2_lib_1 = require("@tatumio/bitcoincashjs2-lib");
|
|
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({
|
|
11
14
|
txData: yield prepareSignedTransaction(body, args),
|
|
12
15
|
});
|
|
13
16
|
});
|
|
14
17
|
// @TODO add support - by address
|
|
15
|
-
const prepareSignedTransaction = (body, args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
+
const prepareSignedTransaction = (body, args) => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
|
|
16
19
|
try {
|
|
17
20
|
const network = args.testnet
|
|
18
|
-
?
|
|
19
|
-
:
|
|
20
|
-
const transactionBuilder = new TransactionBuilder(network);
|
|
21
|
+
? coininfo_1.default.bitcoincash.test.toBitcoinJS()
|
|
22
|
+
: coininfo_1.default.bitcoincash.main.toBitcoinJS();
|
|
23
|
+
const transactionBuilder = new bitcoincashjs2_lib_1.TransactionBuilder(network);
|
|
21
24
|
const privateKeysToSign = [];
|
|
22
25
|
const amountToSign = [];
|
|
23
26
|
const txs = yield getTransactions(body.fromUTXO.map((u) => u.txHash));
|
|
@@ -29,50 +32,51 @@ const prepareSignedTransaction = (body, args) => __awaiter(void 0, void 0, void
|
|
|
29
32
|
privateKeysToSign.push(item.privateKey);
|
|
30
33
|
const vout = txs[i].vout[item.index];
|
|
31
34
|
if (!vout)
|
|
32
|
-
throw new BchSdkError(SdkErrorCode.BTC_UTXO_NOT_FOUND);
|
|
33
|
-
amountToSign.push(amountUtils.toSatoshis(vout.value));
|
|
35
|
+
throw new bch_sdk_errors_1.BchSdkError(shared_abstract_sdk_1.SdkErrorCode.BTC_UTXO_NOT_FOUND);
|
|
36
|
+
amountToSign.push(shared_abstract_sdk_1.amountUtils.toSatoshis(vout.value));
|
|
34
37
|
const fromUTXO = body.fromUTXO;
|
|
35
38
|
if (fromUTXO && 'signatureId' in fromUTXO[0] && fromUTXO[0].signatureId) {
|
|
36
39
|
return JSON.stringify({ txData: JSON.stringify(txs[i]), privateKeysToSign });
|
|
37
40
|
}
|
|
38
41
|
}
|
|
39
42
|
body.to.forEach((item) => {
|
|
40
|
-
transactionBuilder.addOutput(bcashAddressHelper.getAddress(item.address), amountUtils.toSatoshis(item.value));
|
|
43
|
+
transactionBuilder.addOutput(bch_address_1.bcashAddressHelper.getAddress(item.address), shared_abstract_sdk_1.amountUtils.toSatoshis(item.value));
|
|
41
44
|
});
|
|
42
45
|
verifyAmounts(amountToSign, body);
|
|
43
46
|
for (let i = 0; i < privateKeysToSign.length; i++) {
|
|
44
|
-
const ecPair = ECPair.fromWIF(privateKeysToSign[i], network);
|
|
45
|
-
transactionBuilder.sign(i, ecPair, undefined, 0x01, amountToSign[i], undefined, ECSignature.SCHNORR);
|
|
47
|
+
const ecPair = bitcoincashjs2_lib_1.ECPair.fromWIF(privateKeysToSign[i], network);
|
|
48
|
+
transactionBuilder.sign(i, ecPair, undefined, 0x01, amountToSign[i], undefined, bitcoincashjs2_lib_1.ECSignature.SCHNORR);
|
|
46
49
|
}
|
|
47
50
|
return transactionBuilder.build().toHex();
|
|
48
51
|
}
|
|
49
52
|
catch (e) {
|
|
50
|
-
throw new BchSdkError(e);
|
|
53
|
+
throw new bch_sdk_errors_1.BchSdkError(e);
|
|
51
54
|
}
|
|
52
55
|
});
|
|
53
56
|
function verifyAmounts(amountToSign, body) {
|
|
54
57
|
const outputsSum = body.to
|
|
55
|
-
.map((to) => amountUtils.toSatoshis(to.value))
|
|
56
|
-
.reduce((e, acc) => e.plus(acc), new
|
|
58
|
+
.map((to) => shared_abstract_sdk_1.amountUtils.toSatoshis(to.value))
|
|
59
|
+
.reduce((e, acc) => e.plus(acc), new bignumber_js_1.default(0));
|
|
57
60
|
const inputsSum = amountToSign
|
|
58
|
-
.map((i) => new
|
|
59
|
-
.reduce((v, acc) => v.plus(acc), new
|
|
61
|
+
.map((i) => new bignumber_js_1.default(i))
|
|
62
|
+
.reduce((v, acc) => v.plus(acc), new bignumber_js_1.default(0));
|
|
60
63
|
if (outputsSum.eq(inputsSum)) {
|
|
61
|
-
throw new BchSdkError(SdkErrorCode.BTC_FEE_TOO_SMALL);
|
|
64
|
+
throw new bch_sdk_errors_1.BchSdkError(shared_abstract_sdk_1.SdkErrorCode.BTC_FEE_TOO_SMALL);
|
|
62
65
|
}
|
|
63
66
|
if (outputsSum.gt(inputsSum)) {
|
|
64
|
-
throw new BchSdkError(SdkErrorCode.BTC_NOT_ENOUGH_BALANCE);
|
|
67
|
+
throw new bch_sdk_errors_1.BchSdkError(shared_abstract_sdk_1.SdkErrorCode.BTC_NOT_ENOUGH_BALANCE);
|
|
65
68
|
}
|
|
66
69
|
}
|
|
67
|
-
const getTransactions = (txHash) => __awaiter(void 0, void 0, void 0, function* () {
|
|
70
|
+
const getTransactions = (txHash) => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
|
|
68
71
|
const result = [];
|
|
69
72
|
for (const tx of txHash) {
|
|
70
|
-
result.push(ApiServices.blockchain.bcash.bchGetRawTransaction(tx));
|
|
73
|
+
result.push(api_client_1.ApiServices.blockchain.bcash.bchGetRawTransaction(tx));
|
|
71
74
|
}
|
|
72
75
|
return Promise.all(result);
|
|
73
76
|
});
|
|
74
|
-
|
|
77
|
+
const bchTransactions = () => ({
|
|
75
78
|
sendTransaction,
|
|
76
79
|
prepareSignedTransaction,
|
|
77
80
|
});
|
|
81
|
+
exports.bchTransactions = bchTransactions;
|
|
78
82
|
//# 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,23 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.bchWallet = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const shared_core_1 = require("@tatumio/shared-core");
|
|
6
|
+
const bitcoincashjs2_lib_1 = (0, tslib_1.__importDefault)(require("@tatumio/bitcoincashjs2-lib"));
|
|
7
|
+
const cashaddrjs_1 = (0, tslib_1.__importDefault)(require("cashaddrjs"));
|
|
8
|
+
const shared_blockchain_btc_based_1 = require("@tatumio/shared-blockchain-btc-based");
|
|
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);
|
|
9
13
|
return Object.assign(Object.assign({}, btcBased), { generateAddressFromXPub: (xpub, i, options) => {
|
|
10
|
-
const network = blockchainUtils.getNetworkConfig(args.blockchain, options);
|
|
11
|
-
const hdNode =
|
|
14
|
+
const network = shared_core_1.blockchainUtils.getNetworkConfig(args.blockchain, options);
|
|
15
|
+
const hdNode = bitcoincashjs2_lib_1.default.HDNode.fromBase58(xpub, network);
|
|
12
16
|
const legacy = hdNode.derivePath(String(i)).getAddress();
|
|
13
|
-
const decoded = bcashAddressHelper.decode(legacy);
|
|
14
|
-
return
|
|
17
|
+
const decoded = bch_address_1.bcashAddressHelper.decode(legacy);
|
|
18
|
+
return cashaddrjs_1.default.encode(decoded.prefix, decoded.type, decoded.hash);
|
|
15
19
|
}, generateAddressFromPrivateKey: (privateKey, options) => {
|
|
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
|
|
20
|
+
const network = shared_core_1.blockchainUtils.getNetworkConfig(args.blockchain, options);
|
|
21
|
+
const keyPair = bitcoinjs_lib_1.ECPair.fromWIF(privateKey, network);
|
|
22
|
+
const legacy = bitcoinjs_lib_1.payments.p2pkh({ pubkey: keyPair.publicKey, network }).address;
|
|
23
|
+
const decoded = bch_address_1.bcashAddressHelper.decode(legacy);
|
|
24
|
+
return cashaddrjs_1.default.encode(decoded.prefix, decoded.type, decoded.hash);
|
|
21
25
|
} });
|
|
22
26
|
};
|
|
27
|
+
exports.bchWallet = bchWallet;
|
|
23
28
|
//# 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":"AAAA,
|
|
1
|
+
{"version":3,"file":"bch.sdk.wallet.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/bch/src/lib/bch.sdk.wallet.ts"],"names":[],"mappings":";;;;AAAA,sDAA0E;AAE1E,kGAA+C;AAC/C,yEAAiC;AACjC,sFAAqE;AACrE,qDAAwD;AAExD,iDAAgD;AAEzC,MAAM,SAAS,GAAG,CAAC,IAAwC,EAA0B,EAAE;IAC5F,MAAM,QAAQ,GAAG,IAAA,4CAAc,EAAC,IAAI,CAAC,CAAA;IAErC,uCACK,QAAQ,KACX,uBAAuB,EAAE,CAAC,IAAY,EAAE,CAAS,EAAE,OAA8B,EAAU,EAAE;YAC3F,MAAM,OAAO,GAAG,6BAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YAC1E,MAAM,MAAM,GAAG,4BAAK,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,gCAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAEjD,OAAO,oBAAQ,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,6BAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YAC1E,MAAM,OAAO,GAAG,sBAAM,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YACnD,MAAM,MAAM,GAAG,wBAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAA;YAC7E,MAAM,OAAO,GAAG,gCAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAEjD,OAAO,oBAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QACpE,CAAC,IACF;AACH,CAAC,CAAA;AAvBY,QAAA,SAAS,aAuBrB"}
|
|
@@ -1,26 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.bcashAddressHelper = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
1
5
|
// @ts-ignore
|
|
2
|
-
|
|
6
|
+
const coininfo_1 = (0, tslib_1.__importDefault)(require("coininfo"));
|
|
3
7
|
// @ts-ignore
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
8
|
+
const bitcoincashjs2_lib_1 = (0, tslib_1.__importDefault)(require("@tatumio/bitcoincashjs2-lib"));
|
|
9
|
+
const bitcoinjs_lib_1 = require("bitcoinjs-lib");
|
|
10
|
+
exports.bcashAddressHelper = {
|
|
7
11
|
getAddress: (address) => {
|
|
8
12
|
try {
|
|
9
|
-
return bcashAddressHelper.toLegacyAddress(address);
|
|
13
|
+
return exports.bcashAddressHelper.toLegacyAddress(address);
|
|
10
14
|
}
|
|
11
15
|
catch (e) {
|
|
12
16
|
return address;
|
|
13
17
|
}
|
|
14
18
|
},
|
|
15
19
|
toLegacyAddress: (address) => {
|
|
16
|
-
const { prefix, type, hash } = bcashAddressHelper.decode(address);
|
|
17
|
-
let bitcoincash =
|
|
20
|
+
const { prefix, type, hash } = exports.bcashAddressHelper.decode(address);
|
|
21
|
+
let bitcoincash = coininfo_1.default.bitcoincash.main;
|
|
18
22
|
switch (prefix) {
|
|
19
23
|
case 'bitcoincash':
|
|
20
|
-
bitcoincash =
|
|
24
|
+
bitcoincash = coininfo_1.default.bitcoincash.main;
|
|
21
25
|
break;
|
|
22
26
|
case 'bchtest':
|
|
23
|
-
bitcoincash =
|
|
27
|
+
bitcoincash = coininfo_1.default.bitcoincash.test;
|
|
24
28
|
break;
|
|
25
29
|
}
|
|
26
30
|
let version = bitcoincash.versions.public;
|
|
@@ -33,10 +37,10 @@ export const bcashAddressHelper = {
|
|
|
33
37
|
break;
|
|
34
38
|
}
|
|
35
39
|
const hashBuf = Buffer.from(hash);
|
|
36
|
-
return
|
|
40
|
+
return bitcoincashjs2_lib_1.default.address.toBase58Check(hashBuf, version);
|
|
37
41
|
},
|
|
38
42
|
decode: (address) => {
|
|
39
|
-
const { version, hash } =
|
|
43
|
+
const { version, hash } = bitcoincashjs2_lib_1.default.address.fromBase58Check(address);
|
|
40
44
|
let decoded = {
|
|
41
45
|
prefix: '',
|
|
42
46
|
type: '',
|
|
@@ -44,7 +48,7 @@ export const bcashAddressHelper = {
|
|
|
44
48
|
format: '',
|
|
45
49
|
};
|
|
46
50
|
switch (version) {
|
|
47
|
-
case networks.bitcoin.pubKeyHash:
|
|
51
|
+
case bitcoinjs_lib_1.networks.bitcoin.pubKeyHash:
|
|
48
52
|
decoded = {
|
|
49
53
|
prefix: 'bitcoincash',
|
|
50
54
|
type: 'P2PKH',
|
|
@@ -52,7 +56,7 @@ export const bcashAddressHelper = {
|
|
|
52
56
|
format: 'legacy',
|
|
53
57
|
};
|
|
54
58
|
break;
|
|
55
|
-
case networks.bitcoin.scriptHash:
|
|
59
|
+
case bitcoinjs_lib_1.networks.bitcoin.scriptHash:
|
|
56
60
|
decoded = {
|
|
57
61
|
prefix: 'bitcoincash',
|
|
58
62
|
type: 'P2SH',
|
|
@@ -60,7 +64,7 @@ export const bcashAddressHelper = {
|
|
|
60
64
|
format: 'legacy',
|
|
61
65
|
};
|
|
62
66
|
break;
|
|
63
|
-
case networks.testnet.pubKeyHash:
|
|
67
|
+
case bitcoinjs_lib_1.networks.testnet.pubKeyHash:
|
|
64
68
|
decoded = {
|
|
65
69
|
prefix: 'bchtest',
|
|
66
70
|
type: 'P2PKH',
|
|
@@ -68,7 +72,7 @@ export const bcashAddressHelper = {
|
|
|
68
72
|
format: 'legacy',
|
|
69
73
|
};
|
|
70
74
|
break;
|
|
71
|
-
case networks.testnet.scriptHash:
|
|
75
|
+
case bitcoinjs_lib_1.networks.testnet.scriptHash:
|
|
72
76
|
decoded = {
|
|
73
77
|
prefix: 'bchtest',
|
|
74
78
|
type: 'P2SH',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bch.address.js","sourceRoot":"","sources":["../../../../../../../packages/blockchain/bch/src/lib/utils/bch.address.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,
|
|
1
|
+
{"version":3,"file":"bch.address.js","sourceRoot":"","sources":["../../../../../../../packages/blockchain/bch/src/lib/utils/bch.address.ts"],"names":[],"mappings":";;;;AAAA,aAAa;AACb,qEAA+B;AAC/B,aAAa;AACb,kGAA+C;AAC/C,iDAAwC;AAgB3B,QAAA,kBAAkB,GAAG;IAChC,UAAU,EAAE,CAAC,OAAe,EAAE,EAAE;QAC9B,IAAI;YACF,OAAO,0BAAkB,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,0BAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC1E,IAAI,WAAW,GAAG,kBAAQ,CAAC,WAAW,CAAC,IAAI,CAAA;QAC3C,QAAQ,MAAM,EAAE;YACd,KAAK,aAAa;gBAChB,WAAW,GAAG,kBAAQ,CAAC,WAAW,CAAC,IAAI,CAAA;gBACvC,MAAK;YACP,KAAK,SAAS;gBACZ,WAAW,GAAG,kBAAQ,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,4BAAK,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,4BAAK,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,wBAAQ,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,wBAAQ,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,wBAAQ,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,wBAAQ,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"}
|