dash-platform-sdk 1.3.0-dev.1 → 1.3.0-dev.10
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/bundle.min.js +21 -2
- package/index.d.ts +1 -1
- package/index.js +2 -5
- package/package.json +32 -31
- package/proto/generated/google/protobuf/wrappers.d.ts +260 -29
- package/proto/generated/google/protobuf/wrappers.js +562 -345
- package/proto/generated/platform.client.d.ts +251 -0
- package/proto/generated/platform.client.js +175 -0
- package/proto/generated/platform.d.ts +3682 -1939
- package/proto/generated/platform.js +8119 -18366
- package/src/DashPlatformSDK.d.ts +18 -19
- package/src/DashPlatformSDK.js +52 -45
- package/src/constants.d.ts +2 -0
- package/src/constants.js +7 -8
- package/src/contestedResources/createStateTransition.d.ts +2 -0
- package/src/contestedResources/createStateTransition.js +6 -0
- package/src/contestedResources/getContestedResourceVoteState.d.ts +3 -3
- package/src/contestedResources/getContestedResourceVoteState.js +67 -118
- package/src/contestedResources/index.d.ts +3 -3
- package/src/contestedResources/index.js +9 -55
- package/src/dataContracts/create.d.ts +1 -1
- package/src/dataContracts/create.js +5 -8
- package/src/dataContracts/createStateTransition.js +10 -14
- package/src/dataContracts/getDataContractByIdentifier.d.ts +2 -2
- package/src/dataContracts/getDataContractByIdentifier.js +40 -79
- package/src/dataContracts/index.d.ts +2 -2
- package/src/dataContracts/index.js +17 -63
- package/src/documents/create.d.ts +1 -1
- package/src/documents/create.js +3 -6
- package/src/documents/createStateTransition.d.ts +1 -1
- package/src/documents/createStateTransition.js +19 -31
- package/src/documents/index.d.ts +2 -2
- package/src/documents/index.js +25 -72
- package/src/documents/query.d.ts +2 -2
- package/src/documents/query.js +58 -90
- package/src/grpcConnectionPool.d.ts +30 -8
- package/src/grpcConnectionPool.js +63 -121
- package/src/identities/createStateTransition.d.ts +2 -2
- package/src/identities/createStateTransition.js +24 -26
- package/src/identities/getIdentityBalance.d.ts +2 -2
- package/src/identities/getIdentityBalance.js +37 -80
- package/src/identities/getIdentityByIdentifier.d.ts +2 -2
- package/src/identities/getIdentityByIdentifier.js +37 -80
- package/src/identities/getIdentityByNonUniquePublicKeyHash.d.ts +1 -1
- package/src/identities/getIdentityByNonUniquePublicKeyHash.js +41 -82
- package/src/identities/getIdentityByPublicKeyHash.d.ts +1 -1
- package/src/identities/getIdentityByPublicKeyHash.js +37 -80
- package/src/identities/getIdentityContractNonce.d.ts +2 -2
- package/src/identities/getIdentityContractNonce.js +40 -83
- package/src/identities/getIdentityNonce.d.ts +2 -2
- package/src/identities/getIdentityNonce.js +38 -81
- package/src/identities/getIdentityPublicKeys.d.ts +2 -2
- package/src/identities/getIdentityPublicKeys.js +43 -81
- package/src/identities/index.d.ts +6 -4
- package/src/identities/index.js +70 -154
- package/src/keyPair/deriveChild.d.ts +2 -2
- package/src/keyPair/deriveChild.js +2 -49
- package/src/keyPair/derivePath.d.ts +2 -2
- package/src/keyPair/derivePath.js +2 -49
- package/src/keyPair/index.d.ts +39 -114
- package/src/keyPair/index.js +62 -296
- package/src/keyPair/mnemonicToSeed.d.ts +1 -1
- package/src/keyPair/mnemonicToSeed.js +3 -46
- package/src/names/index.d.ts +44 -3
- package/src/names/index.js +81 -69
- package/src/names/registerName.d.ts +3 -0
- package/src/names/registerName.js +64 -0
- package/src/names/searchByIdentity.d.ts +3 -0
- package/src/names/searchByIdentity.js +5 -0
- package/src/names/searchByName.d.ts +3 -0
- package/src/names/searchByName.js +16 -0
- package/src/names/testNameContested.d.ts +1 -0
- package/src/names/testNameContested.js +3 -0
- package/src/names/validateName.d.ts +1 -0
- package/src/names/validateName.js +11 -0
- package/src/node/epochs.d.ts +1 -1
- package/src/node/epochs.js +43 -85
- package/src/node/index.d.ts +5 -5
- package/src/node/index.js +18 -77
- package/src/node/status.d.ts +2 -2
- package/src/node/status.js +37 -81
- package/src/node/totalCredits.d.ts +3 -2
- package/src/node/totalCredits.js +32 -73
- package/src/stateTransitions/broadcast.d.ts +1 -1
- package/src/stateTransitions/broadcast.js +7 -57
- package/src/stateTransitions/index.d.ts +1 -1
- package/src/stateTransitions/index.js +13 -66
- package/src/stateTransitions/waitForStateTransitionResult.d.ts +1 -1
- package/src/stateTransitions/waitForStateTransitionResult.js +6 -62
- package/src/tokens/createStateTransition.d.ts +1 -1
- package/src/tokens/createStateTransition.js +23 -35
- package/src/tokens/getIdentitiesTokenBalances.d.ts +2 -2
- package/src/tokens/getIdentitiesTokenBalances.js +40 -83
- package/src/tokens/getIdentityTokensBalances.d.ts +2 -2
- package/src/tokens/getIdentityTokensBalances.js +40 -83
- package/src/tokens/getTokenContractInfo.d.ts +2 -2
- package/src/tokens/getTokenContractInfo.js +40 -83
- package/src/tokens/getTokenDirectPurchasePrices.d.ts +3 -0
- package/src/tokens/getTokenDirectPurchasePrices.js +40 -0
- package/src/tokens/getTokenTotalSupply.d.ts +2 -2
- package/src/tokens/getTokenTotalSupply.js +38 -81
- package/src/tokens/index.d.ts +13 -5
- package/src/tokens/index.js +46 -113
- package/src/types.d.ts +20 -16
- package/src/types.js +6 -16
- package/src/utils/base58ToBytes.js +3 -6
- package/src/utils/bytesToHex.js +2 -5
- package/src/utils/bytesToTypedArray.d.ts +1 -0
- package/src/utils/bytesToTypedArray.js +3 -0
- package/src/utils/calculateMsgHash.d.ts +1 -1
- package/src/utils/calculateMsgHash.js +10 -13
- package/src/utils/calculateSignHash.d.ts +2 -2
- package/src/utils/calculateSignHash.js +7 -10
- package/src/utils/calculateStateIdHash.d.ts +2 -2
- package/src/utils/calculateStateIdHash.js +8 -10
- package/src/utils/convertToHomographSafeChars.d.ts +0 -4
- package/src/utils/convertToHomographSafeChars.js +2 -9
- package/src/utils/createMasternodeIdentityId.d.ts +2 -0
- package/src/utils/createMasternodeIdentityId.js +4 -0
- package/src/utils/createVoterIdentityId.d.ts +2 -0
- package/src/utils/createVoterIdentityId.js +13 -0
- package/src/utils/getEvonodeList.d.ts +2 -2
- package/src/utils/getEvonodeList.js +10 -61
- package/src/utils/getQuorumPublicKey.js +15 -66
- package/src/utils/getRandomArrayItem.js +1 -4
- package/src/utils/getRandomBytes.d.ts +1 -0
- package/src/utils/getRandomBytes.js +4 -0
- package/src/utils/hexToBytes.js +2 -6
- package/src/utils/index.d.ts +19 -3
- package/src/utils/index.js +45 -31
- package/src/utils/indexBytesToString.js +2 -5
- package/src/utils/sha256.d.ts +1 -1
- package/src/utils/sha256.js +10 -8
- package/src/utils/signHash.d.ts +1 -1
- package/src/utils/signHash.js +9 -12
- package/src/utils/signRequestId.d.ts +1 -1
- package/src/utils/signRequestId.js +9 -12
- package/src/utils/sleep.d.ts +1 -0
- package/src/utils/sleep.js +3 -0
- package/src/utils/stringToIndexValueBytes.js +4 -7
- package/src/utils/verifyTenderdashProof.d.ts +2 -2
- package/src/utils/verifyTenderdashProof.js +13 -17
- package/src/voting/createStateTransition.d.ts +2 -0
- package/src/voting/createStateTransition.js +6 -0
- package/src/voting/createVote.d.ts +2 -0
- package/src/voting/createVote.js +5 -0
- package/src/voting/index.d.ts +37 -0
- package/src/voting/index.js +55 -0
- package/test/unit/ContestedResources.spec.js +91 -90
- package/test/unit/DataContract.spec.js +44 -111
- package/test/unit/Document.spec.js +93 -183
- package/test/unit/Identity.spec.js +254 -357
- package/test/unit/KeyPair.spec.js +30 -145
- package/test/unit/Names.spec.d.ts +1 -0
- package/test/unit/Names.spec.js +33 -0
- package/test/unit/Node.spec.js +55 -126
- package/test/unit/SDK.spec.js +7 -9
- package/test/unit/Tokens.spec.js +112 -262
- package/bundle.min.js.LICENSE.txt +0 -1
- package/src/keyPair/keyToPublicKey.d.ts +0 -2
- package/src/keyPair/keyToPublicKey.js +0 -47
- package/src/keyPair/keyToWalletId.d.ts +0 -2
- package/src/keyPair/keyToWalletId.js +0 -50
- package/src/keyPair/keyToXPrivateKey.d.ts +0 -3
- package/src/keyPair/keyToXPrivateKey.js +0 -50
- package/src/keyPair/keyToXPublicKey.d.ts +0 -3
- package/src/keyPair/keyToXPublicKey.js +0 -50
- package/src/keyPair/mnemonicToIdentityKey.d.ts +0 -3
- package/src/keyPair/mnemonicToIdentityKey.js +0 -57
- package/src/keyPair/mnemonicToWallet.d.ts +0 -2
- package/src/keyPair/mnemonicToWallet.js +0 -55
- package/src/keyPair/privateKeyToWif.d.ts +0 -2
- package/src/keyPair/privateKeyToWif.js +0 -50
- package/src/keyPair/publicKeyToAddress.d.ts +0 -2
- package/src/keyPair/publicKeyToAddress.js +0 -50
- package/src/keyPair/seedToWallet.d.ts +0 -2
- package/src/keyPair/seedToWallet.js +0 -50
- package/src/keyPair/walletToIdentityKey.d.ts +0 -3
- package/src/keyPair/walletToIdentityKey.js +0 -56
- package/src/keyPair/xkeyToHDXKey.d.ts +0 -2
- package/src/keyPair/xkeyToHDXKey.js +0 -50
- package/src/names/search.d.ts +0 -3
- package/src/names/search.js +0 -63
- package/src/signer/AbstractSigner.d.ts +0 -12
- package/src/signer/AbstractSigner.js +0 -2
- package/src/signer/PrivateKeySigner.d.ts +0 -0
- package/src/signer/PrivateKeySigner.js +0 -64
- package/src/signer/setSigner.d.ts +0 -2
- package/src/signer/setSigner.js +0 -8
package/src/node/status.js
CHANGED
|
@@ -1,85 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { GetStatusRequest } from '../../proto/generated/platform.js';
|
|
2
|
+
import bytesToHex from '../utils/bytesToHex.js';
|
|
3
|
+
export default async function status(grpcPool) {
|
|
4
|
+
const getStatusRequest = GetStatusRequest.create({
|
|
5
|
+
version: {
|
|
6
|
+
oneofKind: 'v0',
|
|
7
|
+
v0: {}
|
|
8
|
+
}
|
|
9
9
|
});
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
10
|
+
const { response } = await grpcPool.getClient().getStatus(getStatusRequest);
|
|
11
|
+
const { version } = response;
|
|
12
|
+
if (version.oneofKind !== 'v0') {
|
|
13
|
+
throw new Error('Unexpected oneOf type returned from DAPI (must be v0)');
|
|
36
14
|
}
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
44
|
-
var getStatusRequest, response, v0;
|
|
45
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
46
|
-
return __generator(this, function (_j) {
|
|
47
|
-
switch (_j.label) {
|
|
48
|
-
case 0:
|
|
49
|
-
getStatusRequest = platform_1.GetStatusRequest.fromPartial({ v0: {} });
|
|
50
|
-
return [4 /*yield*/, grpcPool.getClient().getStatus(getStatusRequest)];
|
|
51
|
-
case 1:
|
|
52
|
-
response = _j.sent();
|
|
53
|
-
v0 = response.v0;
|
|
54
|
-
if (v0 == null) {
|
|
55
|
-
throw new Error('Unable to get node status');
|
|
56
|
-
}
|
|
57
|
-
return [2 /*return*/, {
|
|
58
|
-
node: (v0.node != null)
|
|
59
|
-
? {
|
|
60
|
-
id: (0, bytesToHex_1.default)(v0.node.id),
|
|
61
|
-
proTxHash: v0.node.proTxHash != null ? (0, bytesToHex_1.default)(v0.node.proTxHash) : undefined
|
|
62
|
-
}
|
|
63
|
-
: undefined,
|
|
64
|
-
chain: (v0.chain != null)
|
|
65
|
-
? {
|
|
66
|
-
catchingUp: v0.chain.catchingUp,
|
|
67
|
-
latestBlockHeight: v0.chain.latestBlockHeight,
|
|
68
|
-
earliestBlockHeight: v0.chain.earliestBlockHeight,
|
|
69
|
-
maxPeerBlockHeight: v0.chain.maxPeerBlockHeight,
|
|
70
|
-
coreChainLockedHeight: v0.chain.coreChainLockedHeight,
|
|
71
|
-
latestBlockHash: ((_a = v0.chain) === null || _a === void 0 ? void 0 : _a.latestBlockHash) != null ? (0, bytesToHex_1.default)((_b = v0.chain) === null || _b === void 0 ? void 0 : _b.latestBlockHash) : '',
|
|
72
|
-
latestAppHash: ((_c = v0.chain) === null || _c === void 0 ? void 0 : _c.latestAppHash) != null ? (0, bytesToHex_1.default)((_d = v0.chain) === null || _d === void 0 ? void 0 : _d.latestAppHash) : '',
|
|
73
|
-
earliestBlockHash: ((_e = v0.chain) === null || _e === void 0 ? void 0 : _e.earliestBlockHash) != null ? (0, bytesToHex_1.default)((_f = v0.chain) === null || _f === void 0 ? void 0 : _f.earliestBlockHash) : '',
|
|
74
|
-
earliestAppHash: ((_g = v0.chain) === null || _g === void 0 ? void 0 : _g.earliestAppHash) != null ? (0, bytesToHex_1.default)((_h = v0.chain) === null || _h === void 0 ? void 0 : _h.earliestAppHash) : ''
|
|
75
|
-
}
|
|
76
|
-
: undefined,
|
|
77
|
-
version: v0.version,
|
|
78
|
-
network: v0.network,
|
|
79
|
-
stateSync: v0.stateSync,
|
|
80
|
-
time: v0.time
|
|
81
|
-
}];
|
|
15
|
+
const { v0 } = version;
|
|
16
|
+
return {
|
|
17
|
+
node: (v0.node != null)
|
|
18
|
+
? {
|
|
19
|
+
id: bytesToHex(v0.node.id),
|
|
20
|
+
proTxHash: v0.node.proTxHash != null ? bytesToHex(v0.node.proTxHash) : undefined
|
|
82
21
|
}
|
|
83
|
-
|
|
84
|
-
|
|
22
|
+
: undefined,
|
|
23
|
+
chain: (v0.chain != null)
|
|
24
|
+
? {
|
|
25
|
+
catchingUp: v0.chain.catchingUp,
|
|
26
|
+
latestBlockHeight: v0.chain.latestBlockHeight,
|
|
27
|
+
earliestBlockHeight: v0.chain.earliestBlockHeight,
|
|
28
|
+
maxPeerBlockHeight: v0.chain.maxPeerBlockHeight,
|
|
29
|
+
coreChainLockedHeight: v0.chain.coreChainLockedHeight,
|
|
30
|
+
latestBlockHash: v0.chain?.latestBlockHash != null ? bytesToHex(v0.chain?.latestBlockHash) : '',
|
|
31
|
+
latestAppHash: v0.chain?.latestAppHash != null ? bytesToHex(v0.chain?.latestAppHash) : '',
|
|
32
|
+
earliestBlockHash: v0.chain?.earliestBlockHash != null ? bytesToHex(v0.chain?.earliestBlockHash) : '',
|
|
33
|
+
earliestAppHash: v0.chain?.earliestAppHash != null ? bytesToHex(v0.chain?.earliestAppHash) : ''
|
|
34
|
+
}
|
|
35
|
+
: undefined,
|
|
36
|
+
version: v0.version,
|
|
37
|
+
network: v0.network,
|
|
38
|
+
stateSync: v0.stateSync,
|
|
39
|
+
time: v0.time
|
|
40
|
+
};
|
|
85
41
|
}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import GRPCConnectionPool from '../grpcConnectionPool';
|
|
2
|
-
|
|
1
|
+
import GRPCConnectionPool from '../grpcConnectionPool.js';
|
|
2
|
+
import { Network } from '../types.js';
|
|
3
|
+
export default function totalCredits(grpcPool: GRPCConnectionPool, network: Network): Promise<bigint>;
|
package/src/node/totalCredits.js
CHANGED
|
@@ -1,76 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { GetTotalCreditsInPlatformRequest } from '../../proto/generated/platform.js';
|
|
2
|
+
import { HALVING_INTERVAL, MAINNET_ACTIVATION_HEIGHT, TESTNET_ACTIVATION_HEIGHT } from '../constants.js';
|
|
3
|
+
import { PlatformVersionWASM, verifyTotalCreditsProof } from 'pshenmic-dpp';
|
|
4
|
+
import { getQuorumPublicKey } from '../utils/getQuorumPublicKey.js';
|
|
5
|
+
import bytesToHex from '../utils/bytesToHex.js';
|
|
6
|
+
import verifyTenderdashProof from '../utils/verifyTenderdashProof.js';
|
|
7
|
+
export default async function totalCredits(grpcPool, network) {
|
|
8
|
+
const getTotalCreditsInPlatformRequest = GetTotalCreditsInPlatformRequest.create({
|
|
9
|
+
version: {
|
|
10
|
+
oneofKind: 'v0',
|
|
11
|
+
v0: { prove: true }
|
|
12
|
+
}
|
|
9
13
|
});
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
14
|
+
const { response } = await grpcPool.getClient().getTotalCreditsInPlatform(getTotalCreditsInPlatformRequest);
|
|
15
|
+
const { version } = response;
|
|
16
|
+
if (version.oneofKind !== 'v0') {
|
|
17
|
+
throw new Error('Unexpected oneOf type returned from DAPI (must be v0)');
|
|
36
18
|
}
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return [4 /*yield*/, grpcPool.getClient().getTotalCreditsInPlatform(request)];
|
|
54
|
-
case 1:
|
|
55
|
-
v0 = (_c.sent()).v0;
|
|
56
|
-
_a = v0, proof = _a.proof, metadata = _a.metadata;
|
|
57
|
-
if (proof == null) {
|
|
58
|
-
throw new Error('Proof not found');
|
|
59
|
-
}
|
|
60
|
-
if (metadata == null) {
|
|
61
|
-
throw new Error('Metadata not found');
|
|
62
|
-
}
|
|
63
|
-
activationHeight = network === 'testnet' ? constants_1.TESTNET_ACTIVATION_HEIGHT : constants_1.MAINNET_ACTIVATION_HEIGHT;
|
|
64
|
-
_b = (0, pshenmic_dpp_1.verifyTotalCreditsProof)(proof.grovedbProof, constants_1.HALVING_INTERVAL, activationHeight, Number(metadata.height), pshenmic_dpp_1.PlatformVersionWASM.PLATFORM_V9), rootHash = _b.rootHash, totalCredits = _b.totalCredits;
|
|
65
|
-
return [4 /*yield*/, (0, getQuorumPublicKey_1.getQuorumPublicKey)(grpcPool.network, proof.quorumType, (0, bytesToHex_1.default)(proof.quorumHash))];
|
|
66
|
-
case 2:
|
|
67
|
-
quorumPublicKey = _c.sent();
|
|
68
|
-
verify = (0, verifyTenderdashProof_1.default)(proof, metadata, rootHash, quorumPublicKey);
|
|
69
|
-
if (!verify) {
|
|
70
|
-
throw new Error('Failed to verify query');
|
|
71
|
-
}
|
|
72
|
-
return [2 /*return*/, totalCredits];
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
});
|
|
19
|
+
const { v0 } = version;
|
|
20
|
+
if (v0.result.oneofKind !== 'proof') {
|
|
21
|
+
throw new Error('Unexpected oneOf type returned from DAPI (must be proof)');
|
|
22
|
+
}
|
|
23
|
+
const { result: { proof }, metadata } = v0;
|
|
24
|
+
if (metadata == null) {
|
|
25
|
+
throw new Error('Metadata not found');
|
|
26
|
+
}
|
|
27
|
+
const activationHeight = network === 'testnet' ? TESTNET_ACTIVATION_HEIGHT : MAINNET_ACTIVATION_HEIGHT;
|
|
28
|
+
const { rootHash, totalCredits } = verifyTotalCreditsProof(proof.grovedbProof, HALVING_INTERVAL, activationHeight, Number(metadata.height), PlatformVersionWASM.PLATFORM_V9);
|
|
29
|
+
const quorumPublicKey = await getQuorumPublicKey(grpcPool.network, proof.quorumType, bytesToHex(proof.quorumHash));
|
|
30
|
+
const verify = await verifyTenderdashProof(proof, metadata, rootHash, quorumPublicKey);
|
|
31
|
+
if (!verify) {
|
|
32
|
+
throw new Error('Failed to verify query');
|
|
33
|
+
}
|
|
34
|
+
return totalCredits;
|
|
76
35
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { StateTransitionWASM } from 'pshenmic-dpp';
|
|
2
|
-
import GRPCConnectionPool from '../grpcConnectionPool';
|
|
2
|
+
import GRPCConnectionPool from '../grpcConnectionPool.js';
|
|
3
3
|
export default function broadcast(grpcPool: GRPCConnectionPool, stateTransition: StateTransitionWASM): Promise<void>;
|
|
@@ -1,60 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
1
|
+
import { BroadcastStateTransitionRequest } from '../../proto/generated/platform.js';
|
|
2
|
+
export default async function broadcast(grpcPool, stateTransition) {
|
|
3
|
+
if (stateTransition.signature.length === 0) {
|
|
4
|
+
throw new Error('State Transition is not signed');
|
|
36
5
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
exports.default = broadcast;
|
|
40
|
-
var platform_1 = require("../../proto/generated/platform");
|
|
41
|
-
function broadcast(grpcPool, stateTransition) {
|
|
42
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
43
|
-
var broadcastStateTransitionRequest;
|
|
44
|
-
return __generator(this, function (_a) {
|
|
45
|
-
switch (_a.label) {
|
|
46
|
-
case 0:
|
|
47
|
-
if (stateTransition.signature.length === 0) {
|
|
48
|
-
throw new Error('State Transition is not signed');
|
|
49
|
-
}
|
|
50
|
-
broadcastStateTransitionRequest = platform_1.BroadcastStateTransitionRequest.fromPartial({
|
|
51
|
-
stateTransition: stateTransition.bytes()
|
|
52
|
-
});
|
|
53
|
-
return [4 /*yield*/, grpcPool.getClient().broadcastStateTransition(broadcastStateTransitionRequest)];
|
|
54
|
-
case 1:
|
|
55
|
-
_a.sent();
|
|
56
|
-
return [2 /*return*/];
|
|
57
|
-
}
|
|
58
|
-
});
|
|
6
|
+
const broadcastStateTransitionRequest = BroadcastStateTransitionRequest.create({
|
|
7
|
+
stateTransition: stateTransition.bytes()
|
|
59
8
|
});
|
|
9
|
+
await grpcPool.getClient().broadcastStateTransition(broadcastStateTransitionRequest);
|
|
60
10
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { StateTransitionWASM } from 'pshenmic-dpp';
|
|
2
|
-
import GRPCConnectionPool from '../grpcConnectionPool';
|
|
2
|
+
import GRPCConnectionPool from '../grpcConnectionPool.js';
|
|
3
3
|
/**
|
|
4
4
|
* Collection of methods to perform state transitions (transactions) such like broadcast, wait for state transition result
|
|
5
5
|
*
|
|
@@ -1,51 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.StateTransitionsController = void 0;
|
|
40
|
-
var waitForStateTransitionResult_1 = require("./waitForStateTransitionResult");
|
|
41
|
-
var broadcast_1 = require("./broadcast");
|
|
1
|
+
import waitForStateTransitionResult from './waitForStateTransitionResult.js';
|
|
2
|
+
import broadcast from './broadcast.js';
|
|
42
3
|
/**
|
|
43
4
|
* Collection of methods to perform state transitions (transactions) such like broadcast, wait for state transition result
|
|
44
5
|
*
|
|
45
6
|
* @hideconstructor
|
|
46
7
|
*/
|
|
47
|
-
|
|
48
|
-
|
|
8
|
+
export class StateTransitionsController {
|
|
9
|
+
/** @ignore **/
|
|
10
|
+
grpcPool;
|
|
11
|
+
constructor(grpcPool) {
|
|
49
12
|
this.grpcPool = grpcPool;
|
|
50
13
|
}
|
|
51
14
|
/**
|
|
@@ -55,16 +18,9 @@ var StateTransitionsController = /** @class */ (function () {
|
|
|
55
18
|
*
|
|
56
19
|
* @return {Promise<void>}
|
|
57
20
|
*/
|
|
58
|
-
|
|
59
|
-
return
|
|
60
|
-
|
|
61
|
-
switch (_a.label) {
|
|
62
|
-
case 0: return [4 /*yield*/, (0, broadcast_1.default)(this.grpcPool, stateTransition)];
|
|
63
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
};
|
|
21
|
+
async broadcast(stateTransition) {
|
|
22
|
+
return await broadcast(this.grpcPool, stateTransition);
|
|
23
|
+
}
|
|
68
24
|
/**
|
|
69
25
|
* Waits for a given state transition to finalize in the network (usually 1-3 sec)
|
|
70
26
|
*
|
|
@@ -72,16 +28,7 @@ var StateTransitionsController = /** @class */ (function () {
|
|
|
72
28
|
*
|
|
73
29
|
* @return {Promise<void>}
|
|
74
30
|
*/
|
|
75
|
-
|
|
76
|
-
return
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
case 0: return [4 /*yield*/, (0, waitForStateTransitionResult_1.default)(this.grpcPool, stateTransition)];
|
|
80
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
};
|
|
85
|
-
return StateTransitionsController;
|
|
86
|
-
}());
|
|
87
|
-
exports.StateTransitionsController = StateTransitionsController;
|
|
31
|
+
async waitForStateTransitionResult(stateTransition) {
|
|
32
|
+
return await waitForStateTransitionResult(this.grpcPool, stateTransition);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { StateTransitionWASM } from 'pshenmic-dpp';
|
|
2
|
-
import GRPCConnectionPool from '../grpcConnectionPool';
|
|
2
|
+
import GRPCConnectionPool from '../grpcConnectionPool.js';
|
|
3
3
|
export default function waitForStateTransitionResult(grpcPool: GRPCConnectionPool, stateTransition: StateTransitionWASM): Promise<void>;
|
|
@@ -1,64 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
1
|
+
export default async function waitForStateTransitionResult(grpcPool, stateTransition) {
|
|
2
|
+
const url = `https://${grpcPool.network === 'mainnet' ? '' : 'testnet.'}platform-explorer.pshenmic.dev/waitForStateTransitionResult/${stateTransition.hash(false)}`;
|
|
3
|
+
const resp = await fetch(url);
|
|
4
|
+
if (resp.status !== 200) {
|
|
5
|
+
console.log(await resp.json());
|
|
6
|
+
throw new Error('Internal server error while waiting for state transition result');
|
|
36
7
|
}
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.default = waitForStateTransitionResult;
|
|
40
|
-
var platform_1 = require("../../proto/generated/platform");
|
|
41
|
-
function waitForStateTransitionResult(grpcPool, stateTransition) {
|
|
42
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
43
|
-
var waitForStateTransitionResultRequest, v0, error;
|
|
44
|
-
return __generator(this, function (_a) {
|
|
45
|
-
switch (_a.label) {
|
|
46
|
-
case 0:
|
|
47
|
-
waitForStateTransitionResultRequest = platform_1.WaitForStateTransitionResultRequest.fromPartial({
|
|
48
|
-
v0: {
|
|
49
|
-
stateTransitionHash: stateTransition.bytes()
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
return [4 /*yield*/, grpcPool.getClient().waitForStateTransitionResult(waitForStateTransitionResultRequest)];
|
|
53
|
-
case 1:
|
|
54
|
-
v0 = (_a.sent()).v0;
|
|
55
|
-
error = v0.error;
|
|
56
|
-
if (error != null) {
|
|
57
|
-
// todo return error structure
|
|
58
|
-
throw new Error(error.message);
|
|
59
|
-
}
|
|
60
|
-
return [2 /*return*/];
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
8
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { IdentifierWASM, StateTransitionWASM, TokenBaseTransitionWASM } from 'pshenmic-dpp';
|
|
2
|
-
import { TokenTransitionParams, TokenTransitionType } from '../types';
|
|
2
|
+
import { TokenTransitionParams, TokenTransitionType } from '../types.js';
|
|
3
3
|
export default function createStateTransition(base: TokenBaseTransitionWASM, ownerId: IdentifierWASM, type: TokenTransitionType, params: TokenTransitionParams): StateTransitionWASM;
|
|
@@ -1,79 +1,67 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
4
|
-
if (ar || !(i in from)) {
|
|
5
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
6
|
-
ar[i] = from[i];
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.default = createStateTransition;
|
|
13
|
-
var pshenmic_dpp_1 = require("pshenmic-dpp");
|
|
14
|
-
var tokenTransitionsMap = {
|
|
1
|
+
import { BatchedTransitionWASM, BatchTransitionWASM, TokenBurnTransitionWASM, TokenDestroyFrozenFundsTransitionWASM, TokenDirectPurchaseTransitionWASM, TokenEmergencyActionTransitionWASM, TokenFreezeTransitionWASM, TokenMintTransitionWASM, TokenSetPriceForDirectPurchaseTransitionWASM, TokenTransferTransitionWASM, TokenTransitionWASM, TokenUnFreezeTransitionWASM } from 'pshenmic-dpp';
|
|
2
|
+
const tokenTransitionsMap = {
|
|
15
3
|
burn: {
|
|
16
|
-
class:
|
|
4
|
+
class: TokenBurnTransitionWASM,
|
|
17
5
|
arguments: ['amount', 'publicNote'],
|
|
18
6
|
optionalArguments: ['publicNote']
|
|
19
7
|
},
|
|
20
8
|
mint: {
|
|
21
|
-
class:
|
|
9
|
+
class: TokenMintTransitionWASM,
|
|
22
10
|
arguments: ['identityId', 'amount', 'publicNote'],
|
|
23
11
|
optionalArguments: ['publicNote']
|
|
24
12
|
},
|
|
25
13
|
transfer: {
|
|
26
|
-
class:
|
|
14
|
+
class: TokenTransferTransitionWASM,
|
|
27
15
|
arguments: ['identityId', 'amount', 'publicNote', 'sharedEncryptedNote', 'privateEncryptedNote'],
|
|
28
16
|
optionalArguments: ['publicNote', 'sharedEncryptedNote', 'privateEncryptedNote']
|
|
29
17
|
},
|
|
30
18
|
freeze: {
|
|
31
|
-
class:
|
|
19
|
+
class: TokenFreezeTransitionWASM,
|
|
32
20
|
arguments: ['identityId', 'publicNote'],
|
|
33
21
|
optionalArguments: ['publicNote']
|
|
34
22
|
},
|
|
35
23
|
unfreeze: {
|
|
36
|
-
class:
|
|
24
|
+
class: TokenUnFreezeTransitionWASM,
|
|
37
25
|
arguments: ['identityId', 'publicNote'],
|
|
38
26
|
optionalArguments: ['publicNote']
|
|
39
27
|
},
|
|
40
28
|
destroyFrozenFunds: {
|
|
41
|
-
class:
|
|
29
|
+
class: TokenDestroyFrozenFundsTransitionWASM,
|
|
42
30
|
arguments: ['identityId', 'publicNote'],
|
|
43
31
|
optionalArguments: ['publicNote']
|
|
44
32
|
},
|
|
45
33
|
emergencyAction: {
|
|
46
|
-
class:
|
|
34
|
+
class: TokenEmergencyActionTransitionWASM,
|
|
47
35
|
arguments: ['emergencyAction', 'publicNote'],
|
|
48
36
|
optionalArguments: ['publicNote']
|
|
49
37
|
},
|
|
50
38
|
directPurchase: {
|
|
51
|
-
class:
|
|
39
|
+
class: TokenDirectPurchaseTransitionWASM,
|
|
52
40
|
arguments: ['amount', 'totalAgreedPrice'],
|
|
53
41
|
optionalArguments: []
|
|
54
42
|
},
|
|
55
43
|
setPriceForDirectPurchase: {
|
|
56
|
-
class:
|
|
44
|
+
class: TokenSetPriceForDirectPurchaseTransitionWASM,
|
|
57
45
|
arguments: ['price', 'publicNote'],
|
|
58
46
|
optionalArguments: ['publicNote']
|
|
59
47
|
}
|
|
60
48
|
};
|
|
61
|
-
function createStateTransition(base, ownerId, type, params) {
|
|
62
|
-
|
|
49
|
+
export default function createStateTransition(base, ownerId, type, params) {
|
|
50
|
+
const { class: TransitionClass, arguments: classArguments, optionalArguments } = tokenTransitionsMap[type];
|
|
63
51
|
if (TransitionClass == null) {
|
|
64
|
-
throw new Error(
|
|
52
|
+
throw new Error(`Unimplemented transition type: ${type}`);
|
|
65
53
|
}
|
|
66
54
|
// check if all required params for token transition exists
|
|
67
|
-
|
|
68
|
-
.filter(
|
|
69
|
-
!optionalArguments.includes(classArgument)
|
|
55
|
+
const [missingArgument] = classArguments
|
|
56
|
+
.filter((classArgument) => params[classArgument] == null &&
|
|
57
|
+
!optionalArguments.includes(classArgument));
|
|
70
58
|
if (missingArgument != null) {
|
|
71
|
-
throw new Error(
|
|
59
|
+
throw new Error(`Token transition param "${missingArgument}" is missing`);
|
|
72
60
|
}
|
|
73
|
-
|
|
61
|
+
const transitionParams = classArguments.map((classArgument) => params[classArgument]);
|
|
74
62
|
// @ts-expect-error
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
return
|
|
63
|
+
const tokenTransition = new TransitionClass(base, ...transitionParams);
|
|
64
|
+
const tokenTransitionWASM = new TokenTransitionWASM(tokenTransition);
|
|
65
|
+
const batchedTransition = new BatchedTransitionWASM(tokenTransitionWASM);
|
|
66
|
+
return BatchTransitionWASM.fromV1BatchedTransitions([batchedTransition], ownerId, 1).toStateTransition();
|
|
79
67
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import GRPCConnectionPool from '../grpcConnectionPool';
|
|
2
|
-
import { IdentifierLike } from '../types';
|
|
1
|
+
import GRPCConnectionPool from '../grpcConnectionPool.js';
|
|
2
|
+
import { IdentifierLike } from '../types.js';
|
|
3
3
|
import { IdentifierWASM } from 'pshenmic-dpp';
|
|
4
4
|
export interface IdentitiesTokenBalances {
|
|
5
5
|
identityId: IdentifierWASM;
|