@ledgerhq/coin-aptos 1.4.0-nightly.1 → 1.4.0-nightly.2
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 +14 -0
- package/lib/__tests__/bridge/getFeesForTransaction.test.js +17 -17
- package/lib/__tests__/bridge/getFeesForTransaction.test.js.map +1 -1
- package/lib/bridge/getFeesForTransaction.d.ts.map +1 -1
- package/lib/bridge/getFeesForTransaction.js +5 -21
- package/lib/bridge/getFeesForTransaction.js.map +1 -1
- package/lib-es/__tests__/bridge/getFeesForTransaction.test.js +17 -17
- package/lib-es/__tests__/bridge/getFeesForTransaction.test.js.map +1 -1
- package/lib-es/bridge/getFeesForTransaction.d.ts.map +1 -1
- package/lib-es/bridge/getFeesForTransaction.js +5 -21
- package/lib-es/bridge/getFeesForTransaction.js.map +1 -1
- package/package.json +4 -4
- package/src/__tests__/bridge/getFeesForTransaction.test.ts +18 -20
- package/src/bridge/getFeesForTransaction.ts +10 -23
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @ledgerhq/coin-aptos@1.4.0-nightly.
|
|
2
|
+
> @ledgerhq/coin-aptos@1.4.0-nightly.1 build /home/runner/work/ledger-live/ledger-live/libs/coin-modules/coin-aptos
|
|
3
3
|
> tsc && tsc -m ES6 --outDir lib-es
|
|
4
4
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @ledgerhq/coin-aptos
|
|
2
2
|
|
|
3
|
+
## 1.4.0-nightly.2
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#9046](https://github.com/LedgerHQ/ledger-live/pull/9046) [`c4cb2a3`](https://github.com/LedgerHQ/ledger-live/commit/c4cb2a3e16cb6542a386c3c90f4ec5d3fca9ecf8) Thanks [@may01](https://github.com/may01)! - Change test values to differ from default one
|
|
8
|
+
|
|
9
|
+
- [#9034](https://github.com/LedgerHQ/ledger-live/pull/9034) [`335f059`](https://github.com/LedgerHQ/ledger-live/commit/335f059cc8b8727576f2f95ef2be45a53bc892fa) Thanks [@may01](https://github.com/may01)! - Use makeLRUCache for getEstimatedGas
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [[`9534f17`](https://github.com/LedgerHQ/ledger-live/commit/9534f17247e1472b0fee8b993a83264f4e4ab363)]:
|
|
14
|
+
- @ledgerhq/cryptoassets@13.10.0-nightly.1
|
|
15
|
+
- @ledgerhq/coin-framework@0.24.1-nightly.0
|
|
16
|
+
|
|
3
17
|
## 1.4.0-nightly.1
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
|
@@ -74,8 +74,8 @@ describe("getFeesForTransaction Test", () => {
|
|
|
74
74
|
success: false,
|
|
75
75
|
vm_status: ["INSUFFICIENT_BALANCE"],
|
|
76
76
|
expiration_timestamp_secs: 5,
|
|
77
|
-
gas_used: "
|
|
78
|
-
gas_unit_price: "
|
|
77
|
+
gas_used: "202",
|
|
78
|
+
gas_unit_price: "102",
|
|
79
79
|
},
|
|
80
80
|
]);
|
|
81
81
|
const account = (0, bridge_fixture_1.createFixtureAccount)();
|
|
@@ -86,10 +86,10 @@ describe("getFeesForTransaction Test", () => {
|
|
|
86
86
|
account.spendableBalance = new bignumber_js_1.default(100000000);
|
|
87
87
|
const result = yield getFeesForTransaction.getFee(account, transaction, aptosClient);
|
|
88
88
|
const expected = {
|
|
89
|
-
fees: new bignumber_js_1.default(
|
|
89
|
+
fees: new bignumber_js_1.default(20604),
|
|
90
90
|
estimate: {
|
|
91
|
-
maxGasAmount: "
|
|
92
|
-
gasUnitPrice: "
|
|
91
|
+
maxGasAmount: "202",
|
|
92
|
+
gasUnitPrice: "102",
|
|
93
93
|
},
|
|
94
94
|
errors: {},
|
|
95
95
|
};
|
|
@@ -121,7 +121,7 @@ describe("getFeesForTransaction Test", () => {
|
|
|
121
121
|
});
|
|
122
122
|
describe("when using getEstimatedGas", () => {
|
|
123
123
|
describe("when key not in cache", () => {
|
|
124
|
-
it("should return
|
|
124
|
+
it("should return fee", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
125
125
|
simulateTransaction = jest.fn(() => [
|
|
126
126
|
{
|
|
127
127
|
success: true,
|
|
@@ -154,30 +154,30 @@ describe("getFeesForTransaction Test", () => {
|
|
|
154
154
|
jest.clearAllMocks();
|
|
155
155
|
});
|
|
156
156
|
it("should return cached fee", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
157
|
-
const mocked = jest.spyOn(getFeesForTransaction, "getFee");
|
|
158
|
-
const account = (0, bridge_fixture_1.createFixtureAccount)();
|
|
159
|
-
const transaction = (0, bridge_fixture_1.createFixtureTransaction)();
|
|
160
|
-
const aptosClient = new api_1.AptosAPI(account.currency.id);
|
|
161
|
-
transaction.amount = new bignumber_js_1.default(10);
|
|
162
157
|
simulateTransaction = jest.fn(() => [
|
|
163
158
|
{
|
|
164
159
|
success: true,
|
|
165
160
|
vm_status: [],
|
|
166
161
|
expiration_timestamp_secs: 5,
|
|
167
|
-
gas_used: "
|
|
168
|
-
gas_unit_price: "
|
|
162
|
+
gas_used: "202",
|
|
163
|
+
gas_unit_price: "102",
|
|
169
164
|
},
|
|
170
165
|
]);
|
|
166
|
+
const account = (0, bridge_fixture_1.createFixtureAccount)();
|
|
167
|
+
account.xpub = "xpub";
|
|
168
|
+
const transaction = (0, bridge_fixture_1.createFixtureTransaction)();
|
|
169
|
+
const aptosClient = new api_1.AptosAPI(account.currency.id);
|
|
170
|
+
transaction.amount = new bignumber_js_1.default(10);
|
|
171
171
|
const result1 = yield getFeesForTransaction.getEstimatedGas(account, transaction, aptosClient);
|
|
172
172
|
const result2 = yield getFeesForTransaction.getEstimatedGas(account, transaction, aptosClient);
|
|
173
|
-
expect(
|
|
173
|
+
expect(simulateTransaction.mock.calls).toHaveLength(1);
|
|
174
174
|
const expected = {
|
|
175
175
|
errors: {},
|
|
176
176
|
estimate: {
|
|
177
|
-
gasUnitPrice: "
|
|
178
|
-
maxGasAmount: "
|
|
177
|
+
gasUnitPrice: "102",
|
|
178
|
+
maxGasAmount: "202",
|
|
179
179
|
},
|
|
180
|
-
fees: new bignumber_js_1.default("
|
|
180
|
+
fees: new bignumber_js_1.default("20604"),
|
|
181
181
|
};
|
|
182
182
|
expect(result1).toEqual(expected);
|
|
183
183
|
expect(result2).toEqual(expected);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFeesForTransaction.test.js","sourceRoot":"","sources":["../../../src/__tests__/bridge/getFeesForTransaction.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"getFeesForTransaction.test.js","sourceRoot":"","sources":["../../../src/__tests__/bridge/getFeesForTransaction.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFeesForTransaction.d.ts","sourceRoot":"","sources":["../../src/bridge/getFeesForTransaction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,SAAS,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"getFeesForTransaction.d.ts","sourceRoot":"","sources":["../../src/bridge/getFeesForTransaction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGlC,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE/D,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,MAAM,EAAE,iBAAiB,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,MAAM,YACR,OAAO,eACH,WAAW,eACX,QAAQ,KACpB,QAAQ,0BAA0B,CA+CpC,CAAC;AAUF,eAAO,MAAM,eAAe,YACjB,OAAO,eACH,WAAW,eACX,QAAQ,KACpB,QAAQ,0BAA0B,CAEpC,CAAC"}
|
|
@@ -16,19 +16,9 @@ exports.getEstimatedGas = exports.getFee = void 0;
|
|
|
16
16
|
const ts_sdk_1 = require("@aptos-labs/ts-sdk");
|
|
17
17
|
const logs_1 = require("@ledgerhq/logs");
|
|
18
18
|
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
19
|
+
const cache_1 = require("@ledgerhq/live-network/cache");
|
|
19
20
|
const buildTransaction_1 = __importDefault(require("./buildTransaction"));
|
|
20
21
|
const logic_1 = require("./logic");
|
|
21
|
-
const CACHE = {
|
|
22
|
-
amount: new bignumber_js_1.default(0),
|
|
23
|
-
estimate: Promise.resolve({
|
|
24
|
-
fees: new bignumber_js_1.default(0),
|
|
25
|
-
estimate: {
|
|
26
|
-
maxGasAmount: "",
|
|
27
|
-
gasUnitPrice: "",
|
|
28
|
-
},
|
|
29
|
-
errors: {},
|
|
30
|
-
}),
|
|
31
|
-
};
|
|
32
22
|
const getFee = (account, transaction, aptosClient) => __awaiter(void 0, void 0, void 0, function* () {
|
|
33
23
|
const res = {
|
|
34
24
|
fees: new bignumber_js_1.default(logic_1.DEFAULT_GAS).multipliedBy(logic_1.DEFAULT_GAS_PRICE),
|
|
@@ -74,17 +64,11 @@ const getFee = (account, transaction, aptosClient) => __awaiter(void 0, void 0,
|
|
|
74
64
|
return res;
|
|
75
65
|
});
|
|
76
66
|
exports.getFee = getFee;
|
|
67
|
+
const CACHE = (0, cache_1.makeLRUCache)(exports.getFee, (_account, transaction, _aptosClient) => {
|
|
68
|
+
return transaction.amount.toString();
|
|
69
|
+
}, (0, cache_1.seconds)(30));
|
|
77
70
|
const getEstimatedGas = (account, transaction, aptosClient) => __awaiter(void 0, void 0, void 0, function* () {
|
|
78
|
-
|
|
79
|
-
CACHE.estimate = (0, exports.getFee)(account, transaction, aptosClient);
|
|
80
|
-
CACHE.amount = transaction.amount;
|
|
81
|
-
}
|
|
82
|
-
// XXX: we await Promise form getFee() in this place to make cache work for asynchronous calls
|
|
83
|
-
// Example [if wee await getFee()]: thread 1 goes to getFee() and awaits there for transaction simulation.
|
|
84
|
-
// at this moment thread 2 will enter getEstimatedGas() CACHE is not set yet, it will call getFee() as well
|
|
85
|
-
// Current implementation: CACHE.estimate set immediately after getFee() is called, so thread 2 will not go under if clause
|
|
86
|
-
// and both treads will wait for promise resolve in return statement.
|
|
87
|
-
return yield CACHE.estimate;
|
|
71
|
+
return yield CACHE(account, transaction, aptosClient);
|
|
88
72
|
});
|
|
89
73
|
exports.getEstimatedGas = getEstimatedGas;
|
|
90
74
|
//# sourceMappingURL=getFeesForTransaction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFeesForTransaction.js","sourceRoot":"","sources":["../../src/bridge/getFeesForTransaction.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,+CAAsD;AACtD,yCAAqC;AAErC,gEAAqC;
|
|
1
|
+
{"version":3,"file":"getFeesForTransaction.js","sourceRoot":"","sources":["../../src/bridge/getFeesForTransaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,8 +46,8 @@ describe("getFeesForTransaction Test", () => {
|
|
|
46
46
|
success: false,
|
|
47
47
|
vm_status: ["INSUFFICIENT_BALANCE"],
|
|
48
48
|
expiration_timestamp_secs: 5,
|
|
49
|
-
gas_used: "
|
|
50
|
-
gas_unit_price: "
|
|
49
|
+
gas_used: "202",
|
|
50
|
+
gas_unit_price: "102",
|
|
51
51
|
},
|
|
52
52
|
]);
|
|
53
53
|
const account = createFixtureAccount();
|
|
@@ -58,10 +58,10 @@ describe("getFeesForTransaction Test", () => {
|
|
|
58
58
|
account.spendableBalance = new BigNumber(100000000);
|
|
59
59
|
const result = yield getFeesForTransaction.getFee(account, transaction, aptosClient);
|
|
60
60
|
const expected = {
|
|
61
|
-
fees: new BigNumber(
|
|
61
|
+
fees: new BigNumber(20604),
|
|
62
62
|
estimate: {
|
|
63
|
-
maxGasAmount: "
|
|
64
|
-
gasUnitPrice: "
|
|
63
|
+
maxGasAmount: "202",
|
|
64
|
+
gasUnitPrice: "102",
|
|
65
65
|
},
|
|
66
66
|
errors: {},
|
|
67
67
|
};
|
|
@@ -93,7 +93,7 @@ describe("getFeesForTransaction Test", () => {
|
|
|
93
93
|
});
|
|
94
94
|
describe("when using getEstimatedGas", () => {
|
|
95
95
|
describe("when key not in cache", () => {
|
|
96
|
-
it("should return
|
|
96
|
+
it("should return fee", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
97
97
|
simulateTransaction = jest.fn(() => [
|
|
98
98
|
{
|
|
99
99
|
success: true,
|
|
@@ -126,30 +126,30 @@ describe("getFeesForTransaction Test", () => {
|
|
|
126
126
|
jest.clearAllMocks();
|
|
127
127
|
});
|
|
128
128
|
it("should return cached fee", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
129
|
-
const mocked = jest.spyOn(getFeesForTransaction, "getFee");
|
|
130
|
-
const account = createFixtureAccount();
|
|
131
|
-
const transaction = createFixtureTransaction();
|
|
132
|
-
const aptosClient = new AptosAPI(account.currency.id);
|
|
133
|
-
transaction.amount = new BigNumber(10);
|
|
134
129
|
simulateTransaction = jest.fn(() => [
|
|
135
130
|
{
|
|
136
131
|
success: true,
|
|
137
132
|
vm_status: [],
|
|
138
133
|
expiration_timestamp_secs: 5,
|
|
139
|
-
gas_used: "
|
|
140
|
-
gas_unit_price: "
|
|
134
|
+
gas_used: "202",
|
|
135
|
+
gas_unit_price: "102",
|
|
141
136
|
},
|
|
142
137
|
]);
|
|
138
|
+
const account = createFixtureAccount();
|
|
139
|
+
account.xpub = "xpub";
|
|
140
|
+
const transaction = createFixtureTransaction();
|
|
141
|
+
const aptosClient = new AptosAPI(account.currency.id);
|
|
142
|
+
transaction.amount = new BigNumber(10);
|
|
143
143
|
const result1 = yield getFeesForTransaction.getEstimatedGas(account, transaction, aptosClient);
|
|
144
144
|
const result2 = yield getFeesForTransaction.getEstimatedGas(account, transaction, aptosClient);
|
|
145
|
-
expect(
|
|
145
|
+
expect(simulateTransaction.mock.calls).toHaveLength(1);
|
|
146
146
|
const expected = {
|
|
147
147
|
errors: {},
|
|
148
148
|
estimate: {
|
|
149
|
-
gasUnitPrice: "
|
|
150
|
-
maxGasAmount: "
|
|
149
|
+
gasUnitPrice: "102",
|
|
150
|
+
maxGasAmount: "202",
|
|
151
151
|
},
|
|
152
|
-
fees: new BigNumber("
|
|
152
|
+
fees: new BigNumber("20604"),
|
|
153
153
|
};
|
|
154
154
|
expect(result1).toEqual(expected);
|
|
155
155
|
expect(result2).toEqual(expected);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFeesForTransaction.test.js","sourceRoot":"","sources":["../../../src/__tests__/bridge/getFeesForTransaction.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"getFeesForTransaction.test.js","sourceRoot":"","sources":["../../../src/__tests__/bridge/getFeesForTransaction.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFeesForTransaction.d.ts","sourceRoot":"","sources":["../../src/bridge/getFeesForTransaction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,SAAS,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"getFeesForTransaction.d.ts","sourceRoot":"","sources":["../../src/bridge/getFeesForTransaction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGlC,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE/D,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,MAAM,EAAE,iBAAiB,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,MAAM,YACR,OAAO,eACH,WAAW,eACX,QAAQ,KACpB,QAAQ,0BAA0B,CA+CpC,CAAC;AAUF,eAAO,MAAM,eAAe,YACjB,OAAO,eACH,WAAW,eACX,QAAQ,KACpB,QAAQ,0BAA0B,CAEpC,CAAC"}
|
|
@@ -10,19 +10,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
import { Ed25519PublicKey } from "@aptos-labs/ts-sdk";
|
|
11
11
|
import { log } from "@ledgerhq/logs";
|
|
12
12
|
import BigNumber from "bignumber.js";
|
|
13
|
+
import { makeLRUCache, seconds } from "@ledgerhq/live-network/cache";
|
|
13
14
|
import buildTransaction from "./buildTransaction";
|
|
14
15
|
import { DEFAULT_GAS, DEFAULT_GAS_PRICE, ESTIMATE_GAS_MUL } from "./logic";
|
|
15
|
-
const CACHE = {
|
|
16
|
-
amount: new BigNumber(0),
|
|
17
|
-
estimate: Promise.resolve({
|
|
18
|
-
fees: new BigNumber(0),
|
|
19
|
-
estimate: {
|
|
20
|
-
maxGasAmount: "",
|
|
21
|
-
gasUnitPrice: "",
|
|
22
|
-
},
|
|
23
|
-
errors: {},
|
|
24
|
-
}),
|
|
25
|
-
};
|
|
26
16
|
export const getFee = (account, transaction, aptosClient) => __awaiter(void 0, void 0, void 0, function* () {
|
|
27
17
|
const res = {
|
|
28
18
|
fees: new BigNumber(DEFAULT_GAS).multipliedBy(DEFAULT_GAS_PRICE),
|
|
@@ -67,16 +57,10 @@ export const getFee = (account, transaction, aptosClient) => __awaiter(void 0, v
|
|
|
67
57
|
}
|
|
68
58
|
return res;
|
|
69
59
|
});
|
|
60
|
+
const CACHE = makeLRUCache(getFee, (_account, transaction, _aptosClient) => {
|
|
61
|
+
return transaction.amount.toString();
|
|
62
|
+
}, seconds(30));
|
|
70
63
|
export const getEstimatedGas = (account, transaction, aptosClient) => __awaiter(void 0, void 0, void 0, function* () {
|
|
71
|
-
|
|
72
|
-
CACHE.estimate = getFee(account, transaction, aptosClient);
|
|
73
|
-
CACHE.amount = transaction.amount;
|
|
74
|
-
}
|
|
75
|
-
// XXX: we await Promise form getFee() in this place to make cache work for asynchronous calls
|
|
76
|
-
// Example [if wee await getFee()]: thread 1 goes to getFee() and awaits there for transaction simulation.
|
|
77
|
-
// at this moment thread 2 will enter getEstimatedGas() CACHE is not set yet, it will call getFee() as well
|
|
78
|
-
// Current implementation: CACHE.estimate set immediately after getFee() is called, so thread 2 will not go under if clause
|
|
79
|
-
// and both treads will wait for promise resolve in return statement.
|
|
80
|
-
return yield CACHE.estimate;
|
|
64
|
+
return yield CACHE(account, transaction, aptosClient);
|
|
81
65
|
});
|
|
82
66
|
//# sourceMappingURL=getFeesForTransaction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFeesForTransaction.js","sourceRoot":"","sources":["../../src/bridge/getFeesForTransaction.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC,OAAO,SAAS,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"getFeesForTransaction.js","sourceRoot":"","sources":["../../src/bridge/getFeesForTransaction.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/coin-aptos",
|
|
3
|
-
"version": "1.4.0-nightly.
|
|
3
|
+
"version": "1.4.0-nightly.2",
|
|
4
4
|
"description": "Ledger Aptos Coin integration",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ledger",
|
|
@@ -89,14 +89,14 @@
|
|
|
89
89
|
"invariant": "^2.2.4",
|
|
90
90
|
"lodash": "^4.17.21",
|
|
91
91
|
"rxjs": "^7.8.1",
|
|
92
|
-
"@ledgerhq/coin-framework": "^0.
|
|
93
|
-
"@ledgerhq/cryptoassets": "^13.10.0-nightly.
|
|
92
|
+
"@ledgerhq/coin-framework": "^0.24.1-nightly.0",
|
|
93
|
+
"@ledgerhq/cryptoassets": "^13.10.0-nightly.1",
|
|
94
94
|
"@ledgerhq/devices": "8.4.4",
|
|
95
95
|
"@ledgerhq/errors": "^6.19.1",
|
|
96
96
|
"@ledgerhq/live-env": "^2.5.0",
|
|
97
97
|
"@ledgerhq/live-network": "^2.0.4",
|
|
98
98
|
"@ledgerhq/logs": "^6.12.0",
|
|
99
|
-
"@ledgerhq/types-live": "^6.58.0
|
|
99
|
+
"@ledgerhq/types-live": "^6.58.0"
|
|
100
100
|
},
|
|
101
101
|
"devDependencies": {
|
|
102
102
|
"@faker-js/faker": "^9.4.0",
|
|
@@ -42,8 +42,8 @@ describe("getFeesForTransaction Test", () => {
|
|
|
42
42
|
success: false,
|
|
43
43
|
vm_status: ["INSUFFICIENT_BALANCE"],
|
|
44
44
|
expiration_timestamp_secs: 5,
|
|
45
|
-
gas_used: "
|
|
46
|
-
gas_unit_price: "
|
|
45
|
+
gas_used: "202",
|
|
46
|
+
gas_unit_price: "102",
|
|
47
47
|
},
|
|
48
48
|
]);
|
|
49
49
|
|
|
@@ -58,10 +58,10 @@ describe("getFeesForTransaction Test", () => {
|
|
|
58
58
|
const result = await getFeesForTransaction.getFee(account, transaction, aptosClient);
|
|
59
59
|
|
|
60
60
|
const expected = {
|
|
61
|
-
fees: new BigNumber(
|
|
61
|
+
fees: new BigNumber(20604),
|
|
62
62
|
estimate: {
|
|
63
|
-
maxGasAmount: "
|
|
64
|
-
gasUnitPrice: "
|
|
63
|
+
maxGasAmount: "202",
|
|
64
|
+
gasUnitPrice: "102",
|
|
65
65
|
},
|
|
66
66
|
errors: {},
|
|
67
67
|
};
|
|
@@ -99,7 +99,7 @@ describe("getFeesForTransaction Test", () => {
|
|
|
99
99
|
|
|
100
100
|
describe("when using getEstimatedGas", () => {
|
|
101
101
|
describe("when key not in cache", () => {
|
|
102
|
-
it("should return
|
|
102
|
+
it("should return fee", async () => {
|
|
103
103
|
simulateTransaction = jest.fn(() => [
|
|
104
104
|
{
|
|
105
105
|
success: true,
|
|
@@ -143,23 +143,21 @@ describe("getFeesForTransaction Test", () => {
|
|
|
143
143
|
});
|
|
144
144
|
|
|
145
145
|
it("should return cached fee", async () => {
|
|
146
|
-
const mocked = jest.spyOn(getFeesForTransaction, "getFee");
|
|
147
|
-
|
|
148
|
-
const account = createFixtureAccount();
|
|
149
|
-
const transaction = createFixtureTransaction();
|
|
150
|
-
const aptosClient = new AptosAPI(account.currency.id);
|
|
151
|
-
|
|
152
|
-
transaction.amount = new BigNumber(10);
|
|
153
|
-
|
|
154
146
|
simulateTransaction = jest.fn(() => [
|
|
155
147
|
{
|
|
156
148
|
success: true,
|
|
157
149
|
vm_status: [],
|
|
158
150
|
expiration_timestamp_secs: 5,
|
|
159
|
-
gas_used: "
|
|
160
|
-
gas_unit_price: "
|
|
151
|
+
gas_used: "202",
|
|
152
|
+
gas_unit_price: "102",
|
|
161
153
|
},
|
|
162
154
|
]);
|
|
155
|
+
const account = createFixtureAccount();
|
|
156
|
+
account.xpub = "xpub";
|
|
157
|
+
const transaction = createFixtureTransaction();
|
|
158
|
+
const aptosClient = new AptosAPI(account.currency.id);
|
|
159
|
+
|
|
160
|
+
transaction.amount = new BigNumber(10);
|
|
163
161
|
|
|
164
162
|
const result1 = await getFeesForTransaction.getEstimatedGas(
|
|
165
163
|
account,
|
|
@@ -172,15 +170,15 @@ describe("getFeesForTransaction Test", () => {
|
|
|
172
170
|
aptosClient,
|
|
173
171
|
);
|
|
174
172
|
|
|
175
|
-
expect(
|
|
173
|
+
expect(simulateTransaction.mock.calls).toHaveLength(1);
|
|
176
174
|
|
|
177
175
|
const expected = {
|
|
178
176
|
errors: {},
|
|
179
177
|
estimate: {
|
|
180
|
-
gasUnitPrice: "
|
|
181
|
-
maxGasAmount: "
|
|
178
|
+
gasUnitPrice: "102",
|
|
179
|
+
maxGasAmount: "202",
|
|
182
180
|
},
|
|
183
|
-
fees: new BigNumber("
|
|
181
|
+
fees: new BigNumber("20604"),
|
|
184
182
|
};
|
|
185
183
|
|
|
186
184
|
expect(result1).toEqual(expected);
|
|
@@ -2,6 +2,7 @@ import { Ed25519PublicKey } from "@aptos-labs/ts-sdk";
|
|
|
2
2
|
import { log } from "@ledgerhq/logs";
|
|
3
3
|
import type { Account } from "@ledgerhq/types-live";
|
|
4
4
|
import BigNumber from "bignumber.js";
|
|
5
|
+
import { makeLRUCache, seconds } from "@ledgerhq/live-network/cache";
|
|
5
6
|
import { AptosAPI } from "../api";
|
|
6
7
|
import buildTransaction from "./buildTransaction";
|
|
7
8
|
import { DEFAULT_GAS, DEFAULT_GAS_PRICE, ESTIMATE_GAS_MUL } from "./logic";
|
|
@@ -16,18 +17,6 @@ type IGetEstimatedGasReturnType = {
|
|
|
16
17
|
errors: TransactionErrors;
|
|
17
18
|
};
|
|
18
19
|
|
|
19
|
-
const CACHE = {
|
|
20
|
-
amount: new BigNumber(0),
|
|
21
|
-
estimate: Promise.resolve({
|
|
22
|
-
fees: new BigNumber(0),
|
|
23
|
-
estimate: {
|
|
24
|
-
maxGasAmount: "",
|
|
25
|
-
gasUnitPrice: "",
|
|
26
|
-
},
|
|
27
|
-
errors: {},
|
|
28
|
-
}),
|
|
29
|
-
};
|
|
30
|
-
|
|
31
20
|
export const getFee = async (
|
|
32
21
|
account: Account,
|
|
33
22
|
transaction: Transaction,
|
|
@@ -81,20 +70,18 @@ export const getFee = async (
|
|
|
81
70
|
return res;
|
|
82
71
|
};
|
|
83
72
|
|
|
73
|
+
const CACHE = makeLRUCache(
|
|
74
|
+
getFee,
|
|
75
|
+
(_account: Account, transaction: Transaction, _aptosClient: AptosAPI) => {
|
|
76
|
+
return transaction.amount.toString();
|
|
77
|
+
},
|
|
78
|
+
seconds(30),
|
|
79
|
+
);
|
|
80
|
+
|
|
84
81
|
export const getEstimatedGas = async (
|
|
85
82
|
account: Account,
|
|
86
83
|
transaction: Transaction,
|
|
87
84
|
aptosClient: AptosAPI,
|
|
88
85
|
): Promise<IGetEstimatedGasReturnType> => {
|
|
89
|
-
|
|
90
|
-
CACHE.estimate = getFee(account, transaction, aptosClient);
|
|
91
|
-
CACHE.amount = transaction.amount;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
// XXX: we await Promise form getFee() in this place to make cache work for asynchronous calls
|
|
95
|
-
// Example [if wee await getFee()]: thread 1 goes to getFee() and awaits there for transaction simulation.
|
|
96
|
-
// at this moment thread 2 will enter getEstimatedGas() CACHE is not set yet, it will call getFee() as well
|
|
97
|
-
// Current implementation: CACHE.estimate set immediately after getFee() is called, so thread 2 will not go under if clause
|
|
98
|
-
// and both treads will wait for promise resolve in return statement.
|
|
99
|
-
return await CACHE.estimate;
|
|
86
|
+
return await CACHE(account, transaction, aptosClient);
|
|
100
87
|
};
|