@ledgerhq/coin-canton 0.4.0-nightly.1 → 0.4.0-nightly.3
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +20 -0
- package/lib/bridge/signOperation.js +1 -1
- package/lib/bridge/signOperation.js.map +1 -1
- package/lib/common-logic/account/getBalance.js +2 -2
- package/lib/common-logic/account/getBalance.js.map +1 -1
- package/lib/common-logic/account/getBalance.unit.test.js +2 -2
- package/lib/common-logic/account/getBalance.unit.test.js.map +1 -1
- package/lib/common-logic/transaction/broadcast.d.ts.map +1 -1
- package/lib/common-logic/transaction/broadcast.js +11 -3
- package/lib/common-logic/transaction/broadcast.js.map +1 -1
- package/lib/common-logic/transaction/broadcast.test.d.ts +2 -0
- package/lib/common-logic/transaction/broadcast.test.d.ts.map +1 -0
- package/lib/common-logic/transaction/broadcast.test.js +68 -0
- package/lib/common-logic/transaction/broadcast.test.js.map +1 -0
- package/lib/common-logic/transaction/combine.d.ts +1 -1
- package/lib/common-logic/transaction/combine.d.ts.map +1 -1
- package/lib/common-logic/transaction/combine.js +6 -3
- package/lib/common-logic/transaction/combine.js.map +1 -1
- package/lib/common-logic/transaction/combine.test.d.ts +2 -0
- package/lib/common-logic/transaction/combine.test.d.ts.map +1 -0
- package/lib/common-logic/transaction/combine.test.js +28 -0
- package/lib/common-logic/transaction/combine.test.js.map +1 -0
- package/lib/common-logic/transaction/estimateFees.d.ts.map +1 -1
- package/lib/common-logic/transaction/estimateFees.js +2 -15
- package/lib/common-logic/transaction/estimateFees.js.map +1 -1
- package/lib/common-logic/utils.d.ts +0 -1
- package/lib/common-logic/utils.d.ts.map +1 -1
- package/lib/common-logic/utils.js +1 -6
- package/lib/common-logic/utils.js.map +1 -1
- package/lib/network/gateway.d.ts +5 -1
- package/lib/network/gateway.d.ts.map +1 -1
- package/lib/network/gateway.integ.test.js +1 -1
- package/lib/network/gateway.integ.test.js.map +1 -1
- package/lib/network/gateway.js +12 -0
- package/lib/network/gateway.js.map +1 -1
- package/lib-es/bridge/signOperation.js +1 -1
- package/lib-es/bridge/signOperation.js.map +1 -1
- package/lib-es/common-logic/account/getBalance.js +2 -2
- package/lib-es/common-logic/account/getBalance.js.map +1 -1
- package/lib-es/common-logic/account/getBalance.unit.test.js +2 -2
- package/lib-es/common-logic/account/getBalance.unit.test.js.map +1 -1
- package/lib-es/common-logic/transaction/broadcast.d.ts.map +1 -1
- package/lib-es/common-logic/transaction/broadcast.js +8 -3
- package/lib-es/common-logic/transaction/broadcast.js.map +1 -1
- package/lib-es/common-logic/transaction/broadcast.test.d.ts +2 -0
- package/lib-es/common-logic/transaction/broadcast.test.d.ts.map +1 -0
- package/lib-es/common-logic/transaction/broadcast.test.js +33 -0
- package/lib-es/common-logic/transaction/broadcast.test.js.map +1 -0
- package/lib-es/common-logic/transaction/combine.d.ts +1 -1
- package/lib-es/common-logic/transaction/combine.d.ts.map +1 -1
- package/lib-es/common-logic/transaction/combine.js +6 -3
- package/lib-es/common-logic/transaction/combine.js.map +1 -1
- package/lib-es/common-logic/transaction/combine.test.d.ts +2 -0
- package/lib-es/common-logic/transaction/combine.test.d.ts.map +1 -0
- package/lib-es/common-logic/transaction/combine.test.js +26 -0
- package/lib-es/common-logic/transaction/combine.test.js.map +1 -0
- package/lib-es/common-logic/transaction/estimateFees.d.ts.map +1 -1
- package/lib-es/common-logic/transaction/estimateFees.js +2 -15
- package/lib-es/common-logic/transaction/estimateFees.js.map +1 -1
- package/lib-es/common-logic/utils.d.ts +0 -1
- package/lib-es/common-logic/utils.d.ts.map +1 -1
- package/lib-es/common-logic/utils.js +0 -4
- package/lib-es/common-logic/utils.js.map +1 -1
- package/lib-es/network/gateway.d.ts +5 -1
- package/lib-es/network/gateway.d.ts.map +1 -1
- package/lib-es/network/gateway.integ.test.js +1 -1
- package/lib-es/network/gateway.integ.test.js.map +1 -1
- package/lib-es/network/gateway.js +11 -0
- package/lib-es/network/gateway.js.map +1 -1
- package/package.json +3 -3
- package/src/bridge/signOperation.ts +1 -1
- package/src/common-logic/account/getBalance.ts +2 -2
- package/src/common-logic/account/getBalance.unit.test.ts +2 -2
- package/src/common-logic/transaction/broadcast.test.ts +42 -0
- package/src/common-logic/transaction/broadcast.ts +7 -3
- package/src/common-logic/transaction/combine.test.ts +28 -0
- package/src/common-logic/transaction/combine.ts +7 -4
- package/src/common-logic/transaction/estimateFees.ts +2 -14
- package/src/common-logic/utils.ts +0 -5
- package/src/network/gateway.integ.test.ts +3 -1
- package/src/network/gateway.ts +20 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { submit } from "../../network/gateway";
|
|
2
|
+
import * as coinConfigModule from "../../config";
|
|
3
|
+
import { broadcast } from "./broadcast";
|
|
4
|
+
jest.mock("../../network/gateway", () => ({
|
|
5
|
+
submit: jest.fn(),
|
|
6
|
+
}));
|
|
7
|
+
const mockSerialized = JSON.stringify({
|
|
8
|
+
serialized: "serialized-tx",
|
|
9
|
+
signature: "signature",
|
|
10
|
+
});
|
|
11
|
+
describe("broadcast", () => {
|
|
12
|
+
const mockGetCoinConfig = jest.spyOn(coinConfigModule.default, "getCoinConfig");
|
|
13
|
+
afterEach(() => {
|
|
14
|
+
jest.clearAllMocks();
|
|
15
|
+
});
|
|
16
|
+
it("should broadcast", async () => {
|
|
17
|
+
mockGetCoinConfig.mockReturnValue({
|
|
18
|
+
useGateway: true,
|
|
19
|
+
});
|
|
20
|
+
submit.mockResolvedValue({ updateId: "my-update-id" });
|
|
21
|
+
const result = await broadcast(mockSerialized);
|
|
22
|
+
expect(submit).toHaveBeenCalledWith("serialized-tx", "signature");
|
|
23
|
+
expect(result).toEqual("my-update-id");
|
|
24
|
+
});
|
|
25
|
+
it("should throw an error when useGateway is false (not implemented with node)", async () => {
|
|
26
|
+
mockGetCoinConfig.mockReturnValue({
|
|
27
|
+
useGateway: false,
|
|
28
|
+
});
|
|
29
|
+
await expect(broadcast(mockSerialized)).rejects.toThrow("Not implemented");
|
|
30
|
+
expect(submit).not.toHaveBeenCalled();
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=broadcast.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broadcast.test.js","sourceRoot":"","sources":["../../../src/common-logic/transaction/broadcast.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,KAAK,gBAAgB,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC;IACxC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;CAClB,CAAC,CAAC,CAAC;AAEJ,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;IACpC,UAAU,EAAE,eAAe;IAC3B,SAAS,EAAE,WAAW;CACvB,CAAC,CAAC;AAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAEhF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAChC,iBAAiB,CAAC,eAAe,CAAC;YAChC,UAAU,EAAE,IAAI;SACV,CAAC,CAAC;QAET,MAAoB,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;QAEtE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,CAAC;QAE/C,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;QAC1F,iBAAiB,CAAC,eAAe,CAAC;YAChC,UAAU,EAAE,KAAK;SACX,CAAC,CAAC;QAEV,MAAM,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC3E,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function combine(transaction: string, signature: string
|
|
1
|
+
export declare function combine(transaction: string, signature: string): string;
|
|
2
2
|
//# sourceMappingURL=combine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combine.d.ts","sourceRoot":"","sources":["../../../src/common-logic/transaction/combine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"combine.d.ts","sourceRoot":"","sources":["../../../src/common-logic/transaction/combine.ts"],"names":[],"mappings":"AACA,wBAAgB,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAOtE"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { encode } from "../utils";
|
|
2
1
|
// Combines signature with raw transaction
|
|
3
|
-
export function combine(transaction, signature
|
|
4
|
-
|
|
2
|
+
export function combine(transaction, signature) {
|
|
3
|
+
const tx = JSON.parse(transaction);
|
|
4
|
+
return JSON.stringify({
|
|
5
|
+
...tx,
|
|
6
|
+
signature,
|
|
7
|
+
});
|
|
5
8
|
}
|
|
6
9
|
//# sourceMappingURL=combine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combine.js","sourceRoot":"","sources":["../../../src/common-logic/transaction/combine.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"combine.js","sourceRoot":"","sources":["../../../src/common-logic/transaction/combine.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,MAAM,UAAU,OAAO,CAAC,WAAmB,EAAE,SAAiB;IAC5D,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAEnC,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,GAAG,EAAE;QACL,SAAS;KACV,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combine.test.d.ts","sourceRoot":"","sources":["../../../src/common-logic/transaction/combine.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { combine } from "./combine";
|
|
2
|
+
describe("combine", () => {
|
|
3
|
+
it("responds with a Stringify version of the payload to broadcast", () => {
|
|
4
|
+
// GIVEN
|
|
5
|
+
const transaction = {
|
|
6
|
+
transaction: {
|
|
7
|
+
serialized: "SERIALIZED",
|
|
8
|
+
json: "JSON",
|
|
9
|
+
hash: "HASH",
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
const signature = "SIGNATURE";
|
|
13
|
+
// WHEN
|
|
14
|
+
const result = combine(JSON.stringify(transaction), signature);
|
|
15
|
+
// THEN
|
|
16
|
+
expect(JSON.parse(result)).toEqual({
|
|
17
|
+
transaction: {
|
|
18
|
+
serialized: "SERIALIZED",
|
|
19
|
+
json: "JSON",
|
|
20
|
+
hash: "HASH",
|
|
21
|
+
},
|
|
22
|
+
signature: "SIGNATURE",
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
//# sourceMappingURL=combine.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combine.test.js","sourceRoot":"","sources":["../../../src/common-logic/transaction/combine.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,QAAQ;QACR,MAAM,WAAW,GAAG;YAClB,WAAW,EAAE;gBACX,UAAU,EAAE,YAAY;gBACxB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;aACb;SACF,CAAC;QACF,MAAM,SAAS,GAAG,WAAW,CAAC;QAE9B,OAAO;QACP,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC;QAE/D,OAAO;QACP,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YACjC,WAAW,EAAE;gBACX,UAAU,EAAE,YAAY;gBACxB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;aACb;YACD,SAAS,EAAE,WAAW;SACvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estimateFees.d.ts","sourceRoot":"","sources":["../../../src/common-logic/transaction/estimateFees.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"estimateFees.d.ts","sourceRoot":"","sources":["../../../src/common-logic/transaction/estimateFees.ts"],"names":[],"mappings":"AACA,wBAAsB,YAAY,CAAC,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEjF"}
|
|
@@ -1,18 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import { SimulationError } from "../../types/errors";
|
|
1
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3
2
|
export async function estimateFees(serializedTransaction) {
|
|
4
|
-
|
|
5
|
-
// We call the node to do a dry run and estimate fees
|
|
6
|
-
return BigInt(await simulate(serializedTransaction));
|
|
7
|
-
}
|
|
8
|
-
catch (e) {
|
|
9
|
-
// default value is required in case of simulation error, else user will encounter an error in the flow
|
|
10
|
-
if (e instanceof SimulationError) {
|
|
11
|
-
return BigInt(1000);
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
throw new Error("Unexpected error while estimating fees.");
|
|
15
|
-
}
|
|
16
|
-
}
|
|
3
|
+
return Promise.resolve(BigInt(10_000)); // TODO replace with real implementation
|
|
17
4
|
}
|
|
18
5
|
//# sourceMappingURL=estimateFees.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estimateFees.js","sourceRoot":"","sources":["../../../src/common-logic/transaction/estimateFees.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"estimateFees.js","sourceRoot":"","sources":["../../../src/common-logic/transaction/estimateFees.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,qBAA6B;IAC9D,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,wCAAwC;AAClF,CAAC"}
|
|
@@ -2,5 +2,4 @@ import BigNumber from "bignumber.js";
|
|
|
2
2
|
export declare const UINT32_MAX: BigNumber;
|
|
3
3
|
export declare const validateTag: (tag: BigNumber) => boolean;
|
|
4
4
|
export declare function isRecipientValid(recipient: string): boolean;
|
|
5
|
-
export declare const encode: (transaction: string, signature: string, publicKey?: string) => string;
|
|
6
5
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/common-logic/utils.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,eAAO,MAAM,UAAU,WAAoC,CAAC;AAE5D,eAAO,MAAM,WAAW,GAAI,KAAK,SAAS,YAIzC,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE3D
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/common-logic/utils.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,eAAO,MAAM,UAAU,WAAoC,CAAC;AAE5D,eAAO,MAAM,WAAW,GAAI,KAAK,SAAS,YAIzC,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE3D"}
|
|
@@ -6,8 +6,4 @@ export const validateTag = (tag) => {
|
|
|
6
6
|
export function isRecipientValid(recipient) {
|
|
7
7
|
return recipient.length > 0;
|
|
8
8
|
}
|
|
9
|
-
export const encode = (transaction, signature, publicKey) => {
|
|
10
|
-
// sample encoding
|
|
11
|
-
return `${transaction}${publicKey}${signature}encodedTx`;
|
|
12
|
-
};
|
|
13
9
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/common-logic/utils.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAc,EAAE,EAAE;IAC5C,OAAO,CACL,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAC7F,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,CAAC
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/common-logic/utils.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAc,EAAE,EAAE;IAC5C,OAAO,CACL,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAC7F,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -14,8 +14,11 @@ type OnboardingSubmitResponse = {
|
|
|
14
14
|
public_key: string;
|
|
15
15
|
};
|
|
16
16
|
};
|
|
17
|
+
type TransactionSubmitResponse = {
|
|
18
|
+
updateId: string;
|
|
19
|
+
};
|
|
17
20
|
export type InstrumentBalance = {
|
|
18
|
-
|
|
21
|
+
instrument_id: string;
|
|
19
22
|
amount: number;
|
|
20
23
|
locked: boolean;
|
|
21
24
|
};
|
|
@@ -65,6 +68,7 @@ export type TxInfo = {
|
|
|
65
68
|
};
|
|
66
69
|
export declare function prepareOnboarding(pubKey: string, pubKeyType: string): Promise<OnboardingPrepareResponse>;
|
|
67
70
|
export declare function submitOnboarding(prepareRequest: OnboardingPrepareRequest, prepareResponse: OnboardingPrepareResponse, signature: string): Promise<OnboardingSubmitResponse>;
|
|
71
|
+
export declare function submit(serializedTx: string, signature: string): Promise<TransactionSubmitResponse>;
|
|
68
72
|
export declare function getBalance(partyId: string): Promise<InstrumentBalance[]>;
|
|
69
73
|
export declare function getPartyById(partyId: string): Promise<PartyInfo>;
|
|
70
74
|
export declare function getPartyByPubKey(pubKey: string): Promise<PartyInfo>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../src/network/gateway.ts"],"names":[],"mappings":"AAGA,KAAK,yBAAyB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,0BAA0B,EAAE,MAAM,CAAC;CACpC,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAQF,KAAK,wBAAwB,GAAG;IAC9B,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;
|
|
1
|
+
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../src/network/gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@ describe("gateway (devnet)", () => {
|
|
|
31
31
|
const balance = await getBalance("party-4f2e1485107adf5f::122027c6dbbbdbffe0fa3122ae05175f3b9328e879e9ce96b670354deb64a45683c1");
|
|
32
32
|
expect(balance.length).toBeGreaterThanOrEqual(1);
|
|
33
33
|
expect(balance[0].amount).toBeGreaterThanOrEqual(0);
|
|
34
|
-
expect(balance[0].
|
|
34
|
+
expect(balance[0].instrument_id.includes("Splice")).toBe(true);
|
|
35
35
|
});
|
|
36
36
|
});
|
|
37
37
|
describe("getPartyById", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.integ.test.js","sourceRoot":"","sources":["../../src/network/gateway.integ.test.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,WAAW,CAAC;AACnC,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,YAAY,EACZ,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAEnB,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC;YAC9B,UAAU,EAAE,iDAAiD;YAC7D,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,QAAQ;YACrB,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;aACf;SACF,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"gateway.integ.test.js","sourceRoot":"","sources":["../../src/network/gateway.integ.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,17 @@ export async function submitOnboarding(prepareRequest, prepareResponse, signatur
|
|
|
25
25
|
});
|
|
26
26
|
return data;
|
|
27
27
|
}
|
|
28
|
+
export async function submit(serializedTx, signature) {
|
|
29
|
+
const { data } = await network({
|
|
30
|
+
method: "POST",
|
|
31
|
+
url: `${getGatewayUrl()}/v1/node/${getNodeId()}/transaction/submit`,
|
|
32
|
+
data: {
|
|
33
|
+
serialized: serializedTx,
|
|
34
|
+
signature,
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
return data;
|
|
38
|
+
}
|
|
28
39
|
export async function getBalance(partyId) {
|
|
29
40
|
const { data } = await network({
|
|
30
41
|
method: "GET",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/network/gateway.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,UAAU,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/network/gateway.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/coin-canton",
|
|
3
|
-
"version": "0.4.0-nightly.
|
|
3
|
+
"version": "0.4.0-nightly.3",
|
|
4
4
|
"description": "Canton coin integration",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ledger",
|
|
@@ -101,13 +101,13 @@
|
|
|
101
101
|
"bignumber.js": "^9.1.2",
|
|
102
102
|
"invariant": "^2.2.4",
|
|
103
103
|
"rxjs": "^7.8.1",
|
|
104
|
-
"@ledgerhq/coin-framework": "^6.3.0-nightly.
|
|
104
|
+
"@ledgerhq/coin-framework": "^6.3.0-nightly.2",
|
|
105
105
|
"@ledgerhq/cryptoassets": "^13.27.0-nightly.0",
|
|
106
106
|
"@ledgerhq/devices": "8.5.1-nightly.0",
|
|
107
107
|
"@ledgerhq/errors": "^6.25.0-nightly.0",
|
|
108
108
|
"@ledgerhq/live-env": "^2.15.0-nightly.1",
|
|
109
109
|
"@ledgerhq/live-network": "^2.0.16-nightly.1",
|
|
110
|
-
"@ledgerhq/types-live": "^6.83.0-nightly.
|
|
110
|
+
"@ledgerhq/types-live": "^6.83.0-nightly.1"
|
|
111
111
|
},
|
|
112
112
|
"devDependencies": {
|
|
113
113
|
"@types/invariant": "^2.2.37",
|
|
@@ -10,9 +10,9 @@ function adaptInstrument(instrument: InstrumentBalance): Balance {
|
|
|
10
10
|
value: BigInt(instrument.amount),
|
|
11
11
|
locked: instrument.locked === true ? BigInt(instrument.amount) : BigInt(0),
|
|
12
12
|
asset:
|
|
13
|
-
getNativeId() === instrument.
|
|
13
|
+
getNativeId() === instrument.instrument_id
|
|
14
14
|
? { type: "native" }
|
|
15
|
-
: { type: "token", assetReference: instrument.
|
|
15
|
+
: { type: "token", assetReference: instrument.instrument_id },
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
18
|
|
|
@@ -22,12 +22,12 @@ describe("getBalance", () => {
|
|
|
22
22
|
|
|
23
23
|
const mockInstruments = [
|
|
24
24
|
{
|
|
25
|
-
|
|
25
|
+
instrument_id: "native-id",
|
|
26
26
|
amount: "1000",
|
|
27
27
|
locked: false,
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
|
-
|
|
30
|
+
instrument_id: "token-123",
|
|
31
31
|
amount: "5000",
|
|
32
32
|
locked: true,
|
|
33
33
|
},
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { submit } from "../../network/gateway";
|
|
2
|
+
import * as coinConfigModule from "../../config";
|
|
3
|
+
import { broadcast } from "./broadcast";
|
|
4
|
+
|
|
5
|
+
jest.mock("../../network/gateway", () => ({
|
|
6
|
+
submit: jest.fn(),
|
|
7
|
+
}));
|
|
8
|
+
|
|
9
|
+
const mockSerialized = JSON.stringify({
|
|
10
|
+
serialized: "serialized-tx",
|
|
11
|
+
signature: "signature",
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
describe("broadcast", () => {
|
|
15
|
+
const mockGetCoinConfig = jest.spyOn(coinConfigModule.default, "getCoinConfig");
|
|
16
|
+
|
|
17
|
+
afterEach(() => {
|
|
18
|
+
jest.clearAllMocks();
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it("should broadcast", async () => {
|
|
22
|
+
mockGetCoinConfig.mockReturnValue({
|
|
23
|
+
useGateway: true,
|
|
24
|
+
} as any);
|
|
25
|
+
|
|
26
|
+
(submit as jest.Mock).mockResolvedValue({ updateId: "my-update-id" });
|
|
27
|
+
|
|
28
|
+
const result = await broadcast(mockSerialized);
|
|
29
|
+
|
|
30
|
+
expect(submit).toHaveBeenCalledWith("serialized-tx", "signature");
|
|
31
|
+
expect(result).toEqual("my-update-id");
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it("should throw an error when useGateway is false (not implemented with node)", async () => {
|
|
35
|
+
mockGetCoinConfig.mockReturnValue({
|
|
36
|
+
useGateway: false,
|
|
37
|
+
} as any);
|
|
38
|
+
|
|
39
|
+
await expect(broadcast(mockSerialized)).rejects.toThrow("Not implemented");
|
|
40
|
+
expect(submit).not.toHaveBeenCalled();
|
|
41
|
+
});
|
|
42
|
+
});
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import coinConfig from "../../config";
|
|
2
|
+
import { submit } from "../../network/gateway";
|
|
3
|
+
|
|
4
|
+
const useGateway = () => coinConfig.getCoinConfig().useGateway === true;
|
|
2
5
|
|
|
3
6
|
export async function broadcast(signedTx: string): Promise<string> {
|
|
4
|
-
const
|
|
5
|
-
return
|
|
7
|
+
const parsed: { serialized: string; signature: string } = JSON.parse(signedTx);
|
|
8
|
+
if (useGateway()) return (await submit(parsed.serialized, parsed.signature)).updateId;
|
|
9
|
+
else throw new Error("Not implemented");
|
|
6
10
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { combine } from "./combine";
|
|
2
|
+
|
|
3
|
+
describe("combine", () => {
|
|
4
|
+
it("responds with a Stringify version of the payload to broadcast", () => {
|
|
5
|
+
// GIVEN
|
|
6
|
+
const transaction = {
|
|
7
|
+
transaction: {
|
|
8
|
+
serialized: "SERIALIZED",
|
|
9
|
+
json: "JSON",
|
|
10
|
+
hash: "HASH",
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
const signature = "SIGNATURE";
|
|
14
|
+
|
|
15
|
+
// WHEN
|
|
16
|
+
const result = combine(JSON.stringify(transaction), signature);
|
|
17
|
+
|
|
18
|
+
// THEN
|
|
19
|
+
expect(JSON.parse(result)).toEqual({
|
|
20
|
+
transaction: {
|
|
21
|
+
serialized: "SERIALIZED",
|
|
22
|
+
json: "JSON",
|
|
23
|
+
hash: "HASH",
|
|
24
|
+
},
|
|
25
|
+
signature: "SIGNATURE",
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
});
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { encode } from "../utils";
|
|
2
|
-
|
|
3
1
|
// Combines signature with raw transaction
|
|
4
|
-
export function combine(transaction: string, signature: string
|
|
5
|
-
|
|
2
|
+
export function combine(transaction: string, signature: string): string {
|
|
3
|
+
const tx = JSON.parse(transaction);
|
|
4
|
+
|
|
5
|
+
return JSON.stringify({
|
|
6
|
+
...tx,
|
|
7
|
+
signature,
|
|
8
|
+
});
|
|
6
9
|
}
|
|
@@ -1,16 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import { SimulationError } from "../../types/errors";
|
|
3
|
-
|
|
1
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4
2
|
export async function estimateFees(serializedTransaction: string): Promise<bigint> {
|
|
5
|
-
|
|
6
|
-
// We call the node to do a dry run and estimate fees
|
|
7
|
-
return BigInt(await simulate(serializedTransaction));
|
|
8
|
-
} catch (e) {
|
|
9
|
-
// default value is required in case of simulation error, else user will encounter an error in the flow
|
|
10
|
-
if (e instanceof SimulationError) {
|
|
11
|
-
return BigInt(1000);
|
|
12
|
-
} else {
|
|
13
|
-
throw new Error("Unexpected error while estimating fees.");
|
|
14
|
-
}
|
|
15
|
-
}
|
|
3
|
+
return Promise.resolve(BigInt(10_000)); // TODO replace with real implementation
|
|
16
4
|
}
|
|
@@ -11,8 +11,3 @@ export const validateTag = (tag: BigNumber) => {
|
|
|
11
11
|
export function isRecipientValid(recipient: string): boolean {
|
|
12
12
|
return recipient.length > 0;
|
|
13
13
|
}
|
|
14
|
-
|
|
15
|
-
export const encode = (transaction: string, signature: string, publicKey?: string) => {
|
|
16
|
-
// sample encoding
|
|
17
|
-
return `${transaction}${publicKey}${signature}encodedTx`;
|
|
18
|
-
};
|
|
@@ -19,6 +19,7 @@ describe("gateway (devnet)", () => {
|
|
|
19
19
|
},
|
|
20
20
|
}));
|
|
21
21
|
});
|
|
22
|
+
|
|
22
23
|
describe("prepareOnboarding", () => {
|
|
23
24
|
it("should prepare onboarding", async () => {
|
|
24
25
|
const response = await prepareOnboarding(
|
|
@@ -31,6 +32,7 @@ describe("gateway (devnet)", () => {
|
|
|
31
32
|
expect(response).toHaveProperty("topology_transactions_hash");
|
|
32
33
|
}, 30000);
|
|
33
34
|
});
|
|
35
|
+
|
|
34
36
|
describe("getLedgerEnd", () => {
|
|
35
37
|
it("should return ledger end", async () => {
|
|
36
38
|
const end = await getLedgerEnd();
|
|
@@ -45,7 +47,7 @@ describe("gateway (devnet)", () => {
|
|
|
45
47
|
);
|
|
46
48
|
expect(balance.length).toBeGreaterThanOrEqual(1);
|
|
47
49
|
expect(balance[0].amount).toBeGreaterThanOrEqual(0);
|
|
48
|
-
expect(balance[0].
|
|
50
|
+
expect(balance[0].instrument_id.includes("Splice")).toBe(true);
|
|
49
51
|
});
|
|
50
52
|
});
|
|
51
53
|
|
package/src/network/gateway.ts
CHANGED
|
@@ -26,8 +26,15 @@ type OnboardingSubmitResponse = {
|
|
|
26
26
|
};
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
+
type TransactionSubmitRequest = {
|
|
30
|
+
serialized: string;
|
|
31
|
+
signature: string;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
type TransactionSubmitResponse = { updateId: string };
|
|
35
|
+
|
|
29
36
|
export type InstrumentBalance = {
|
|
30
|
-
|
|
37
|
+
instrument_id: string;
|
|
31
38
|
amount: number;
|
|
32
39
|
locked: boolean;
|
|
33
40
|
};
|
|
@@ -118,6 +125,18 @@ export async function submitOnboarding(
|
|
|
118
125
|
return data;
|
|
119
126
|
}
|
|
120
127
|
|
|
128
|
+
export async function submit(serializedTx: string, signature: string) {
|
|
129
|
+
const { data } = await network<TransactionSubmitResponse>({
|
|
130
|
+
method: "POST",
|
|
131
|
+
url: `${getGatewayUrl()}/v1/node/${getNodeId()}/transaction/submit`,
|
|
132
|
+
data: {
|
|
133
|
+
serialized: serializedTx,
|
|
134
|
+
signature,
|
|
135
|
+
} satisfies TransactionSubmitRequest,
|
|
136
|
+
});
|
|
137
|
+
return data;
|
|
138
|
+
}
|
|
139
|
+
|
|
121
140
|
export async function getBalance(partyId: string): Promise<InstrumentBalance[]> {
|
|
122
141
|
const { data } = await network<InstrumentBalance[]>({
|
|
123
142
|
method: "GET",
|