cashscript 0.7.6 → 0.8.0-next.1
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/README.md +2 -6
- package/dist/{main/Argument.d.ts → Argument.d.ts} +1 -1
- package/dist/{module/Argument.js → Argument.js} +1 -1
- package/dist/{module/Contract.d.ts → Contract.d.ts} +8 -6
- package/dist/{module/Contract.js → Contract.js} +15 -25
- package/dist/{main/Errors.d.ts → Errors.d.ts} +4 -1
- package/dist/{module/Errors.js → Errors.js} +7 -3
- package/dist/{main/SignatureTemplate.d.ts → SignatureTemplate.d.ts} +2 -3
- package/dist/{module/SignatureTemplate.js → SignatureTemplate.js} +4 -5
- package/dist/{module/Transaction.d.ts → Transaction.d.ts} +7 -5
- package/dist/Transaction.js +352 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.js +3 -0
- package/dist/{main/index.d.ts → index.d.ts} +1 -1
- package/dist/{module/index.js → index.js} +2 -3
- package/dist/{module/interfaces.d.ts → interfaces.d.ts} +33 -6
- package/dist/{module/interfaces.js → interfaces.js} +0 -2
- package/dist/{module/network → network}/BitcoinRpcNetworkProvider.d.ts +2 -3
- package/dist/network/BitcoinRpcNetworkProvider.js +29 -0
- package/dist/{module/network → network}/ElectrumNetworkProvider.js +53 -72
- package/dist/network/FullStackNetworkProvider.js +33 -0
- package/dist/{main/network → network}/index.d.ts +0 -1
- package/dist/{module/network → network}/index.js +0 -1
- package/dist/{main/utils.d.ts → utils.d.ts} +10 -6
- package/dist/{module/utils.js → utils.js} +90 -46
- package/package.json +18 -16
- package/dist/main/Argument.js +0 -60
- package/dist/main/Contract.d.ts +0 -23
- package/dist/main/Contract.js +0 -87
- package/dist/main/Errors.js +0 -84
- package/dist/main/SignatureTemplate.js +0 -45
- package/dist/main/Transaction.d.ts +0 -39
- package/dist/main/Transaction.js +0 -258
- package/dist/main/constants.d.ts +0 -5
- package/dist/main/constants.js +0 -9
- package/dist/main/index.js +0 -50
- package/dist/main/interfaces.d.ts +0 -43
- package/dist/main/interfaces.js +0 -32
- package/dist/main/network/BitboxNetworkProvider.d.ts +0 -26
- package/dist/main/network/BitboxNetworkProvider.js +0 -40
- package/dist/main/network/BitcoinRpcNetworkProvider.d.ts +0 -41
- package/dist/main/network/BitcoinRpcNetworkProvider.js +0 -49
- package/dist/main/network/ElectrumNetworkProvider.js +0 -162
- package/dist/main/network/FullStackNetworkProvider.js +0 -55
- package/dist/main/network/NetworkProvider.js +0 -3
- package/dist/main/network/index.js +0 -15
- package/dist/main/utils.js +0 -205
- package/dist/module/Argument.d.ts +0 -3
- package/dist/module/Errors.d.ts +0 -66
- package/dist/module/SignatureTemplate.d.ts +0 -15
- package/dist/module/Transaction.js +0 -251
- package/dist/module/constants.d.ts +0 -5
- package/dist/module/constants.js +0 -6
- package/dist/module/index.d.ts +0 -10
- package/dist/module/network/BitboxNetworkProvider.d.ts +0 -26
- package/dist/module/network/BitboxNetworkProvider.js +0 -37
- package/dist/module/network/BitcoinRpcNetworkProvider.js +0 -46
- package/dist/module/network/ElectrumNetworkProvider.d.ts +0 -19
- package/dist/module/network/FullStackNetworkProvider.d.ts +0 -40
- package/dist/module/network/FullStackNetworkProvider.js +0 -52
- package/dist/module/network/NetworkProvider.d.ts +0 -31
- package/dist/module/network/index.d.ts +0 -5
- package/dist/module/utils.d.ts +0 -26
- /package/dist/{main/network → network}/ElectrumNetworkProvider.d.ts +0 -0
- /package/dist/{main/network → network}/FullStackNetworkProvider.d.ts +0 -0
- /package/dist/{main/network → network}/NetworkProvider.d.ts +0 -0
- /package/dist/{module/network → network}/NetworkProvider.js +0 -0
package/dist/main/index.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
26
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
27
|
-
};
|
|
28
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
29
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
30
|
-
};
|
|
31
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
-
exports.FullStackNetworkProvider = exports.ElectrumNetworkProvider = exports.BitcoinRpcNetworkProvider = exports.BitboxNetworkProvider = exports.Network = exports.HashType = exports.SignatureAlgorithm = exports.utils = exports.Transaction = exports.Contract = exports.SignatureTemplate = void 0;
|
|
33
|
-
const SignatureTemplate_js_1 = __importDefault(require("./SignatureTemplate.js"));
|
|
34
|
-
exports.SignatureTemplate = SignatureTemplate_js_1.default;
|
|
35
|
-
var Contract_js_1 = require("./Contract.js");
|
|
36
|
-
Object.defineProperty(exports, "Contract", { enumerable: true, get: function () { return Contract_js_1.Contract; } });
|
|
37
|
-
var Transaction_js_1 = require("./Transaction.js");
|
|
38
|
-
Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return Transaction_js_1.Transaction; } });
|
|
39
|
-
exports.utils = __importStar(require("@cashscript/utils"));
|
|
40
|
-
var interfaces_js_1 = require("./interfaces.js");
|
|
41
|
-
Object.defineProperty(exports, "SignatureAlgorithm", { enumerable: true, get: function () { return interfaces_js_1.SignatureAlgorithm; } });
|
|
42
|
-
Object.defineProperty(exports, "HashType", { enumerable: true, get: function () { return interfaces_js_1.HashType; } });
|
|
43
|
-
Object.defineProperty(exports, "Network", { enumerable: true, get: function () { return interfaces_js_1.Network; } });
|
|
44
|
-
__exportStar(require("./Errors.js"), exports);
|
|
45
|
-
var index_js_1 = require("./network/index.js");
|
|
46
|
-
Object.defineProperty(exports, "BitboxNetworkProvider", { enumerable: true, get: function () { return index_js_1.BitboxNetworkProvider; } });
|
|
47
|
-
Object.defineProperty(exports, "BitcoinRpcNetworkProvider", { enumerable: true, get: function () { return index_js_1.BitcoinRpcNetworkProvider; } });
|
|
48
|
-
Object.defineProperty(exports, "ElectrumNetworkProvider", { enumerable: true, get: function () { return index_js_1.ElectrumNetworkProvider; } });
|
|
49
|
-
Object.defineProperty(exports, "FullStackNetworkProvider", { enumerable: true, get: function () { return index_js_1.FullStackNetworkProvider; } });
|
|
50
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { Transaction } from '@bitauth/libauth';
|
|
2
|
-
import type SignatureTemplate from './SignatureTemplate.js';
|
|
3
|
-
export interface Utxo {
|
|
4
|
-
txid: string;
|
|
5
|
-
vout: number;
|
|
6
|
-
satoshis: number;
|
|
7
|
-
}
|
|
8
|
-
export interface SignableUtxo extends Utxo {
|
|
9
|
-
template: SignatureTemplate;
|
|
10
|
-
}
|
|
11
|
-
export declare function isSignableUtxo(utxo: Utxo): utxo is SignableUtxo;
|
|
12
|
-
export interface Recipient {
|
|
13
|
-
to: string;
|
|
14
|
-
amount: number;
|
|
15
|
-
}
|
|
16
|
-
export interface Output {
|
|
17
|
-
to: string | Uint8Array;
|
|
18
|
-
amount: number;
|
|
19
|
-
}
|
|
20
|
-
export declare enum SignatureAlgorithm {
|
|
21
|
-
ECDSA = 0,
|
|
22
|
-
SCHNORR = 1
|
|
23
|
-
}
|
|
24
|
-
export declare enum HashType {
|
|
25
|
-
SIGHASH_ALL = 1,
|
|
26
|
-
SIGHASH_NONE = 2,
|
|
27
|
-
SIGHASH_SINGLE = 3,
|
|
28
|
-
SIGHASH_ANYONECANPAY = 128
|
|
29
|
-
}
|
|
30
|
-
export declare const Network: {
|
|
31
|
-
MAINNET: "mainnet";
|
|
32
|
-
TESTNET3: "testnet3";
|
|
33
|
-
TESTNET4: "testnet4";
|
|
34
|
-
CHIPNET: "chipnet";
|
|
35
|
-
TESTNET: "testnet";
|
|
36
|
-
STAGING: "staging";
|
|
37
|
-
REGTEST: "regtest";
|
|
38
|
-
};
|
|
39
|
-
export declare type Network = (typeof Network)[keyof typeof Network];
|
|
40
|
-
export interface TransactionDetails extends Transaction {
|
|
41
|
-
txid: string;
|
|
42
|
-
hex: string;
|
|
43
|
-
}
|
package/dist/main/interfaces.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Network = exports.HashType = exports.SignatureAlgorithm = exports.isSignableUtxo = void 0;
|
|
4
|
-
function isSignableUtxo(utxo) {
|
|
5
|
-
return 'template' in utxo;
|
|
6
|
-
}
|
|
7
|
-
exports.isSignableUtxo = isSignableUtxo;
|
|
8
|
-
var SignatureAlgorithm;
|
|
9
|
-
(function (SignatureAlgorithm) {
|
|
10
|
-
SignatureAlgorithm[SignatureAlgorithm["ECDSA"] = 0] = "ECDSA";
|
|
11
|
-
SignatureAlgorithm[SignatureAlgorithm["SCHNORR"] = 1] = "SCHNORR";
|
|
12
|
-
})(SignatureAlgorithm = exports.SignatureAlgorithm || (exports.SignatureAlgorithm = {}));
|
|
13
|
-
var HashType;
|
|
14
|
-
(function (HashType) {
|
|
15
|
-
HashType[HashType["SIGHASH_ALL"] = 1] = "SIGHASH_ALL";
|
|
16
|
-
HashType[HashType["SIGHASH_NONE"] = 2] = "SIGHASH_NONE";
|
|
17
|
-
HashType[HashType["SIGHASH_SINGLE"] = 3] = "SIGHASH_SINGLE";
|
|
18
|
-
HashType[HashType["SIGHASH_ANYONECANPAY"] = 128] = "SIGHASH_ANYONECANPAY";
|
|
19
|
-
})(HashType = exports.HashType || (exports.HashType = {}));
|
|
20
|
-
// Weird setup to allow both Enum parameters, as well as literal strings
|
|
21
|
-
// https://stackoverflow.com/questions/51433319/typescript-constructor-accept-string-for-enum
|
|
22
|
-
const literal = (l) => l;
|
|
23
|
-
exports.Network = {
|
|
24
|
-
MAINNET: literal('mainnet'),
|
|
25
|
-
TESTNET3: literal('testnet3'),
|
|
26
|
-
TESTNET4: literal('testnet4'),
|
|
27
|
-
CHIPNET: literal('chipnet'),
|
|
28
|
-
TESTNET: literal('testnet'),
|
|
29
|
-
STAGING: literal('staging'),
|
|
30
|
-
REGTEST: literal('regtest'),
|
|
31
|
-
};
|
|
32
|
-
//# sourceMappingURL=interfaces.js.map
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Utxo, Network } from '../interfaces.js';
|
|
2
|
-
import NetworkProvider from './NetworkProvider.js';
|
|
3
|
-
export default class BitboxNetworkProvider implements NetworkProvider {
|
|
4
|
-
network: Network;
|
|
5
|
-
private bitbox;
|
|
6
|
-
constructor(network: Network, bitbox: BITBOX);
|
|
7
|
-
getUtxos(address: string): Promise<Utxo[]>;
|
|
8
|
-
getBlockHeight(): Promise<number>;
|
|
9
|
-
getRawTransaction(txid: string): Promise<string>;
|
|
10
|
-
sendRawTransaction(txHex: string): Promise<string>;
|
|
11
|
-
}
|
|
12
|
-
interface BITBOX {
|
|
13
|
-
Address: {
|
|
14
|
-
utxo(address: string): Promise<{
|
|
15
|
-
utxos: Utxo[];
|
|
16
|
-
}>;
|
|
17
|
-
};
|
|
18
|
-
Blockchain: {
|
|
19
|
-
getBlockCount(): Promise<number>;
|
|
20
|
-
};
|
|
21
|
-
RawTransactions: {
|
|
22
|
-
getRawTransaction(txid: string): Promise<string>;
|
|
23
|
-
sendRawTransaction(txHex: string): Promise<string>;
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
export {};
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
class BitboxNetworkProvider {
|
|
13
|
-
constructor(network, bitbox) {
|
|
14
|
-
this.network = network;
|
|
15
|
-
this.bitbox = bitbox;
|
|
16
|
-
}
|
|
17
|
-
getUtxos(address) {
|
|
18
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
19
|
-
const { utxos } = yield this.bitbox.Address.utxo(address);
|
|
20
|
-
return utxos;
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
getBlockHeight() {
|
|
24
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
-
return this.bitbox.Blockchain.getBlockCount();
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
getRawTransaction(txid) {
|
|
29
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
-
return this.bitbox.RawTransactions.getRawTransaction(txid);
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
sendRawTransaction(txHex) {
|
|
34
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
-
return this.bitbox.RawTransactions.sendRawTransaction(txHex);
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
exports.default = BitboxNetworkProvider;
|
|
40
|
-
//# sourceMappingURL=BitboxNetworkProvider.js.map
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Utxo, Network } from '../interfaces.js';
|
|
2
|
-
import NetworkProvider from './NetworkProvider.js';
|
|
3
|
-
declare const RpcClientRetry: any;
|
|
4
|
-
export default class BitcoinRpcNetworkProvider implements NetworkProvider {
|
|
5
|
-
network: Network;
|
|
6
|
-
private rpcClient;
|
|
7
|
-
constructor(network: Network, url: string, opts?: object);
|
|
8
|
-
getUtxos(address: string): Promise<Utxo[]>;
|
|
9
|
-
getBlockHeight(): Promise<number>;
|
|
10
|
-
getRawTransaction(txid: string): Promise<string>;
|
|
11
|
-
sendRawTransaction(txHex: string): Promise<string>;
|
|
12
|
-
getClient(): RpcClientRetry;
|
|
13
|
-
}
|
|
14
|
-
interface ListUnspentItem {
|
|
15
|
-
txid: string;
|
|
16
|
-
vout: number;
|
|
17
|
-
address: string;
|
|
18
|
-
label: string;
|
|
19
|
-
scriptPubKey: string;
|
|
20
|
-
amount: number;
|
|
21
|
-
confirmations: number;
|
|
22
|
-
redeemScript: string;
|
|
23
|
-
spendable: boolean;
|
|
24
|
-
solvable: boolean;
|
|
25
|
-
safe: boolean;
|
|
26
|
-
}
|
|
27
|
-
interface RpcClientRetry {
|
|
28
|
-
constructor(url: string, opts?: object): void;
|
|
29
|
-
listUnspent(minConf?: number, maxConf?: number, addresses?: string[], includeUnsafe?: boolean, queryOptions?: object): Promise<ListUnspentItem[]>;
|
|
30
|
-
getBlockCount(): Promise<number>;
|
|
31
|
-
getRawTransaction(txid: string, verbose?: boolean, blockHash?: string): Promise<string>;
|
|
32
|
-
sendRawTransaction(hexString: string, allowHighFees?: boolean): Promise<string>;
|
|
33
|
-
generate(nBlocks: number, maxTries?: number): Promise<string[]>;
|
|
34
|
-
generateToAddress(nBlocks: number, address: string, maxTries?: number): Promise<string[]>;
|
|
35
|
-
getNewAddress(label?: string): Promise<string>;
|
|
36
|
-
dumpPrivKey(address: string): Promise<string>;
|
|
37
|
-
getBalance(dummy?: string, minConf?: number, includeWatchOnly?: boolean): Promise<number>;
|
|
38
|
-
getBlock(blockHash: string, verbosity?: number): Promise<string>;
|
|
39
|
-
importAddress(address: string, label?: string, rescan?: boolean, p2sh?: boolean): Promise<void>;
|
|
40
|
-
}
|
|
41
|
-
export {};
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const RpcClientRetry = require('bitcoin-rpc-promise-retry');
|
|
13
|
-
class BitcoinRpcNetworkProvider {
|
|
14
|
-
constructor(network, url, opts) {
|
|
15
|
-
this.network = network;
|
|
16
|
-
this.rpcClient = new RpcClientRetry(url, opts);
|
|
17
|
-
}
|
|
18
|
-
getUtxos(address) {
|
|
19
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
-
const result = yield this.rpcClient.listUnspent(0, 9999999, [address]);
|
|
21
|
-
const utxos = result.map((utxo) => ({
|
|
22
|
-
txid: utxo.txid,
|
|
23
|
-
vout: utxo.vout,
|
|
24
|
-
satoshis: utxo.amount * 1e8,
|
|
25
|
-
}));
|
|
26
|
-
return utxos;
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
getBlockHeight() {
|
|
30
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
-
return this.rpcClient.getBlockCount();
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
getRawTransaction(txid) {
|
|
35
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
-
return this.rpcClient.getRawTransaction(txid);
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
sendRawTransaction(txHex) {
|
|
40
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
-
return this.rpcClient.sendRawTransaction(txHex);
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
getClient() {
|
|
45
|
-
return this.rpcClient;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
exports.default = BitcoinRpcNetworkProvider;
|
|
49
|
-
//# sourceMappingURL=BitcoinRpcNetworkProvider.js.map
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const libauth_1 = require("@bitauth/libauth");
|
|
13
|
-
const utils_1 = require("@cashscript/utils");
|
|
14
|
-
const electrum_cash_1 = require("electrum-cash");
|
|
15
|
-
const interfaces_js_1 = require("../interfaces.js");
|
|
16
|
-
const utils_js_1 = require("../utils.js");
|
|
17
|
-
class ElectrumNetworkProvider {
|
|
18
|
-
constructor(network = interfaces_js_1.Network.MAINNET, electrum, manualConnectionManagement) {
|
|
19
|
-
this.network = network;
|
|
20
|
-
this.manualConnectionManagement = manualConnectionManagement;
|
|
21
|
-
this.concurrentRequests = 0;
|
|
22
|
-
// If a custom Electrum Cluster is passed, we use it instead of the default.
|
|
23
|
-
if (electrum) {
|
|
24
|
-
this.electrum = electrum;
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
if (network === interfaces_js_1.Network.MAINNET) {
|
|
28
|
-
// Initialise a 2-of-3 Electrum Cluster with 6 reliable hardcoded servers
|
|
29
|
-
// using the first three servers as "priority" servers
|
|
30
|
-
this.electrum = new electrum_cash_1.ElectrumCluster('CashScript Application', '1.4.1', 2, 3, electrum_cash_1.ClusterOrder.PRIORITY);
|
|
31
|
-
this.electrum.addServer('bch.imaginary.cash', 50004, electrum_cash_1.ElectrumTransport.WSS.Scheme, false);
|
|
32
|
-
this.electrum.addServer('blackie.c3-soft.com', 50004, electrum_cash_1.ElectrumTransport.WSS.Scheme, false);
|
|
33
|
-
this.electrum.addServer('electroncash.de', 60002, electrum_cash_1.ElectrumTransport.WSS.Scheme, false);
|
|
34
|
-
this.electrum.addServer('electroncash.dk', 50004, electrum_cash_1.ElectrumTransport.WSS.Scheme, false);
|
|
35
|
-
this.electrum.addServer('bch.loping.net', 50004, electrum_cash_1.ElectrumTransport.WSS.Scheme, false);
|
|
36
|
-
this.electrum.addServer('electrum.imaginary.cash', 50004, electrum_cash_1.ElectrumTransport.WSS.Scheme, false);
|
|
37
|
-
}
|
|
38
|
-
else if (network === interfaces_js_1.Network.TESTNET || network === interfaces_js_1.Network.TESTNET3) {
|
|
39
|
-
// Initialise a 1-of-2 Electrum Cluster with 2 hardcoded servers
|
|
40
|
-
this.electrum = new electrum_cash_1.ElectrumCluster('CashScript Application', '1.4.1', 1, 2, electrum_cash_1.ClusterOrder.PRIORITY);
|
|
41
|
-
this.electrum.addServer('blackie.c3-soft.com', 60004, electrum_cash_1.ElectrumTransport.WSS.Scheme, false);
|
|
42
|
-
this.electrum.addServer('electroncash.de', 60004, electrum_cash_1.ElectrumTransport.WSS.Scheme, false);
|
|
43
|
-
// this.electrum.addServer('bch.loping.net', 60004, ElectrumTransport.WSS.Scheme, false);
|
|
44
|
-
// this.electrum.addServer('testnet.imaginary.cash', 50004, ElectrumTransport.WSS.Scheme);
|
|
45
|
-
}
|
|
46
|
-
else if (network === interfaces_js_1.Network.STAGING || network === interfaces_js_1.Network.TESTNET4) {
|
|
47
|
-
this.electrum = new electrum_cash_1.ElectrumCluster('CashScript Application', '1.4.1', 1, 1, electrum_cash_1.ClusterOrder.PRIORITY);
|
|
48
|
-
this.electrum.addServer('testnet4.imaginary.cash', 50004, electrum_cash_1.ElectrumTransport.WSS.Scheme, false);
|
|
49
|
-
}
|
|
50
|
-
else if (network === interfaces_js_1.Network.CHIPNET) {
|
|
51
|
-
this.electrum = new electrum_cash_1.ElectrumCluster('CashScript Application', '1.4.1', 1, 1, electrum_cash_1.ClusterOrder.PRIORITY);
|
|
52
|
-
this.electrum.addServer('chipnet.imaginary.cash', 50004, electrum_cash_1.ElectrumTransport.WSS.Scheme, false);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
throw new Error(`Tried to instantiate an ElectrumNetworkProvider for unsupported network ${network}`);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
getUtxos(address) {
|
|
59
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
-
const scripthash = addressToElectrumScriptHash(address);
|
|
61
|
-
const result = yield this.performRequest('blockchain.scripthash.listunspent', scripthash);
|
|
62
|
-
const utxos = result.map((utxo) => ({
|
|
63
|
-
txid: utxo.tx_hash,
|
|
64
|
-
vout: utxo.tx_pos,
|
|
65
|
-
satoshis: utxo.value,
|
|
66
|
-
height: utxo.height,
|
|
67
|
-
}));
|
|
68
|
-
return utxos;
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
getBlockHeight() {
|
|
72
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
73
|
-
const { height } = yield this.performRequest('blockchain.headers.subscribe');
|
|
74
|
-
return height;
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
getRawTransaction(txid) {
|
|
78
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
79
|
-
return yield this.performRequest('blockchain.transaction.get', txid);
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
sendRawTransaction(txHex) {
|
|
83
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
84
|
-
return yield this.performRequest('blockchain.transaction.broadcast', txHex);
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
connectCluster() {
|
|
88
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
89
|
-
try {
|
|
90
|
-
return yield this.electrum.startup();
|
|
91
|
-
}
|
|
92
|
-
catch (e) {
|
|
93
|
-
return [];
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
disconnectCluster() {
|
|
98
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
99
|
-
return this.electrum.shutdown();
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
performRequest(name, ...parameters) {
|
|
103
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
104
|
-
// Only connect the cluster when no concurrent requests are running
|
|
105
|
-
if (this.shouldConnect()) {
|
|
106
|
-
this.connectCluster();
|
|
107
|
-
}
|
|
108
|
-
this.concurrentRequests += 1;
|
|
109
|
-
yield this.electrum.ready();
|
|
110
|
-
let result;
|
|
111
|
-
try {
|
|
112
|
-
result = yield this.electrum.request(name, ...parameters);
|
|
113
|
-
}
|
|
114
|
-
finally {
|
|
115
|
-
// Always disconnect the cluster, also if the request fails
|
|
116
|
-
// as long as no other concurrent requests are running
|
|
117
|
-
if (this.shouldDisconnect()) {
|
|
118
|
-
yield this.disconnectCluster();
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
this.concurrentRequests -= 1;
|
|
122
|
-
if (result instanceof Error)
|
|
123
|
-
throw result;
|
|
124
|
-
return result;
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
shouldConnect() {
|
|
128
|
-
if (this.manualConnectionManagement)
|
|
129
|
-
return false;
|
|
130
|
-
if (this.concurrentRequests !== 0)
|
|
131
|
-
return false;
|
|
132
|
-
return true;
|
|
133
|
-
}
|
|
134
|
-
shouldDisconnect() {
|
|
135
|
-
if (this.manualConnectionManagement)
|
|
136
|
-
return false;
|
|
137
|
-
if (this.concurrentRequests !== 1)
|
|
138
|
-
return false;
|
|
139
|
-
return true;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
exports.default = ElectrumNetworkProvider;
|
|
143
|
-
/**
|
|
144
|
-
* Helper function to convert an address to an electrum-cash compatible scripthash.
|
|
145
|
-
* This is necessary to support electrum versions lower than 1.4.3, which do not
|
|
146
|
-
* support addresses, only script hashes.
|
|
147
|
-
*
|
|
148
|
-
* @param address Address to convert to an electrum scripthash
|
|
149
|
-
*
|
|
150
|
-
* @returns The corresponding script hash in an electrum-cash compatible format
|
|
151
|
-
*/
|
|
152
|
-
function addressToElectrumScriptHash(address) {
|
|
153
|
-
// Retrieve locking script
|
|
154
|
-
const lockScript = (0, utils_js_1.addressToLockScript)(address);
|
|
155
|
-
// Hash locking script
|
|
156
|
-
const scriptHash = (0, utils_1.sha256)(lockScript);
|
|
157
|
-
// Reverse scripthash
|
|
158
|
-
scriptHash.reverse();
|
|
159
|
-
// Return scripthash as a hex string
|
|
160
|
-
return (0, libauth_1.binToHex)(scriptHash);
|
|
161
|
-
}
|
|
162
|
-
//# sourceMappingURL=ElectrumNetworkProvider.js.map
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
class FullStackNetworkProvider {
|
|
13
|
-
/**
|
|
14
|
-
* @example
|
|
15
|
-
* const BCHJS = require("@psf/bch-js")
|
|
16
|
-
* let bchjs = new BCHJS({
|
|
17
|
-
* restURL: 'https://api.fullstack.cash/v3/',
|
|
18
|
-
* apiToken: 'eyJhbGciO...' // Your JWT token here.
|
|
19
|
-
* })
|
|
20
|
-
*/
|
|
21
|
-
constructor(network, bchjs) {
|
|
22
|
-
this.network = network;
|
|
23
|
-
this.bchjs = bchjs;
|
|
24
|
-
}
|
|
25
|
-
getUtxos(address) {
|
|
26
|
-
var _a;
|
|
27
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
28
|
-
const result = yield this.bchjs.Electrumx.utxo(address);
|
|
29
|
-
const utxos = ((_a = result.utxos) !== null && _a !== void 0 ? _a : []).map((utxo) => ({
|
|
30
|
-
txid: utxo.tx_hash,
|
|
31
|
-
vout: utxo.tx_pos,
|
|
32
|
-
satoshis: utxo.value,
|
|
33
|
-
height: utxo.height,
|
|
34
|
-
}));
|
|
35
|
-
return utxos;
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
getBlockHeight() {
|
|
39
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
40
|
-
return this.bchjs.Blockchain.getBlockCount();
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
getRawTransaction(txid) {
|
|
44
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
-
return this.bchjs.RawTransactions.getRawTransaction(txid);
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
sendRawTransaction(txHex) {
|
|
49
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
-
return this.bchjs.RawTransactions.sendRawTransaction(txHex);
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
exports.default = FullStackNetworkProvider;
|
|
55
|
-
//# sourceMappingURL=FullStackNetworkProvider.js.map
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.FullStackNetworkProvider = exports.ElectrumNetworkProvider = exports.BitcoinRpcNetworkProvider = exports.BitboxNetworkProvider = void 0;
|
|
7
|
-
var BitboxNetworkProvider_js_1 = require("./BitboxNetworkProvider.js");
|
|
8
|
-
Object.defineProperty(exports, "BitboxNetworkProvider", { enumerable: true, get: function () { return __importDefault(BitboxNetworkProvider_js_1).default; } });
|
|
9
|
-
var BitcoinRpcNetworkProvider_js_1 = require("./BitcoinRpcNetworkProvider.js");
|
|
10
|
-
Object.defineProperty(exports, "BitcoinRpcNetworkProvider", { enumerable: true, get: function () { return __importDefault(BitcoinRpcNetworkProvider_js_1).default; } });
|
|
11
|
-
var ElectrumNetworkProvider_js_1 = require("./ElectrumNetworkProvider.js");
|
|
12
|
-
Object.defineProperty(exports, "ElectrumNetworkProvider", { enumerable: true, get: function () { return __importDefault(ElectrumNetworkProvider_js_1).default; } });
|
|
13
|
-
var FullStackNetworkProvider_js_1 = require("./FullStackNetworkProvider.js");
|
|
14
|
-
Object.defineProperty(exports, "FullStackNetworkProvider", { enumerable: true, get: function () { return __importDefault(FullStackNetworkProvider_js_1).default; } });
|
|
15
|
-
//# sourceMappingURL=index.js.map
|