@ledgerhq/coin-tezos 0.6.3 → 0.6.4-next.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 +14 -0
- package/lib/bridge/prepareTransaction.test.js +53 -6
- package/lib/bridge/prepareTransaction.test.js.map +1 -1
- package/lib/logic/estimateFees.d.ts.map +1 -1
- package/lib/logic/estimateFees.js +14 -5
- package/lib/logic/estimateFees.js.map +1 -1
- package/lib-es/bridge/prepareTransaction.test.js +53 -6
- package/lib-es/bridge/prepareTransaction.test.js.map +1 -1
- package/lib-es/logic/estimateFees.d.ts.map +1 -1
- package/lib-es/logic/estimateFees.js +15 -6
- package/lib-es/logic/estimateFees.js.map +1 -1
- package/package.json +9 -9
- package/src/bridge/prepareTransaction.test.ts +80 -12
- package/src/logic/estimateFees.ts +15 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @ledgerhq/coin-tezos
|
|
2
2
|
|
|
3
|
+
## 0.6.4-next.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#8004](https://github.com/LedgerHQ/ledger-live/pull/8004) [`e3e46e5`](https://github.com/LedgerHQ/ledger-live/commit/e3e46e5efa4e7955ffc7a3bf1f7dd333aa6a5806) Thanks [@qperrot](https://github.com/qperrot)! - Tezos send full balance
|
|
8
|
+
|
|
9
|
+
- [#8004](https://github.com/LedgerHQ/ledger-live/pull/8004) [`28ab0bc`](https://github.com/LedgerHQ/ledger-live/commit/28ab0bc6b441d8dac1d7c8dc4d5bd6b88031eeb5) Thanks [@qperrot](https://github.com/qperrot)! - Tezos send full balance and fix algorand format issue
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [[`642c714`](https://github.com/LedgerHQ/ledger-live/commit/642c714d52eaaccb1b8ac3a2ee0391b641d19303), [`1b3a21d`](https://github.com/LedgerHQ/ledger-live/commit/1b3a21d5d8496c42f4dec4116fdcf59ad6f038cd), [`0a16ae4`](https://github.com/LedgerHQ/ledger-live/commit/0a16ae4cb58ad9f2e67c7f3494b0dc52cb7423a1), [`00cab1d`](https://github.com/LedgerHQ/ledger-live/commit/00cab1db1d67eb0cf35059eeeb9e2d8bd328f8f3)]:
|
|
12
|
+
- @ledgerhq/types-live@6.52.1-next.0
|
|
13
|
+
- @ledgerhq/coin-framework@0.18.3-next.0
|
|
14
|
+
- @ledgerhq/cryptoassets@13.6.1-next.0
|
|
15
|
+
- @ledgerhq/live-network@2.0.2-next.0
|
|
16
|
+
|
|
3
17
|
## 0.6.3
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
|
@@ -18,6 +18,7 @@ const prepareTransaction_1 = __importDefault(require("./prepareTransaction"));
|
|
|
18
18
|
const faker_1 = require("@faker-js/faker");
|
|
19
19
|
const config_1 = __importDefault(require("../config"));
|
|
20
20
|
const config_2 = require("../test/config");
|
|
21
|
+
const taquito_1 = require("@taquito/taquito");
|
|
21
22
|
const mockTezosEstimate = jest.fn();
|
|
22
23
|
jest.mock("../logic/tezosToolkit", () => ({
|
|
23
24
|
getTezosToolkit: () => ({
|
|
@@ -73,13 +74,36 @@ describe("prepareTransaction", () => {
|
|
|
73
74
|
// Then
|
|
74
75
|
expect(newTx).toEqual(Object.assign(Object.assign({}, tx), { fees: new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez), estimatedFees: new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez), gasLimit: new bignumber_js_1.default(tezosEstimate.gasLimit), storageLimit: new bignumber_js_1.default(tezosEstimate.storageLimit) }));
|
|
75
76
|
}));
|
|
76
|
-
it("returns new transaction with estimated fees by TezosToolkit when useAllAmount", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
77
|
+
it("returns new transaction with estimated fees by TezosToolkit when useAllAmount from revealed account to revealed account", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
77
78
|
// Given
|
|
78
79
|
const tx = (0, bridge_fixture_1.createFixtureTransaction)({
|
|
79
80
|
amount: (0, bignumber_js_1.default)(200),
|
|
80
81
|
recipient: "tz1VSUr8wwNhLAzempoch5d6hLRiTh8Cjcjb",
|
|
81
82
|
useAllAmount: true,
|
|
82
83
|
});
|
|
84
|
+
const tezosEstimate = {
|
|
85
|
+
suggestedFeeMutez: faker_1.faker.number.int(20),
|
|
86
|
+
gasLimit: faker_1.faker.number.int(20),
|
|
87
|
+
storageLimit: faker_1.faker.number.int(20),
|
|
88
|
+
opSize: faker_1.faker.number.int(20),
|
|
89
|
+
burnFeeMutez: faker_1.faker.number.int(0),
|
|
90
|
+
};
|
|
91
|
+
mockTezosEstimate.mockResolvedValue(tezosEstimate);
|
|
92
|
+
const account = (0, bridge_fixture_1.createFixtureAccount)({ balance: (0, bignumber_js_1.default)(1000) });
|
|
93
|
+
// When
|
|
94
|
+
const newTx = yield (0, prepareTransaction_1.default)(account, tx);
|
|
95
|
+
// Then
|
|
96
|
+
const gasLimit = 500; // hardcoded in the function
|
|
97
|
+
const maxAmount = account.balance.minus(tezosEstimate.suggestedFeeMutez);
|
|
98
|
+
expect(newTx).toEqual(Object.assign(Object.assign({}, tx), { fees: new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez), estimatedFees: new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez), gasLimit: new bignumber_js_1.default(tezosEstimate.gasLimit), storageLimit: new bignumber_js_1.default(tezosEstimate.storageLimit), amount: maxAmount.minus(gasLimit - (tezosEstimate.opSize + gasLimit * 0.1)) }));
|
|
99
|
+
}));
|
|
100
|
+
it("returns new transaction with estimated fees by TezosToolkit when useAllAmount from revealed account to account with zero balance", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
101
|
+
// Given
|
|
102
|
+
const tx = (0, bridge_fixture_1.createFixtureTransaction)({
|
|
103
|
+
amount: (0, bignumber_js_1.default)(0),
|
|
104
|
+
recipient: "tz1VSUr8wwNhLAzempoch5d6hLRiTh8Cjcjb",
|
|
105
|
+
useAllAmount: true,
|
|
106
|
+
});
|
|
83
107
|
const tezosEstimate = {
|
|
84
108
|
suggestedFeeMutez: faker_1.faker.number.int(20),
|
|
85
109
|
gasLimit: faker_1.faker.number.int(20),
|
|
@@ -93,11 +117,34 @@ describe("prepareTransaction", () => {
|
|
|
93
117
|
const newTx = yield (0, prepareTransaction_1.default)(account, tx);
|
|
94
118
|
// Then
|
|
95
119
|
const gasLimit = 500; // hardcoded in the function
|
|
96
|
-
const computedFees = new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez + tezosEstimate.
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
120
|
+
const computedFees = new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez + tezosEstimate.burnFeeMutez - 20 * taquito_1.COST_PER_BYTE);
|
|
121
|
+
const maxAmount = account.balance.minus(computedFees);
|
|
122
|
+
expect(newTx).toEqual(Object.assign(Object.assign({}, tx), { fees: new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez), estimatedFees: new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez), gasLimit: new bignumber_js_1.default(tezosEstimate.gasLimit), storageLimit: new bignumber_js_1.default(tezosEstimate.storageLimit), amount: maxAmount.minus(gasLimit - (tezosEstimate.opSize + gasLimit * 0.1)) }));
|
|
123
|
+
}));
|
|
124
|
+
it("returns new transaction with estimated fees by TezosToolkit when useAllAmount from unrevealed account to revealed account", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
125
|
+
// Given
|
|
126
|
+
const tx = (0, bridge_fixture_1.createFixtureTransaction)({
|
|
127
|
+
amount: (0, bignumber_js_1.default)(200),
|
|
128
|
+
recipient: "tz1VSUr8wwNhLAzempoch5d6hLRiTh8Cjcjb",
|
|
129
|
+
useAllAmount: true,
|
|
130
|
+
});
|
|
131
|
+
const tezosEstimate = {
|
|
132
|
+
suggestedFeeMutez: faker_1.faker.number.int(20),
|
|
133
|
+
gasLimit: faker_1.faker.number.int(20),
|
|
134
|
+
storageLimit: faker_1.faker.number.int(20),
|
|
135
|
+
opSize: faker_1.faker.number.int(20),
|
|
136
|
+
burnFeeMutez: faker_1.faker.number.int(0),
|
|
137
|
+
};
|
|
138
|
+
mockTezosEstimate.mockResolvedValue(tezosEstimate);
|
|
139
|
+
const account = (0, bridge_fixture_1.createFixtureAccount)({ balance: (0, bignumber_js_1.default)(1000) });
|
|
140
|
+
account.tezosResources.revealed = false;
|
|
141
|
+
// When
|
|
142
|
+
const newTx = yield (0, prepareTransaction_1.default)(account, tx);
|
|
143
|
+
// Then
|
|
144
|
+
const gasLimit = 500; // hardcoded in the function
|
|
145
|
+
const computedFees = new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez + taquito_1.DEFAULT_FEE.REVEAL);
|
|
146
|
+
const maxAmount = account.balance.minus(computedFees);
|
|
147
|
+
expect(newTx).toEqual(Object.assign(Object.assign({}, tx), { fees: new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez), estimatedFees: new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez + taquito_1.DEFAULT_FEE.REVEAL), gasLimit: new bignumber_js_1.default(tezosEstimate.gasLimit), storageLimit: new bignumber_js_1.default(tezosEstimate.storageLimit), amount: maxAmount.minus(gasLimit - (tezosEstimate.opSize + gasLimit * 0.1)) }));
|
|
101
148
|
}));
|
|
102
149
|
// it("returns the passed transaction if fees are the same", async () => {
|
|
103
150
|
// // Given
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareTransaction.test.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,gEAAqC;AACrC,4DAAyF;AACzF,8EAAsD;AACtD,2CAAwC;AACxC,uDAAwD;AACxD,2CAA4C;
|
|
1
|
+
{"version":3,"file":"prepareTransaction.test.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estimateFees.d.ts","sourceRoot":"","sources":["../../src/logic/estimateFees.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpD,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AACF;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,EACjC,OAAO,EACP,WAAW,GACZ,EAAE;IACD,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,mBAAmB,CAAC;CAClC,GAAG,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"estimateFees.d.ts","sourceRoot":"","sources":["../../src/logic/estimateFees.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpD,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AACF;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,EACjC,OAAO,EACP,WAAW,GACZ,EAAE;IACD,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,mBAAmB,CAAC;CAClC,GAAG,OAAO,CAAC,aAAa,CAAC,CAgHzB"}
|
|
@@ -74,11 +74,19 @@ function estimateFees(_a) {
|
|
|
74
74
|
default:
|
|
75
75
|
throw new errors_1.UnsupportedTransactionMode("unsupported mode", { mode: transaction.mode });
|
|
76
76
|
}
|
|
77
|
+
// NOTE: if useAllAmount is true, is it for sure in the send mode (ie. transfer)?
|
|
77
78
|
if (transaction.useAllAmount) {
|
|
78
|
-
|
|
79
|
+
let totalFees;
|
|
80
|
+
if (estimate.burnFeeMutez > 0) {
|
|
81
|
+
// NOTE: from https://github.com/ecadlabs/taquito/blob/master/integration-tests/__tests__/contract/empty-implicit-account-into-new-implicit-account.spec.ts#L37
|
|
82
|
+
totalFees = estimate.suggestedFeeMutez + estimate.burnFeeMutez - 20 * taquito_1.COST_PER_BYTE; // 20 is storage buffer
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
totalFees = estimate.suggestedFeeMutez;
|
|
86
|
+
}
|
|
79
87
|
const maxAmount = parseInt(account.balance.toString()) -
|
|
80
88
|
(totalFees + (account.revealed ? 0 : taquito_1.DEFAULT_FEE.REVEAL));
|
|
81
|
-
// from https://github.com/ecadlabs/taquito/blob/a70c64c4b105381bb9f1d04c9c70e8ef26e9241c/integration-tests/contract-empty-implicit-account-into-new-implicit-account.spec.ts#L33
|
|
89
|
+
// NOTE: from https://github.com/ecadlabs/taquito/blob/a70c64c4b105381bb9f1d04c9c70e8ef26e9241c/integration-tests/contract-empty-implicit-account-into-new-implicit-account.spec.ts#L33
|
|
82
90
|
// Temporary fix, see https://gitlab.com/tezos/tezos/-/issues/1754
|
|
83
91
|
// we need to increase the gasLimit and fee returned by the estimation
|
|
84
92
|
const gasBuffer = 500;
|
|
@@ -87,9 +95,10 @@ function estimateFees(_a) {
|
|
|
87
95
|
return gasBuffer * MINIMAL_FEE_PER_GAS_MUTEZ + opSize;
|
|
88
96
|
};
|
|
89
97
|
const incr = increasedFee(gasBuffer, Number(estimate.opSize));
|
|
90
|
-
|
|
91
|
-
estimation.
|
|
92
|
-
estimation.
|
|
98
|
+
const maxMinusBuff = maxAmount - (gasBuffer - incr);
|
|
99
|
+
estimation.amount = maxMinusBuff > 0 ? BigInt(maxMinusBuff) : BigInt(0);
|
|
100
|
+
estimation.fees = BigInt(estimate.suggestedFeeMutez);
|
|
101
|
+
estimation.gasLimit = BigInt(estimate.gasLimit);
|
|
93
102
|
}
|
|
94
103
|
else {
|
|
95
104
|
estimation.fees = BigInt(estimate.suggestedFeeMutez);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estimateFees.js","sourceRoot":"","sources":["../../src/logic/estimateFees.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0DAAwD;AACxD,iEAA0E;AAC1E,
|
|
1
|
+
{"version":3,"file":"estimateFees.js","sourceRoot":"","sources":["../../src/logic/estimateFees.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ import prepareTransaction from "./prepareTransaction";
|
|
|
13
13
|
import { faker } from "@faker-js/faker";
|
|
14
14
|
import coinConfig from "../config";
|
|
15
15
|
import { mockConfig } from "../test/config";
|
|
16
|
+
import { COST_PER_BYTE, DEFAULT_FEE } from "@taquito/taquito";
|
|
16
17
|
const mockTezosEstimate = jest.fn();
|
|
17
18
|
jest.mock("../logic/tezosToolkit", () => ({
|
|
18
19
|
getTezosToolkit: () => ({
|
|
@@ -68,13 +69,36 @@ describe("prepareTransaction", () => {
|
|
|
68
69
|
// Then
|
|
69
70
|
expect(newTx).toEqual(Object.assign(Object.assign({}, tx), { fees: new BigNumber(tezosEstimate.suggestedFeeMutez), estimatedFees: new BigNumber(tezosEstimate.suggestedFeeMutez), gasLimit: new BigNumber(tezosEstimate.gasLimit), storageLimit: new BigNumber(tezosEstimate.storageLimit) }));
|
|
70
71
|
}));
|
|
71
|
-
it("returns new transaction with estimated fees by TezosToolkit when useAllAmount", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
72
|
+
it("returns new transaction with estimated fees by TezosToolkit when useAllAmount from revealed account to revealed account", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
72
73
|
// Given
|
|
73
74
|
const tx = createFixtureTransaction({
|
|
74
75
|
amount: BigNumber(200),
|
|
75
76
|
recipient: "tz1VSUr8wwNhLAzempoch5d6hLRiTh8Cjcjb",
|
|
76
77
|
useAllAmount: true,
|
|
77
78
|
});
|
|
79
|
+
const tezosEstimate = {
|
|
80
|
+
suggestedFeeMutez: faker.number.int(20),
|
|
81
|
+
gasLimit: faker.number.int(20),
|
|
82
|
+
storageLimit: faker.number.int(20),
|
|
83
|
+
opSize: faker.number.int(20),
|
|
84
|
+
burnFeeMutez: faker.number.int(0),
|
|
85
|
+
};
|
|
86
|
+
mockTezosEstimate.mockResolvedValue(tezosEstimate);
|
|
87
|
+
const account = createFixtureAccount({ balance: BigNumber(1000) });
|
|
88
|
+
// When
|
|
89
|
+
const newTx = yield prepareTransaction(account, tx);
|
|
90
|
+
// Then
|
|
91
|
+
const gasLimit = 500; // hardcoded in the function
|
|
92
|
+
const maxAmount = account.balance.minus(tezosEstimate.suggestedFeeMutez);
|
|
93
|
+
expect(newTx).toEqual(Object.assign(Object.assign({}, tx), { fees: new BigNumber(tezosEstimate.suggestedFeeMutez), estimatedFees: new BigNumber(tezosEstimate.suggestedFeeMutez), gasLimit: new BigNumber(tezosEstimate.gasLimit), storageLimit: new BigNumber(tezosEstimate.storageLimit), amount: maxAmount.minus(gasLimit - (tezosEstimate.opSize + gasLimit * 0.1)) }));
|
|
94
|
+
}));
|
|
95
|
+
it("returns new transaction with estimated fees by TezosToolkit when useAllAmount from revealed account to account with zero balance", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
96
|
+
// Given
|
|
97
|
+
const tx = createFixtureTransaction({
|
|
98
|
+
amount: BigNumber(0),
|
|
99
|
+
recipient: "tz1VSUr8wwNhLAzempoch5d6hLRiTh8Cjcjb",
|
|
100
|
+
useAllAmount: true,
|
|
101
|
+
});
|
|
78
102
|
const tezosEstimate = {
|
|
79
103
|
suggestedFeeMutez: faker.number.int(20),
|
|
80
104
|
gasLimit: faker.number.int(20),
|
|
@@ -88,11 +112,34 @@ describe("prepareTransaction", () => {
|
|
|
88
112
|
const newTx = yield prepareTransaction(account, tx);
|
|
89
113
|
// Then
|
|
90
114
|
const gasLimit = 500; // hardcoded in the function
|
|
91
|
-
const computedFees = new BigNumber(tezosEstimate.suggestedFeeMutez + tezosEstimate.
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
115
|
+
const computedFees = new BigNumber(tezosEstimate.suggestedFeeMutez + tezosEstimate.burnFeeMutez - 20 * COST_PER_BYTE);
|
|
116
|
+
const maxAmount = account.balance.minus(computedFees);
|
|
117
|
+
expect(newTx).toEqual(Object.assign(Object.assign({}, tx), { fees: new BigNumber(tezosEstimate.suggestedFeeMutez), estimatedFees: new BigNumber(tezosEstimate.suggestedFeeMutez), gasLimit: new BigNumber(tezosEstimate.gasLimit), storageLimit: new BigNumber(tezosEstimate.storageLimit), amount: maxAmount.minus(gasLimit - (tezosEstimate.opSize + gasLimit * 0.1)) }));
|
|
118
|
+
}));
|
|
119
|
+
it("returns new transaction with estimated fees by TezosToolkit when useAllAmount from unrevealed account to revealed account", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
120
|
+
// Given
|
|
121
|
+
const tx = createFixtureTransaction({
|
|
122
|
+
amount: BigNumber(200),
|
|
123
|
+
recipient: "tz1VSUr8wwNhLAzempoch5d6hLRiTh8Cjcjb",
|
|
124
|
+
useAllAmount: true,
|
|
125
|
+
});
|
|
126
|
+
const tezosEstimate = {
|
|
127
|
+
suggestedFeeMutez: faker.number.int(20),
|
|
128
|
+
gasLimit: faker.number.int(20),
|
|
129
|
+
storageLimit: faker.number.int(20),
|
|
130
|
+
opSize: faker.number.int(20),
|
|
131
|
+
burnFeeMutez: faker.number.int(0),
|
|
132
|
+
};
|
|
133
|
+
mockTezosEstimate.mockResolvedValue(tezosEstimate);
|
|
134
|
+
const account = createFixtureAccount({ balance: BigNumber(1000) });
|
|
135
|
+
account.tezosResources.revealed = false;
|
|
136
|
+
// When
|
|
137
|
+
const newTx = yield prepareTransaction(account, tx);
|
|
138
|
+
// Then
|
|
139
|
+
const gasLimit = 500; // hardcoded in the function
|
|
140
|
+
const computedFees = new BigNumber(tezosEstimate.suggestedFeeMutez + DEFAULT_FEE.REVEAL);
|
|
141
|
+
const maxAmount = account.balance.minus(computedFees);
|
|
142
|
+
expect(newTx).toEqual(Object.assign(Object.assign({}, tx), { fees: new BigNumber(tezosEstimate.suggestedFeeMutez), estimatedFees: new BigNumber(tezosEstimate.suggestedFeeMutez + DEFAULT_FEE.REVEAL), gasLimit: new BigNumber(tezosEstimate.gasLimit), storageLimit: new BigNumber(tezosEstimate.storageLimit), amount: maxAmount.minus(gasLimit - (tezosEstimate.opSize + gasLimit * 0.1)) }));
|
|
96
143
|
}));
|
|
97
144
|
// it("returns the passed transaction if fees are the same", async () => {
|
|
98
145
|
// // Given
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareTransaction.test.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.test.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,UAA+B,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"prepareTransaction.test.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estimateFees.d.ts","sourceRoot":"","sources":["../../src/logic/estimateFees.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpD,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AACF;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,EACjC,OAAO,EACP,WAAW,GACZ,EAAE;IACD,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,mBAAmB,CAAC;CAClC,GAAG,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"estimateFees.d.ts","sourceRoot":"","sources":["../../src/logic/estimateFees.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpD,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AACF;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,EACjC,OAAO,EACP,WAAW,GACZ,EAAE;IACD,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,mBAAmB,CAAC;CAClC,GAAG,OAAO,CAAC,aAAa,CAAC,CAgHzB"}
|
|
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { DerivationType } from "@taquito/ledger-signer";
|
|
11
11
|
import { compressPublicKey } from "@taquito/ledger-signer/dist/lib/utils";
|
|
12
|
-
import { DEFAULT_FEE, DEFAULT_STORAGE_LIMIT } from "@taquito/taquito";
|
|
12
|
+
import { COST_PER_BYTE, DEFAULT_FEE, DEFAULT_STORAGE_LIMIT } from "@taquito/taquito";
|
|
13
13
|
import { b58cencode, Prefix, prefix } from "@taquito/utils";
|
|
14
14
|
import { log } from "@ledgerhq/logs";
|
|
15
15
|
import { getTezosToolkit } from "./tezosToolkit";
|
|
@@ -71,11 +71,19 @@ export function estimateFees(_a) {
|
|
|
71
71
|
default:
|
|
72
72
|
throw new UnsupportedTransactionMode("unsupported mode", { mode: transaction.mode });
|
|
73
73
|
}
|
|
74
|
+
// NOTE: if useAllAmount is true, is it for sure in the send mode (ie. transfer)?
|
|
74
75
|
if (transaction.useAllAmount) {
|
|
75
|
-
|
|
76
|
+
let totalFees;
|
|
77
|
+
if (estimate.burnFeeMutez > 0) {
|
|
78
|
+
// NOTE: from https://github.com/ecadlabs/taquito/blob/master/integration-tests/__tests__/contract/empty-implicit-account-into-new-implicit-account.spec.ts#L37
|
|
79
|
+
totalFees = estimate.suggestedFeeMutez + estimate.burnFeeMutez - 20 * COST_PER_BYTE; // 20 is storage buffer
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
totalFees = estimate.suggestedFeeMutez;
|
|
83
|
+
}
|
|
76
84
|
const maxAmount = parseInt(account.balance.toString()) -
|
|
77
85
|
(totalFees + (account.revealed ? 0 : DEFAULT_FEE.REVEAL));
|
|
78
|
-
// from https://github.com/ecadlabs/taquito/blob/a70c64c4b105381bb9f1d04c9c70e8ef26e9241c/integration-tests/contract-empty-implicit-account-into-new-implicit-account.spec.ts#L33
|
|
86
|
+
// NOTE: from https://github.com/ecadlabs/taquito/blob/a70c64c4b105381bb9f1d04c9c70e8ef26e9241c/integration-tests/contract-empty-implicit-account-into-new-implicit-account.spec.ts#L33
|
|
79
87
|
// Temporary fix, see https://gitlab.com/tezos/tezos/-/issues/1754
|
|
80
88
|
// we need to increase the gasLimit and fee returned by the estimation
|
|
81
89
|
const gasBuffer = 500;
|
|
@@ -84,9 +92,10 @@ export function estimateFees(_a) {
|
|
|
84
92
|
return gasBuffer * MINIMAL_FEE_PER_GAS_MUTEZ + opSize;
|
|
85
93
|
};
|
|
86
94
|
const incr = increasedFee(gasBuffer, Number(estimate.opSize));
|
|
87
|
-
|
|
88
|
-
estimation.
|
|
89
|
-
estimation.
|
|
95
|
+
const maxMinusBuff = maxAmount - (gasBuffer - incr);
|
|
96
|
+
estimation.amount = maxMinusBuff > 0 ? BigInt(maxMinusBuff) : BigInt(0);
|
|
97
|
+
estimation.fees = BigInt(estimate.suggestedFeeMutez);
|
|
98
|
+
estimation.gasLimit = BigInt(estimate.gasLimit);
|
|
90
99
|
}
|
|
91
100
|
else {
|
|
92
101
|
estimation.fees = BigInt(estimate.suggestedFeeMutez);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estimateFees.js","sourceRoot":"","sources":["../../src/logic/estimateFees.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAY,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"estimateFees.js","sourceRoot":"","sources":["../../src/logic/estimateFees.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/coin-tezos",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.4-next.0",
|
|
4
4
|
"description": "Tezos Coin integration",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ledger",
|
|
@@ -67,24 +67,24 @@
|
|
|
67
67
|
},
|
|
68
68
|
"license": "Apache-2.0",
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@taquito/ledger-signer": "^20.0.
|
|
71
|
-
"@taquito/rpc": "^20.0.
|
|
72
|
-
"@taquito/taquito": "^20.0.
|
|
73
|
-
"@taquito/utils": "^20.0.
|
|
70
|
+
"@taquito/ledger-signer": "^20.0.1",
|
|
71
|
+
"@taquito/rpc": "^20.0.1",
|
|
72
|
+
"@taquito/taquito": "^20.0.1",
|
|
73
|
+
"@taquito/utils": "^20.0.1",
|
|
74
74
|
"bignumber.js": "^9.1.2",
|
|
75
75
|
"blake2b": "^2.1.4",
|
|
76
76
|
"bs58check": "^3.0.1",
|
|
77
77
|
"invariant": "^2.2.4",
|
|
78
78
|
"lodash": "^4.17.21",
|
|
79
79
|
"rxjs": "^7.8.1",
|
|
80
|
-
"@ledgerhq/coin-framework": "^0.18.
|
|
81
|
-
"@ledgerhq/cryptoassets": "^13.6.0",
|
|
80
|
+
"@ledgerhq/coin-framework": "^0.18.3-next.0",
|
|
81
|
+
"@ledgerhq/cryptoassets": "^13.6.1-next.0",
|
|
82
82
|
"@ledgerhq/devices": "^8.4.4",
|
|
83
83
|
"@ledgerhq/errors": "^6.19.1",
|
|
84
|
-
"@ledgerhq/live-network": "^2.0.
|
|
84
|
+
"@ledgerhq/live-network": "^2.0.2-next.0",
|
|
85
85
|
"@ledgerhq/logs": "^6.12.0",
|
|
86
86
|
"@ledgerhq/types-cryptoassets": "^7.16.0",
|
|
87
|
-
"@ledgerhq/types-live": "^6.52.0"
|
|
87
|
+
"@ledgerhq/types-live": "^6.52.1-next.0"
|
|
88
88
|
},
|
|
89
89
|
"devDependencies": {
|
|
90
90
|
"@faker-js/faker": "^8.4.1",
|
|
@@ -4,6 +4,7 @@ import prepareTransaction from "./prepareTransaction";
|
|
|
4
4
|
import { faker } from "@faker-js/faker";
|
|
5
5
|
import coinConfig, { TezosCoinConfig } from "../config";
|
|
6
6
|
import { mockConfig } from "../test/config";
|
|
7
|
+
import { COST_PER_BYTE, DEFAULT_FEE } from "@taquito/taquito";
|
|
7
8
|
|
|
8
9
|
const mockTezosEstimate = jest.fn();
|
|
9
10
|
jest.mock("../logic/tezosToolkit", () => ({
|
|
@@ -78,7 +79,7 @@ describe("prepareTransaction", () => {
|
|
|
78
79
|
});
|
|
79
80
|
});
|
|
80
81
|
|
|
81
|
-
it("returns new transaction with estimated fees by TezosToolkit when useAllAmount", async () => {
|
|
82
|
+
it("returns new transaction with estimated fees by TezosToolkit when useAllAmount from revealed account to revealed account", async () => {
|
|
82
83
|
// Given
|
|
83
84
|
const tx = createFixtureTransaction({
|
|
84
85
|
amount: BigNumber(200),
|
|
@@ -90,7 +91,7 @@ describe("prepareTransaction", () => {
|
|
|
90
91
|
gasLimit: faker.number.int(20),
|
|
91
92
|
storageLimit: faker.number.int(20),
|
|
92
93
|
opSize: faker.number.int(20),
|
|
93
|
-
burnFeeMutez: faker.number.int(
|
|
94
|
+
burnFeeMutez: faker.number.int(0),
|
|
94
95
|
};
|
|
95
96
|
mockTezosEstimate.mockResolvedValue(tezosEstimate);
|
|
96
97
|
const account = createFixtureAccount({ balance: BigNumber(1_000) });
|
|
@@ -98,23 +99,90 @@ describe("prepareTransaction", () => {
|
|
|
98
99
|
// When
|
|
99
100
|
const newTx = await prepareTransaction(account, tx);
|
|
100
101
|
|
|
102
|
+
// Then
|
|
103
|
+
const gasLimit = 500; // hardcoded in the function
|
|
104
|
+
const maxAmount = account.balance.minus(tezosEstimate.suggestedFeeMutez);
|
|
105
|
+
|
|
106
|
+
expect(newTx).toEqual({
|
|
107
|
+
...tx,
|
|
108
|
+
fees: new BigNumber(tezosEstimate.suggestedFeeMutez),
|
|
109
|
+
estimatedFees: new BigNumber(tezosEstimate.suggestedFeeMutez),
|
|
110
|
+
gasLimit: new BigNumber(tezosEstimate.gasLimit),
|
|
111
|
+
storageLimit: new BigNumber(tezosEstimate.storageLimit),
|
|
112
|
+
amount: maxAmount.minus(gasLimit - (tezosEstimate.opSize + gasLimit * 0.1)),
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
it("returns new transaction with estimated fees by TezosToolkit when useAllAmount from revealed account to account with zero balance", async () => {
|
|
117
|
+
// Given
|
|
118
|
+
const tx = createFixtureTransaction({
|
|
119
|
+
amount: BigNumber(0),
|
|
120
|
+
recipient: "tz1VSUr8wwNhLAzempoch5d6hLRiTh8Cjcjb",
|
|
121
|
+
useAllAmount: true,
|
|
122
|
+
});
|
|
123
|
+
const tezosEstimate = {
|
|
124
|
+
suggestedFeeMutez: faker.number.int(20),
|
|
125
|
+
gasLimit: faker.number.int(20),
|
|
126
|
+
storageLimit: faker.number.int(20),
|
|
127
|
+
opSize: faker.number.int(20),
|
|
128
|
+
burnFeeMutez: faker.number.int(20),
|
|
129
|
+
};
|
|
130
|
+
mockTezosEstimate.mockResolvedValue(tezosEstimate);
|
|
131
|
+
const account = createFixtureAccount({ balance: BigNumber(1_000) });
|
|
132
|
+
// When
|
|
133
|
+
const newTx = await prepareTransaction(account, tx);
|
|
134
|
+
|
|
101
135
|
// Then
|
|
102
136
|
const gasLimit = 500; // hardcoded in the function
|
|
103
137
|
const computedFees = new BigNumber(
|
|
104
|
-
tezosEstimate.suggestedFeeMutez + tezosEstimate.
|
|
138
|
+
tezosEstimate.suggestedFeeMutez + tezosEstimate.burnFeeMutez - 20 * COST_PER_BYTE,
|
|
105
139
|
);
|
|
140
|
+
|
|
141
|
+
const maxAmount = account.balance.minus(computedFees);
|
|
142
|
+
|
|
106
143
|
expect(newTx).toEqual({
|
|
107
144
|
...tx,
|
|
108
|
-
fees:
|
|
109
|
-
estimatedFees:
|
|
110
|
-
gasLimit: new BigNumber(tezosEstimate.gasLimit
|
|
145
|
+
fees: new BigNumber(tezosEstimate.suggestedFeeMutez),
|
|
146
|
+
estimatedFees: new BigNumber(tezosEstimate.suggestedFeeMutez),
|
|
147
|
+
gasLimit: new BigNumber(tezosEstimate.gasLimit),
|
|
148
|
+
storageLimit: new BigNumber(tezosEstimate.storageLimit),
|
|
149
|
+
amount: maxAmount.minus(gasLimit - (tezosEstimate.opSize + gasLimit * 0.1)),
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
it("returns new transaction with estimated fees by TezosToolkit when useAllAmount from unrevealed account to revealed account", async () => {
|
|
154
|
+
// Given
|
|
155
|
+
const tx = createFixtureTransaction({
|
|
156
|
+
amount: BigNumber(200),
|
|
157
|
+
recipient: "tz1VSUr8wwNhLAzempoch5d6hLRiTh8Cjcjb",
|
|
158
|
+
useAllAmount: true,
|
|
159
|
+
});
|
|
160
|
+
const tezosEstimate = {
|
|
161
|
+
suggestedFeeMutez: faker.number.int(20),
|
|
162
|
+
gasLimit: faker.number.int(20),
|
|
163
|
+
storageLimit: faker.number.int(20),
|
|
164
|
+
opSize: faker.number.int(20),
|
|
165
|
+
burnFeeMutez: faker.number.int(0),
|
|
166
|
+
};
|
|
167
|
+
mockTezosEstimate.mockResolvedValue(tezosEstimate);
|
|
168
|
+
const account = createFixtureAccount({ balance: BigNumber(1_000) });
|
|
169
|
+
account.tezosResources.revealed = false;
|
|
170
|
+
// When
|
|
171
|
+
const newTx = await prepareTransaction(account, tx);
|
|
172
|
+
|
|
173
|
+
// Then
|
|
174
|
+
const gasLimit = 500; // hardcoded in the function
|
|
175
|
+
const computedFees = new BigNumber(tezosEstimate.suggestedFeeMutez + DEFAULT_FEE.REVEAL);
|
|
176
|
+
|
|
177
|
+
const maxAmount = account.balance.minus(computedFees);
|
|
178
|
+
|
|
179
|
+
expect(newTx).toEqual({
|
|
180
|
+
...tx,
|
|
181
|
+
fees: new BigNumber(tezosEstimate.suggestedFeeMutez),
|
|
182
|
+
estimatedFees: new BigNumber(tezosEstimate.suggestedFeeMutez + DEFAULT_FEE.REVEAL),
|
|
183
|
+
gasLimit: new BigNumber(tezosEstimate.gasLimit),
|
|
111
184
|
storageLimit: new BigNumber(tezosEstimate.storageLimit),
|
|
112
|
-
amount:
|
|
113
|
-
tezosEstimate.opSize +
|
|
114
|
-
gasLimit * 0.1 +
|
|
115
|
-
tezosEstimate.suggestedFeeMutez +
|
|
116
|
-
tezosEstimate.burnFeeMutez,
|
|
117
|
-
),
|
|
185
|
+
amount: maxAmount.minus(gasLimit - (tezosEstimate.opSize + gasLimit * 0.1)),
|
|
118
186
|
});
|
|
119
187
|
});
|
|
120
188
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DerivationType } from "@taquito/ledger-signer";
|
|
2
2
|
import { compressPublicKey } from "@taquito/ledger-signer/dist/lib/utils";
|
|
3
|
-
import { DEFAULT_FEE, DEFAULT_STORAGE_LIMIT, Estimate } from "@taquito/taquito";
|
|
3
|
+
import { COST_PER_BYTE, DEFAULT_FEE, DEFAULT_STORAGE_LIMIT, Estimate } from "@taquito/taquito";
|
|
4
4
|
import { b58cencode, Prefix, prefix } from "@taquito/utils";
|
|
5
5
|
import { log } from "@ledgerhq/logs";
|
|
6
6
|
import { getTezosToolkit } from "./tezosToolkit";
|
|
@@ -99,12 +99,19 @@ export async function estimateFees({
|
|
|
99
99
|
throw new UnsupportedTransactionMode("unsupported mode", { mode: transaction.mode });
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
+
// NOTE: if useAllAmount is true, is it for sure in the send mode (ie. transfer)?
|
|
102
103
|
if (transaction.useAllAmount) {
|
|
103
|
-
|
|
104
|
+
let totalFees: number;
|
|
105
|
+
if (estimate.burnFeeMutez > 0) {
|
|
106
|
+
// NOTE: from https://github.com/ecadlabs/taquito/blob/master/integration-tests/__tests__/contract/empty-implicit-account-into-new-implicit-account.spec.ts#L37
|
|
107
|
+
totalFees = estimate.suggestedFeeMutez + estimate.burnFeeMutez - 20 * COST_PER_BYTE; // 20 is storage buffer
|
|
108
|
+
} else {
|
|
109
|
+
totalFees = estimate.suggestedFeeMutez;
|
|
110
|
+
}
|
|
104
111
|
const maxAmount =
|
|
105
112
|
parseInt(account.balance.toString()) -
|
|
106
113
|
(totalFees + (account.revealed ? 0 : DEFAULT_FEE.REVEAL));
|
|
107
|
-
// from https://github.com/ecadlabs/taquito/blob/a70c64c4b105381bb9f1d04c9c70e8ef26e9241c/integration-tests/contract-empty-implicit-account-into-new-implicit-account.spec.ts#L33
|
|
114
|
+
// NOTE: from https://github.com/ecadlabs/taquito/blob/a70c64c4b105381bb9f1d04c9c70e8ef26e9241c/integration-tests/contract-empty-implicit-account-into-new-implicit-account.spec.ts#L33
|
|
108
115
|
// Temporary fix, see https://gitlab.com/tezos/tezos/-/issues/1754
|
|
109
116
|
// we need to increase the gasLimit and fee returned by the estimation
|
|
110
117
|
const gasBuffer = 500;
|
|
@@ -114,15 +121,16 @@ export async function estimateFees({
|
|
|
114
121
|
};
|
|
115
122
|
const incr = increasedFee(gasBuffer, Number(estimate.opSize));
|
|
116
123
|
|
|
117
|
-
|
|
118
|
-
estimation.
|
|
119
|
-
|
|
124
|
+
const maxMinusBuff = maxAmount - (gasBuffer - incr);
|
|
125
|
+
estimation.amount = maxMinusBuff > 0 ? BigInt(maxMinusBuff) : BigInt(0);
|
|
126
|
+
|
|
127
|
+
estimation.fees = BigInt(estimate.suggestedFeeMutez);
|
|
128
|
+
estimation.gasLimit = BigInt(estimate.gasLimit);
|
|
120
129
|
} else {
|
|
121
130
|
estimation.fees = BigInt(estimate.suggestedFeeMutez);
|
|
122
131
|
estimation.gasLimit = BigInt(estimate.gasLimit);
|
|
123
132
|
estimation.amount = transaction.amount;
|
|
124
133
|
}
|
|
125
|
-
|
|
126
134
|
estimation.storageLimit = BigInt(estimate.storageLimit);
|
|
127
135
|
estimation.estimatedFees = estimation.fees;
|
|
128
136
|
if (!account.revealed) {
|
|
@@ -143,6 +151,5 @@ export async function estimateFees({
|
|
|
143
151
|
throw e;
|
|
144
152
|
}
|
|
145
153
|
}
|
|
146
|
-
|
|
147
154
|
return estimation;
|
|
148
155
|
}
|