@ledgerhq/coin-aptos 1.4.0-next.0 → 1.4.0-nightly.0
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/CHANGELOG.md +4 -9
- 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 +21 -5
- 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 +21 -5
- package/lib-es/bridge/getFeesForTransaction.js.map +1 -1
- package/package.json +4 -4
- package/src/__tests__/bridge/getFeesForTransaction.test.ts +20 -18
- package/src/bridge/getFeesForTransaction.ts +23 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
# @ledgerhq/coin-aptos
|
|
2
2
|
|
|
3
|
-
## 1.4.0-
|
|
3
|
+
## 1.4.0-nightly.0
|
|
4
4
|
|
|
5
5
|
### Minor Changes
|
|
6
6
|
|
|
7
7
|
- [#8897](https://github.com/LedgerHQ/ledger-live/pull/8897) [`f1ea0eb`](https://github.com/LedgerHQ/ledger-live/commit/f1ea0eb70ccd55281b1c86f4f038bb813c8200c1) Thanks [@jccguimaraes](https://github.com/jccguimaraes)! - support: move aptos to its own coin module
|
|
8
8
|
|
|
9
|
-
- [#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
|
|
10
|
-
|
|
11
|
-
- [#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
|
|
12
|
-
|
|
13
9
|
### Patch Changes
|
|
14
10
|
|
|
15
|
-
- Updated dependencies [[`
|
|
16
|
-
- @ledgerhq/types-live@6.
|
|
17
|
-
- @ledgerhq/
|
|
18
|
-
- @ledgerhq/coin-framework@0.25.0-next.0
|
|
11
|
+
- Updated dependencies [[`a231c50`](https://github.com/LedgerHQ/ledger-live/commit/a231c5084a24acb0e49efeb3c7ab1f5dbc6fd94b)]:
|
|
12
|
+
- @ledgerhq/types-live@6.58.0-nightly.1
|
|
13
|
+
- @ledgerhq/coin-framework@0.22.1-nightly.1
|
|
@@ -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: "201",
|
|
78
|
+
gas_unit_price: "101",
|
|
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(20301),
|
|
90
90
|
estimate: {
|
|
91
|
-
maxGasAmount: "
|
|
92
|
-
gasUnitPrice: "
|
|
91
|
+
maxGasAmount: "201",
|
|
92
|
+
gasUnitPrice: "101",
|
|
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 fee", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
124
|
+
it("should return cached 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);
|
|
157
162
|
simulateTransaction = jest.fn(() => [
|
|
158
163
|
{
|
|
159
164
|
success: true,
|
|
160
165
|
vm_status: [],
|
|
161
166
|
expiration_timestamp_secs: 5,
|
|
162
|
-
gas_used: "
|
|
163
|
-
gas_unit_price: "
|
|
167
|
+
gas_used: "9",
|
|
168
|
+
gas_unit_price: "100",
|
|
164
169
|
},
|
|
165
170
|
]);
|
|
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(mocked).toHaveBeenCalledTimes(1);
|
|
174
174
|
const expected = {
|
|
175
175
|
errors: {},
|
|
176
176
|
estimate: {
|
|
177
|
-
gasUnitPrice: "
|
|
178
|
-
maxGasAmount: "
|
|
177
|
+
gasUnitPrice: "101",
|
|
178
|
+
maxGasAmount: "201",
|
|
179
179
|
},
|
|
180
|
-
fees: new bignumber_js_1.default("
|
|
180
|
+
fees: new bignumber_js_1.default("20301"),
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gEAAqC;AACrC,gEAA6F;AAC7F,0FAA4E;AAC5E,mCAAqC;AAErC,IAAI,mBAAmB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAEpC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;IAC1B,OAAO;QACL,QAAQ,EAAE;YACR,OAAO;gBACL,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;gBACxD,mBAAmB,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;gBACxC,mBAAmB;gBACnB,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;aACxD,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;IACnC,OAAO;QACL,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE;KAC5B,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;IACnC,OAAO;QACL,WAAW,EAAE,GAAG;QAChB,iBAAiB,EAAE,GAAG;QACtB,gBAAgB,EAAE,CAAC;QACnB,2BAA2B,EAAE,IAAI,CAAC,EAAE,EAAE;KACvC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;YACtD,EAAE,CAAC,uCAAuC,EAAE,GAAS,EAAE;gBACrD,mBAAmB,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;oBAClC;wBACE,OAAO,EAAE,KAAK;wBACd,SAAS,EAAE,CAAC,sBAAsB,CAAC;wBACnC,yBAAyB,EAAE,CAAC;wBAC5B,QAAQ,EAAE,KAAK;wBACf,cAAc,EAAE,KAAK;qBACtB;iBACF,CAAC,CAAC;gBAEH,MAAM,OAAO,GAAG,IAAA,qCAAoB,GAAE,CAAC;gBACvC,MAAM,WAAW,GAAG,IAAA,yCAAwB,GAAE,CAAC;gBAC/C,MAAM,WAAW,GAAG,IAAI,cAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAEtD,WAAW,CAAC,MAAM,GAAG,IAAI,sBAAS,CAAC,CAAC,CAAC,CAAC;gBACtC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;gBACtB,OAAO,CAAC,gBAAgB,GAAG,IAAI,sBAAS,CAAC,SAAS,CAAC,CAAC;gBAEpD,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;gBAErF,MAAM,QAAQ,GAAG;oBACf,IAAI,EAAE,IAAI,sBAAS,CAAC,KAAK,CAAC;oBAC1B,QAAQ,EAAE;wBACR,YAAY,EAAE,KAAK;wBACnB,YAAY,EAAE,KAAK;qBACpB;oBACD,MAAM,EAAE,EAAE;iBACX,CAAC;gBAEF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,CAAC,CAAA,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;YAC7C,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;gBAC/C,mBAAmB,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;oBAClC;wBACE,OAAO,EAAE,KAAK;wBACd,SAAS,EAAE,CAAC,aAAa,CAAC;wBAC1B,yBAAyB,EAAE,CAAC;wBAC5B,QAAQ,EAAE,GAAG;wBACb,cAAc,EAAE,KAAK;qBACtB;iBACF,CAAC,CAAC;gBAEH,MAAM,OAAO,GAAG,IAAA,qCAAoB,GAAE,CAAC;gBACvC,MAAM,WAAW,GAAG,IAAA,yCAAwB,GAAE,CAAC;gBAC/C,MAAM,WAAW,GAAG,IAAI,cAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAEtD,WAAW,CAAC,MAAM,GAAG,IAAI,sBAAS,CAAC,CAAC,CAAC,CAAC;gBACtC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;gBACtB,OAAO,CAAC,gBAAgB,GAAG,IAAI,sBAAS,CAAC,SAAS,CAAC,CAAC;gBAEpD,MAAM,CAAC,GAAS,EAAE;oBAChB,MAAM,qBAAqB,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;gBACxE,CAAC,CAAA,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC1C,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;YACrC,EAAE,CAAC,
|
|
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;AACrC,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;AAcF,eAAO,MAAM,MAAM,YACR,OAAO,eACH,WAAW,eACX,QAAQ,KACpB,QAAQ,0BAA0B,CA+CpC,CAAC;AAEF,eAAO,MAAM,eAAe,YACjB,OAAO,eACH,WAAW,eACX,QAAQ,KACpB,QAAQ,0BAA0B,CAYpC,CAAC"}
|
|
@@ -16,9 +16,19 @@ 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");
|
|
20
19
|
const buildTransaction_1 = __importDefault(require("./buildTransaction"));
|
|
21
20
|
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
|
+
};
|
|
22
32
|
const getFee = (account, transaction, aptosClient) => __awaiter(void 0, void 0, void 0, function* () {
|
|
23
33
|
const res = {
|
|
24
34
|
fees: new bignumber_js_1.default(logic_1.DEFAULT_GAS).multipliedBy(logic_1.DEFAULT_GAS_PRICE),
|
|
@@ -64,11 +74,17 @@ const getFee = (account, transaction, aptosClient) => __awaiter(void 0, void 0,
|
|
|
64
74
|
return res;
|
|
65
75
|
});
|
|
66
76
|
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));
|
|
70
77
|
const getEstimatedGas = (account, transaction, aptosClient) => __awaiter(void 0, void 0, void 0, function* () {
|
|
71
|
-
|
|
78
|
+
if (!CACHE.amount.eq(transaction.amount)) {
|
|
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;
|
|
72
88
|
});
|
|
73
89
|
exports.getEstimatedGas = getEstimatedGas;
|
|
74
90
|
//# 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: "201",
|
|
50
|
+
gas_unit_price: "101",
|
|
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(20301),
|
|
62
62
|
estimate: {
|
|
63
|
-
maxGasAmount: "
|
|
64
|
-
gasUnitPrice: "
|
|
63
|
+
maxGasAmount: "201",
|
|
64
|
+
gasUnitPrice: "101",
|
|
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 fee", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
96
|
+
it("should return cached 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);
|
|
129
134
|
simulateTransaction = jest.fn(() => [
|
|
130
135
|
{
|
|
131
136
|
success: true,
|
|
132
137
|
vm_status: [],
|
|
133
138
|
expiration_timestamp_secs: 5,
|
|
134
|
-
gas_used: "
|
|
135
|
-
gas_unit_price: "
|
|
139
|
+
gas_used: "9",
|
|
140
|
+
gas_unit_price: "100",
|
|
136
141
|
},
|
|
137
142
|
]);
|
|
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(mocked).toHaveBeenCalledTimes(1);
|
|
146
146
|
const expected = {
|
|
147
147
|
errors: {},
|
|
148
148
|
estimate: {
|
|
149
|
-
gasUnitPrice: "
|
|
150
|
-
maxGasAmount: "
|
|
149
|
+
gasUnitPrice: "101",
|
|
150
|
+
maxGasAmount: "201",
|
|
151
151
|
},
|
|
152
|
-
fees: new BigNumber("
|
|
152
|
+
fees: new BigNumber("20301"),
|
|
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;AACrC,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;AAcF,eAAO,MAAM,MAAM,YACR,OAAO,eACH,WAAW,eACX,QAAQ,KACpB,QAAQ,0BAA0B,CA+CpC,CAAC;AAEF,eAAO,MAAM,eAAe,YACjB,OAAO,eACH,WAAW,eACX,QAAQ,KACpB,QAAQ,0BAA0B,CAYpC,CAAC"}
|
|
@@ -10,9 +10,19 @@ 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";
|
|
14
13
|
import buildTransaction from "./buildTransaction";
|
|
15
14
|
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
|
+
};
|
|
16
26
|
export const getFee = (account, transaction, aptosClient) => __awaiter(void 0, void 0, void 0, function* () {
|
|
17
27
|
const res = {
|
|
18
28
|
fees: new BigNumber(DEFAULT_GAS).multipliedBy(DEFAULT_GAS_PRICE),
|
|
@@ -57,10 +67,16 @@ export const getFee = (account, transaction, aptosClient) => __awaiter(void 0, v
|
|
|
57
67
|
}
|
|
58
68
|
return res;
|
|
59
69
|
});
|
|
60
|
-
const CACHE = makeLRUCache(getFee, (_account, transaction, _aptosClient) => {
|
|
61
|
-
return transaction.amount.toString();
|
|
62
|
-
}, seconds(30));
|
|
63
70
|
export const getEstimatedGas = (account, transaction, aptosClient) => __awaiter(void 0, void 0, void 0, function* () {
|
|
64
|
-
|
|
71
|
+
if (!CACHE.amount.eq(transaction.amount)) {
|
|
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;
|
|
65
81
|
});
|
|
66
82
|
//# 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-
|
|
3
|
+
"version": "1.4.0-nightly.0",
|
|
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.
|
|
92
|
+
"@ledgerhq/coin-framework": "^0.22.1-nightly.1",
|
|
93
|
+
"@ledgerhq/cryptoassets": "^13.9.0",
|
|
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.
|
|
99
|
+
"@ledgerhq/types-live": "^6.58.0-nightly.1"
|
|
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: "201",
|
|
46
|
+
gas_unit_price: "101",
|
|
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(20301),
|
|
62
62
|
estimate: {
|
|
63
|
-
maxGasAmount: "
|
|
64
|
-
gasUnitPrice: "
|
|
63
|
+
maxGasAmount: "201",
|
|
64
|
+
gasUnitPrice: "101",
|
|
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 fee", async () => {
|
|
102
|
+
it("should return cached fee", async () => {
|
|
103
103
|
simulateTransaction = jest.fn(() => [
|
|
104
104
|
{
|
|
105
105
|
success: true,
|
|
@@ -143,21 +143,23 @@ 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
|
+
|
|
146
154
|
simulateTransaction = jest.fn(() => [
|
|
147
155
|
{
|
|
148
156
|
success: true,
|
|
149
157
|
vm_status: [],
|
|
150
158
|
expiration_timestamp_secs: 5,
|
|
151
|
-
gas_used: "
|
|
152
|
-
gas_unit_price: "
|
|
159
|
+
gas_used: "9",
|
|
160
|
+
gas_unit_price: "100",
|
|
153
161
|
},
|
|
154
162
|
]);
|
|
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);
|
|
161
163
|
|
|
162
164
|
const result1 = await getFeesForTransaction.getEstimatedGas(
|
|
163
165
|
account,
|
|
@@ -170,15 +172,15 @@ describe("getFeesForTransaction Test", () => {
|
|
|
170
172
|
aptosClient,
|
|
171
173
|
);
|
|
172
174
|
|
|
173
|
-
expect(
|
|
175
|
+
expect(mocked).toHaveBeenCalledTimes(1);
|
|
174
176
|
|
|
175
177
|
const expected = {
|
|
176
178
|
errors: {},
|
|
177
179
|
estimate: {
|
|
178
|
-
gasUnitPrice: "
|
|
179
|
-
maxGasAmount: "
|
|
180
|
+
gasUnitPrice: "101",
|
|
181
|
+
maxGasAmount: "201",
|
|
180
182
|
},
|
|
181
|
-
fees: new BigNumber("
|
|
183
|
+
fees: new BigNumber("20301"),
|
|
182
184
|
};
|
|
183
185
|
|
|
184
186
|
expect(result1).toEqual(expected);
|
|
@@ -2,7 +2,6 @@ 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";
|
|
6
5
|
import { AptosAPI } from "../api";
|
|
7
6
|
import buildTransaction from "./buildTransaction";
|
|
8
7
|
import { DEFAULT_GAS, DEFAULT_GAS_PRICE, ESTIMATE_GAS_MUL } from "./logic";
|
|
@@ -17,6 +16,18 @@ type IGetEstimatedGasReturnType = {
|
|
|
17
16
|
errors: TransactionErrors;
|
|
18
17
|
};
|
|
19
18
|
|
|
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
|
+
|
|
20
31
|
export const getFee = async (
|
|
21
32
|
account: Account,
|
|
22
33
|
transaction: Transaction,
|
|
@@ -70,18 +81,20 @@ export const getFee = async (
|
|
|
70
81
|
return res;
|
|
71
82
|
};
|
|
72
83
|
|
|
73
|
-
const CACHE = makeLRUCache(
|
|
74
|
-
getFee,
|
|
75
|
-
(_account: Account, transaction: Transaction, _aptosClient: AptosAPI) => {
|
|
76
|
-
return transaction.amount.toString();
|
|
77
|
-
},
|
|
78
|
-
seconds(30),
|
|
79
|
-
);
|
|
80
|
-
|
|
81
84
|
export const getEstimatedGas = async (
|
|
82
85
|
account: Account,
|
|
83
86
|
transaction: Transaction,
|
|
84
87
|
aptosClient: AptosAPI,
|
|
85
88
|
): Promise<IGetEstimatedGasReturnType> => {
|
|
86
|
-
|
|
89
|
+
if (!CACHE.amount.eq(transaction.amount)) {
|
|
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;
|
|
87
100
|
};
|