@ledgerhq/live-common 27.7.1 → 27.7.2-hotfix.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.
@@ -48,6 +48,16 @@ describe("Ethereum transaction tests", function () {
48
48
  to: sendMaxTransaction.recipient
49
49
  });
50
50
  });
51
+ it("should not return a negative amount for a send max", function () {
52
+ var ethEmptyAccount = __assign(__assign({}, ethAccount), { spendableBalance: new bignumber_js_1["default"](0), balance: new bignumber_js_1["default"](0) });
53
+ var sendMaxTransaction = __assign(__assign({}, (0, createTransaction_1["default"])()), { recipient: "0xc3f95102D5c8F2c83e49Ce3Acfb905eDfb7f37dE", useAllAmount: true, maxFeePerGas: new bignumber_js_1["default"](1000000000), useGasLimit: new bignumber_js_1["default"](21000) });
54
+ var txData = {};
55
+ mode.fillTransactionData(ethEmptyAccount, sendMaxTransaction, txData);
56
+ expect(txData).toEqual({
57
+ value: "0x0",
58
+ to: sendMaxTransaction.recipient
59
+ });
60
+ });
51
61
  });
52
62
  describe("ERC1155", function () {
53
63
  var mode = modules_1.modes["erc1155.transfer"];
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.unit.test.js","sourceRoot":"","sources":["../../../../src/families/ethereum/__tests__/transaction.unit.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction.unit.test.js","sourceRoot":"","sources":["../../../../src/families/ethereum/__tests__/transaction.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../../src/families/ethereum/modules/send.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAY3C,oBAAY,KAAK,GAAG,MAAM,CAAC;AAqN3B,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,CAE3C,CAAC"}
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../../src/families/ethereum/modules/send.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAY3C,oBAAY,KAAK,GAAG,MAAM,CAAC;AAyN3B,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,CAE3C,CAAC"}
@@ -69,7 +69,8 @@ var send = {
69
69
  var feePerGas = (0, transaction_1.EIP1559ShouldBeUsed)(a.currency)
70
70
  ? t.maxFeePerGas
71
71
  : t.gasPrice;
72
- amount = a.spendableBalance.minus(gasLimit.times(feePerGas || 0));
72
+ // Prevents a send max with a negative amount
73
+ amount = bignumber_js_1.BigNumber.maximum(a.spendableBalance.minus(gasLimit.times(feePerGas || 0)), 0);
73
74
  }
74
75
  else {
75
76
  (0, invariant_1["default"])(t.amount, "amount is missing");
@@ -1 +1 @@
1
- {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../../src/families/ethereum/modules/send.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../../src/families/ethereum/modules/send.ts"],"names":[],"mappings":";;;;;;AAAA,6BAA6B;AAC7B,kEAAiC;AACjC,wDAAkC;AAClC,gDAA0B;AAC1B,6CAAyC;AAEzC,2CAK0B;AAC1B,8CAIwB;AAExB,IAAM,IAAI,GAAe;IACvB,qBAAqB,YAAC,CAAC,EAAE,CAAC,EAAE,MAAM;QAChC,IAAM,YAAY,GAAG,IAAA,+BAAiB,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAM,OAAO,GAAG,YAAY,IAAI,CAAC,CAAC;QAElC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;YAC5B,IAAI,YAAY,EAAE;gBAChB,aAAa;gBACb,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,YAAY;oBAChC,CAAC,CAAC,OAAO,CAAC,gBAAgB;oBAC1B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACb,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;aACtE;iBAAM;gBACL,gBAAgB;gBAChB,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,YAAY;oBAChC,CAAC,CAAC,OAAO,CAAC,gBAAgB;oBAC1B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBACxC,MAAM,CAAC,MAAM,GAAG,wBAAS,CAAC,GAAG,CAC3B,CAAC,CAAC,YAAY;oBACZ,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;oBACtD,CAAC,CAAC,CAAC,CAAC,MAAM,EACZ,CAAC,CACF,CAAC;gBAEF,IACE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;oBACnB,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAChD;oBACA,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,mBAAU,EAAE,CAAC;iBAC/C;gBAED,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE;oBAC/C,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,wCAA+B,EAAE,CAAC;iBAC9D;aACF;YAED,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;gBACX,IACE,CAAC,CAAC,CAAC,eAAe;oBAClB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;oBACrB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EACnB;oBACA,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,uBAAc,EAAE,CAAC;iBAC7C;qBAAM,IACL,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;oBACxB,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAC9C;oBACA,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,yBAAgB,EAAE,CAAC;iBAC/C;aACF;SACF;IACH,CAAC;IAED,mBAAmB,YAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1B,IAAM,UAAU,GAAG,IAAA,+BAAiB,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3C,IAAI,UAAU,EAAE;YACN,IAAA,KAAK,GAAK,UAAU,MAAf,CAAgB;YAC7B,IAAM,IAAI,GAAG,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5C,IAAA,sBAAS,EAAC,IAAI,EAAE,2CAA2C,CAAC,CAAC;YAC7D,EAAE,CAAC,IAAI,GAAG,IAAI,GAAI,IAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClD,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,eAAe,CAAC;YAC9B,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC;SACnB;aAAM;YACL,IAAI,MAAM,SAAA,CAAC;YAEX,IAAI,CAAC,CAAC,YAAY,EAAE;gBAClB,IAAM,QAAQ,GAAG,IAAA,yBAAW,EAAC,CAAC,CAAC,CAAC;gBAChC,IAAM,SAAS,GAAG,IAAA,iCAAmB,EAAC,CAAC,CAAC,QAAQ,CAAC;oBAC/C,CAAC,CAAC,CAAC,CAAC,YAAY;oBAChB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACf,6CAA6C;gBAC7C,MAAM,GAAG,wBAAS,CAAC,OAAO,CACxB,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EACxD,CAAC,CACF,CAAC;aACH;iBAAM;gBACL,IAAA,sBAAS,EAAC,CAAC,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;gBACzC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;aACnB;YAED,IAAI,CAAC,CAAC,IAAI,EAAE;gBACV,EAAE,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACzC;YAED,EAAE,CAAC,KAAK,GAAG,YAAK,IAAI,wBAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAE,CAAC;YACrD,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC;SACrB;IACH,CAAC;IAED,2BAA2B,YAAC,EAAmC,EAAE,MAAM;;YAAzC,WAAW,iBAAA,EAAY,MAAM,mBAAA;QACzD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;YACpB,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;SACJ;QAED,IAAI,MAAA,WAAW,CAAC,IAAI,0CAAE,MAAM,EAAE;YAC5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA4CE;YACF,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;SACJ;IACH,CAAC;IAED,uBAAuB,YAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC9B,IAAM,UAAU,GAAG,IAAA,+BAAiB,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3C,IAAI,UAAU,EAAE;YACd,iBAAiB;YACjB,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC;YACjB,EAAE,CAAC,aAAa,GAAG;gBACjB;oBACE,EAAE,EAAE,UAAG,UAAU,CAAC,EAAE,cAAI,EAAE,CAAC,IAAI,SAAM;oBACrC,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,yBAAyB,EAAE,EAAE,CAAC,yBAAyB;oBACvD,IAAI,EAAE,KAAK;oBACX,KAAK,EAAE,CAAC,CAAC,YAAY;wBACnB,CAAC,CAAC,UAAU,CAAC,gBAAgB;wBAC7B,CAAC,CAAC,IAAI,wBAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;oBAChC,GAAG,EAAE,EAAE,CAAC,GAAG;oBACX,SAAS,EAAE,IAAI;oBACf,WAAW,EAAE,IAAI;oBACjB,OAAO,EAAE,EAAE,CAAC,OAAO;oBACnB,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;oBACzB,SAAS,EAAE,UAAU,CAAC,EAAE;oBACxB,IAAI,EAAE,IAAI,IAAI,EAAE;oBAChB,KAAK,EAAE,EAAE;iBACV;aACF,CAAC;SACH;IACH,CAAC;IAED,sGAAsG;IACtG,mBAAmB,EAAE,cAAM,OAAA,CAAC;QAC1B,KAAK,EAAE,IAAI;QACX,eAAe,EAAE,IAAI;QACrB,GAAG,EAAE,IAAI;KACV,CAAC,EAJyB,CAIzB;CACH,CAAC;AAEF,SAAS,wBAAwB,CAC/B,OAAO,EACP,WAAW;IAEX,IAAM,YAAY,GAAG,IAAA,+BAAiB,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC7D,IAAI,CAAC,YAAY;QAAE,OAAO;IAC1B,IAAM,SAAS,GAAG,kBAAK,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAA,gBAAgB,GAAK,YAAY,iBAAjB,CAAkB;IAC1C,IAAI,MAAM,CAAC;IAEX,IAAI,WAAW,CAAC,YAAY,EAAE;QAC5B,MAAM,GAAG,gBAAgB,CAAC;KAC3B;SAAM;QACL,IAAI,CAAC,WAAW,CAAC,MAAM;YAAE,OAAO;QAChC,MAAM,GAAG,IAAI,wBAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE3C,IAAI,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE;YAC5C,MAAM,IAAI,yBAAgB,EAAE,CAAC;SAC9B;KACF;IAED,OAAO,2BAAG,CAAC,YAAY,CACrB,2BAA2B,EAC3B,SAAS,EACT,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CACpB,CAAC;AACJ,CAAC;AAEY,QAAA,KAAK,GAA8B;IAC9C,IAAI,MAAA;CACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"prepareTransaction.d.ts","sourceRoot":"","sources":["../../../src/families/ethereum/prepareTransaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AASrD,OAAO,EAAe,WAAW,EAAE,MAAM,SAAS,CAAC;AAInD,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAoE7E,CAAC;AAEJ,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"prepareTransaction.d.ts","sourceRoot":"","sources":["../../../src/families/ethereum/prepareTransaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AASrD,OAAO,EAAe,WAAW,EAAE,MAAM,SAAS,CAAC;AAKnD,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAoF7E,CAAC;AAEJ,eAAe,kBAAkB,CAAC"}
@@ -57,8 +57,9 @@ var gas_2 = require("./gas");
57
57
  var logic_1 = require("./logic");
58
58
  var transaction_1 = require("./transaction");
59
59
  var modules_1 = require("./modules");
60
+ var account_1 = require("../../account");
60
61
  var prepareTransaction = function (account, tx) { return __awaiter(void 0, void 0, void 0, function () {
61
- var networkInfo, _a, maxPriorityFeePerGas, maxFeePerGas, gasPrice, estimatedGasLimit, transaction;
62
+ var networkInfo, _a, maxPriorityFeePerGas, maxFeePerGas, gasPrice, estimatedGasLimit, protoTransaction;
62
63
  return __generator(this, function (_b) {
63
64
  switch (_b.label) {
64
65
  case 0:
@@ -86,15 +87,34 @@ var prepareTransaction = function (account, tx) { return __awaiter(void 0, void
86
87
  }
87
88
  }
88
89
  if (!(0, logic_1.isEthereumAddress)(tx.recipient)) return [3 /*break*/, 4];
89
- transaction = (0, transaction_1.buildEthereumTx)(account, tx, account.operationsCount).tx;
90
- (0, invariant_1["default"])(transaction.to, "ethereum transaction has no recipient");
91
- return [4 /*yield*/, (0, gas_2.estimateGasLimit)(account, transaction.to.toString(),
90
+ protoTransaction = (function () {
91
+ try {
92
+ return (0, transaction_1.buildEthereumTx)(account, tx, account.operationsCount).tx;
93
+ }
94
+ catch (e) {
95
+ // fallback in case @ethereumjs/tx breaks on building a potentially partial transaction
96
+ var subAccount = tx.subAccountId
97
+ ? (0, account_1.findSubAccountById)(account, tx.subAccountId)
98
+ : null;
99
+ var recipient = (subAccount === null || subAccount === void 0 ? void 0 : subAccount.type) === "TokenAccount"
100
+ ? subAccount.token.contractAddress
101
+ : tx.recipient;
102
+ return {
103
+ from: account.freshAddress,
104
+ to: recipient,
105
+ data: undefined,
106
+ value: tx.amount
107
+ };
108
+ }
109
+ })();
110
+ (0, invariant_1["default"])(protoTransaction.to, "ethereum transaction has no recipient");
111
+ return [4 /*yield*/, (0, gas_2.estimateGasLimit)(account, protoTransaction.to.toString(),
92
112
  // Those are the only elements from a transaction necessary to estimate the gas limit
93
113
  {
94
114
  from: account.freshAddress,
95
- value: "0x" + (transaction.value.toString(16) || "00"),
96
- data: transaction.data
97
- ? "0x".concat(transaction.data.toString("hex"))
115
+ value: "0x" + (protoTransaction.value.toString(16) || "00"),
116
+ data: protoTransaction.data
117
+ ? "0x".concat(protoTransaction.data.toString("hex"))
98
118
  : "0x"
99
119
  })];
100
120
  case 3:
@@ -1 +1 @@
1
- {"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../../../src/families/ethereum/prepareTransaction.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wDAAkC;AAElC,6BAKe;AACf,6BAAyC;AACzC,iCAA4C;AAE5C,6CAAqE;AACrE,qCAA4E;AAErE,IAAM,kBAAkB,GAC7B,UAAO,OAAO,EAAE,EAAE;;;;;gBAEd,KAAA,EAAE,CAAC,WAAW,CAAA;wBAAd,wBAAc;gBAAK,qBAAM,IAAA,oBAAc,EAAC,OAAO,CAAC,QAAQ,CAAC,EAAA;;gBAAvC,KAAA,CAAC,SAAsC,CAAC,CAAA;;;gBADtD,WAAW,KAC2C;gBAE5D,IAAI,IAAA,iCAAmB,EAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBACnC,oBAAoB,GAAG,IAAA,+BAAyB,EACpD,EAAE,EACF,WAA0B,CAC3B,CAAC;oBACI,YAAY,GAAG,IAAA,uBAAiB,EACpC,EAAE,EACF,oBAAoB,EACpB,WAA0B,CAC3B,CAAC;oBAEF,IACE,EAAE,CAAC,YAAY,KAAK,YAAY;wBAChC,EAAE,CAAC,oBAAoB,KAAK,oBAAoB;wBAChD,EAAE,CAAC,WAAW,KAAK,WAAW,EAC9B;wBACA,EAAE,yBACG,EAAE,KACL,WAAW,EAAE,WAA0B,EACvC,YAAY,cAAA,EACZ,oBAAoB,sBAAA,GACrB,CAAC;qBACH;iBACF;qBAAM;oBACC,QAAQ,GAAG,IAAA,mBAAa,EAAC,EAAE,EAAE,WAA0B,CAAC,CAAC;oBAC/D,IAAI,EAAE,CAAC,QAAQ,KAAK,QAAQ,IAAI,EAAE,CAAC,WAAW,KAAK,WAAW,EAAE;wBAC9D,EAAE,yBAAQ,EAAE,KAAE,WAAW,EAAE,WAA0B,EAAE,QAAQ,UAAA,GAAE,CAAC;qBACnE;iBACF;qBAGG,IAAA,yBAAiB,EAAC,EAAE,CAAC,SAAS,CAAC,EAA/B,wBAA+B;gBACrB,WAAW,GAAK,IAAA,6BAAe,EACzC,OAAO,EACP,EAAE,EACF,OAAO,CAAC,eAAe,CACxB,GAJsB,CAIrB;gBACF,IAAA,sBAAS,EAAC,WAAW,CAAC,EAAE,EAAE,uCAAuC,CAAC,CAAC;gBAE/C,qBAAM,IAAA,sBAAgB,EACxC,OAAO,EACP,WAAW,CAAC,EAAG,CAAC,QAAQ,EAAE;oBAC1B,qFAAqF;oBACrF;wBACE,IAAI,EAAE,OAAO,CAAC,YAAY;wBAC1B,KAAK,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;wBACtD,IAAI,EAAE,WAAW,CAAC,IAAI;4BACpB,CAAC,CAAC,YAAK,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAE;4BACzC,CAAC,CAAC,IAAI;qBACT,CACF,EAAA;;gBAXD,iBAAiB,GAAG,SAWnB,CAAC;;;gBAGJ,IACE,CAAC,EAAE,CAAC,iBAAiB;oBACrB,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAClE;oBACA,EAAE,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;iBAC1C;gBAEI,qBAAM,IAAA,4BAAyB,EAAC,OAAO,EAAE,EAAE,CAAC,EAAA;;gBAAjD,EAAE,GAAG,SAA4C,CAAC;gBAElD,sBAAO,EAAE,EAAC;;;KACX,CAAC;AApES,QAAA,kBAAkB,sBAoE3B;AAEJ,qBAAe,0BAAkB,CAAC"}
1
+ {"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../../../src/families/ethereum/prepareTransaction.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  },
5
5
  "name": "@ledgerhq/live-common",
6
6
  "description": "Common ground for the Ledger Live apps",
7
- "version": "27.7.1",
7
+ "version": "27.7.2-hotfix.0",
8
8
  "repository": {
9
9
  "type": "git",
10
10
  "url": "https://github.com/LedgerHQ/ledger-live.git"
@@ -72,6 +72,29 @@ describe("Ethereum transaction tests", () => {
72
72
  to: sendMaxTransaction.recipient,
73
73
  });
74
74
  });
75
+
76
+ it("should not return a negative amount for a send max", () => {
77
+ const ethEmptyAccount = {
78
+ ...ethAccount,
79
+ spendableBalance: new BigNumber(0), // empty account
80
+ balance: new BigNumber(0), // empty account
81
+ };
82
+ const sendMaxTransaction = {
83
+ ...createTransaction(),
84
+ recipient: "0xc3f95102D5c8F2c83e49Ce3Acfb905eDfb7f37dE",
85
+ useAllAmount: true,
86
+ maxFeePerGas: new BigNumber(1000000000), // 1 Gwei
87
+ useGasLimit: new BigNumber(21000),
88
+ };
89
+ const txData = {};
90
+
91
+ mode.fillTransactionData(ethEmptyAccount, sendMaxTransaction, txData);
92
+
93
+ expect(txData).toEqual({
94
+ value: "0x0", // theorically this should be negative as the account has 0 ETH but transaction still has fees
95
+ to: sendMaxTransaction.recipient,
96
+ });
97
+ });
75
98
  });
76
99
 
77
100
  describe("ERC1155", () => {
@@ -87,7 +87,11 @@ const send: ModeModule = {
87
87
  const feePerGas = EIP1559ShouldBeUsed(a.currency)
88
88
  ? t.maxFeePerGas
89
89
  : t.gasPrice;
90
- amount = a.spendableBalance.minus(gasLimit.times(feePerGas || 0));
90
+ // Prevents a send max with a negative amount
91
+ amount = BigNumber.maximum(
92
+ a.spendableBalance.minus(gasLimit.times(feePerGas || 0)),
93
+ 0
94
+ );
91
95
  } else {
92
96
  invariant(t.amount, "amount is missing");
93
97
  amount = t.amount;
@@ -11,6 +11,7 @@ import { isEthereumAddress } from "./logic";
11
11
  import { NetworkInfo, Transaction } from "./types";
12
12
  import { buildEthereumTx, EIP1559ShouldBeUsed } from "./transaction";
13
13
  import { prepareTransaction as prepareTransactionModules } from "./modules";
14
+ import { findSubAccountById } from "../../account";
14
15
 
15
16
  export const prepareTransaction: AccountBridge<Transaction>["prepareTransaction"] =
16
17
  async (account, tx) => {
@@ -49,22 +50,38 @@ export const prepareTransaction: AccountBridge<Transaction>["prepareTransaction"
49
50
 
50
51
  let estimatedGasLimit;
51
52
  if (isEthereumAddress(tx.recipient)) {
52
- const { tx: transaction } = buildEthereumTx(
53
- account,
54
- tx,
55
- account.operationsCount
56
- );
57
- invariant(transaction.to, "ethereum transaction has no recipient");
53
+ // building a bear minimum transaction for gas estimation
54
+ const protoTransaction = (() => {
55
+ try {
56
+ return buildEthereumTx(account, tx, account.operationsCount).tx;
57
+ } catch (e) {
58
+ // fallback in case @ethereumjs/tx breaks on building a potentially partial transaction
59
+ const subAccount = tx.subAccountId
60
+ ? findSubAccountById(account, tx.subAccountId)
61
+ : null;
62
+ const recipient =
63
+ subAccount?.type === "TokenAccount"
64
+ ? subAccount.token.contractAddress
65
+ : tx.recipient;
66
+ return {
67
+ from: account.freshAddress,
68
+ to: recipient,
69
+ data: undefined,
70
+ value: tx.amount,
71
+ };
72
+ }
73
+ })();
74
+ invariant(protoTransaction.to, "ethereum transaction has no recipient");
58
75
 
59
76
  estimatedGasLimit = await estimateGasLimit(
60
77
  account,
61
- transaction.to!.toString(),
78
+ protoTransaction.to!.toString(),
62
79
  // Those are the only elements from a transaction necessary to estimate the gas limit
63
80
  {
64
81
  from: account.freshAddress,
65
- value: "0x" + (transaction.value.toString(16) || "00"),
66
- data: transaction.data
67
- ? `0x${transaction.data.toString("hex")}`
82
+ value: "0x" + (protoTransaction.value.toString(16) || "00"),
83
+ data: protoTransaction.data
84
+ ? `0x${protoTransaction.data.toString("hex")}`
68
85
  : "0x",
69
86
  }
70
87
  );