dash-platform-sdk 1.4.0-dev.5 → 1.4.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 +17 -17
- package/package.json +2 -2
- package/proto/generated/platform.client.d.ts +10 -0
- package/proto/generated/platform.client.js +7 -0
- package/proto/generated/platform.d.ts +133 -0
- package/proto/generated/platform.js +271 -1
- package/src/platformAddresses/getAddressInfo.js +1 -1
- package/src/platformAddresses/getAddressesInfos.d.ts +4 -0
- package/src/platformAddresses/getAddressesInfos.js +43 -0
- package/src/platformAddresses/index.d.ts +7 -0
- package/src/platformAddresses/index.js +10 -0
- package/src/stateTransitions/broadcast.js +17 -6
- package/src/utils/deserializeConsensusError.d.ts +1 -0
- package/src/utils/deserializeConsensusError.js +17 -0
- package/src/utils/index.d.ts +7 -0
- package/src/utils/index.js +10 -0
- package/test/unit/PlatformAddress.spec.js +9 -0
- package/test/unit/SDK.spec.js +4 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dash-platform-sdk",
|
|
3
|
-
"version": "1.4.0-dev.
|
|
3
|
+
"version": "1.4.0-dev.6",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"description": "Lightweight SDK for accessing Dash Platform blockchain",
|
|
6
6
|
"ts-standard": {
|
|
@@ -55,6 +55,6 @@
|
|
|
55
55
|
"@scure/bip39": "^2.0.0",
|
|
56
56
|
"@scure/btc-signer": "^2.0.1",
|
|
57
57
|
"cbor-x": "^1.6.0",
|
|
58
|
-
"pshenmic-dpp": "2.0.0-dev.
|
|
58
|
+
"pshenmic-dpp": "2.0.0-dev.9"
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { RpcTransport } from "@protobuf-ts/runtime-rpc";
|
|
2
2
|
import type { ServiceInfo } from "@protobuf-ts/runtime-rpc";
|
|
3
|
+
import type { GetAddressesInfosResponse } from "./platform.js";
|
|
4
|
+
import type { GetAddressesInfosRequest } from "./platform.js";
|
|
3
5
|
import type { GetAddressInfoResponse } from "./platform.js";
|
|
4
6
|
import type { GetAddressInfoRequest } from "./platform.js";
|
|
5
7
|
import type { WaitForStateTransitionResultResponse } from "./platform.js";
|
|
@@ -156,6 +158,10 @@ export interface IPlatformClient {
|
|
|
156
158
|
* @generated from protobuf rpc: getAddressInfo
|
|
157
159
|
*/
|
|
158
160
|
getAddressInfo(input: GetAddressInfoRequest, options?: RpcOptions): UnaryCall<GetAddressInfoRequest, GetAddressInfoResponse>;
|
|
161
|
+
/**
|
|
162
|
+
* @generated from protobuf rpc: getAddressesInfos
|
|
163
|
+
*/
|
|
164
|
+
getAddressesInfos(input: GetAddressesInfosRequest, options?: RpcOptions): UnaryCall<GetAddressesInfosRequest, GetAddressesInfosResponse>;
|
|
159
165
|
}
|
|
160
166
|
/**
|
|
161
167
|
* @generated from protobuf service org.dash.platform.dapi.v0.Platform
|
|
@@ -268,4 +274,8 @@ export declare class PlatformClient implements IPlatformClient, ServiceInfo {
|
|
|
268
274
|
* @generated from protobuf rpc: getAddressInfo
|
|
269
275
|
*/
|
|
270
276
|
getAddressInfo(input: GetAddressInfoRequest, options?: RpcOptions): UnaryCall<GetAddressInfoRequest, GetAddressInfoResponse>;
|
|
277
|
+
/**
|
|
278
|
+
* @generated from protobuf rpc: getAddressesInfos
|
|
279
|
+
*/
|
|
280
|
+
getAddressesInfos(input: GetAddressesInfosRequest, options?: RpcOptions): UnaryCall<GetAddressesInfosRequest, GetAddressesInfosResponse>;
|
|
271
281
|
}
|
|
@@ -186,4 +186,11 @@ export class PlatformClient {
|
|
|
186
186
|
const method = this.methods[24], opt = this._transport.mergeOptions(options);
|
|
187
187
|
return stackIntercept("unary", this._transport, method, opt, input);
|
|
188
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* @generated from protobuf rpc: getAddressesInfos
|
|
191
|
+
*/
|
|
192
|
+
getAddressesInfos(input, options) {
|
|
193
|
+
const method = this.methods[25], opt = this._transport.mergeOptions(options);
|
|
194
|
+
return stackIntercept("unary", this._transport, method, opt, input);
|
|
195
|
+
}
|
|
189
196
|
}
|
|
@@ -2883,6 +2883,89 @@ export interface GetAddressInfoResponse_GetAddressInfoResponseV0 {
|
|
|
2883
2883
|
*/
|
|
2884
2884
|
metadata?: ResponseMetadata;
|
|
2885
2885
|
}
|
|
2886
|
+
/**
|
|
2887
|
+
* @generated from protobuf message org.dash.platform.dapi.v0.GetAddressesInfosRequest
|
|
2888
|
+
*/
|
|
2889
|
+
export interface GetAddressesInfosRequest {
|
|
2890
|
+
/**
|
|
2891
|
+
* @generated from protobuf oneof: version
|
|
2892
|
+
*/
|
|
2893
|
+
version: {
|
|
2894
|
+
oneofKind: "v0";
|
|
2895
|
+
/**
|
|
2896
|
+
* @generated from protobuf field: org.dash.platform.dapi.v0.GetAddressesInfosRequest.GetAddressesInfosRequestV0 v0 = 1
|
|
2897
|
+
*/
|
|
2898
|
+
v0: GetAddressesInfosRequest_GetAddressesInfosRequestV0;
|
|
2899
|
+
} | {
|
|
2900
|
+
oneofKind: undefined;
|
|
2901
|
+
};
|
|
2902
|
+
}
|
|
2903
|
+
/**
|
|
2904
|
+
* @generated from protobuf message org.dash.platform.dapi.v0.GetAddressesInfosRequest.GetAddressesInfosRequestV0
|
|
2905
|
+
*/
|
|
2906
|
+
export interface GetAddressesInfosRequest_GetAddressesInfosRequestV0 {
|
|
2907
|
+
/**
|
|
2908
|
+
* @generated from protobuf field: repeated bytes addresses = 1
|
|
2909
|
+
*/
|
|
2910
|
+
addresses: Uint8Array[];
|
|
2911
|
+
/**
|
|
2912
|
+
* @generated from protobuf field: bool prove = 2
|
|
2913
|
+
*/
|
|
2914
|
+
prove: boolean;
|
|
2915
|
+
}
|
|
2916
|
+
/**
|
|
2917
|
+
* @generated from protobuf message org.dash.platform.dapi.v0.AddressInfoEntries
|
|
2918
|
+
*/
|
|
2919
|
+
export interface AddressInfoEntries {
|
|
2920
|
+
/**
|
|
2921
|
+
* @generated from protobuf field: repeated org.dash.platform.dapi.v0.AddressInfoEntry address_info_entries = 1
|
|
2922
|
+
*/
|
|
2923
|
+
addressInfoEntries: AddressInfoEntry[];
|
|
2924
|
+
}
|
|
2925
|
+
/**
|
|
2926
|
+
* @generated from protobuf message org.dash.platform.dapi.v0.GetAddressesInfosResponse
|
|
2927
|
+
*/
|
|
2928
|
+
export interface GetAddressesInfosResponse {
|
|
2929
|
+
/**
|
|
2930
|
+
* @generated from protobuf oneof: version
|
|
2931
|
+
*/
|
|
2932
|
+
version: {
|
|
2933
|
+
oneofKind: "v0";
|
|
2934
|
+
/**
|
|
2935
|
+
* @generated from protobuf field: org.dash.platform.dapi.v0.GetAddressesInfosResponse.GetAddressesInfosResponseV0 v0 = 1
|
|
2936
|
+
*/
|
|
2937
|
+
v0: GetAddressesInfosResponse_GetAddressesInfosResponseV0;
|
|
2938
|
+
} | {
|
|
2939
|
+
oneofKind: undefined;
|
|
2940
|
+
};
|
|
2941
|
+
}
|
|
2942
|
+
/**
|
|
2943
|
+
* @generated from protobuf message org.dash.platform.dapi.v0.GetAddressesInfosResponse.GetAddressesInfosResponseV0
|
|
2944
|
+
*/
|
|
2945
|
+
export interface GetAddressesInfosResponse_GetAddressesInfosResponseV0 {
|
|
2946
|
+
/**
|
|
2947
|
+
* @generated from protobuf oneof: result
|
|
2948
|
+
*/
|
|
2949
|
+
result: {
|
|
2950
|
+
oneofKind: "addressInfoEntries";
|
|
2951
|
+
/**
|
|
2952
|
+
* @generated from protobuf field: org.dash.platform.dapi.v0.AddressInfoEntries address_info_entries = 1
|
|
2953
|
+
*/
|
|
2954
|
+
addressInfoEntries: AddressInfoEntries;
|
|
2955
|
+
} | {
|
|
2956
|
+
oneofKind: "proof";
|
|
2957
|
+
/**
|
|
2958
|
+
* @generated from protobuf field: org.dash.platform.dapi.v0.Proof proof = 2
|
|
2959
|
+
*/
|
|
2960
|
+
proof: Proof;
|
|
2961
|
+
} | {
|
|
2962
|
+
oneofKind: undefined;
|
|
2963
|
+
};
|
|
2964
|
+
/**
|
|
2965
|
+
* @generated from protobuf field: org.dash.platform.dapi.v0.ResponseMetadata metadata = 3
|
|
2966
|
+
*/
|
|
2967
|
+
metadata?: ResponseMetadata;
|
|
2968
|
+
}
|
|
2886
2969
|
/**
|
|
2887
2970
|
* @generated from protobuf enum org.dash.platform.dapi.v0.KeyPurpose
|
|
2888
2971
|
*/
|
|
@@ -4411,6 +4494,56 @@ declare class GetAddressInfoResponse_GetAddressInfoResponseV0$Type extends Messa
|
|
|
4411
4494
|
* @generated MessageType for protobuf message org.dash.platform.dapi.v0.GetAddressInfoResponse.GetAddressInfoResponseV0
|
|
4412
4495
|
*/
|
|
4413
4496
|
export declare const GetAddressInfoResponse_GetAddressInfoResponseV0: GetAddressInfoResponse_GetAddressInfoResponseV0$Type;
|
|
4497
|
+
declare class GetAddressesInfosRequest$Type extends MessageType<GetAddressesInfosRequest> {
|
|
4498
|
+
constructor();
|
|
4499
|
+
create(value?: PartialMessage<GetAddressesInfosRequest>): GetAddressesInfosRequest;
|
|
4500
|
+
internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetAddressesInfosRequest): GetAddressesInfosRequest;
|
|
4501
|
+
internalBinaryWrite(message: GetAddressesInfosRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
|
|
4502
|
+
}
|
|
4503
|
+
/**
|
|
4504
|
+
* @generated MessageType for protobuf message org.dash.platform.dapi.v0.GetAddressesInfosRequest
|
|
4505
|
+
*/
|
|
4506
|
+
export declare const GetAddressesInfosRequest: GetAddressesInfosRequest$Type;
|
|
4507
|
+
declare class GetAddressesInfosRequest_GetAddressesInfosRequestV0$Type extends MessageType<GetAddressesInfosRequest_GetAddressesInfosRequestV0> {
|
|
4508
|
+
constructor();
|
|
4509
|
+
create(value?: PartialMessage<GetAddressesInfosRequest_GetAddressesInfosRequestV0>): GetAddressesInfosRequest_GetAddressesInfosRequestV0;
|
|
4510
|
+
internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetAddressesInfosRequest_GetAddressesInfosRequestV0): GetAddressesInfosRequest_GetAddressesInfosRequestV0;
|
|
4511
|
+
internalBinaryWrite(message: GetAddressesInfosRequest_GetAddressesInfosRequestV0, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
|
|
4512
|
+
}
|
|
4513
|
+
/**
|
|
4514
|
+
* @generated MessageType for protobuf message org.dash.platform.dapi.v0.GetAddressesInfosRequest.GetAddressesInfosRequestV0
|
|
4515
|
+
*/
|
|
4516
|
+
export declare const GetAddressesInfosRequest_GetAddressesInfosRequestV0: GetAddressesInfosRequest_GetAddressesInfosRequestV0$Type;
|
|
4517
|
+
declare class AddressInfoEntries$Type extends MessageType<AddressInfoEntries> {
|
|
4518
|
+
constructor();
|
|
4519
|
+
create(value?: PartialMessage<AddressInfoEntries>): AddressInfoEntries;
|
|
4520
|
+
internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AddressInfoEntries): AddressInfoEntries;
|
|
4521
|
+
internalBinaryWrite(message: AddressInfoEntries, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
|
|
4522
|
+
}
|
|
4523
|
+
/**
|
|
4524
|
+
* @generated MessageType for protobuf message org.dash.platform.dapi.v0.AddressInfoEntries
|
|
4525
|
+
*/
|
|
4526
|
+
export declare const AddressInfoEntries: AddressInfoEntries$Type;
|
|
4527
|
+
declare class GetAddressesInfosResponse$Type extends MessageType<GetAddressesInfosResponse> {
|
|
4528
|
+
constructor();
|
|
4529
|
+
create(value?: PartialMessage<GetAddressesInfosResponse>): GetAddressesInfosResponse;
|
|
4530
|
+
internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetAddressesInfosResponse): GetAddressesInfosResponse;
|
|
4531
|
+
internalBinaryWrite(message: GetAddressesInfosResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
|
|
4532
|
+
}
|
|
4533
|
+
/**
|
|
4534
|
+
* @generated MessageType for protobuf message org.dash.platform.dapi.v0.GetAddressesInfosResponse
|
|
4535
|
+
*/
|
|
4536
|
+
export declare const GetAddressesInfosResponse: GetAddressesInfosResponse$Type;
|
|
4537
|
+
declare class GetAddressesInfosResponse_GetAddressesInfosResponseV0$Type extends MessageType<GetAddressesInfosResponse_GetAddressesInfosResponseV0> {
|
|
4538
|
+
constructor();
|
|
4539
|
+
create(value?: PartialMessage<GetAddressesInfosResponse_GetAddressesInfosResponseV0>): GetAddressesInfosResponse_GetAddressesInfosResponseV0;
|
|
4540
|
+
internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetAddressesInfosResponse_GetAddressesInfosResponseV0): GetAddressesInfosResponse_GetAddressesInfosResponseV0;
|
|
4541
|
+
internalBinaryWrite(message: GetAddressesInfosResponse_GetAddressesInfosResponseV0, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
|
|
4542
|
+
}
|
|
4543
|
+
/**
|
|
4544
|
+
* @generated MessageType for protobuf message org.dash.platform.dapi.v0.GetAddressesInfosResponse.GetAddressesInfosResponseV0
|
|
4545
|
+
*/
|
|
4546
|
+
export declare const GetAddressesInfosResponse_GetAddressesInfosResponseV0: GetAddressesInfosResponse_GetAddressesInfosResponseV0$Type;
|
|
4414
4547
|
/**
|
|
4415
4548
|
* @generated ServiceType for protobuf service org.dash.platform.dapi.v0.Platform
|
|
4416
4549
|
*/
|
|
@@ -8800,6 +8800,275 @@ class GetAddressInfoResponse_GetAddressInfoResponseV0$Type extends MessageType {
|
|
|
8800
8800
|
* @generated MessageType for protobuf message org.dash.platform.dapi.v0.GetAddressInfoResponse.GetAddressInfoResponseV0
|
|
8801
8801
|
*/
|
|
8802
8802
|
export const GetAddressInfoResponse_GetAddressInfoResponseV0 = new GetAddressInfoResponse_GetAddressInfoResponseV0$Type();
|
|
8803
|
+
// @generated message type with reflection information, may provide speed optimized methods
|
|
8804
|
+
class GetAddressesInfosRequest$Type extends MessageType {
|
|
8805
|
+
constructor() {
|
|
8806
|
+
super("org.dash.platform.dapi.v0.GetAddressesInfosRequest", [
|
|
8807
|
+
{ no: 1, name: "v0", kind: "message", oneof: "version", T: () => GetAddressesInfosRequest_GetAddressesInfosRequestV0 }
|
|
8808
|
+
]);
|
|
8809
|
+
}
|
|
8810
|
+
create(value) {
|
|
8811
|
+
const message = globalThis.Object.create((this.messagePrototype));
|
|
8812
|
+
message.version = { oneofKind: undefined };
|
|
8813
|
+
if (value !== undefined)
|
|
8814
|
+
reflectionMergePartial(this, message, value);
|
|
8815
|
+
return message;
|
|
8816
|
+
}
|
|
8817
|
+
internalBinaryRead(reader, length, options, target) {
|
|
8818
|
+
let message = target ?? this.create(), end = reader.pos + length;
|
|
8819
|
+
while (reader.pos < end) {
|
|
8820
|
+
let [fieldNo, wireType] = reader.tag();
|
|
8821
|
+
switch (fieldNo) {
|
|
8822
|
+
case /* org.dash.platform.dapi.v0.GetAddressesInfosRequest.GetAddressesInfosRequestV0 v0 */ 1:
|
|
8823
|
+
message.version = {
|
|
8824
|
+
oneofKind: "v0",
|
|
8825
|
+
v0: GetAddressesInfosRequest_GetAddressesInfosRequestV0.internalBinaryRead(reader, reader.uint32(), options, message.version.v0)
|
|
8826
|
+
};
|
|
8827
|
+
break;
|
|
8828
|
+
default:
|
|
8829
|
+
let u = options.readUnknownField;
|
|
8830
|
+
if (u === "throw")
|
|
8831
|
+
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
|
|
8832
|
+
let d = reader.skip(wireType);
|
|
8833
|
+
if (u !== false)
|
|
8834
|
+
(u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
|
|
8835
|
+
}
|
|
8836
|
+
}
|
|
8837
|
+
return message;
|
|
8838
|
+
}
|
|
8839
|
+
internalBinaryWrite(message, writer, options) {
|
|
8840
|
+
/* org.dash.platform.dapi.v0.GetAddressesInfosRequest.GetAddressesInfosRequestV0 v0 = 1; */
|
|
8841
|
+
if (message.version.oneofKind === "v0")
|
|
8842
|
+
GetAddressesInfosRequest_GetAddressesInfosRequestV0.internalBinaryWrite(message.version.v0, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
|
|
8843
|
+
let u = options.writeUnknownFields;
|
|
8844
|
+
if (u !== false)
|
|
8845
|
+
(u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
8846
|
+
return writer;
|
|
8847
|
+
}
|
|
8848
|
+
}
|
|
8849
|
+
/**
|
|
8850
|
+
* @generated MessageType for protobuf message org.dash.platform.dapi.v0.GetAddressesInfosRequest
|
|
8851
|
+
*/
|
|
8852
|
+
export const GetAddressesInfosRequest = new GetAddressesInfosRequest$Type();
|
|
8853
|
+
// @generated message type with reflection information, may provide speed optimized methods
|
|
8854
|
+
class GetAddressesInfosRequest_GetAddressesInfosRequestV0$Type extends MessageType {
|
|
8855
|
+
constructor() {
|
|
8856
|
+
super("org.dash.platform.dapi.v0.GetAddressesInfosRequest.GetAddressesInfosRequestV0", [
|
|
8857
|
+
{ no: 1, name: "addresses", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 12 /*ScalarType.BYTES*/ },
|
|
8858
|
+
{ no: 2, name: "prove", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }
|
|
8859
|
+
]);
|
|
8860
|
+
}
|
|
8861
|
+
create(value) {
|
|
8862
|
+
const message = globalThis.Object.create((this.messagePrototype));
|
|
8863
|
+
message.addresses = [];
|
|
8864
|
+
message.prove = false;
|
|
8865
|
+
if (value !== undefined)
|
|
8866
|
+
reflectionMergePartial(this, message, value);
|
|
8867
|
+
return message;
|
|
8868
|
+
}
|
|
8869
|
+
internalBinaryRead(reader, length, options, target) {
|
|
8870
|
+
let message = target ?? this.create(), end = reader.pos + length;
|
|
8871
|
+
while (reader.pos < end) {
|
|
8872
|
+
let [fieldNo, wireType] = reader.tag();
|
|
8873
|
+
switch (fieldNo) {
|
|
8874
|
+
case /* repeated bytes addresses */ 1:
|
|
8875
|
+
message.addresses.push(reader.bytes());
|
|
8876
|
+
break;
|
|
8877
|
+
case /* bool prove */ 2:
|
|
8878
|
+
message.prove = reader.bool();
|
|
8879
|
+
break;
|
|
8880
|
+
default:
|
|
8881
|
+
let u = options.readUnknownField;
|
|
8882
|
+
if (u === "throw")
|
|
8883
|
+
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
|
|
8884
|
+
let d = reader.skip(wireType);
|
|
8885
|
+
if (u !== false)
|
|
8886
|
+
(u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
|
|
8887
|
+
}
|
|
8888
|
+
}
|
|
8889
|
+
return message;
|
|
8890
|
+
}
|
|
8891
|
+
internalBinaryWrite(message, writer, options) {
|
|
8892
|
+
/* repeated bytes addresses = 1; */
|
|
8893
|
+
for (let i = 0; i < message.addresses.length; i++)
|
|
8894
|
+
writer.tag(1, WireType.LengthDelimited).bytes(message.addresses[i]);
|
|
8895
|
+
/* bool prove = 2; */
|
|
8896
|
+
if (message.prove !== false)
|
|
8897
|
+
writer.tag(2, WireType.Varint).bool(message.prove);
|
|
8898
|
+
let u = options.writeUnknownFields;
|
|
8899
|
+
if (u !== false)
|
|
8900
|
+
(u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
8901
|
+
return writer;
|
|
8902
|
+
}
|
|
8903
|
+
}
|
|
8904
|
+
/**
|
|
8905
|
+
* @generated MessageType for protobuf message org.dash.platform.dapi.v0.GetAddressesInfosRequest.GetAddressesInfosRequestV0
|
|
8906
|
+
*/
|
|
8907
|
+
export const GetAddressesInfosRequest_GetAddressesInfosRequestV0 = new GetAddressesInfosRequest_GetAddressesInfosRequestV0$Type();
|
|
8908
|
+
// @generated message type with reflection information, may provide speed optimized methods
|
|
8909
|
+
class AddressInfoEntries$Type extends MessageType {
|
|
8910
|
+
constructor() {
|
|
8911
|
+
super("org.dash.platform.dapi.v0.AddressInfoEntries", [
|
|
8912
|
+
{ no: 1, name: "address_info_entries", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => AddressInfoEntry }
|
|
8913
|
+
]);
|
|
8914
|
+
}
|
|
8915
|
+
create(value) {
|
|
8916
|
+
const message = globalThis.Object.create((this.messagePrototype));
|
|
8917
|
+
message.addressInfoEntries = [];
|
|
8918
|
+
if (value !== undefined)
|
|
8919
|
+
reflectionMergePartial(this, message, value);
|
|
8920
|
+
return message;
|
|
8921
|
+
}
|
|
8922
|
+
internalBinaryRead(reader, length, options, target) {
|
|
8923
|
+
let message = target ?? this.create(), end = reader.pos + length;
|
|
8924
|
+
while (reader.pos < end) {
|
|
8925
|
+
let [fieldNo, wireType] = reader.tag();
|
|
8926
|
+
switch (fieldNo) {
|
|
8927
|
+
case /* repeated org.dash.platform.dapi.v0.AddressInfoEntry address_info_entries */ 1:
|
|
8928
|
+
message.addressInfoEntries.push(AddressInfoEntry.internalBinaryRead(reader, reader.uint32(), options));
|
|
8929
|
+
break;
|
|
8930
|
+
default:
|
|
8931
|
+
let u = options.readUnknownField;
|
|
8932
|
+
if (u === "throw")
|
|
8933
|
+
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
|
|
8934
|
+
let d = reader.skip(wireType);
|
|
8935
|
+
if (u !== false)
|
|
8936
|
+
(u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
|
|
8937
|
+
}
|
|
8938
|
+
}
|
|
8939
|
+
return message;
|
|
8940
|
+
}
|
|
8941
|
+
internalBinaryWrite(message, writer, options) {
|
|
8942
|
+
/* repeated org.dash.platform.dapi.v0.AddressInfoEntry address_info_entries = 1; */
|
|
8943
|
+
for (let i = 0; i < message.addressInfoEntries.length; i++)
|
|
8944
|
+
AddressInfoEntry.internalBinaryWrite(message.addressInfoEntries[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
|
|
8945
|
+
let u = options.writeUnknownFields;
|
|
8946
|
+
if (u !== false)
|
|
8947
|
+
(u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
8948
|
+
return writer;
|
|
8949
|
+
}
|
|
8950
|
+
}
|
|
8951
|
+
/**
|
|
8952
|
+
* @generated MessageType for protobuf message org.dash.platform.dapi.v0.AddressInfoEntries
|
|
8953
|
+
*/
|
|
8954
|
+
export const AddressInfoEntries = new AddressInfoEntries$Type();
|
|
8955
|
+
// @generated message type with reflection information, may provide speed optimized methods
|
|
8956
|
+
class GetAddressesInfosResponse$Type extends MessageType {
|
|
8957
|
+
constructor() {
|
|
8958
|
+
super("org.dash.platform.dapi.v0.GetAddressesInfosResponse", [
|
|
8959
|
+
{ no: 1, name: "v0", kind: "message", oneof: "version", T: () => GetAddressesInfosResponse_GetAddressesInfosResponseV0 }
|
|
8960
|
+
]);
|
|
8961
|
+
}
|
|
8962
|
+
create(value) {
|
|
8963
|
+
const message = globalThis.Object.create((this.messagePrototype));
|
|
8964
|
+
message.version = { oneofKind: undefined };
|
|
8965
|
+
if (value !== undefined)
|
|
8966
|
+
reflectionMergePartial(this, message, value);
|
|
8967
|
+
return message;
|
|
8968
|
+
}
|
|
8969
|
+
internalBinaryRead(reader, length, options, target) {
|
|
8970
|
+
let message = target ?? this.create(), end = reader.pos + length;
|
|
8971
|
+
while (reader.pos < end) {
|
|
8972
|
+
let [fieldNo, wireType] = reader.tag();
|
|
8973
|
+
switch (fieldNo) {
|
|
8974
|
+
case /* org.dash.platform.dapi.v0.GetAddressesInfosResponse.GetAddressesInfosResponseV0 v0 */ 1:
|
|
8975
|
+
message.version = {
|
|
8976
|
+
oneofKind: "v0",
|
|
8977
|
+
v0: GetAddressesInfosResponse_GetAddressesInfosResponseV0.internalBinaryRead(reader, reader.uint32(), options, message.version.v0)
|
|
8978
|
+
};
|
|
8979
|
+
break;
|
|
8980
|
+
default:
|
|
8981
|
+
let u = options.readUnknownField;
|
|
8982
|
+
if (u === "throw")
|
|
8983
|
+
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
|
|
8984
|
+
let d = reader.skip(wireType);
|
|
8985
|
+
if (u !== false)
|
|
8986
|
+
(u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
|
|
8987
|
+
}
|
|
8988
|
+
}
|
|
8989
|
+
return message;
|
|
8990
|
+
}
|
|
8991
|
+
internalBinaryWrite(message, writer, options) {
|
|
8992
|
+
/* org.dash.platform.dapi.v0.GetAddressesInfosResponse.GetAddressesInfosResponseV0 v0 = 1; */
|
|
8993
|
+
if (message.version.oneofKind === "v0")
|
|
8994
|
+
GetAddressesInfosResponse_GetAddressesInfosResponseV0.internalBinaryWrite(message.version.v0, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
|
|
8995
|
+
let u = options.writeUnknownFields;
|
|
8996
|
+
if (u !== false)
|
|
8997
|
+
(u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
8998
|
+
return writer;
|
|
8999
|
+
}
|
|
9000
|
+
}
|
|
9001
|
+
/**
|
|
9002
|
+
* @generated MessageType for protobuf message org.dash.platform.dapi.v0.GetAddressesInfosResponse
|
|
9003
|
+
*/
|
|
9004
|
+
export const GetAddressesInfosResponse = new GetAddressesInfosResponse$Type();
|
|
9005
|
+
// @generated message type with reflection information, may provide speed optimized methods
|
|
9006
|
+
class GetAddressesInfosResponse_GetAddressesInfosResponseV0$Type extends MessageType {
|
|
9007
|
+
constructor() {
|
|
9008
|
+
super("org.dash.platform.dapi.v0.GetAddressesInfosResponse.GetAddressesInfosResponseV0", [
|
|
9009
|
+
{ no: 1, name: "address_info_entries", kind: "message", oneof: "result", T: () => AddressInfoEntries },
|
|
9010
|
+
{ no: 2, name: "proof", kind: "message", oneof: "result", T: () => Proof },
|
|
9011
|
+
{ no: 3, name: "metadata", kind: "message", T: () => ResponseMetadata }
|
|
9012
|
+
]);
|
|
9013
|
+
}
|
|
9014
|
+
create(value) {
|
|
9015
|
+
const message = globalThis.Object.create((this.messagePrototype));
|
|
9016
|
+
message.result = { oneofKind: undefined };
|
|
9017
|
+
if (value !== undefined)
|
|
9018
|
+
reflectionMergePartial(this, message, value);
|
|
9019
|
+
return message;
|
|
9020
|
+
}
|
|
9021
|
+
internalBinaryRead(reader, length, options, target) {
|
|
9022
|
+
let message = target ?? this.create(), end = reader.pos + length;
|
|
9023
|
+
while (reader.pos < end) {
|
|
9024
|
+
let [fieldNo, wireType] = reader.tag();
|
|
9025
|
+
switch (fieldNo) {
|
|
9026
|
+
case /* org.dash.platform.dapi.v0.AddressInfoEntries address_info_entries */ 1:
|
|
9027
|
+
message.result = {
|
|
9028
|
+
oneofKind: "addressInfoEntries",
|
|
9029
|
+
addressInfoEntries: AddressInfoEntries.internalBinaryRead(reader, reader.uint32(), options, message.result.addressInfoEntries)
|
|
9030
|
+
};
|
|
9031
|
+
break;
|
|
9032
|
+
case /* org.dash.platform.dapi.v0.Proof proof */ 2:
|
|
9033
|
+
message.result = {
|
|
9034
|
+
oneofKind: "proof",
|
|
9035
|
+
proof: Proof.internalBinaryRead(reader, reader.uint32(), options, message.result.proof)
|
|
9036
|
+
};
|
|
9037
|
+
break;
|
|
9038
|
+
case /* org.dash.platform.dapi.v0.ResponseMetadata metadata */ 3:
|
|
9039
|
+
message.metadata = ResponseMetadata.internalBinaryRead(reader, reader.uint32(), options, message.metadata);
|
|
9040
|
+
break;
|
|
9041
|
+
default:
|
|
9042
|
+
let u = options.readUnknownField;
|
|
9043
|
+
if (u === "throw")
|
|
9044
|
+
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
|
|
9045
|
+
let d = reader.skip(wireType);
|
|
9046
|
+
if (u !== false)
|
|
9047
|
+
(u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
|
|
9048
|
+
}
|
|
9049
|
+
}
|
|
9050
|
+
return message;
|
|
9051
|
+
}
|
|
9052
|
+
internalBinaryWrite(message, writer, options) {
|
|
9053
|
+
/* org.dash.platform.dapi.v0.AddressInfoEntries address_info_entries = 1; */
|
|
9054
|
+
if (message.result.oneofKind === "addressInfoEntries")
|
|
9055
|
+
AddressInfoEntries.internalBinaryWrite(message.result.addressInfoEntries, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
|
|
9056
|
+
/* org.dash.platform.dapi.v0.Proof proof = 2; */
|
|
9057
|
+
if (message.result.oneofKind === "proof")
|
|
9058
|
+
Proof.internalBinaryWrite(message.result.proof, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
|
|
9059
|
+
/* org.dash.platform.dapi.v0.ResponseMetadata metadata = 3; */
|
|
9060
|
+
if (message.metadata)
|
|
9061
|
+
ResponseMetadata.internalBinaryWrite(message.metadata, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
|
|
9062
|
+
let u = options.writeUnknownFields;
|
|
9063
|
+
if (u !== false)
|
|
9064
|
+
(u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
9065
|
+
return writer;
|
|
9066
|
+
}
|
|
9067
|
+
}
|
|
9068
|
+
/**
|
|
9069
|
+
* @generated MessageType for protobuf message org.dash.platform.dapi.v0.GetAddressesInfosResponse.GetAddressesInfosResponseV0
|
|
9070
|
+
*/
|
|
9071
|
+
export const GetAddressesInfosResponse_GetAddressesInfosResponseV0 = new GetAddressesInfosResponse_GetAddressesInfosResponseV0$Type();
|
|
8803
9072
|
/**
|
|
8804
9073
|
* @generated ServiceType for protobuf service org.dash.platform.dapi.v0.Platform
|
|
8805
9074
|
*/
|
|
@@ -8828,5 +9097,6 @@ export const Platform = new ServiceType("org.dash.platform.dapi.v0.Platform", [
|
|
|
8828
9097
|
{ name: "getTokenDirectPurchasePrices", options: {}, I: GetTokenDirectPurchasePricesRequest, O: GetTokenDirectPurchasePricesResponse },
|
|
8829
9098
|
{ name: "getTokenTotalSupply", options: {}, I: GetTokenTotalSupplyRequest, O: GetTokenTotalSupplyResponse },
|
|
8830
9099
|
{ name: "waitForStateTransitionResult", options: {}, I: WaitForStateTransitionResultRequest, O: WaitForStateTransitionResultResponse },
|
|
8831
|
-
{ name: "getAddressInfo", options: {}, I: GetAddressInfoRequest, O: GetAddressInfoResponse }
|
|
9100
|
+
{ name: "getAddressInfo", options: {}, I: GetAddressInfoRequest, O: GetAddressInfoResponse },
|
|
9101
|
+
{ name: "getAddressesInfos", options: {}, I: GetAddressesInfosRequest, O: GetAddressesInfosResponse }
|
|
8832
9102
|
]);
|
|
@@ -28,7 +28,7 @@ export async function getAddressInfo(grpcPool, platformAddress) {
|
|
|
28
28
|
if (metadata == null) {
|
|
29
29
|
throw new Error('Metadata not found');
|
|
30
30
|
}
|
|
31
|
-
const { rootHash, address, nonce, balance } =
|
|
31
|
+
const { rootHash, address, nonce, balance } = verifyPlatformAddressInfo(proof.grovedbProof, platformAddressWASM, true, LATEST_PLATFORM_VERSION);
|
|
32
32
|
if (address == null || nonce == null || balance == null) {
|
|
33
33
|
throw new Error(`Failed to fetch info for address ${platformAddressWASM.toBech32m(grpcPool.network)}`);
|
|
34
34
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import GRPCConnectionPool from '../grpcConnectionPool.js';
|
|
2
|
+
import { PlatformAddressLike } from 'pshenmic-dpp';
|
|
3
|
+
import { PlatformAddressInfo } from '../../types.js';
|
|
4
|
+
export declare function getAddressesInfos(grpcPool: GRPCConnectionPool, platformAddresses: PlatformAddressLike[]): Promise<PlatformAddressInfo[]>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { PlatformAddressWASM, verifyPlatformAddressesInfos } from 'pshenmic-dpp';
|
|
2
|
+
import { GetAddressesInfosRequest } from '../../proto/generated/platform.js';
|
|
3
|
+
import { LATEST_PLATFORM_VERSION } from '../constants.js';
|
|
4
|
+
import { getQuorumPublicKey } from '../utils/getQuorumPublicKey.js';
|
|
5
|
+
import bytesToHex from '../utils/bytesToHex.js';
|
|
6
|
+
import verifyTenderdashProof from '../utils/verifyTenderdashProof.js';
|
|
7
|
+
export async function getAddressesInfos(grpcPool, platformAddresses) {
|
|
8
|
+
const platformAddressesWASM = platformAddresses.map(addr => new PlatformAddressWASM(addr));
|
|
9
|
+
const getAddressInfoRequest = GetAddressesInfosRequest.create({
|
|
10
|
+
version: {
|
|
11
|
+
oneofKind: 'v0',
|
|
12
|
+
v0: {
|
|
13
|
+
addresses: platformAddressesWASM.map(addr => addr.bytes()),
|
|
14
|
+
prove: true
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
const { response } = await grpcPool.getClient().getAddressesInfos(getAddressInfoRequest);
|
|
19
|
+
const { version } = response;
|
|
20
|
+
if (version.oneofKind !== 'v0') {
|
|
21
|
+
throw new Error('Unexpected oneOf type returned from DAPI (must be v0)');
|
|
22
|
+
}
|
|
23
|
+
const { v0 } = version;
|
|
24
|
+
if (v0.result.oneofKind !== 'proof') {
|
|
25
|
+
throw new Error('Unexpected oneOf type returned from DAPI (must be proof)');
|
|
26
|
+
}
|
|
27
|
+
const { result: { proof }, metadata } = v0;
|
|
28
|
+
if (metadata == null) {
|
|
29
|
+
throw new Error('Metadata not found');
|
|
30
|
+
}
|
|
31
|
+
const { rootHash, infos } = verifyPlatformAddressesInfos(proof.grovedbProof, platformAddressesWASM, true, LATEST_PLATFORM_VERSION);
|
|
32
|
+
const quorumPublicKey = await getQuorumPublicKey(grpcPool.network, proof.quorumType, bytesToHex(proof.quorumHash));
|
|
33
|
+
const verify = await verifyTenderdashProof(proof, metadata, rootHash, quorumPublicKey);
|
|
34
|
+
if (!verify) {
|
|
35
|
+
throw new Error('Failed to verify query');
|
|
36
|
+
}
|
|
37
|
+
return infos
|
|
38
|
+
.map(info => ({
|
|
39
|
+
address: info.address,
|
|
40
|
+
nonce: info.nonce ?? 0,
|
|
41
|
+
balance: BigInt(info.balance ?? 0)
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
@@ -12,4 +12,11 @@ export declare class PlatformAddressesController {
|
|
|
12
12
|
* @return {Promise<PlatformAddressInfo>}
|
|
13
13
|
*/
|
|
14
14
|
getAddressInfo(address: PlatformAddressLike): Promise<PlatformAddressInfo>;
|
|
15
|
+
/**
|
|
16
|
+
* Makes a query for platform addresses infos, returns array with an object with address, balance and nonce
|
|
17
|
+
*
|
|
18
|
+
* @param addresses {PlatformAddressLike[]}
|
|
19
|
+
* @return {Promise<PlatformAddressInfo[]>}
|
|
20
|
+
*/
|
|
21
|
+
getAddressesInfos(addresses: PlatformAddressLike[]): Promise<PlatformAddressInfo[]>;
|
|
15
22
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getAddressInfo } from './getAddressInfo.js';
|
|
2
|
+
import { getAddressesInfos } from './getAddressesInfos.js';
|
|
2
3
|
export class PlatformAddressesController {
|
|
3
4
|
/** @ignore **/
|
|
4
5
|
grpcPool;
|
|
@@ -14,4 +15,13 @@ export class PlatformAddressesController {
|
|
|
14
15
|
async getAddressInfo(address) {
|
|
15
16
|
return await getAddressInfo(this.grpcPool, address);
|
|
16
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Makes a query for platform addresses infos, returns array with an object with address, balance and nonce
|
|
20
|
+
*
|
|
21
|
+
* @param addresses {PlatformAddressLike[]}
|
|
22
|
+
* @return {Promise<PlatformAddressInfo[]>}
|
|
23
|
+
*/
|
|
24
|
+
async getAddressesInfos(addresses) {
|
|
25
|
+
return await getAddressesInfos(this.grpcPool, addresses);
|
|
26
|
+
}
|
|
17
27
|
}
|
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
import { BroadcastStateTransitionRequest } from '../../proto/generated/platform.js';
|
|
2
|
+
import { deserializeConsensusError } from '../utils/deserializeConsensusError.js';
|
|
2
3
|
export default async function broadcast(grpcPool, stateTransition) {
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
try {
|
|
5
|
+
if (stateTransition.signature?.length === 0) {
|
|
6
|
+
throw new Error('State Transition is not signed');
|
|
7
|
+
}
|
|
8
|
+
const broadcastStateTransitionRequest = BroadcastStateTransitionRequest.create({
|
|
9
|
+
stateTransition: stateTransition.bytes()
|
|
10
|
+
});
|
|
11
|
+
await grpcPool.getClient().broadcastStateTransition(broadcastStateTransitionRequest);
|
|
12
|
+
}
|
|
13
|
+
catch (err) {
|
|
14
|
+
if (err.meta?.['dash-serialized-consensus-error-bin']?.length !== 0) {
|
|
15
|
+
throw new Error(deserializeConsensusError(err.meta['dash-serialized-consensus-error-bin']));
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
throw err;
|
|
19
|
+
}
|
|
5
20
|
}
|
|
6
|
-
const broadcastStateTransitionRequest = BroadcastStateTransitionRequest.create({
|
|
7
|
-
stateTransition: stateTransition.bytes()
|
|
8
|
-
});
|
|
9
|
-
await grpcPool.getClient().broadcastStateTransition(broadcastStateTransitionRequest);
|
|
10
21
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function deserializeConsensusError(error: string | Uint8Array): string;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { base64 } from '@scure/base';
|
|
2
|
+
import { ConsensusErrorWASM } from 'pshenmic-dpp';
|
|
3
|
+
export function deserializeConsensusError(error) {
|
|
4
|
+
let normError;
|
|
5
|
+
if (typeof error === 'string') {
|
|
6
|
+
// @scure/base64 works only with padded base64, but cbor can return unpadded base64
|
|
7
|
+
const padding = error.length % 4;
|
|
8
|
+
if (padding !== 0) {
|
|
9
|
+
error += '='.repeat(4 - padding);
|
|
10
|
+
}
|
|
11
|
+
normError = base64.decode(error);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
normError = error;
|
|
15
|
+
}
|
|
16
|
+
return ConsensusErrorWASM.deserialize(normError).message;
|
|
17
|
+
}
|
package/src/utils/index.d.ts
CHANGED
|
@@ -69,4 +69,11 @@ export declare class UtilsController {
|
|
|
69
69
|
* @return {boolean}
|
|
70
70
|
* */
|
|
71
71
|
validateIdentifier(identifier: IdentifierLike): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Allows to deserialize consensus error
|
|
74
|
+
*
|
|
75
|
+
* @param error {string | Uint8Array} error in base64 or bytes
|
|
76
|
+
* @return {string}
|
|
77
|
+
*/
|
|
78
|
+
deserializeConsensusError(error: string | Uint8Array): string;
|
|
72
79
|
}
|
package/src/utils/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import bytesToHex from './bytesToHex.js';
|
|
|
5
5
|
import { createVoterIdentityId } from './createVoterIdentityId.js';
|
|
6
6
|
import { IdentifierWASM } from 'pshenmic-dpp';
|
|
7
7
|
import { createMasternodeIdentityId } from './createMasternodeIdentityId.js';
|
|
8
|
+
import { deserializeConsensusError } from './deserializeConsensusError.js';
|
|
8
9
|
/**
|
|
9
10
|
* Collection of conversion functions
|
|
10
11
|
*
|
|
@@ -98,4 +99,13 @@ export class UtilsController {
|
|
|
98
99
|
return false;
|
|
99
100
|
}
|
|
100
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Allows to deserialize consensus error
|
|
104
|
+
*
|
|
105
|
+
* @param error {string | Uint8Array} error in base64 or bytes
|
|
106
|
+
* @return {string}
|
|
107
|
+
*/
|
|
108
|
+
deserializeConsensusError(error) {
|
|
109
|
+
return deserializeConsensusError(error);
|
|
110
|
+
}
|
|
101
111
|
}
|