dash-platform-sdk 1.3.0-dev.4 → 1.3.0-dev.6

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.
Files changed (138) hide show
  1. package/bundle.min.js +21 -2
  2. package/index.js +2 -5
  3. package/package.json +30 -31
  4. package/proto/generated/google/protobuf/wrappers.d.ts +260 -29
  5. package/proto/generated/google/protobuf/wrappers.js +562 -345
  6. package/proto/generated/platform.client.d.ts +251 -0
  7. package/proto/generated/platform.client.js +175 -0
  8. package/proto/generated/platform.d.ts +3682 -1939
  9. package/proto/generated/platform.js +8119 -18366
  10. package/src/DashPlatformSDK.d.ts +5 -4
  11. package/src/DashPlatformSDK.js +56 -46
  12. package/src/constants.js +7 -10
  13. package/src/contestedResources/createStateTransition.d.ts +1 -2
  14. package/src/contestedResources/createStateTransition.js +4 -7
  15. package/src/contestedResources/getContestedResourceVoteState.js +67 -118
  16. package/src/contestedResources/index.js +9 -55
  17. package/src/dataContracts/create.js +5 -8
  18. package/src/dataContracts/createStateTransition.js +10 -14
  19. package/src/dataContracts/getDataContractByIdentifier.js +40 -83
  20. package/src/dataContracts/index.js +17 -63
  21. package/src/documents/create.js +3 -6
  22. package/src/documents/createStateTransition.js +19 -31
  23. package/src/documents/index.js +25 -72
  24. package/src/documents/query.js +58 -90
  25. package/src/grpcConnectionPool.d.ts +30 -8
  26. package/src/grpcConnectionPool.js +63 -121
  27. package/src/identities/createStateTransition.js +14 -26
  28. package/src/identities/getIdentityBalance.js +37 -80
  29. package/src/identities/getIdentityByIdentifier.js +37 -80
  30. package/src/identities/getIdentityByNonUniquePublicKeyHash.js +41 -82
  31. package/src/identities/getIdentityByPublicKeyHash.js +37 -80
  32. package/src/identities/getIdentityContractNonce.js +40 -83
  33. package/src/identities/getIdentityNonce.js +38 -81
  34. package/src/identities/getIdentityPublicKeys.js +43 -81
  35. package/src/identities/index.js +57 -153
  36. package/src/keyPair/deriveChild.d.ts +2 -2
  37. package/src/keyPair/deriveChild.js +2 -49
  38. package/src/keyPair/derivePath.d.ts +2 -2
  39. package/src/keyPair/derivePath.js +2 -49
  40. package/src/keyPair/index.d.ts +39 -114
  41. package/src/keyPair/index.js +62 -296
  42. package/src/keyPair/mnemonicToSeed.d.ts +1 -1
  43. package/src/keyPair/mnemonicToSeed.js +3 -46
  44. package/src/names/index.js +43 -111
  45. package/src/names/registerName.js +60 -127
  46. package/src/names/searchByIdentity.d.ts +1 -1
  47. package/src/names/searchByIdentity.js +4 -50
  48. package/src/names/searchByName.js +15 -63
  49. package/src/names/testNameContested.js +1 -4
  50. package/src/names/validateName.js +3 -6
  51. package/src/node/epochs.js +43 -85
  52. package/src/node/index.d.ts +3 -3
  53. package/src/node/index.js +18 -77
  54. package/src/node/status.js +37 -81
  55. package/src/node/totalCredits.d.ts +2 -1
  56. package/src/node/totalCredits.js +32 -73
  57. package/src/signer/AbstractSigner.js +1 -2
  58. package/src/signer/setSigner.js +1 -4
  59. package/src/stateTransitions/broadcast.js +7 -57
  60. package/src/stateTransitions/index.js +13 -66
  61. package/src/stateTransitions/waitForStateTransitionResult.js +6 -58
  62. package/src/tokens/createStateTransition.js +23 -35
  63. package/src/tokens/getIdentitiesTokenBalances.js +40 -83
  64. package/src/tokens/getIdentityTokensBalances.js +40 -83
  65. package/src/tokens/getTokenContractInfo.js +40 -83
  66. package/src/tokens/getTokenDirectPurchasePrices.js +37 -80
  67. package/src/tokens/getTokenTotalSupply.js +38 -81
  68. package/src/tokens/index.js +39 -124
  69. package/src/types.d.ts +6 -12
  70. package/src/types.js +6 -16
  71. package/src/utils/base58ToBytes.js +3 -6
  72. package/src/utils/bytesToHex.js +2 -5
  73. package/src/utils/bytesToTypedArray.d.ts +1 -0
  74. package/src/utils/bytesToTypedArray.js +3 -0
  75. package/src/utils/calculateMsgHash.d.ts +1 -1
  76. package/src/utils/calculateMsgHash.js +10 -13
  77. package/src/utils/calculateSignHash.d.ts +1 -1
  78. package/src/utils/calculateSignHash.js +7 -10
  79. package/src/utils/calculateStateIdHash.d.ts +1 -1
  80. package/src/utils/calculateStateIdHash.js +8 -10
  81. package/src/utils/convertToHomographSafeChars.js +2 -5
  82. package/src/utils/createVoterIdentityId.d.ts +1 -1
  83. package/src/utils/createVoterIdentityId.js +12 -11
  84. package/src/utils/getEvonodeList.d.ts +2 -2
  85. package/src/utils/getEvonodeList.js +10 -61
  86. package/src/utils/getQuorumPublicKey.js +15 -66
  87. package/src/utils/getRandomArrayItem.js +1 -4
  88. package/src/utils/getRandomBytes.js +2 -5
  89. package/src/utils/hexToBytes.js +2 -6
  90. package/src/utils/index.js +21 -28
  91. package/src/utils/indexBytesToString.js +2 -5
  92. package/src/utils/sha256.d.ts +1 -1
  93. package/src/utils/sha256.js +10 -8
  94. package/src/utils/signHash.d.ts +1 -1
  95. package/src/utils/signHash.js +9 -12
  96. package/src/utils/signRequestId.d.ts +1 -1
  97. package/src/utils/signRequestId.js +9 -12
  98. package/src/utils/sleep.js +2 -50
  99. package/src/utils/stringToIndexValueBytes.js +4 -7
  100. package/src/utils/verifyTenderdashProof.d.ts +1 -1
  101. package/src/utils/verifyTenderdashProof.js +13 -17
  102. package/src/voting/createStateTransition.d.ts +1 -2
  103. package/src/voting/createStateTransition.js +4 -7
  104. package/src/voting/createVote.js +4 -7
  105. package/src/voting/index.d.ts +3 -4
  106. package/src/voting/index.js +19 -26
  107. package/test/unit/ContestedResources.spec.js +92 -177
  108. package/test/unit/DataContract.spec.js +44 -111
  109. package/test/unit/Document.spec.js +93 -183
  110. package/test/unit/Identity.spec.js +221 -346
  111. package/test/unit/KeyPair.spec.js +30 -145
  112. package/test/unit/Names.spec.js +27 -90
  113. package/test/unit/Node.spec.js +55 -126
  114. package/test/unit/SDK.spec.js +7 -9
  115. package/test/unit/Tokens.spec.js +111 -278
  116. package/bundle.min.js.LICENSE.txt +0 -1
  117. package/src/keyPair/keyToPublicKey.d.ts +0 -2
  118. package/src/keyPair/keyToPublicKey.js +0 -47
  119. package/src/keyPair/keyToWalletId.d.ts +0 -2
  120. package/src/keyPair/keyToWalletId.js +0 -50
  121. package/src/keyPair/keyToXPrivateKey.d.ts +0 -3
  122. package/src/keyPair/keyToXPrivateKey.js +0 -50
  123. package/src/keyPair/keyToXPublicKey.d.ts +0 -3
  124. package/src/keyPair/keyToXPublicKey.js +0 -50
  125. package/src/keyPair/mnemonicToIdentityKey.d.ts +0 -3
  126. package/src/keyPair/mnemonicToIdentityKey.js +0 -57
  127. package/src/keyPair/mnemonicToWallet.d.ts +0 -2
  128. package/src/keyPair/mnemonicToWallet.js +0 -55
  129. package/src/keyPair/privateKeyToWif.d.ts +0 -2
  130. package/src/keyPair/privateKeyToWif.js +0 -50
  131. package/src/keyPair/publicKeyToAddress.d.ts +0 -2
  132. package/src/keyPair/publicKeyToAddress.js +0 -50
  133. package/src/keyPair/seedToWallet.d.ts +0 -2
  134. package/src/keyPair/seedToWallet.js +0 -50
  135. package/src/keyPair/walletToIdentityKey.d.ts +0 -3
  136. package/src/keyPair/walletToIdentityKey.js +0 -56
  137. package/src/keyPair/xkeyToHDXKey.d.ts +0 -2
  138. package/src/keyPair/xkeyToHDXKey.js +0 -50
