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.
- package/bundle.min.js +21 -2
- package/index.js +2 -5
- package/package.json +30 -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 +5 -4
- package/src/DashPlatformSDK.js +56 -46
- package/src/constants.js +7 -10
- package/src/contestedResources/createStateTransition.d.ts +1 -2
- package/src/contestedResources/createStateTransition.js +4 -7
- package/src/contestedResources/getContestedResourceVoteState.js +67 -118
- package/src/contestedResources/index.js +9 -55
- package/src/dataContracts/create.js +5 -8
- package/src/dataContracts/createStateTransition.js +10 -14
- package/src/dataContracts/getDataContractByIdentifier.js +40 -83
- package/src/dataContracts/index.js +17 -63
- package/src/documents/create.js +3 -6
- package/src/documents/createStateTransition.js +19 -31
- package/src/documents/index.js +25 -72
- package/src/documents/query.js +58 -90
- package/src/grpcConnectionPool.d.ts +30 -8
- package/src/grpcConnectionPool.js +63 -121
- package/src/identities/createStateTransition.js +14 -26
- package/src/identities/getIdentityBalance.js +37 -80
- package/src/identities/getIdentityByIdentifier.js +37 -80
- package/src/identities/getIdentityByNonUniquePublicKeyHash.js +41 -82
- package/src/identities/getIdentityByPublicKeyHash.js +37 -80
- package/src/identities/getIdentityContractNonce.js +40 -83
- package/src/identities/getIdentityNonce.js +38 -81
- package/src/identities/getIdentityPublicKeys.js +43 -81
- package/src/identities/index.js +57 -153
- 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.js +43 -111
- package/src/names/registerName.js +60 -127
- package/src/names/searchByIdentity.d.ts +1 -1
- package/src/names/searchByIdentity.js +4 -50
- package/src/names/searchByName.js +15 -63
- package/src/names/testNameContested.js +1 -4
- package/src/names/validateName.js +3 -6
- package/src/node/epochs.js +43 -85
- package/src/node/index.d.ts +3 -3
- package/src/node/index.js +18 -77
- package/src/node/status.js +37 -81
- package/src/node/totalCredits.d.ts +2 -1
- package/src/node/totalCredits.js +32 -73
- package/src/signer/AbstractSigner.js +1 -2
- package/src/signer/setSigner.js +1 -4
- package/src/stateTransitions/broadcast.js +7 -57
- package/src/stateTransitions/index.js +13 -66
- package/src/stateTransitions/waitForStateTransitionResult.js +6 -58
- package/src/tokens/createStateTransition.js +23 -35
- package/src/tokens/getIdentitiesTokenBalances.js +40 -83
- package/src/tokens/getIdentityTokensBalances.js +40 -83
- package/src/tokens/getTokenContractInfo.js +40 -83
- package/src/tokens/getTokenDirectPurchasePrices.js +37 -80
- package/src/tokens/getTokenTotalSupply.js +38 -81
- package/src/tokens/index.js +39 -124
- package/src/types.d.ts +6 -12
- 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 +1 -1
- package/src/utils/calculateSignHash.js +7 -10
- package/src/utils/calculateStateIdHash.d.ts +1 -1
- package/src/utils/calculateStateIdHash.js +8 -10
- package/src/utils/convertToHomographSafeChars.js +2 -5
- package/src/utils/createVoterIdentityId.d.ts +1 -1
- package/src/utils/createVoterIdentityId.js +12 -11
- 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.js +2 -5
- package/src/utils/hexToBytes.js +2 -6
- package/src/utils/index.js +21 -28
- 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.js +2 -50
- package/src/utils/stringToIndexValueBytes.js +4 -7
- package/src/utils/verifyTenderdashProof.d.ts +1 -1
- package/src/utils/verifyTenderdashProof.js +13 -17
- package/src/voting/createStateTransition.d.ts +1 -2
- package/src/voting/createStateTransition.js +4 -7
- package/src/voting/createVote.js +4 -7
- package/src/voting/index.d.ts +3 -4
- package/src/voting/index.js +19 -26
- package/test/unit/ContestedResources.spec.js +92 -177
- package/test/unit/DataContract.spec.js +44 -111
- package/test/unit/Document.spec.js +93 -183
- package/test/unit/Identity.spec.js +221 -346
- package/test/unit/KeyPair.spec.js +30 -145
- package/test/unit/Names.spec.js +27 -90
- package/test/unit/Node.spec.js +55 -126
- package/test/unit/SDK.spec.js +7 -9
- package/test/unit/Tokens.spec.js +111 -278
- 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
|
@@ -1,63 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
+
export default async function getDAPINodeList(network) {
|
|
2
|
+
const url = `https://${network === 'mainnet' ? '' : 'testnet.'}platform-explorer.pshenmic.dev/validators?isActive=true`;
|
|
3
|
+
const resp = await fetch(url);
|
|
4
|
+
if (resp.status !== 200) {
|
|
5
|
+
throw new Error('Failed to query Platform Explorer for active validators');
|
|
36
6
|
}
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
var url, resp, resultSet;
|
|
43
|
-
return __generator(this, function (_a) {
|
|
44
|
-
switch (_a.label) {
|
|
45
|
-
case 0:
|
|
46
|
-
url = "https://".concat(network === 'mainnet' ? '' : 'testnet.', "platform-explorer.pshenmic.dev/validators?isActive=true");
|
|
47
|
-
return [4 /*yield*/, fetch(url)];
|
|
48
|
-
case 1:
|
|
49
|
-
resp = _a.sent();
|
|
50
|
-
if (resp.status !== 200) {
|
|
51
|
-
throw new Error('Failed to query Platform Explorer for active validators');
|
|
52
|
-
}
|
|
53
|
-
return [4 /*yield*/, resp.json()];
|
|
54
|
-
case 2:
|
|
55
|
-
resultSet = (_a.sent()).resultSet;
|
|
56
|
-
return [2 /*return*/, resultSet
|
|
57
|
-
// eslint-disable-next-line
|
|
58
|
-
.map(function (validator) { var _a, _b; return ((_b = (_a = validator === null || validator === void 0 ? void 0 : validator.proTxInfo) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.service) ? "https://".concat(validator.proTxInfo.state.service.split(':')[0]).concat(network === 'mainnet' ? '' : ':1443') : undefined; })
|
|
59
|
-
.filter(function (e) { return e != null; })];
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
});
|
|
7
|
+
const { resultSet } = await resp.json();
|
|
8
|
+
return resultSet
|
|
9
|
+
// eslint-disable-next-line
|
|
10
|
+
.map((validator) => validator?.proTxInfo?.state?.service ? `https://${validator.proTxInfo.state.service.split(':')[0]}${network === 'mainnet' ? '' : ':1443'}` : undefined)
|
|
11
|
+
.filter(e => e != null);
|
|
63
12
|
}
|
|
@@ -1,69 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
+
const cache = {};
|
|
2
|
+
export async function getQuorumPublicKey(network, quorumType, quorumHash) {
|
|
3
|
+
const cached = cache[`${quorumType}_${quorumHash}`];
|
|
4
|
+
if (cached != null) {
|
|
5
|
+
return cached;
|
|
36
6
|
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
var cache = {};
|
|
41
|
-
function getQuorumPublicKey(network, quorumType, quorumHash) {
|
|
42
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
43
|
-
var cached, url, resp, data, quorumPublicKey;
|
|
44
|
-
return __generator(this, function (_a) {
|
|
45
|
-
switch (_a.label) {
|
|
46
|
-
case 0:
|
|
47
|
-
cached = cache["".concat(quorumType, "_").concat(quorumHash)];
|
|
48
|
-
if (cached != null) {
|
|
49
|
-
return [2 /*return*/, cached];
|
|
50
|
-
}
|
|
51
|
-
url = "https://".concat(network === 'mainnet' ? '' : 'testnet.', "platform-explorer.pshenmic.dev/quorum/info?quorumType=").concat(quorumType, "&quorumHash=").concat(quorumHash);
|
|
52
|
-
return [4 /*yield*/, fetch(url, {
|
|
53
|
-
method: 'GET'
|
|
54
|
-
})];
|
|
55
|
-
case 1:
|
|
56
|
-
resp = _a.sent();
|
|
57
|
-
if (resp.status !== 200) {
|
|
58
|
-
throw new Error('Failed to query Platform Explorer for quorum public keys');
|
|
59
|
-
}
|
|
60
|
-
return [4 /*yield*/, resp.json()];
|
|
61
|
-
case 2:
|
|
62
|
-
data = _a.sent();
|
|
63
|
-
quorumPublicKey = data.quorumPublicKey;
|
|
64
|
-
cache["".concat(quorumType, "_").concat(quorumHash)] = quorumPublicKey;
|
|
65
|
-
return [2 /*return*/, quorumPublicKey];
|
|
66
|
-
}
|
|
67
|
-
});
|
|
7
|
+
const url = `https://${network === 'mainnet' ? '' : 'testnet.'}platform-explorer.pshenmic.dev/quorum/info?quorumType=${quorumType}&quorumHash=${quorumHash}`;
|
|
8
|
+
const resp = await fetch(url, {
|
|
9
|
+
method: 'GET'
|
|
68
10
|
});
|
|
11
|
+
if (resp.status !== 200) {
|
|
12
|
+
throw new Error('Failed to query Platform Explorer for quorum public keys');
|
|
13
|
+
}
|
|
14
|
+
const data = await resp.json();
|
|
15
|
+
const { quorumPublicKey } = data;
|
|
16
|
+
cache[`${quorumType}_${quorumHash}`] = quorumPublicKey;
|
|
17
|
+
return quorumPublicKey;
|
|
69
18
|
}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.default = getRandomArrayItem;
|
|
4
|
-
function getRandomArrayItem(array) {
|
|
1
|
+
export default function getRandomArrayItem(array) {
|
|
5
2
|
return array[Math.floor((Math.random() * array.length))];
|
|
6
3
|
}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.default = getRandomBytes;
|
|
4
|
-
function getRandomBytes(length) {
|
|
5
|
-
var array = Uint8Array.from({ length: length });
|
|
1
|
+
export default function getRandomBytes(length) {
|
|
2
|
+
const array = Uint8Array.from({ length });
|
|
6
3
|
return crypto.getRandomValues(array);
|
|
7
4
|
}
|
package/src/utils/hexToBytes.js
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.default = hexToBytes;
|
|
4
|
-
function hexToBytes(hex) {
|
|
5
|
-
var _a;
|
|
6
|
-
return Uint8Array.from(((_a = hex.match(/.{1,2}/g)) !== null && _a !== void 0 ? _a : []).map(function (byte) { return parseInt(byte, 16); }));
|
|
1
|
+
export default function hexToBytes(hex) {
|
|
2
|
+
return Uint8Array.from((hex.match(/.{1,2}/g) ?? []).map((byte) => parseInt(byte, 16)));
|
|
7
3
|
}
|
package/src/utils/index.js
CHANGED
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var base_1 = require("@scure/base");
|
|
6
|
-
var hexToBytes_1 = require("./hexToBytes");
|
|
7
|
-
var bytesToHex_1 = require("./bytesToHex");
|
|
1
|
+
import convertToHomographSafeChars from './convertToHomographSafeChars';
|
|
2
|
+
import { base58 } from '@scure/base';
|
|
3
|
+
import hexToBytes from './hexToBytes';
|
|
4
|
+
import bytesToHex from './bytesToHex';
|
|
8
5
|
/**
|
|
9
6
|
* Collection of conversion functions
|
|
10
7
|
*
|
|
11
8
|
* @hideconstructor
|
|
12
9
|
*/
|
|
13
|
-
|
|
14
|
-
function UtilsController() {
|
|
15
|
-
}
|
|
10
|
+
export class UtilsController {
|
|
16
11
|
/**
|
|
17
12
|
* Converts base58 string to an Uint8Array
|
|
18
13
|
*
|
|
@@ -20,9 +15,9 @@ var UtilsController = /** @class */ (function () {
|
|
|
20
15
|
*
|
|
21
16
|
* @returns {Uint8Array}
|
|
22
17
|
*/
|
|
23
|
-
|
|
24
|
-
return
|
|
25
|
-
}
|
|
18
|
+
base58ToBytes(str) {
|
|
19
|
+
return base58.decode(str);
|
|
20
|
+
}
|
|
26
21
|
/**
|
|
27
22
|
* Converts Uint8Array to base58 string
|
|
28
23
|
*
|
|
@@ -30,9 +25,9 @@ var UtilsController = /** @class */ (function () {
|
|
|
30
25
|
*
|
|
31
26
|
* @return {string}
|
|
32
27
|
*/
|
|
33
|
-
|
|
34
|
-
return
|
|
35
|
-
}
|
|
28
|
+
bytesToBase58(bytes) {
|
|
29
|
+
return base58.encode(bytes);
|
|
30
|
+
}
|
|
36
31
|
/**
|
|
37
32
|
* Converts Uint8Array to hex string
|
|
38
33
|
*
|
|
@@ -40,9 +35,9 @@ var UtilsController = /** @class */ (function () {
|
|
|
40
35
|
*
|
|
41
36
|
* @return {string}
|
|
42
37
|
*/
|
|
43
|
-
|
|
44
|
-
return (
|
|
45
|
-
}
|
|
38
|
+
bytesToHex(bytes) {
|
|
39
|
+
return bytesToHex(bytes);
|
|
40
|
+
}
|
|
46
41
|
/**
|
|
47
42
|
* Converts a hex string to Uint8Array
|
|
48
43
|
*
|
|
@@ -50,9 +45,9 @@ var UtilsController = /** @class */ (function () {
|
|
|
50
45
|
*
|
|
51
46
|
* @return {Uint8Array}
|
|
52
47
|
*/
|
|
53
|
-
|
|
54
|
-
return (
|
|
55
|
-
}
|
|
48
|
+
hexToBytes(hex) {
|
|
49
|
+
return hexToBytes(hex);
|
|
50
|
+
}
|
|
56
51
|
/**
|
|
57
52
|
* @deprecated use sdk.names.normalizeLabel()
|
|
58
53
|
*
|
|
@@ -60,9 +55,7 @@ var UtilsController = /** @class */ (function () {
|
|
|
60
55
|
*
|
|
61
56
|
* @return {string}
|
|
62
57
|
*/
|
|
63
|
-
|
|
64
|
-
return (
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
}());
|
|
68
|
-
exports.UtilsController = UtilsController;
|
|
58
|
+
convertToHomographSafeChars(str) {
|
|
59
|
+
return convertToHomographSafeChars(str);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.default = indexValueBytesToString;
|
|
4
|
-
function indexValueBytesToString(value) {
|
|
5
|
-
var decoder = new TextDecoder();
|
|
1
|
+
export default function indexValueBytesToString(value) {
|
|
2
|
+
const decoder = new TextDecoder();
|
|
6
3
|
return decoder.decode(value).slice(2);
|
|
7
4
|
}
|
package/src/utils/sha256.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function sha256(input: Uint8Array | string): Uint8Array | string
|
|
1
|
+
export default function sha256(input: Uint8Array | string): Promise<Uint8Array | string>;
|
package/src/utils/sha256.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var hash_js_1 = require("hash.js");
|
|
5
|
-
function sha256(input) {
|
|
6
|
-
var hash = (0, hash_js_1.sha256)().update(input);
|
|
1
|
+
import bytesToHex from './bytesToHex';
|
|
2
|
+
import { typedArrayToBuffer } from './bytesToTypedArray';
|
|
3
|
+
export default async function sha256(input) {
|
|
7
4
|
if (typeof input === 'string') {
|
|
8
|
-
|
|
5
|
+
const encoder = new TextEncoder();
|
|
6
|
+
const data = encoder.encode(input);
|
|
7
|
+
const hash = await crypto.subtle.digest('SHA-256', data);
|
|
8
|
+
return bytesToHex(new Uint8Array(hash));
|
|
9
9
|
}
|
|
10
10
|
else {
|
|
11
|
-
|
|
11
|
+
const arrayBuffer = typedArrayToBuffer(input);
|
|
12
|
+
const hash = await crypto.subtle.digest('SHA-256', arrayBuffer);
|
|
13
|
+
return new Uint8Array(hash);
|
|
12
14
|
}
|
|
13
15
|
}
|
package/src/utils/signHash.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function signHash(quorumType: number, quorumHash: Uint8Array, requestId: Uint8Array, signBytesHash: Uint8Array): Uint8Array
|
|
1
|
+
export default function signHash(quorumType: number, quorumHash: Uint8Array, requestId: Uint8Array, signBytesHash: Uint8Array): Promise<Uint8Array>;
|
package/src/utils/signHash.js
CHANGED
|
@@ -1,25 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.default = signHash;
|
|
4
|
-
var sha256_1 = require("./sha256");
|
|
5
|
-
function signHash(quorumType, quorumHash, requestId, signBytesHash) {
|
|
1
|
+
import sha256 from './sha256';
|
|
2
|
+
export default async function signHash(quorumType, quorumHash, requestId, signBytesHash) {
|
|
6
3
|
// Calculate total length: 1 byte for quorumType + 3 arrays of 32 bytes each
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
const totalLength = 1 + quorumHash.length + requestId.length + signBytesHash.length;
|
|
5
|
+
const combined = new Uint8Array(totalLength);
|
|
6
|
+
let offset = 0;
|
|
10
7
|
// Add quorumType as single byte
|
|
11
8
|
combined[offset] = quorumType;
|
|
12
9
|
offset += 1;
|
|
13
10
|
// Add reversed quorumHash
|
|
14
|
-
|
|
11
|
+
const reversedQuorumHash = new Uint8Array(quorumHash).reverse();
|
|
15
12
|
combined.set(reversedQuorumHash, offset);
|
|
16
13
|
offset += quorumHash.length;
|
|
17
14
|
// Add reversed requestId
|
|
18
|
-
|
|
15
|
+
const reversedRequestId = new Uint8Array(requestId).reverse();
|
|
19
16
|
combined.set(reversedRequestId, offset);
|
|
20
17
|
offset += requestId.length;
|
|
21
18
|
// Add reversed signBytesHash
|
|
22
|
-
|
|
19
|
+
const reversedSignBytesHash = new Uint8Array(signBytesHash).reverse();
|
|
23
20
|
combined.set(reversedSignBytesHash, offset);
|
|
24
|
-
return
|
|
21
|
+
return await sha256(await sha256(combined));
|
|
25
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function signRequestId(prefix: string, height: bigint, round: number): Uint8Array
|
|
1
|
+
export default function signRequestId(prefix: string, height: bigint, round: number): Promise<Uint8Array>;
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var sha256_1 = require("./sha256");
|
|
5
|
-
function signRequestId(prefix, height, round) {
|
|
6
|
-
var prefixBytes = new TextEncoder().encode(prefix);
|
|
1
|
+
import sha256 from './sha256';
|
|
2
|
+
export default async function signRequestId(prefix, height, round) {
|
|
3
|
+
const prefixBytes = new TextEncoder().encode(prefix);
|
|
7
4
|
// len + i64 + i32 (prefix length + 8 bytes for height + 4 bytes for round)
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
const totalLength = prefixBytes.length + 8 + 4;
|
|
6
|
+
const buffer = new ArrayBuffer(totalLength);
|
|
7
|
+
const view = new DataView(buffer);
|
|
8
|
+
const uint8View = new Uint8Array(buffer);
|
|
9
|
+
let offset = 0;
|
|
13
10
|
// Copy prefix bytes
|
|
14
11
|
uint8View.set(prefixBytes, offset);
|
|
15
12
|
offset += prefixBytes.length;
|
|
@@ -18,5 +15,5 @@ function signRequestId(prefix, height, round) {
|
|
|
18
15
|
offset += 8;
|
|
19
16
|
// Write round as 32-bit little-endian integer
|
|
20
17
|
view.setInt32(offset, round, true);
|
|
21
|
-
return
|
|
18
|
+
return await sha256(uint8View);
|
|
22
19
|
}
|
package/src/utils/sleep.js
CHANGED
|
@@ -1,51 +1,3 @@
|
|
|
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.default = sleep;
|
|
40
|
-
function sleep(ms) {
|
|
41
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
42
|
-
return __generator(this, function (_a) {
|
|
43
|
-
switch (_a.label) {
|
|
44
|
-
case 0: return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, ms); })];
|
|
45
|
-
case 1:
|
|
46
|
-
_a.sent();
|
|
47
|
-
return [2 /*return*/];
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
});
|
|
1
|
+
export default async function sleep(ms) {
|
|
2
|
+
await new Promise(resolve => setTimeout(resolve, ms));
|
|
51
3
|
}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.default = stringToIndexValueBytes;
|
|
4
|
-
function stringToIndexValueBytes(name) {
|
|
5
|
-
var lengthBuffer = new Uint8Array(1);
|
|
1
|
+
export default function stringToIndexValueBytes(name) {
|
|
2
|
+
const lengthBuffer = new Uint8Array(1);
|
|
6
3
|
lengthBuffer[0] = name.length;
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
const nameBuffer = new TextEncoder().encode(name);
|
|
5
|
+
const result = new Uint8Array(1 + 1 + nameBuffer.length);
|
|
9
6
|
result[0] = 0x12;
|
|
10
7
|
result[1] = lengthBuffer[0];
|
|
11
8
|
result.set(nameBuffer, 2);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { Proof, ResponseMetadata } from '../../proto/generated/platform';
|
|
2
|
-
export default function verifyTenderdashProof(proof: Proof, metadata: ResponseMetadata, rootHash: Uint8Array, quorumPublicKey: string): boolean
|
|
2
|
+
export default function verifyTenderdashProof(proof: Proof, metadata: ResponseMetadata, rootHash: Uint8Array, quorumPublicKey: string): Promise<boolean>;
|
|
@@ -1,30 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
var pshenmic_dpp_1 = require("pshenmic-dpp");
|
|
9
|
-
var hexToBytes_1 = require("./hexToBytes");
|
|
10
|
-
function verifyTenderdashProof(proof, metadata, rootHash, quorumPublicKey) {
|
|
11
|
-
var stateId = platform_1.StateId.fromPartial({
|
|
1
|
+
import { CanonicalVote, SignedMsgType, StateId } from '../../proto/generated/platform';
|
|
2
|
+
import { calculateSignHash } from './calculateSignHash';
|
|
3
|
+
import { calculateStateIdHash } from './calculateStateIdHash';
|
|
4
|
+
import { verifySignatureDigest } from 'pshenmic-dpp';
|
|
5
|
+
import hexToBytes from './hexToBytes';
|
|
6
|
+
export default async function verifyTenderdashProof(proof, metadata, rootHash, quorumPublicKey) {
|
|
7
|
+
const stateId = StateId.create({
|
|
12
8
|
appVersion: String(metadata.protocolVersion),
|
|
13
9
|
coreChainLockedHeight: metadata.coreChainLockedHeight,
|
|
14
10
|
time: metadata.timeMs,
|
|
15
11
|
appHash: rootHash,
|
|
16
12
|
height: metadata.height
|
|
17
13
|
});
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
type:
|
|
14
|
+
const stateIdHash = await calculateStateIdHash(stateId);
|
|
15
|
+
const commit = CanonicalVote.create({
|
|
16
|
+
type: SignedMsgType.PRECOMMIT,
|
|
21
17
|
blockId: proof.blockIdHash,
|
|
22
18
|
chainId: metadata.chainId,
|
|
23
19
|
height: metadata.height,
|
|
24
20
|
round: String(proof.round),
|
|
25
21
|
stateId: stateIdHash
|
|
26
22
|
});
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
return
|
|
23
|
+
const signDigest = await calculateSignHash(commit, metadata.chainId, proof.quorumType, proof.quorumHash, BigInt(metadata.height), proof.round);
|
|
24
|
+
const { signature } = proof;
|
|
25
|
+
return verifySignatureDigest(Uint8Array.from(signDigest), signature, hexToBytes(quorumPublicKey));
|
|
30
26
|
}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { StateTransitionWASM } from 'pshenmic-dpp';
|
|
2
|
-
import { VoteWASM } from 'pshenmic-dpp/dist/wasm/pshenmic_dpp';
|
|
1
|
+
import { StateTransitionWASM, VoteWASM } from 'pshenmic-dpp';
|
|
3
2
|
export default function createStateTransition(voteWASM: VoteWASM, proTxHash: string, identityNonce: bigint): StateTransitionWASM;
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
function createStateTransition(voteWASM, proTxHash, identityNonce) {
|
|
6
|
-
var voterIdentity = pshenmic_dpp_1.IdentifierWASM.fromHex(proTxHash);
|
|
7
|
-
var masternodeVoteTransition = new pshenmic_dpp_1.MasternodeVoteTransitionWASM(proTxHash, voterIdentity, voteWASM, identityNonce);
|
|
1
|
+
import { IdentifierWASM, MasternodeVoteTransitionWASM } from 'pshenmic-dpp';
|
|
2
|
+
export default function createStateTransition(voteWASM, proTxHash, identityNonce) {
|
|
3
|
+
const voterIdentity = IdentifierWASM.fromHex(proTxHash);
|
|
4
|
+
const masternodeVoteTransition = new MasternodeVoteTransitionWASM(proTxHash, voterIdentity, voteWASM, identityNonce);
|
|
8
5
|
return masternodeVoteTransition.toStateTransition();
|
|
9
6
|
}
|
package/src/voting/createVote.js
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
function createVote(dataContractId, documentTypeName, indexName, indexValues, choice) {
|
|
6
|
-
var votePoll = new pshenmic_dpp_1.VotePollWASM(dataContractId, documentTypeName, indexName, indexValues);
|
|
7
|
-
return new pshenmic_dpp_1.VoteWASM(votePoll, choice);
|
|
1
|
+
import { VotePollWASM, VoteWASM } from 'pshenmic-dpp';
|
|
2
|
+
export default function createVote(dataContractId, documentTypeName, indexName, indexValues, choice) {
|
|
3
|
+
const votePoll = new VotePollWASM(dataContractId, documentTypeName, indexName, indexValues);
|
|
4
|
+
return new VoteWASM(votePoll, choice);
|
|
8
5
|
}
|
package/src/voting/index.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { IdentifierLike, ResourceVoteChoice } from '../types';
|
|
2
|
-
import { IdentifierWASM, StateTransitionWASM } from 'pshenmic-dpp';
|
|
3
|
-
import { VoteWASM } from 'pshenmic-dpp/dist/wasm/pshenmic_dpp';
|
|
2
|
+
import { IdentifierWASM, StateTransitionWASM, VoteWASM } from 'pshenmic-dpp';
|
|
4
3
|
/**
|
|
5
4
|
* Voting controller for performing masternode votes
|
|
6
5
|
*
|
|
@@ -13,9 +12,9 @@ export declare class VotingController {
|
|
|
13
12
|
* @param proTxHash {string} voter's masternode pro tx hash
|
|
14
13
|
* @param publicKeyHash {string} voter address's public key hash
|
|
15
14
|
*
|
|
16
|
-
* @return {IdentifierWASM}
|
|
15
|
+
* @return {Promise<IdentifierWASM>}
|
|
17
16
|
*/
|
|
18
|
-
createVoterIdentityId(proTxHash: string, publicKeyHash: string): IdentifierWASM
|
|
17
|
+
createVoterIdentityId(proTxHash: string, publicKeyHash: string): Promise<IdentifierWASM>;
|
|
19
18
|
/**
|
|
20
19
|
* Creates a {VoteWASM} with all information about the vote, such as data contract id, choice, and target index
|
|
21
20
|
*
|