@super-protocol/sdk-js 1.0.0-beta.4 → 1.0.0
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/build/TIIGenerator.d.ts +3 -3
- package/build/connectors/BaseConnector.d.ts +7 -8
- package/build/connectors/BaseConnector.js +2 -4
- package/build/connectors/BlockchainConnector.d.ts +6 -8
- package/build/connectors/BlockchainConnector.js +97 -102
- package/build/connectors/BlockchainEventsListener.d.ts +2 -2
- package/build/connectors/BlockchainEventsListener.js +36 -11
- package/build/connectors/index.d.ts +2 -0
- package/build/connectors/index.js +11 -0
- package/build/constants.d.ts +2 -2
- package/build/constants.js +3 -3
- package/build/contracts/abi.d.ts +9769 -0
- package/build/contracts/abi.js +6 -0
- package/build/crypto/Crypto.js +4 -4
- package/build/crypto/nodejs/AES.d.ts +1 -1
- package/build/crypto/nodejs/AES.js +11 -13
- package/build/crypto/nodejs/ARIA.d.ts +1 -1
- package/build/crypto/nodejs/ARIA.js +11 -13
- package/build/models/EtlModel.d.ts +1 -1
- package/build/models/EtlModel.js +2 -4
- package/build/models/Offer.d.ts +5 -15
- package/build/models/Offer.js +60 -105
- package/build/models/Order.d.ts +16 -26
- package/build/models/Order.js +93 -174
- package/build/models/Provider.d.ts +9 -13
- package/build/models/Provider.js +16 -43
- package/build/models/TCB.d.ts +6 -8
- package/build/models/TCB.js +22 -34
- package/build/models/TeeOffer.d.ts +9 -22
- package/build/models/TeeOffer.js +96 -168
- package/build/models/index.d.ts +5 -0
- package/build/models/index.js +17 -0
- package/build/providers/storage/StorjStorageProvider.js +3 -3
- package/build/staticModels/ActiveOffers.d.ts +3 -12
- package/build/staticModels/ActiveOffers.js +11 -29
- package/build/staticModels/ActiveOrders.d.ts +4 -6
- package/build/staticModels/ActiveOrders.js +19 -21
- package/build/staticModels/Consensus.d.ts +3 -5
- package/build/staticModels/Consensus.js +57 -87
- package/build/staticModels/Deposits.d.ts +8 -9
- package/build/staticModels/Deposits.js +42 -60
- package/build/staticModels/Marks.d.ts +4 -4
- package/build/staticModels/Marks.js +8 -12
- package/build/staticModels/Offers.d.ts +15 -14
- package/build/staticModels/Offers.js +56 -88
- package/build/staticModels/Orders.d.ts +32 -36
- package/build/staticModels/Orders.js +92 -150
- package/build/staticModels/ProviderRegistry.d.ts +6 -12
- package/build/staticModels/ProviderRegistry.js +45 -75
- package/build/staticModels/StaticModel.d.ts +8 -0
- package/build/staticModels/StaticModel.js +44 -0
- package/build/staticModels/Superpro.d.ts +4 -4
- package/build/staticModels/Superpro.js +7 -25
- package/build/staticModels/SuperproToken.d.ts +7 -7
- package/build/staticModels/SuperproToken.js +34 -38
- package/build/staticModels/TeeOffers.d.ts +19 -21
- package/build/staticModels/TeeOffers.js +81 -126
- package/build/store.d.ts +2 -2
- package/build/types/Consensus.d.ts +6 -57
- package/build/types/Consensus.js +2 -38
- package/build/types/DepositInfo.d.ts +0 -5
- package/build/types/DepositInfo.js +1 -8
- package/build/types/HardwareInfo.d.ts +0 -12
- package/build/types/HardwareInfo.js +1 -9
- package/build/types/Offer.d.ts +1 -25
- package/build/types/Offer.js +2 -25
- package/build/types/OptionInfo.d.ts +0 -5
- package/build/types/OptionInfo.js +1 -8
- package/build/types/Order.d.ts +10 -86
- package/build/types/Order.js +2 -42
- package/build/types/Origins.d.ts +0 -6
- package/build/types/Origins.js +1 -9
- package/build/types/Provider.d.ts +0 -19
- package/build/types/Provider.js +1 -19
- package/build/types/SlotInfo.d.ts +0 -5
- package/build/types/SlotInfo.js +1 -8
- package/build/types/SlotUsage.d.ts +0 -6
- package/build/types/SlotUsage.js +2 -9
- package/build/types/TeeOfferInfo.d.ts +0 -20
- package/build/types/TeeOfferInfo.js +1 -13
- package/build/types/TeeOfferOption.d.ts +0 -14
- package/build/types/TeeOfferOption.js +1 -10
- package/build/types/TeeOfferSlot.d.ts +0 -14
- package/build/types/TeeOfferSlot.js +1 -10
- package/build/types/ValueOfferSlot.d.ts +0 -19
- package/build/types/ValueOfferSlot.js +1 -12
- package/build/types/Web3.d.ts +30 -13
- package/build/types/blockchainConnector/StorageAccess.d.ts +2 -2
- package/build/types/index.d.ts +21 -0
- package/build/types/index.js +38 -0
- package/build/utils/Monitoring.js +5 -2
- package/build/utils/NonceTracker.d.ts +2 -2
- package/build/utils/NonceTracker.js +9 -11
- package/build/utils/TxManager.d.ts +6 -12
- package/build/utils/TxManager.js +16 -23
- package/build/{utils.d.ts → utils/helper.d.ts} +12 -17
- package/build/utils/helper.js +157 -0
- package/package.json +9 -6
- package/readme.md +7 -8
- package/build/contracts/app.json +0 -12758
- package/build/staticModels/BaseStaticModel.d.ts +0 -4
- package/build/staticModels/BaseStaticModel.js +0 -20
- package/build/utils.js +0 -196
package/build/TIIGenerator.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { Encryption, Hash, Resource, TeeRunInfo } from '@super-protocol/dto-js';
|
|
3
3
|
declare class TIIGenerator {
|
|
4
|
-
static generateByOffer(offerId:
|
|
5
|
-
static generate(orderId:
|
|
6
|
-
static getSolutionHashesAndLinkage(inputOffers:
|
|
4
|
+
static generateByOffer(offerId: bigint, solutionHashes: Hash[], linkageString: string | undefined, resource: Resource, args: any, encryption: Encryption): Promise<string>;
|
|
5
|
+
static generate(orderId: bigint, resource: Resource, args: any, encryption: Encryption): Promise<string>;
|
|
6
|
+
static getSolutionHashesAndLinkage(inputOffers: bigint[]): Promise<{
|
|
7
7
|
hashes: Hash[];
|
|
8
8
|
linkage?: string;
|
|
9
9
|
}>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Contract } from 'web3
|
|
1
|
+
import abi from '../contracts/abi';
|
|
2
|
+
import { Contract } from 'web3';
|
|
3
3
|
export type Config = {
|
|
4
4
|
contractAddress: string;
|
|
5
5
|
blockchainUrl?: string;
|
|
6
|
-
gasPrice?:
|
|
7
|
-
gasLimit?:
|
|
6
|
+
gasPrice?: bigint;
|
|
7
|
+
gasLimit?: bigint;
|
|
8
8
|
gasLimitMultiplier?: number;
|
|
9
9
|
gasPriceMultiplier?: number;
|
|
10
10
|
txConcurrency?: number;
|
|
@@ -22,20 +22,19 @@ export declare class BaseConnector {
|
|
|
22
22
|
level: string;
|
|
23
23
|
enabled: boolean;
|
|
24
24
|
} & import("pino").default.ChildLoggerOptions>;
|
|
25
|
-
protected contract?: Contract
|
|
26
|
-
protected provider?: WebsocketProviderBase | HttpProviderBase;
|
|
25
|
+
protected contract?: Contract<typeof abi>;
|
|
27
26
|
isInitialized(): boolean;
|
|
28
27
|
checkIfInitialized(): void;
|
|
29
28
|
/**
|
|
30
29
|
*
|
|
31
30
|
* @returns initialized contract
|
|
32
31
|
*/
|
|
33
|
-
getContract(): Contract
|
|
32
|
+
getContract(): Contract<typeof abi>;
|
|
34
33
|
/**
|
|
35
34
|
* Function for connecting to blockchain
|
|
36
35
|
* Used to setting up settings for blockchain connector
|
|
37
36
|
* Needs to run this function before using blockchain connector
|
|
38
37
|
*/
|
|
39
|
-
initialize(
|
|
38
|
+
initialize(_config: Config): Promise<void>;
|
|
40
39
|
shutdown(): void;
|
|
41
40
|
}
|
|
@@ -39,17 +39,15 @@ class BaseConnector {
|
|
|
39
39
|
* Used to setting up settings for blockchain connector
|
|
40
40
|
* Needs to run this function before using blockchain connector
|
|
41
41
|
*/
|
|
42
|
-
initialize(
|
|
42
|
+
initialize(_config) {
|
|
43
43
|
return __awaiter(this, void 0, void 0, function* () { });
|
|
44
44
|
}
|
|
45
45
|
shutdown() {
|
|
46
|
-
var _a;
|
|
47
46
|
if (this.initialized) {
|
|
48
|
-
(_a = this.provider) === null || _a === void 0 ? void 0 : _a.disconnect(0, '');
|
|
49
47
|
this.initialized = false;
|
|
50
48
|
this.logger.trace(`${this.constructor['name']} was shutdown`);
|
|
51
49
|
}
|
|
52
50
|
}
|
|
53
51
|
}
|
|
54
52
|
exports.BaseConnector = BaseConnector;
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUNvbm5lY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25uZWN0b3JzL0Jhc2VDb25uZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsdURBQW1DO0FBcUJuQyxNQUFhLGFBQWE7SUFBMUI7UUFDYyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixXQUFNLEdBQUcsZ0JBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFxQ2pGLENBQUM7SUFsQ1UsYUFBYTtRQUNoQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVNLGtCQUFrQjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FDWCxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLHNDQUFzQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FDeEgsQ0FBQztJQUNWLENBQUM7SUFFRDs7O09BR0c7SUFDSSxXQUFXO1FBQ2QsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFMUIsT0FBTyxJQUFJLENBQUMsUUFBUyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7OztPQUlHO0lBQ1UsVUFBVSxDQUFDLE9BQWU7OERBQWtCLENBQUM7S0FBQTtJQUVuRCxRQUFRO1FBQ1gsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDakU7SUFDTCxDQUFDO0NBQ0o7QUF2Q0Qsc0NBdUNDIn0=
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { BaseConnector, Config } from './BaseConnector';
|
|
2
|
+
import { TransactionReceipt } from 'web3';
|
|
2
3
|
import { TransactionOptions, EventData, BlockInfo } from '../types/Web3';
|
|
3
4
|
import BlockchainTransaction from '../types/blockchainConnector/StorageAccess';
|
|
4
|
-
import { TransactionReceipt } from 'web3-core';
|
|
5
5
|
declare class BlockchainConnector extends BaseConnector {
|
|
6
6
|
private defaultActionAccount?;
|
|
7
7
|
private static instance;
|
|
8
8
|
private constructor();
|
|
9
9
|
static getInstance(): BlockchainConnector;
|
|
10
|
-
getContract(transactionOptions?: TransactionOptions): import("web3-eth-contract").Contract;
|
|
11
10
|
/**
|
|
12
11
|
* Function for connecting to blockchain
|
|
13
12
|
* Used to setting up settings for blockchain connector
|
|
@@ -22,8 +21,8 @@ declare class BlockchainConnector extends BaseConnector {
|
|
|
22
21
|
/**
|
|
23
22
|
* Returns balance of blockchain platform tokens in wei
|
|
24
23
|
*/
|
|
25
|
-
getBalance(address: string): Promise<
|
|
26
|
-
getTimestamp(): Promise<
|
|
24
|
+
getBalance(address: string): Promise<bigint>;
|
|
25
|
+
getTimestamp(): Promise<bigint>;
|
|
27
26
|
/**
|
|
28
27
|
* Returns transactions events info
|
|
29
28
|
* @param txHash - transaction hash
|
|
@@ -45,18 +44,17 @@ declare class BlockchainConnector extends BaseConnector {
|
|
|
45
44
|
/**
|
|
46
45
|
* Returns balance of blockchain platform tokens in wei
|
|
47
46
|
*/
|
|
48
|
-
transfer(to: string, amount:
|
|
47
|
+
transfer(to: string, amount: bigint, transactionOptions?: TransactionOptions): Promise<TransactionReceipt>;
|
|
49
48
|
/**
|
|
50
49
|
* Returns transactions count
|
|
51
50
|
* @param address - wallet address
|
|
52
51
|
* @returns {Promise<number>} - Transactions count
|
|
53
52
|
*/
|
|
54
|
-
getTransactionCount(address: string, status?: string): Promise<
|
|
53
|
+
getTransactionCount(address: string, status?: string): Promise<bigint>;
|
|
55
54
|
getAddressByKey(pk: string): string;
|
|
56
|
-
private executeBatchAsync;
|
|
57
55
|
/**
|
|
58
56
|
* Fetch transactions for specific addresses starting with specific block until last block
|
|
59
|
-
* @param addresses - array of addresses to fetch transactions (from these addresses and to these addresses)
|
|
57
|
+
* @param addresses - array of addresses IN LOWER CASE to fetch transactions (from these addresses and to these addresses)
|
|
60
58
|
* @param startBlock - number of block to start fetching transactions (if empty fetch only for last block)
|
|
61
59
|
* @param lastBlock - number of block to last fetching transactions (if empty fetch only for last block)
|
|
62
60
|
* @param batchSize - block size for asynchronous transaction loading
|
|
@@ -1,10 +1,33 @@
|
|
|
1
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
|
+
});
|
|
2
18
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
19
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
20
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
21
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
22
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
23
|
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
|
+
if (mod && mod.__esModule) return mod;
|
|
26
|
+
var result = {};
|
|
27
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
+
__setModuleDefault(result, mod);
|
|
29
|
+
return result;
|
|
30
|
+
};
|
|
8
31
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
32
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
33
|
};
|
|
@@ -22,14 +45,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
22
45
|
};
|
|
23
46
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
47
|
const BaseConnector_1 = require("./BaseConnector");
|
|
25
|
-
const web3_1 =
|
|
26
|
-
const
|
|
48
|
+
const web3_1 = __importStar(require("web3"));
|
|
49
|
+
const web3_eth_abi_1 = require("web3-eth-abi");
|
|
27
50
|
const constants_1 = require("../constants");
|
|
28
|
-
const
|
|
51
|
+
const helper_1 = require("../utils/helper");
|
|
29
52
|
const TxManager_1 = __importDefault(require("../utils/TxManager"));
|
|
30
|
-
const
|
|
53
|
+
const abi_1 = require("../contracts/abi");
|
|
31
54
|
const ethers_1 = require("ethers");
|
|
32
|
-
const Jsonrpc = require('web3-core-requestmanager/src/jsonrpc');
|
|
33
55
|
// TODO: remove this dependencies
|
|
34
56
|
const store_1 = __importDefault(require("../store"));
|
|
35
57
|
const Superpro_1 = __importDefault(require("../staticModels/Superpro"));
|
|
@@ -45,14 +67,6 @@ class BlockchainConnector extends BaseConnector_1.BaseConnector {
|
|
|
45
67
|
}
|
|
46
68
|
return BlockchainConnector.instance;
|
|
47
69
|
}
|
|
48
|
-
// TODO: remove this
|
|
49
|
-
getContract(transactionOptions) {
|
|
50
|
-
this.checkIfInitialized();
|
|
51
|
-
if (transactionOptions === null || transactionOptions === void 0 ? void 0 : transactionOptions.web3) {
|
|
52
|
-
return new transactionOptions.web3.eth.Contract(app_json_1.default.abi, Superpro_1.default.address);
|
|
53
|
-
}
|
|
54
|
-
return super.getContract();
|
|
55
|
-
}
|
|
56
70
|
/**
|
|
57
71
|
* Function for connecting to blockchain
|
|
58
72
|
* Used to setting up settings for blockchain connector
|
|
@@ -63,8 +77,11 @@ class BlockchainConnector extends BaseConnector_1.BaseConnector {
|
|
|
63
77
|
return __awaiter(this, void 0, void 0, function* () {
|
|
64
78
|
this.logger.trace(config, 'Initializing');
|
|
65
79
|
const url = (config === null || config === void 0 ? void 0 : config.blockchainUrl) || constants_1.defaultBlockchainUrl;
|
|
66
|
-
|
|
67
|
-
|
|
80
|
+
store_1.default.web3Https = new web3_1.default(url);
|
|
81
|
+
const web3Context = new web3_1.Web3Context({
|
|
82
|
+
provider: store_1.default.web3Https.currentProvider,
|
|
83
|
+
config: { contractDataInputFill: 'data' },
|
|
84
|
+
});
|
|
68
85
|
store_1.default.gasPrice = (_a = config === null || config === void 0 ? void 0 : config.gasPrice) !== null && _a !== void 0 ? _a : constants_1.defaultGasPrice;
|
|
69
86
|
if (config === null || config === void 0 ? void 0 : config.gasLimit)
|
|
70
87
|
store_1.default.gasLimit = config.gasLimit;
|
|
@@ -77,7 +94,7 @@ class BlockchainConnector extends BaseConnector_1.BaseConnector {
|
|
|
77
94
|
if (config === null || config === void 0 ? void 0 : config.txIntervalMs)
|
|
78
95
|
store_1.default.txIntervalMs = config.txIntervalMs;
|
|
79
96
|
Superpro_1.default.address = config.contractAddress;
|
|
80
|
-
this.contract = new
|
|
97
|
+
this.contract = new web3_1.Contract(abi_1.abi, Superpro_1.default.address, web3Context);
|
|
81
98
|
TxManager_1.default.init(store_1.default.web3Https);
|
|
82
99
|
SuperproToken_1.default.addressHttps = yield Superpro_1.default.getTokenAddress(this.contract);
|
|
83
100
|
Monitoring_1.Monitoring.getInstance().initializeLogging();
|
|
@@ -92,7 +109,8 @@ class BlockchainConnector extends BaseConnector_1.BaseConnector {
|
|
|
92
109
|
initializeActionAccount(actionAccountKey, manageNonce = true) {
|
|
93
110
|
return __awaiter(this, void 0, void 0, function* () {
|
|
94
111
|
this.checkIfInitialized();
|
|
95
|
-
|
|
112
|
+
store_1.default.web3Https.eth.accounts.wallet.add(actionAccountKey);
|
|
113
|
+
const actionAccount = store_1.default.web3Https.eth.accounts.privateKeyToAccount(actionAccountKey).address;
|
|
96
114
|
if (!store_1.default.actionAccount)
|
|
97
115
|
store_1.default.actionAccount = actionAccount;
|
|
98
116
|
if (!store_1.default.keys[actionAccount])
|
|
@@ -109,10 +127,8 @@ class BlockchainConnector extends BaseConnector_1.BaseConnector {
|
|
|
109
127
|
* Returns balance of blockchain platform tokens in wei
|
|
110
128
|
*/
|
|
111
129
|
getBalance(address) {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
return store_1.default.web3Https.eth.getBalance(address);
|
|
115
|
-
});
|
|
130
|
+
this.checkIfInitialized();
|
|
131
|
+
return store_1.default.web3Https.eth.getBalance(address);
|
|
116
132
|
}
|
|
117
133
|
getTimestamp() {
|
|
118
134
|
var _a;
|
|
@@ -130,28 +146,24 @@ class BlockchainConnector extends BaseConnector_1.BaseConnector {
|
|
|
130
146
|
getTransactionEvents(txHash) {
|
|
131
147
|
return __awaiter(this, void 0, void 0, function* () {
|
|
132
148
|
this.checkIfInitialized();
|
|
133
|
-
const parseReceiptEvents = require('web3-parse-receipt-events');
|
|
134
149
|
const receipt = yield store_1.default.web3Https.eth.getTransactionReceipt(txHash);
|
|
135
|
-
const tokenEvents = parseReceiptEvents(app_json_1.default.abi, SuperproToken_1.default.addressHttps, receipt);
|
|
136
|
-
parseReceiptEvents(app_json_1.default.abi, Superpro_1.default.address, receipt); // don't remove
|
|
137
|
-
const events = Object.values(tokenEvents.events || {});
|
|
138
150
|
const eventData = [];
|
|
139
|
-
|
|
140
|
-
|
|
151
|
+
const eventsDescriptor = abi_1.abi
|
|
152
|
+
.filter((desc) => desc.type === 'event')
|
|
153
|
+
.map((desc) => (Object.assign(Object.assign({}, desc), { signature: (0, web3_eth_abi_1.encodeEventSignature)(desc) })));
|
|
154
|
+
for (const log of receipt.logs) {
|
|
155
|
+
if (!log.address || log.address === constants_1.POLYGON_MATIC_EVENT_PATH) {
|
|
141
156
|
continue;
|
|
142
157
|
}
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
158
|
+
const descriptor = eventsDescriptor.find((desc) => { var _a; return desc.signature === ((_a = log.topics) === null || _a === void 0 ? void 0 : _a[0]); });
|
|
159
|
+
if (descriptor) {
|
|
160
|
+
const decodedParams = (0, web3_eth_abi_1.decodeLog)(descriptor.inputs, log.data, log.topics.slice(1));
|
|
161
|
+
eventData.push({
|
|
162
|
+
contract: log.address,
|
|
163
|
+
name: descriptor.name || 'UknownEvenet',
|
|
164
|
+
data: (0, helper_1.cleanEventData)(decodedParams),
|
|
165
|
+
});
|
|
149
166
|
}
|
|
150
|
-
eventData.push({
|
|
151
|
-
contract: event.address,
|
|
152
|
-
name: event.event,
|
|
153
|
-
data,
|
|
154
|
-
});
|
|
155
167
|
}
|
|
156
168
|
return eventData;
|
|
157
169
|
});
|
|
@@ -178,24 +190,20 @@ class BlockchainConnector extends BaseConnector_1.BaseConnector {
|
|
|
178
190
|
* @returns {Promise<TransactionReceipt>} - Transaction reciept
|
|
179
191
|
*/
|
|
180
192
|
getTransactionReceipt(txHash) {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
return store_1.default.web3Https.eth.getTransactionReceipt(txHash);
|
|
184
|
-
});
|
|
193
|
+
this.checkIfInitialized();
|
|
194
|
+
return store_1.default.web3Https.eth.getTransactionReceipt(txHash);
|
|
185
195
|
}
|
|
186
196
|
/**
|
|
187
197
|
* Returns balance of blockchain platform tokens in wei
|
|
188
198
|
*/
|
|
189
199
|
transfer(to, amount, transactionOptions) {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
return TxManager_1.default.publishTransaction(transaction, transactionOptions);
|
|
198
|
-
});
|
|
200
|
+
this.checkIfInitialized();
|
|
201
|
+
(0, helper_1.checkIfActionAccountInitialized)(transactionOptions);
|
|
202
|
+
const transaction = {
|
|
203
|
+
to,
|
|
204
|
+
value: amount,
|
|
205
|
+
};
|
|
206
|
+
return TxManager_1.default.publishTransaction(transaction, transactionOptions);
|
|
199
207
|
}
|
|
200
208
|
/**
|
|
201
209
|
* Returns transactions count
|
|
@@ -203,50 +211,20 @@ class BlockchainConnector extends BaseConnector_1.BaseConnector {
|
|
|
203
211
|
* @returns {Promise<number>} - Transactions count
|
|
204
212
|
*/
|
|
205
213
|
getTransactionCount(address, status) {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
}
|
|
214
|
-
});
|
|
214
|
+
this.checkIfInitialized();
|
|
215
|
+
if (status) {
|
|
216
|
+
return store_1.default.web3Https.eth.getTransactionCount(address, status);
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
return store_1.default.web3Https.eth.getTransactionCount(address);
|
|
220
|
+
}
|
|
215
221
|
}
|
|
216
222
|
getAddressByKey(pk) {
|
|
217
223
|
return new ethers_1.Wallet(pk).address;
|
|
218
224
|
}
|
|
219
|
-
executeBatchAsync(batch) {
|
|
220
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
221
|
-
return new Promise((resolve, reject) => {
|
|
222
|
-
const requests = batch.requests;
|
|
223
|
-
batch.requestManager.sendBatch(requests, (error, results) => {
|
|
224
|
-
if (error)
|
|
225
|
-
return reject(error);
|
|
226
|
-
results = results || [];
|
|
227
|
-
const response = requests
|
|
228
|
-
.map((request, index) => {
|
|
229
|
-
return results[index] || {};
|
|
230
|
-
})
|
|
231
|
-
.map((result, index) => {
|
|
232
|
-
if (result && result.error) {
|
|
233
|
-
return web3_core_helpers_1.errors.ErrorResponse(result);
|
|
234
|
-
}
|
|
235
|
-
if (!Jsonrpc.isValidResponse(result)) {
|
|
236
|
-
return web3_core_helpers_1.errors.InvalidResponse(result);
|
|
237
|
-
}
|
|
238
|
-
return requests[index].format
|
|
239
|
-
? requests[index].format(result.result)
|
|
240
|
-
: result.result;
|
|
241
|
-
});
|
|
242
|
-
resolve(response);
|
|
243
|
-
});
|
|
244
|
-
});
|
|
245
|
-
});
|
|
246
|
-
}
|
|
247
225
|
/**
|
|
248
226
|
* Fetch transactions for specific addresses starting with specific block until last block
|
|
249
|
-
* @param addresses - array of addresses to fetch transactions (from these addresses and to these addresses)
|
|
227
|
+
* @param addresses - array of addresses IN LOWER CASE to fetch transactions (from these addresses and to these addresses)
|
|
250
228
|
* @param startBlock - number of block to start fetching transactions (if empty fetch only for last block)
|
|
251
229
|
* @param lastBlock - number of block to last fetching transactions (if empty fetch only for last block)
|
|
252
230
|
* @param batchSize - block size for asynchronous transaction loading
|
|
@@ -258,7 +236,7 @@ class BlockchainConnector extends BaseConnector_1.BaseConnector {
|
|
|
258
236
|
getTransactions(addresses, startBlock, lastBlock, batchSize = constants_1.BLOCK_SIZE_TO_FETCH_TRANSACTION) {
|
|
259
237
|
return __awaiter(this, void 0, void 0, function* () {
|
|
260
238
|
this.checkIfInitialized();
|
|
261
|
-
const blockchainLastBlock = yield store_1.default.web3Https.eth.getBlockNumber();
|
|
239
|
+
const blockchainLastBlock = Number(yield store_1.default.web3Https.eth.getBlockNumber());
|
|
262
240
|
if (lastBlock) {
|
|
263
241
|
lastBlock = Math.min(lastBlock, blockchainLastBlock);
|
|
264
242
|
}
|
|
@@ -269,7 +247,15 @@ class BlockchainConnector extends BaseConnector_1.BaseConnector {
|
|
|
269
247
|
startBlock = Math.max(lastBlock - 1000, 0);
|
|
270
248
|
}
|
|
271
249
|
const transactionsByAddress = {};
|
|
272
|
-
const validAddresses = addresses
|
|
250
|
+
const validAddresses = addresses
|
|
251
|
+
.filter((address) => { var _a; return (_a = store_1.default.web3Https) === null || _a === void 0 ? void 0 : _a.utils.isAddress(address); })
|
|
252
|
+
.map((address) => {
|
|
253
|
+
const lowerCaseAddress = address.toLowerCase();
|
|
254
|
+
if (address !== lowerCaseAddress) {
|
|
255
|
+
this.logger.warn({ address }, `Must use adresses in lower case fomat! ${address} -> ${lowerCaseAddress}`);
|
|
256
|
+
}
|
|
257
|
+
return lowerCaseAddress;
|
|
258
|
+
});
|
|
273
259
|
if (!validAddresses.length) {
|
|
274
260
|
return {
|
|
275
261
|
transactionsByAddress,
|
|
@@ -278,24 +264,33 @@ class BlockchainConnector extends BaseConnector_1.BaseConnector {
|
|
|
278
264
|
}
|
|
279
265
|
validAddresses.forEach((address) => (transactionsByAddress[address] = []));
|
|
280
266
|
while (startBlock <= lastBlock) {
|
|
281
|
-
const batch = new store_1.default.web3Https.
|
|
282
|
-
const getBlock = store_1.default.web3Https.eth.getBlock;
|
|
267
|
+
const batch = new store_1.default.web3Https.BatchRequest();
|
|
283
268
|
const batchLastBlock = Math.min(startBlock + batchSize - 1, lastBlock);
|
|
284
269
|
for (let blockNumber = startBlock; blockNumber <= batchLastBlock; blockNumber++) {
|
|
285
|
-
|
|
270
|
+
const hexedBlockNumber = '0x' + blockNumber.toString(16);
|
|
271
|
+
batch
|
|
272
|
+
.add({
|
|
273
|
+
jsonrpc: '2.0',
|
|
274
|
+
method: 'eth_getBlockByNumber',
|
|
275
|
+
params: [hexedBlockNumber, true],
|
|
276
|
+
})
|
|
277
|
+
.catch((err) => this.logger.error(err));
|
|
286
278
|
}
|
|
287
|
-
const blocks =
|
|
279
|
+
const blocks = yield (0, helper_1.executeBatchAsync)(batch);
|
|
288
280
|
blocks.forEach((block) => {
|
|
289
281
|
if (!(block === null || block === void 0 ? void 0 : block.transactions))
|
|
290
282
|
return;
|
|
291
283
|
block.transactions.forEach((transaction) => {
|
|
284
|
+
if (typeof transaction === 'string') {
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
292
287
|
let address = null;
|
|
293
288
|
if (validAddresses.includes(transaction.from))
|
|
294
289
|
address = transaction.from;
|
|
295
290
|
else if (transaction.to && validAddresses.includes(transaction.to))
|
|
296
291
|
address = transaction.to;
|
|
297
292
|
if (address) {
|
|
298
|
-
transactionsByAddress[address].push(Object.assign(Object.assign({}, transaction), { timestamp:
|
|
293
|
+
transactionsByAddress[address].push(Object.assign(Object.assign({}, transaction), { timestamp: Number(block.timestamp) * 1000, input: transaction.input }));
|
|
299
294
|
}
|
|
300
295
|
});
|
|
301
296
|
});
|
|
@@ -314,28 +309,28 @@ class BlockchainConnector extends BaseConnector_1.BaseConnector {
|
|
|
314
309
|
}
|
|
315
310
|
}
|
|
316
311
|
__decorate([
|
|
317
|
-
(0,
|
|
312
|
+
(0, helper_1.incrementMethodCall)(),
|
|
318
313
|
__metadata("design:type", Function),
|
|
319
314
|
__metadata("design:paramtypes", [String]),
|
|
320
315
|
__metadata("design:returntype", Promise)
|
|
321
316
|
], BlockchainConnector.prototype, "getBalance", null);
|
|
322
317
|
__decorate([
|
|
323
|
-
(0,
|
|
318
|
+
(0, helper_1.incrementMethodCall)(),
|
|
324
319
|
__metadata("design:type", Function),
|
|
325
320
|
__metadata("design:paramtypes", [String]),
|
|
326
321
|
__metadata("design:returntype", Promise)
|
|
327
322
|
], BlockchainConnector.prototype, "getTransactionEvents", null);
|
|
328
323
|
__decorate([
|
|
329
|
-
(0,
|
|
324
|
+
(0, helper_1.incrementMethodCall)(),
|
|
330
325
|
__metadata("design:type", Function),
|
|
331
|
-
__metadata("design:paramtypes", [String,
|
|
326
|
+
__metadata("design:paramtypes", [String, typeof BigInt === "function" ? BigInt : Object, Object]),
|
|
332
327
|
__metadata("design:returntype", Promise)
|
|
333
328
|
], BlockchainConnector.prototype, "transfer", null);
|
|
334
329
|
__decorate([
|
|
335
|
-
(0,
|
|
330
|
+
(0, helper_1.incrementMethodCall)(),
|
|
336
331
|
__metadata("design:type", Function),
|
|
337
332
|
__metadata("design:paramtypes", [Array, Number, Number, Number]),
|
|
338
333
|
__metadata("design:returntype", Promise)
|
|
339
334
|
], BlockchainConnector.prototype, "getTransactions", null);
|
|
340
335
|
exports.default = BlockchainConnector;
|
|
341
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2tjaGFpbkNvbm5lY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25uZWN0b3JzL0Jsb2NrY2hhaW5Db25uZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFBd0Q7QUFDeEQsZ0RBQXdCO0FBRXhCLHlEQUEyQztBQUMzQyw0Q0FLc0I7QUFDdEIsb0NBQWdGO0FBR2hGLG1FQUEyQztBQUMzQyxxRUFBNEM7QUFFNUMsbUNBQWdDO0FBRWhDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0FBRWhFLGlDQUFpQztBQUNqQyxxREFBNkI7QUFDN0Isd0VBQWdEO0FBQ2hELGtGQUEwRDtBQUMxRCxvREFBaUQ7QUFFakQsTUFBTSxtQkFBb0IsU0FBUSw2QkFBYTtJQU0zQztRQUNJLEtBQUssRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVNLE1BQU0sQ0FBQyxXQUFXO1FBQ3JCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUU7WUFDL0IsbUJBQW1CLENBQUMsUUFBUSxHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztTQUM1RDtRQUVELE9BQU8sbUJBQW1CLENBQUMsUUFBUSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxvQkFBb0I7SUFDYixXQUFXLENBQUMsa0JBQXVDO1FBQ3RELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRTFCLElBQUksa0JBQWtCLGFBQWxCLGtCQUFrQix1QkFBbEIsa0JBQWtCLENBQUUsSUFBSSxFQUFFO1lBQzFCLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FDaEMsa0JBQU8sQ0FBQyxHQUFHLEVBQ3RCLGtCQUFRLENBQUMsT0FBTyxDQUNuQixDQUFDO1NBQ0w7UUFFRCxPQUFPLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBQ0Q7Ozs7T0FJ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
|
|
336
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2tjaGFpbkNvbm5lY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25uZWN0b3JzL0Jsb2NrY2hhaW5Db25uZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUF3RDtBQUN4RCw2Q0FPYztBQUNkLCtDQUErRDtBQUMvRCw0Q0FLc0I7QUFDdEIsNENBS3lCO0FBR3pCLG1FQUEyQztBQUMzQywwQ0FBdUM7QUFDdkMsbUNBQWdDO0FBRWhDLGlDQUFpQztBQUNqQyxxREFBNkI7QUFDN0Isd0VBQWdEO0FBQ2hELGtGQUEwRDtBQUMxRCxvREFBaUQ7QUFFakQsTUFBTSxtQkFBb0IsU0FBUSw2QkFBYTtJQU0zQztRQUNJLEtBQUssRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVNLE1BQU0sQ0FBQyxXQUFXO1FBQ3JCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUU7WUFDL0IsbUJBQW1CLENBQUMsUUFBUSxHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztTQUM1RDtRQUVELE9BQU8sbUJBQW1CLENBQUMsUUFBUSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ1UsVUFBVSxDQUFDLE1BQWM7OztZQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFFMUMsTUFBTSxHQUFHLEdBQUcsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsYUFBYSxLQUFJLGdDQUFvQixDQUFDO1lBQzFELGVBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxjQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxrQkFBVyxDQUFDO2dCQUNoQyxRQUFRLEVBQUUsZUFBSyxDQUFDLFNBQVMsQ0FBQyxlQUFlO2dCQUN6QyxNQUFNLEVB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
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BaseConnector, Config } from './BaseConnector';
|
|
2
|
-
import {
|
|
2
|
+
import { WebSocketProvider } from 'web3';
|
|
3
3
|
declare class BlockchainEventsListener extends BaseConnector {
|
|
4
4
|
private static instance;
|
|
5
5
|
private constructor();
|
|
6
6
|
static getInstance(): BlockchainEventsListener;
|
|
7
|
-
getProvider():
|
|
7
|
+
getProvider(): WebSocketProvider | undefined;
|
|
8
8
|
/**
|
|
9
9
|
* Function for connecting to blockchain using web socket
|
|
10
10
|
* Needs to run this function before using events
|
|
@@ -1,4 +1,27 @@
|
|
|
1
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
|
+
};
|
|
2
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -13,8 +36,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
36
|
};
|
|
14
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
38
|
const BaseConnector_1 = require("./BaseConnector");
|
|
16
|
-
const web3_1 =
|
|
17
|
-
const
|
|
39
|
+
const web3_1 = __importStar(require("web3"));
|
|
40
|
+
const abi_1 = require("../contracts/abi");
|
|
18
41
|
// TODO: remove this dependencies
|
|
19
42
|
const store_1 = __importDefault(require("../store"));
|
|
20
43
|
const Superpro_1 = __importDefault(require("../staticModels/Superpro"));
|
|
@@ -30,7 +53,8 @@ class BlockchainEventsListener extends BaseConnector_1.BaseConnector {
|
|
|
30
53
|
return BlockchainEventsListener.instance;
|
|
31
54
|
}
|
|
32
55
|
getProvider() {
|
|
33
|
-
|
|
56
|
+
var _a;
|
|
57
|
+
return (_a = store_1.default.web3Wss) === null || _a === void 0 ? void 0 : _a.provider;
|
|
34
58
|
}
|
|
35
59
|
/**
|
|
36
60
|
* Function for connecting to blockchain using web socket
|
|
@@ -39,20 +63,19 @@ class BlockchainEventsListener extends BaseConnector_1.BaseConnector {
|
|
|
39
63
|
initialize(config) {
|
|
40
64
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41
65
|
this.logger.trace(config, 'Initializing');
|
|
42
|
-
if (this.provider) {
|
|
43
|
-
this.provider.reset();
|
|
44
|
-
}
|
|
45
66
|
const reconnectOptions = Object.assign({
|
|
46
67
|
auto: true,
|
|
47
68
|
delay: 5000,
|
|
48
69
|
maxAttempts: 5,
|
|
49
70
|
onTimeout: false,
|
|
50
71
|
}, config.reconnect);
|
|
51
|
-
|
|
52
|
-
|
|
72
|
+
const provider = new web3_1.WebSocketProvider(config.blockchainUrl, {}, reconnectOptions);
|
|
73
|
+
store_1.default.web3Wss = new web3_1.default(provider);
|
|
74
|
+
const web3Context = new web3_1.Web3Context({
|
|
75
|
+
provider: store_1.default.web3Wss.currentProvider,
|
|
76
|
+
config: { contractDataInputFill: 'data' },
|
|
53
77
|
});
|
|
54
|
-
|
|
55
|
-
this.contract = new store_1.default.web3Wss.eth.Contract(app_json_1.default.abi, config.contractAddress);
|
|
78
|
+
this.contract = new store_1.default.web3Wss.eth.Contract(abi_1.abi, config.contractAddress, web3Context);
|
|
56
79
|
Superpro_1.default.address = config.contractAddress;
|
|
57
80
|
SuperproToken_1.default.addressWss = yield Superpro_1.default.getTokenAddress(this.contract);
|
|
58
81
|
this.initialized = true;
|
|
@@ -60,9 +83,11 @@ class BlockchainEventsListener extends BaseConnector_1.BaseConnector {
|
|
|
60
83
|
});
|
|
61
84
|
}
|
|
62
85
|
shutdown() {
|
|
86
|
+
var _a, _b;
|
|
63
87
|
super.shutdown();
|
|
88
|
+
(_b = (_a = store_1.default.web3Wss) === null || _a === void 0 ? void 0 : _a.provider) === null || _b === void 0 ? void 0 : _b.disconnect(0, '');
|
|
64
89
|
store_1.default.web3Wss = undefined;
|
|
65
90
|
}
|
|
66
91
|
}
|
|
67
92
|
exports.default = BlockchainEventsListener;
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2tjaGFpbkV2ZW50c0xpc3RlbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Nvbm5lY3RvcnMvQmxvY2tjaGFpbkV2ZW50c0xpc3RlbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFBd0Q7QUFDeEQsNkNBQTREO0FBQzVELDBDQUF1QztBQUV2QyxpQ0FBaUM7QUFDakMscURBQTZCO0FBQzdCLHdFQUFnRDtBQUNoRCxrRkFBMEQ7QUFFMUQsTUFBTSx3QkFBeUIsU0FBUSw2QkFBYTtJQUloRDtRQUNJLEtBQUssRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVNLE1BQU0sQ0FBQyxXQUFXO1FBQ3JCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUU7WUFDcEMsd0JBQXdCLENBQUMsUUFBUSxHQUFHLElBQUksd0JBQXdCLEVBQUUsQ0FBQztTQUN0RTtRQUVELE9BQU8sd0JBQXdCLENBQUMsUUFBUSxDQUFDO0lBQzdDLENBQUM7SUFFTSxXQUFXOztRQUNkLE9BQTBCLE1BQUEsZUFBSyxDQUFDLE9BQU8sMENBQUUsUUFBUSxDQUFDO0lBQ3RELENBQUM7SUFFRDs7O09BR0c7SUFDVSxVQUFVLENBQUMsTUFBYzs7WUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBRTFDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDbEM7Z0JBQ0ksSUFBSSxFQUFFLElBQUk7Z0JBQ1YsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsV0FBVyxFQUFFLENBQUM7Z0JBQ2QsU0FBUyxFQUFFLEtBQUs7YUFDbkIsRUFDRCxNQUFNLENBQUMsU0FBUyxDQUNuQixDQUFDO1lBRUYsTUFBTSxRQUFRLEdBQUcsSUFBSSx3QkFBaUIsQ0FBQyxNQUFNLENBQUMsYUFBYyxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3BGLGVBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxjQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxrQkFBVyxDQUFDO2dCQUNoQyxRQUFRLEVBQUUsZUFBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlO2dCQUN2QyxNQUFNLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUU7YUFDNUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGVBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFHLEVBQUUsTUFBTSxDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUN6RixrQkFBUSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDO1lBQzFDLHVCQUFhLENBQUMsVUFBVSxHQUFHLE1BQU0sa0JBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXpFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBRXhCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7S0FBQTtJQUVNLFFBQVE7O1FBQ1gsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLE1BQUEsTUFBQSxlQUFLLENBQUMsT0FBTywwQ0FBRSxRQUFRLDBDQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0MsZUFBSyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7SUFDOUIsQ0FBQztDQUNKO0FBRUQsa0JBQWUsd0JBQXdCLENBQUMifQ==
|