@@ -1,131 +1,64 @@
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
- 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 convertToHomographSafeChars from '../utils/convertToHomographSafeChars';
2
+ import { PrefundedVotingBalanceWASM } from 'pshenmic-dpp';
3
+ import getRandomBytes from '../utils/getRandomBytes';
4
+ import sha256 from '../utils/sha256';
5
+ import createDocument from '../documents/create';
6
+ import createStateTransition from '../documents/createStateTransition';
7
+ import getIdentityContractNonce from '../identities/getIdentityContractNonce';
8
+ import broadcast from '../stateTransitions/broadcast';
9
+ import waitForStateTransitionResult from '../stateTransitions/waitForStateTransitionResult';
10
+ import testNameContested from './testNameContested';
11
+ import { DPNS_DATA_CONTRACT_ID } from '../constants';
12
+ export default async function registerName(grpcPool, name, identity, privateKey) {
13
+ const [identityPublicKey] = identity.getPublicKeys().filter(identityPublicKey => identityPublicKey.getPublicKeyHash() === privateKey.getPublicKeyHash());
14
+ if (identityPublicKey == null) {
15
+ throw new Error('Private key does not match the identity');
36
16
  }
37
- };
38
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
39
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
40
- if (ar || !(i in from)) {
41
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
42
- ar[i] = from[i];
43
- }
17
+ if (identityPublicKey.securityLevel !== 'HIGH' && identityPublicKey.purpose !== 'AUTHENTICATION') {
18
+ throw new Error('Wrong private key, must be from AUTHENTICATION HIGH identity public key');
44
19
  }
45
- return to.concat(ar || Array.prototype.slice.call(from));
46
- };
47
- Object.defineProperty(exports, "__esModule", { value: true });
48
- exports.default = registerName;
49
- var convertToHomographSafeChars_1 = require("../utils/convertToHomographSafeChars");
50
- var pshenmic_dpp_1 = require("pshenmic-dpp");
51
- var getRandomBytes_1 = require("../utils/getRandomBytes");
52
- var sha256_1 = require("../utils/sha256");
53
- var create_1 = require("../documents/create");
54
- var createStateTransition_1 = require("../documents/createStateTransition");
55
- var getIdentityContractNonce_1 = require("../identities/getIdentityContractNonce");
56
- var broadcast_1 = require("../stateTransitions/broadcast");
57
- var waitForStateTransitionResult_1 = require("../stateTransitions/waitForStateTransitionResult");
58
- var testNameContested_1 = require("./testNameContested");
59
- var constants_1 = require("../constants");
60
- function registerName(grpcPool, name, identity, privateKey) {
61
- return __awaiter(this, void 0, void 0, function () {
62
- var identityPublicKey, _a, label, parentDomainName, salt, normalizedParentDomainName, normalizedLabel, normalizedFullDomainName, saltedDomainHash, document, stateTransition, preorderData, identityContractNonce, domainData;
63
- return __generator(this, function (_b) {
64
- switch (_b.label) {
65
- case 0:
66
- identityPublicKey = identity.getPublicKeys().filter(function (identityPublicKey) { return identityPublicKey.getPublicKeyHash() === privateKey.getPublicKeyHash(); })[0];
67
- if (identityPublicKey == null) {
68
- throw new Error('Private key does not match the identity');
69
- }
70
- if (identityPublicKey.securityLevel !== 'HIGH' && identityPublicKey.purpose !== 'AUTHENTICATION') {
71
- throw new Error('Wrong private key, must be from AUTHENTICATION HIGH identity public key');
72
- }
73
- _a = name.split('.'), label = _a[0], parentDomainName = _a[1];
74
- salt = (0, getRandomBytes_1.default)(32);
75
- normalizedParentDomainName = (0, convertToHomographSafeChars_1.default)(parentDomainName);
76
- normalizedLabel = (0, convertToHomographSafeChars_1.default)(label);
77
- normalizedFullDomainName = "".concat(normalizedLabel, ".").concat(normalizedParentDomainName);
78
- saltedDomainHash = (0, sha256_1.default)((0, sha256_1.default)(new Uint8Array(__spreadArray(__spreadArray([], salt, true), new TextEncoder().encode(normalizedFullDomainName), true))));
79
- preorderData = {
80
- saltedDomainHash: Array.from(saltedDomainHash)
81
- };
82
- return [4 /*yield*/, (0, getIdentityContractNonce_1.default)(grpcPool, identity.id, constants_1.DPNS_DATA_CONTRACT_ID)];
83
- case 1:
84
- identityContractNonce = _b.sent();
85
- document = (0, create_1.default)(constants_1.DPNS_DATA_CONTRACT_ID, 'preorder', preorderData, identity.id.base58());
86
- stateTransition = (0, createStateTransition_1.default)(document, 'create', { identityContractNonce: identityContractNonce + BigInt(1) });
87
- return [4 /*yield*/, stateTransition.sign(privateKey, identityPublicKey)];
88
- case 2:
89
- _b.sent();
90
- return [4 /*yield*/, (0, broadcast_1.default)(grpcPool, stateTransition)
91
- // wait for state transition confirmation before next broadcast
92
- ];
93
- case 3:
94
- _b.sent();
95
- // wait for state transition confirmation before next broadcast
96
- return [4 /*yield*/, (0, waitForStateTransitionResult_1.default)(grpcPool, stateTransition)
97
- // 2. Create domain document
98
- ];
99
- case 4:
100
- // wait for state transition confirmation before next broadcast
101
- _b.sent();
102
- domainData = {
103
- label: label,
104
- normalizedLabel: normalizedLabel,
105
- parentDomainName: parentDomainName,
106
- normalizedParentDomainName: normalizedParentDomainName,
107
- preorderSalt: Array.from(salt),
108
- records: {
109
- identity: Array.from(identity.id.bytes())
110
- },
111
- subdomainRules: {
112
- allowSubdomains: false
113
- }
114
- };
115
- document = (0, create_1.default)(constants_1.DPNS_DATA_CONTRACT_ID, 'domain', domainData, identity.id.base58());
116
- stateTransition = (0, createStateTransition_1.default)(document, 'create', {
117
- identityContractNonce: identityContractNonce + BigInt(2),
118
- // @ts-expect-error
119
- prefundedVotingBalance: (0, testNameContested_1.default)(normalizedLabel) ? new pshenmic_dpp_1.PrefundedVotingBalanceWASM('parentNameAndLabel', BigInt(20000000000)) : undefined
120
- });
121
- return [4 /*yield*/, stateTransition.sign(privateKey, identityPublicKey)];
122
- case 5:
123
- _b.sent();
124
- return [4 /*yield*/, (0, broadcast_1.default)(grpcPool, stateTransition)];
125
- case 6:
126
- _b.sent();
127
- return [2 /*return*/];
128
- }
129
- });
20
+ const [label, parentDomainName] = name.split('.');
21
+ const salt = getRandomBytes(32);
22
+ const normalizedParentDomainName = convertToHomographSafeChars(parentDomainName);
23
+ const normalizedLabel = convertToHomographSafeChars(label);
24
+ const normalizedFullDomainName = `${normalizedLabel}.${normalizedParentDomainName}`;
25
+ const saltedDomainHash = await sha256(await sha256(new Uint8Array([
26
+ ...salt,
27
+ ...new TextEncoder().encode(normalizedFullDomainName)
28
+ ])));
29
+ let document;
30
+ let stateTransition;
31
+ // 1. Create preorder document
32
+ const preorderData = {
33
+ saltedDomainHash: Array.from(saltedDomainHash)
34
+ };
35
+ const identityContractNonce = await getIdentityContractNonce(grpcPool, identity.id, DPNS_DATA_CONTRACT_ID);
36
+ document = createDocument(DPNS_DATA_CONTRACT_ID, 'preorder', preorderData, identity.id.base58());
37
+ stateTransition = createStateTransition(document, 'create', { identityContractNonce: identityContractNonce + BigInt(1) });
38
+ await stateTransition.sign(privateKey, identityPublicKey);
39
+ await broadcast(grpcPool, stateTransition);
40
+ // wait for state transition confirmation before next broadcast
41
+ await waitForStateTransitionResult(grpcPool, stateTransition);
42
+ // 2. Create domain document
43
+ const domainData = {
44
+ label,
45
+ normalizedLabel,
46
+ parentDomainName,
47
+ normalizedParentDomainName,
48
+ preorderSalt: Array.from(salt),
49
+ records: {
50
+ identity: Array.from(identity.id.bytes())
51
+ },
52
+ subdomainRules: {
53
+ allowSubdomains: false
54
+ }
55
+ };
56
+ document = createDocument(DPNS_DATA_CONTRACT_ID, 'domain', domainData, identity.id.base58());
57
+ stateTransition = createStateTransition(document, 'create', {
58
+ identityContractNonce: identityContractNonce + BigInt(2),
59
+ // @ts-expect-error
60
+ prefundedVotingBalance: testNameContested(normalizedLabel) ? new PrefundedVotingBalanceWASM('parentNameAndLabel', BigInt(20000000000)) : undefined
130
61
  });
62
+ await stateTransition.sign(privateKey, identityPublicKey);
63
+ await broadcast(grpcPool, stateTransition);
131
64
  }
@@ -1,3 +1,3 @@
1
1
  import { DocumentWASM, IdentifierWASM } from 'pshenmic-dpp';
2
2
  import GRPCConnectionPool from '../grpcConnectionPool';
3
- export default function search(grpcPool: GRPCConnectionPool, identifier: IdentifierWASM): Promise<DocumentWASM[]>;
3
+ export default function searchByIdentity(grpcPool: GRPCConnectionPool, identifier: IdentifierWASM): Promise<DocumentWASM[]>;
@@ -1,51 +1,5 @@
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
- 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.default = search;
40
- var query_1 = require("../documents/query");
41
- var DPNS_DATA_CONTRACT_ID = 'GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec';
42
- function search(grpcPool, identifier) {
43
- return __awaiter(this, void 0, void 0, function () {
44
- return __generator(this, function (_a) {
45
- switch (_a.label) {
46
- case 0: return [4 /*yield*/, (0, query_1.default)(grpcPool, DPNS_DATA_CONTRACT_ID, 'domain', [['records.identity', '=', identifier.base58()]], [['records.identity', 'asc']])];
47
- case 1: return [2 /*return*/, _a.sent()];
48
- }
49
- });
50
- });
1
+ import query from '../documents/query';
2
+ const DPNS_DATA_CONTRACT_ID = 'GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec';
3
+ export default async function searchByIdentity(grpcPool, identifier) {
4
+ return await query(grpcPool, DPNS_DATA_CONTRACT_ID, 'domain', [['records.identity', '=', identifier.base58()]], [['records.identity', 'asc']]);
51
5
  }
@@ -1,64 +1,16 @@
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
- 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.default = search;
40
- var convertToHomographSafeChars_1 = require("../utils/convertToHomographSafeChars");
41
- var query_1 = require("../documents/query");
42
- var DPNS_DATA_CONTRACT_ID = 'GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec';
43
- function search(grpcPool, name) {
44
- return __awaiter(this, void 0, void 0, function () {
45
- var _a, label, parentDomainName, normalizedParentDomainName, normalizedLabelPrefix, where, orderBy;
46
- return __generator(this, function (_b) {
47
- switch (_b.label) {
48
- case 0:
49
- _a = name.split('.'), label = _a[0], parentDomainName = _a[1];
50
- normalizedParentDomainName = (0, convertToHomographSafeChars_1.default)(parentDomainName);
51
- normalizedLabelPrefix = (0, convertToHomographSafeChars_1.default)(label);
52
- where = [
53
- ['normalizedParentDomainName', '==', normalizedParentDomainName],
54
- ['normalizedLabel', 'startsWith', normalizedLabelPrefix]
55
- ];
56
- orderBy = [
57
- ['normalizedLabel', 'asc']
58
- ];
59
- return [4 /*yield*/, (0, query_1.default)(grpcPool, DPNS_DATA_CONTRACT_ID, 'domain', where, orderBy)];
60
- case 1: return [2 /*return*/, _b.sent()];
61
- }
62
- });
63
- });
1
+ import convertToHomographSafeChars from '../utils/convertToHomographSafeChars';
2
+ import query from '../documents/query';
3
+ const DPNS_DATA_CONTRACT_ID = 'GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec';
4
+ export default async function search(grpcPool, name) {
5
+ const [label, parentDomainName] = name.split('.');
6
+ const normalizedParentDomainName = convertToHomographSafeChars(parentDomainName);
7
+ const normalizedLabelPrefix = convertToHomographSafeChars(label);
8
+ const where = [
9
+ ['normalizedParentDomainName', '==', normalizedParentDomainName],
10
+ ['normalizedLabel', 'startsWith', normalizedLabelPrefix]
11
+ ];
12
+ const orderBy = [
13
+ ['normalizedLabel', 'asc']
14
+ ];
15
+ return await query(grpcPool, DPNS_DATA_CONTRACT_ID, 'domain', where, orderBy);
64
16
  }
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = testNameContested;
4
- function testNameContested(normalizedLabel) {
1
+ export default function testNameContested(normalizedLabel) {
5
2
  return /^[a-zA-Z01-]{3,19}$/.test(normalizedLabel);
6
3
  }
@@ -1,12 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = validateName;
4
- function validateName(fullName) {
5
- var chunks = fullName.split('.');
1
+ export default function validateName(fullName) {
2
+ const chunks = fullName.split('.');
6
3
  if (chunks.length !== 2) {
7
4
  return 'Name to search should be a full domain name (ex. pshenmic.dash)';
8
5
  }
9
- var label = chunks[0], parentDomainName = chunks[1];
6
+ const [label, parentDomainName] = chunks;
10
7
  if (parentDomainName !== 'dash') {
11
8
  return 'Root domain must be .dash';
12
9
  }
@@ -1,88 +1,46 @@
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
- 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.default = epochs;
40
- var platform_1 = require("../../proto/generated/platform");
41
- var pshenmic_dpp_1 = require("pshenmic-dpp");
42
- var getQuorumPublicKey_1 = require("../utils/getQuorumPublicKey");
43
- var bytesToHex_1 = require("../utils/bytesToHex");
44
- var verifyTenderdashProof_1 = require("../utils/verifyTenderdashProof");
45
- function epochs(grpcPool, count, ascending, start) {
46
- return __awaiter(this, void 0, void 0, function () {
47
- var request, v0, _a, proof, metadata, _b, rootHash, epochsInfo, quorumPublicKey, verify;
48
- return __generator(this, function (_c) {
49
- switch (_c.label) {
50
- case 0:
51
- request = platform_1.GetEpochsInfoRequest.fromPartial({
52
- v0: {
53
- startEpoch: start,
54
- count: count,
55
- ascending: ascending,
56
- prove: true
57
- }
58
- });
59
- return [4 /*yield*/, grpcPool.getClient().getEpochsInfo(request)];
60
- case 1:
61
- v0 = (_c.sent()).v0;
62
- _a = v0, proof = _a.proof, metadata = _a.metadata;
63
- if (proof == null) {
64
- throw new Error('Proof not found');
65
- }
66
- if (metadata == null) {
67
- throw new Error('Metadata not found');
68
- }
69
- _b = (0, pshenmic_dpp_1.verifyEpochsInfoProof)(proof.grovedbProof, metadata.epoch, start, count, ascending, pshenmic_dpp_1.PlatformVersionWASM.PLATFORM_V9), rootHash = _b.rootHash, epochsInfo = _b.epochsInfo;
70
- return [4 /*yield*/, (0, getQuorumPublicKey_1.getQuorumPublicKey)(grpcPool.network, proof.quorumType, (0, bytesToHex_1.default)(proof.quorumHash))];
71
- case 2:
72
- quorumPublicKey = _c.sent();
73
- verify = (0, verifyTenderdashProof_1.default)(proof, metadata, rootHash, quorumPublicKey);
74
- if (!verify) {
75
- throw new Error('Failed to verify query');
76
- }
77
- return [2 /*return*/, epochsInfo.map(function (info) { return ({
78
- number: info.index,
79
- firstBlockHeight: info.firstBlockHeight,
80
- firstCoreBlockHeight: info.firstCoreBlockHeight,
81
- startTime: info.firstBlockTime,
82
- feeMultiplier: info.feeMultiplierPermille,
83
- protocolVersion: info.protocolVersion
84
- }); })];
1
+ import { GetEpochsInfoRequest } from '../../proto/generated/platform';
2
+ import { PlatformVersionWASM, verifyEpochsInfoProof } from 'pshenmic-dpp';
3
+ import { getQuorumPublicKey } from '../utils/getQuorumPublicKey';
4
+ import bytesToHex from '../utils/bytesToHex';
5
+ import verifyTenderdashProof from '../utils/verifyTenderdashProof';
6
+ import { UInt32Value } from '../../proto/generated/google/protobuf/wrappers';
7
+ export default async function epochs(grpcPool, count, ascending, start) {
8
+ const getEpochsInfoRequest = GetEpochsInfoRequest.create({
9
+ version: {
10
+ oneofKind: 'v0',
11
+ v0: {
12
+ startEpoch: start != null ? UInt32Value.create({ value: start }) : undefined,
13
+ count,
14
+ ascending,
15
+ prove: true
85
16
  }
86
- });
17
+ }
87
18
  });
19
+ const { response } = await grpcPool.getClient().getEpochsInfo(getEpochsInfoRequest);
20
+ const { version } = response;
21
+ if (version.oneofKind !== 'v0') {
22
+ throw new Error('Unexpected oneOf type returned from DAPI (must be v0)');
23
+ }
24
+ const { v0 } = version;
25
+ if (v0.result.oneofKind !== 'proof') {
26
+ throw new Error('Unexpected oneOf type returned from DAPI (must be proof)');
27
+ }
28
+ const { result: { proof }, metadata } = v0;
29
+ if (metadata == null) {
30
+ throw new Error('Metadata not found');
31
+ }
32
+ const { rootHash, epochsInfo } = verifyEpochsInfoProof(proof.grovedbProof, metadata.epoch, start, count, ascending, PlatformVersionWASM.PLATFORM_V9);
33
+ const quorumPublicKey = await getQuorumPublicKey(grpcPool.network, proof.quorumType, bytesToHex(proof.quorumHash));
34
+ const verify = await verifyTenderdashProof(proof, metadata, rootHash, quorumPublicKey);
35
+ if (!verify) {
36
+ throw new Error('Failed to verify query');
37
+ }
38
+ return epochsInfo.map(info => ({
39
+ number: info.index,
40
+ firstBlockHeight: info.firstBlockHeight,
41
+ firstCoreBlockHeight: info.firstCoreBlockHeight,
42
+ startTime: info.firstBlockTime,
43
+ feeMultiplier: info.feeMultiplierPermille,
44
+ protocolVersion: info.protocolVersion
45
+ }));
88
46
  }
@@ -1,5 +1,5 @@
1
1
  import GRPCConnectionPool from '../grpcConnectionPool';
2
- import { NodeStatus } from '../types';
2
+ import { Network, NodeStatus } from '../types';
3
3
  import { EpochInfo } from './epochs';
4
4
  /**
5
5
  * Node controller for requesting information about DAPI node
@@ -9,8 +9,8 @@ import { EpochInfo } from './epochs';
9
9
  export declare class NodeController {
10
10
  /** @ignore **/
11
11
  grpcPool: GRPCConnectionPool;
12
- network: 'testnet' | 'mainnet';
13
- constructor(grpcPool: GRPCConnectionPool, network: 'testnet' | 'mainnet');
12
+ network: Network;
13
+ constructor(grpcPool: GRPCConnectionPool, network: Network);
14
14
  /**
15
15
  * Retrieves an info about node
16
16
  * Includes information about genesis, chain, software versions