@ledgerhq/coin-tron 0.2.2 → 0.2.3-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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +7 -0
- package/lib/bridge/broadcast.js +3 -12
- package/lib/bridge/broadcast.js.map +1 -1
- package/lib/bridge/estimateMaxSpendable.js +9 -12
- package/lib/bridge/estimateMaxSpendable.js.map +1 -1
- package/lib/bridge/getEstimateFees.js +7 -17
- package/lib/bridge/getEstimateFees.js.map +1 -1
- package/lib/bridge/getTransactionStatus.js +18 -26
- package/lib/bridge/getTransactionStatus.js.map +1 -1
- package/lib/bridge/preload.js +3 -12
- package/lib/bridge/preload.js.map +1 -1
- package/lib/bridge/prepareTransaction.js +4 -13
- package/lib/bridge/prepareTransaction.js.map +1 -1
- package/lib/bridge/serialization.js +8 -8
- package/lib/bridge/serialization.js.map +1 -1
- package/lib/bridge/signOperation.js +39 -53
- package/lib/bridge/signOperation.js.map +1 -1
- package/lib/bridge/synchronization.integ.test.js +10 -15
- package/lib/bridge/synchronization.integ.test.js.map +1 -1
- package/lib/bridge/synchronization.js +25 -23
- package/lib/bridge/synchronization.js.map +1 -1
- package/lib/bridge/transaction.js +20 -4
- package/lib/bridge/transaction.js.map +1 -1
- package/lib/logic/utils.test.js +21 -10
- package/lib/logic/utils.test.js.map +1 -1
- package/lib/network/format.js +4 -5
- package/lib/network/format.js.map +1 -1
- package/lib/network/index.integ.test.js +3 -12
- package/lib/network/index.integ.test.js.map +1 -1
- package/lib/network/index.js +296 -321
- package/lib/network/index.js.map +1 -1
- package/lib/network/index.test.js +4 -14
- package/lib/network/index.test.js.map +1 -1
- package/lib/signer/getAddress.js +4 -13
- package/lib/signer/getAddress.js.map +1 -1
- package/lib/test/bridgeDatasetTest.js +33 -7
- package/lib/test/bridgeDatasetTest.js.map +1 -1
- package/lib/test/cli.js +7 -2
- package/lib/test/cli.js.map +1 -1
- package/lib-es/bridge/broadcast.js +3 -12
- package/lib-es/bridge/broadcast.js.map +1 -1
- package/lib-es/bridge/estimateMaxSpendable.js +9 -12
- package/lib-es/bridge/estimateMaxSpendable.js.map +1 -1
- package/lib-es/bridge/getEstimateFees.js +7 -17
- package/lib-es/bridge/getEstimateFees.js.map +1 -1
- package/lib-es/bridge/getTransactionStatus.js +18 -26
- package/lib-es/bridge/getTransactionStatus.js.map +1 -1
- package/lib-es/bridge/preload.js +3 -12
- package/lib-es/bridge/preload.js.map +1 -1
- package/lib-es/bridge/prepareTransaction.js +4 -13
- package/lib-es/bridge/prepareTransaction.js.map +1 -1
- package/lib-es/bridge/serialization.js +8 -8
- package/lib-es/bridge/serialization.js.map +1 -1
- package/lib-es/bridge/signOperation.js +39 -53
- package/lib-es/bridge/signOperation.js.map +1 -1
- package/lib-es/bridge/synchronization.integ.test.js +10 -15
- package/lib-es/bridge/synchronization.integ.test.js.map +1 -1
- package/lib-es/bridge/synchronization.js +25 -23
- package/lib-es/bridge/synchronization.js.map +1 -1
- package/lib-es/bridge/transaction.js +20 -4
- package/lib-es/bridge/transaction.js.map +1 -1
- package/lib-es/logic/utils.test.js +21 -10
- package/lib-es/logic/utils.test.js.map +1 -1
- package/lib-es/network/format.js +4 -5
- package/lib-es/network/format.js.map +1 -1
- package/lib-es/network/index.integ.test.js +3 -12
- package/lib-es/network/index.integ.test.js.map +1 -1
- package/lib-es/network/index.js +296 -321
- package/lib-es/network/index.js.map +1 -1
- package/lib-es/network/index.test.js +4 -14
- package/lib-es/network/index.test.js.map +1 -1
- package/lib-es/signer/getAddress.js +4 -13
- package/lib-es/signer/getAddress.js.map +1 -1
- package/lib-es/test/bridgeDatasetTest.js +33 -7
- package/lib-es/test/bridgeDatasetTest.js.map +1 -1
- package/lib-es/test/cli.js +7 -2
- package/lib-es/test/cli.js.map +1 -1
- package/package.json +4 -4
- package/tsconfig.json +0 -1
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { getAccountCurrency, getFeesUnit } from "@ledgerhq/coin-framework/account";
|
|
11
2
|
import { AmountRequired, InvalidAddress, InvalidAddressBecauseDestinationIsAlsoSource, NotEnoughBalance, NotEnoughGas, RecipientRequired, } from "@ledgerhq/errors";
|
|
12
3
|
import { formatCurrencyUnit } from "@ledgerhq/coin-framework/currencies";
|
|
@@ -16,8 +7,7 @@ import { ONE_TRX } from "../logic/constants";
|
|
|
16
7
|
import { fetchTronAccount, fetchTronContract, getContractUserEnergyRatioConsumption, getDelegatedResource, getTronSuperRepresentatives, validateAddress, } from "../network";
|
|
17
8
|
import { TronInvalidFreezeAmount, TronInvalidUnDelegateResourceAmount, TronInvalidVoteCount, TronLegacyUnfreezeNotExpired, TronNoFrozenForBandwidth, TronNoFrozenForEnergy, TronNoReward, TronNotEnoughEnergy, TronNotEnoughTronPower, TronNoUnfrozenResource, TronRewardNotAvailable, TronSendTrc20ToNewAccountForbidden, TronUnexpectedFees, TronUnfreezeNotExpired, TronVoteRequired, } from "../types/errors";
|
|
18
9
|
import getEstimatedFees from "./getEstimateFees";
|
|
19
|
-
const getTransactionStatus = (acc, transaction) =>
|
|
20
|
-
var _a, _b, _c, _d;
|
|
10
|
+
const getTransactionStatus = async (acc, transaction) => {
|
|
21
11
|
const errors = {};
|
|
22
12
|
const warnings = {};
|
|
23
13
|
const { family, mode, recipient, resource, votes, useAllAmount = false } = transaction;
|
|
@@ -25,7 +15,7 @@ const getTransactionStatus = (acc, transaction) => __awaiter(void 0, void 0, voi
|
|
|
25
15
|
? null
|
|
26
16
|
: acc.subAccounts && acc.subAccounts.find(ta => ta.id === transaction.subAccountId);
|
|
27
17
|
const account = tokenAccount || acc;
|
|
28
|
-
const isContractInteraction = (
|
|
18
|
+
const isContractInteraction = (await fetchTronContract(tokenAccount ? tokenAccount.token.contractAddress : recipient)) !==
|
|
29
19
|
undefined;
|
|
30
20
|
if (mode === "send" && !recipient) {
|
|
31
21
|
errors.recipient = new RecipientRequired();
|
|
@@ -34,7 +24,7 @@ const getTransactionStatus = (acc, transaction) => __awaiter(void 0, void 0, voi
|
|
|
34
24
|
if (recipient === acc.freshAddress) {
|
|
35
25
|
errors.recipient = new InvalidAddressBecauseDestinationIsAlsoSource();
|
|
36
26
|
}
|
|
37
|
-
else if (recipient && !(
|
|
27
|
+
else if (recipient && !(await validateAddress(recipient))) {
|
|
38
28
|
errors.recipient = new InvalidAddress(undefined, {
|
|
39
29
|
currencyName: acc.currency.name,
|
|
40
30
|
});
|
|
@@ -44,25 +34,25 @@ const getTransactionStatus = (acc, transaction) => __awaiter(void 0, void 0, voi
|
|
|
44
34
|
account.type === "TokenAccount" &&
|
|
45
35
|
account.token.tokenType === "trc20" &&
|
|
46
36
|
!isContractInteraction && // send trc20 to a smart contract is allowed
|
|
47
|
-
(
|
|
37
|
+
(await fetchTronAccount(recipient)).length === 0) {
|
|
48
38
|
// send trc20 to a new account is forbidden by us (because it will not activate the account)
|
|
49
39
|
errors.recipient = new TronSendTrc20ToNewAccountForbidden();
|
|
50
40
|
}
|
|
51
41
|
}
|
|
52
42
|
if (mode === "unfreeze") {
|
|
53
43
|
const { bandwidth, energy } = acc.tronResources.frozen;
|
|
54
|
-
if (resource === "BANDWIDTH" && transaction.amount.gt(
|
|
44
|
+
if (resource === "BANDWIDTH" && transaction.amount.gt(bandwidth?.amount || new BigNumber(0))) {
|
|
55
45
|
errors.resource = new TronNoFrozenForBandwidth();
|
|
56
46
|
}
|
|
57
|
-
else if (resource === "ENERGY" && transaction.amount.gt(
|
|
47
|
+
else if (resource === "ENERGY" && transaction.amount.gt(energy?.amount || new BigNumber(0))) {
|
|
58
48
|
errors.resource = new TronNoFrozenForEnergy();
|
|
59
49
|
}
|
|
60
50
|
}
|
|
61
51
|
if (mode === "legacyUnfreeze") {
|
|
62
52
|
const now = new Date();
|
|
63
53
|
const expirationDate = resource === "ENERGY"
|
|
64
|
-
?
|
|
65
|
-
:
|
|
54
|
+
? acc.tronResources.legacyFrozen.energy?.expiredAt
|
|
55
|
+
: acc.tronResources.legacyFrozen.bandwidth?.expiredAt;
|
|
66
56
|
if (!expirationDate) {
|
|
67
57
|
if (resource === "BANDWIDTH") {
|
|
68
58
|
errors.resource = new TronNoFrozenForBandwidth();
|
|
@@ -84,8 +74,8 @@ const getTransactionStatus = (acc, transaction) => __awaiter(void 0, void 0, voi
|
|
|
84
74
|
}
|
|
85
75
|
else {
|
|
86
76
|
const unfreezingResources = [
|
|
87
|
-
...(
|
|
88
|
-
...(
|
|
77
|
+
...(acc.tronResources.unFrozen.bandwidth ?? []),
|
|
78
|
+
...(acc.tronResources.unFrozen.energy ?? []),
|
|
89
79
|
];
|
|
90
80
|
const hasNoExpiredResource = !unfreezingResources.some(unfrozen => unfrozen.expireTime.getTime() <= now.getTime());
|
|
91
81
|
if (hasNoExpiredResource) {
|
|
@@ -104,7 +94,7 @@ const getTransactionStatus = (acc, transaction) => __awaiter(void 0, void 0, voi
|
|
|
104
94
|
}
|
|
105
95
|
}
|
|
106
96
|
if (mode === "unDelegateResource" && resource && acc.tronResources) {
|
|
107
|
-
const delegatedResourceAmount =
|
|
97
|
+
const delegatedResourceAmount = await getDelegatedResource(acc, transaction, resource);
|
|
108
98
|
if (delegatedResourceAmount.lt(transaction.amount)) {
|
|
109
99
|
errors.resource = new TronInvalidUnDelegateResourceAmount();
|
|
110
100
|
}
|
|
@@ -114,7 +104,7 @@ const getTransactionStatus = (acc, transaction) => __awaiter(void 0, void 0, voi
|
|
|
114
104
|
errors.vote = new TronVoteRequired();
|
|
115
105
|
}
|
|
116
106
|
else {
|
|
117
|
-
const superRepresentatives =
|
|
107
|
+
const superRepresentatives = await getTronSuperRepresentatives();
|
|
118
108
|
const isValidVoteCounts = votes.every(v => v.voteCount > 0);
|
|
119
109
|
const isValidAddresses = votes.every(v => superRepresentatives.some(s => s.address === v.address));
|
|
120
110
|
if (!isValidAddresses) {
|
|
@@ -150,7 +140,7 @@ const getTransactionStatus = (acc, transaction) => __awaiter(void 0, void 0, voi
|
|
|
150
140
|
}
|
|
151
141
|
const estimatedFees = Object.entries(errors).length > 0
|
|
152
142
|
? new BigNumber(0)
|
|
153
|
-
:
|
|
143
|
+
: await getEstimatedFees(acc, transaction, tokenAccount);
|
|
154
144
|
const balance = account.type === "Account"
|
|
155
145
|
? BigNumber.max(0, account.spendableBalance.minus(estimatedFees))
|
|
156
146
|
: account.balance;
|
|
@@ -183,7 +173,7 @@ const getTransactionStatus = (acc, transaction) => __awaiter(void 0, void 0, voi
|
|
|
183
173
|
account.token.tokenType === "trc20" &&
|
|
184
174
|
energy.lt(47619) // temporary value corresponding to usdt trc20 energy
|
|
185
175
|
) {
|
|
186
|
-
const contractUserEnergyConsumption =
|
|
176
|
+
const contractUserEnergyConsumption = await getContractUserEnergyRatioConsumption(account.token.contractAddress);
|
|
187
177
|
if (contractUserEnergyConsumption > 0) {
|
|
188
178
|
warnings.amount = new TronNotEnoughEnergy();
|
|
189
179
|
}
|
|
@@ -204,7 +194,9 @@ const getTransactionStatus = (acc, transaction) => __awaiter(void 0, void 0, voi
|
|
|
204
194
|
// PTX swap uses this to support deeplink to buy additional currency
|
|
205
195
|
//
|
|
206
196
|
if (parentAccountBalance.lt(estimatedFees) || parentAccountBalance.isZero()) {
|
|
207
|
-
const query = new URLSearchParams(
|
|
197
|
+
const query = new URLSearchParams({
|
|
198
|
+
...(acc?.id ? { account: acc.id } : {}),
|
|
199
|
+
});
|
|
208
200
|
errors.gasLimit = new NotEnoughGas(undefined, {
|
|
209
201
|
fees: formatCurrencyUnit(getFeesUnit(acc.currency), estimatedFees),
|
|
210
202
|
ticker: acc.currency.ticker,
|
|
@@ -220,6 +212,6 @@ const getTransactionStatus = (acc, transaction) => __awaiter(void 0, void 0, voi
|
|
|
220
212
|
totalSpent,
|
|
221
213
|
family,
|
|
222
214
|
});
|
|
223
|
-
}
|
|
215
|
+
};
|
|
224
216
|
export default getTransactionStatus;
|
|
225
217
|
//# sourceMappingURL=getTransactionStatus.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTransactionStatus.js","sourceRoot":"","sources":["../../src/bridge/getTransactionStatus.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getTransactionStatus.js","sourceRoot":"","sources":["../../src/bridge/getTransactionStatus.ts"],"names":[],"mappings":"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"}
|
package/lib-es/bridge/preload.js
CHANGED
|
@@ -1,19 +1,10 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { getTronSuperRepresentatives, hydrateSuperRepresentatives } from "../network";
|
|
11
|
-
export const preload = () =>
|
|
12
|
-
const superRepresentatives =
|
|
2
|
+
export const preload = async () => {
|
|
3
|
+
const superRepresentatives = await getTronSuperRepresentatives();
|
|
13
4
|
return {
|
|
14
5
|
superRepresentatives,
|
|
15
6
|
};
|
|
16
|
-
}
|
|
7
|
+
};
|
|
17
8
|
export const hydrate = (data) => {
|
|
18
9
|
if (!data || !data.superRepresentatives)
|
|
19
10
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preload.js","sourceRoot":"","sources":["../../src/bridge/preload.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"preload.js","sourceRoot":"","sources":["../../src/bridge/preload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAGtF,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;IAChC,MAAM,oBAAoB,GAAG,MAAM,2BAA2B,EAAE,CAAC;IACjE,OAAO;QACL,oBAAoB;KACrB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAuD,EAAE,EAAE;IACjF,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,oBAAoB;QAAE,OAAO;IAEhD,MAAM,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;IAEtC,IACE,CAAC,oBAAoB;QACrB,OAAO,oBAAoB,KAAK,QAAQ;QACxC,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAEpC,OAAO;IAET,2BAA2B,CAAC,oBAAoB,CAAC,CAAC;AACpD,CAAC,CAAC"}
|
|
@@ -1,15 +1,6 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { getTronAccountNetwork } from "../network";
|
|
11
|
-
export const prepareTransaction = (account, transaction) =>
|
|
12
|
-
const networkInfo = transaction.networkInfo || (
|
|
13
|
-
return transaction.networkInfo === networkInfo ? transaction :
|
|
14
|
-
}
|
|
2
|
+
export const prepareTransaction = async (account, transaction) => {
|
|
3
|
+
const networkInfo = transaction.networkInfo || (await getTronAccountNetwork(account.freshAddress));
|
|
4
|
+
return transaction.networkInfo === networkInfo ? transaction : { ...transaction, networkInfo };
|
|
5
|
+
};
|
|
15
6
|
//# sourceMappingURL=prepareTransaction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,MAAM,CAAC,MAAM,kBAAkB,GAGL,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;IACvD,MAAM,WAAW,GACf,WAAW,CAAC,WAAW,IAAI,CAAC,MAAM,qBAAqB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IACjF,OAAO,WAAW,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,WAAW,EAAE,CAAC;AACjG,CAAC,CAAC"}
|
|
@@ -6,10 +6,10 @@ export const toTronResourcesRaw = ({ frozen, unFrozen, delegatedFrozen, legacyFr
|
|
|
6
6
|
const delegatedFrozenBandwidth = delegatedFrozen.bandwidth;
|
|
7
7
|
const delegatedFrozenEnergy = delegatedFrozen.energy;
|
|
8
8
|
const cacheTransactionInfoById = {};
|
|
9
|
-
const unFrozenBandwidth = unFrozen
|
|
10
|
-
const unFrozenEnergy = unFrozen
|
|
11
|
-
const legacyFrozenBandwidth = legacyFrozen
|
|
12
|
-
const legacyFrozenEnergy = legacyFrozen
|
|
9
|
+
const unFrozenBandwidth = unFrozen?.bandwidth;
|
|
10
|
+
const unFrozenEnergy = unFrozen?.energy;
|
|
11
|
+
const legacyFrozenBandwidth = legacyFrozen?.bandwidth;
|
|
12
|
+
const legacyFrozenEnergy = legacyFrozen?.energy;
|
|
13
13
|
for (const k in cacheTx) {
|
|
14
14
|
const { fee, blockNumber, withdraw_amount, unfreeze_amount } = cacheTx[k];
|
|
15
15
|
cacheTransactionInfoById[k] = [fee, blockNumber, withdraw_amount, unfreeze_amount];
|
|
@@ -87,10 +87,10 @@ export const fromTronResourcesRaw = ({ frozen, unFrozen, delegatedFrozen, legacy
|
|
|
87
87
|
const frozenEnergy = frozen.energy;
|
|
88
88
|
const delegatedFrozenBandwidth = delegatedFrozen.bandwidth;
|
|
89
89
|
const delegatedFrozenEnergy = delegatedFrozen.energy;
|
|
90
|
-
const unFrozenBandwidth = unFrozen
|
|
91
|
-
const unFrozenEnergy = unFrozen
|
|
92
|
-
const legacyFrozenBandwidth = legacyFrozen
|
|
93
|
-
const legacyFrozenEnergy = legacyFrozen
|
|
90
|
+
const unFrozenBandwidth = unFrozen?.bandwidth;
|
|
91
|
+
const unFrozenEnergy = unFrozen?.energy;
|
|
92
|
+
const legacyFrozenBandwidth = legacyFrozen?.bandwidth;
|
|
93
|
+
const legacyFrozenEnergy = legacyFrozen?.energy;
|
|
94
94
|
const cacheTransactionInfoById = {};
|
|
95
95
|
if (cacheTransactionInfoByIdRaw) {
|
|
96
96
|
for (const k in cacheTransactionInfoByIdRaw) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialization.js","sourceRoot":"","sources":["../../src/bridge/serialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAGL,qBAAqB,EACrB,wBAAwB,GAOzB,MAAM,UAAU,CAAC;AAGlB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EACjC,MAAM,EACN,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,KAAK,EACL,SAAS,EACT,MAAM,EACN,SAAS,EACT,iBAAiB,EACjB,uBAAuB,EACvB,aAAa,EACb,wBAAwB,EAAE,OAAO,GACnB,EAAoB,EAAE;IACpC,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC;IACzC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IACnC,MAAM,wBAAwB,GAAG,eAAe,CAAC,SAAS,CAAC;IAC3D,MAAM,qBAAqB,GAAG,eAAe,CAAC,MAAM,CAAC;IACrD,MAAM,wBAAwB,GAA2C,EAAE,CAAC;IAC5E,MAAM,iBAAiB,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"serialization.js","sourceRoot":"","sources":["../../src/bridge/serialization.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,62 +1,48 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import BigNumber from "bignumber.js";
|
|
11
2
|
import { Observable } from "rxjs";
|
|
12
3
|
import { claimRewardTronTransaction, createTronTransaction, freezeTronTransaction, legacyUnfreezeTronTransaction, unDelegateResourceTransaction, unfreezeTronTransaction, voteTronSuperRepresentatives, withdrawExpireUnfreezeTronTransaction, } from "../network";
|
|
13
4
|
import { buildOptimisticOperation } from "./buildOptimisticOperation";
|
|
14
5
|
import getEstimatedFees from "./getEstimateFees";
|
|
15
6
|
export const buildSignOperation = (signerContext) => ({ account, transaction, deviceId }) => new Observable(o => {
|
|
16
|
-
function main() {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
operation,
|
|
56
|
-
signature,
|
|
57
|
-
rawData,
|
|
58
|
-
},
|
|
59
|
-
});
|
|
7
|
+
async function main() {
|
|
8
|
+
const subAccount = transaction.subAccountId && account.subAccounts
|
|
9
|
+
? account.subAccounts.find(sa => sa.id === transaction.subAccountId)
|
|
10
|
+
: undefined;
|
|
11
|
+
const fee = await getEstimatedFees(account, transaction, subAccount);
|
|
12
|
+
const balance = subAccount
|
|
13
|
+
? subAccount.balance
|
|
14
|
+
: BigNumber.max(0, account.spendableBalance.minus(fee));
|
|
15
|
+
if (transaction.useAllAmount) {
|
|
16
|
+
transaction = { ...transaction }; // transaction object must not be mutated
|
|
17
|
+
transaction.amount = balance; // force the amount to be the max
|
|
18
|
+
}
|
|
19
|
+
const { raw_data_hex: rawDataHex, raw_data: rawData, txID: hash, } = await prepareTransactionForSignature(account, subAccount, transaction);
|
|
20
|
+
o.next({
|
|
21
|
+
type: "device-signature-requested",
|
|
22
|
+
});
|
|
23
|
+
const txArg = {
|
|
24
|
+
rawDataHex,
|
|
25
|
+
// only for trc10, we need to put the token ledger signature
|
|
26
|
+
tokenSignature: subAccount &&
|
|
27
|
+
subAccount.type === "TokenAccount" &&
|
|
28
|
+
subAccount.token.id.includes("trc10")
|
|
29
|
+
? subAccount.token.ledgerSignature
|
|
30
|
+
: undefined,
|
|
31
|
+
};
|
|
32
|
+
// Sign by device
|
|
33
|
+
const signature = await signerContext(deviceId, signer => signer.sign(account.freshAddressPath, txArg.rawDataHex ?? "", //FIXME: why rawDataHex could be undefined? This shouldn't be the case.
|
|
34
|
+
txArg.tokenSignature ? [txArg.tokenSignature] : []));
|
|
35
|
+
o.next({
|
|
36
|
+
type: "device-signature-granted",
|
|
37
|
+
});
|
|
38
|
+
const operation = buildOptimisticOperation(account, subAccount, transaction, fee, hash);
|
|
39
|
+
o.next({
|
|
40
|
+
type: "signed",
|
|
41
|
+
signedOperation: {
|
|
42
|
+
operation,
|
|
43
|
+
signature,
|
|
44
|
+
rawData,
|
|
45
|
+
},
|
|
60
46
|
});
|
|
61
47
|
}
|
|
62
48
|
main().then(() => o.complete(), e => o.error(e));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signOperation.js","sourceRoot":"","sources":["../../src/bridge/signOperation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"signOperation.js","sourceRoot":"","sources":["../../src/bridge/signOperation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import BigNumber from "bignumber.js";
|
|
11
2
|
import { firstValueFrom, reduce } from "rxjs";
|
|
12
3
|
import { getCryptoCurrencyById } from "@ledgerhq/cryptoassets/index";
|
|
@@ -69,10 +60,10 @@ describe("Sync Accounts", () => {
|
|
|
69
60
|
});
|
|
70
61
|
bridge = createBridges(signer, coinConfig);
|
|
71
62
|
});
|
|
72
|
-
test("should always have tronResources", () =>
|
|
73
|
-
const account =
|
|
63
|
+
test("should always have tronResources", async () => {
|
|
64
|
+
const account = await syncAccount(bridge.accountBridge, dummyAccount, defaultSyncConfig);
|
|
74
65
|
expect(account.tronResources).toEqual(defaultTronResources);
|
|
75
|
-
})
|
|
66
|
+
});
|
|
76
67
|
test.each([
|
|
77
68
|
"TL24LCps5FKwp3PoU1MvrYrwhi5LU1tHre",
|
|
78
69
|
"TAVrrARNdnjHgCGMQYeQV7hv4PSu7mVsMj",
|
|
@@ -80,9 +71,13 @@ describe("Sync Accounts", () => {
|
|
|
80
71
|
"TRqkRnAj6ceJFYAn2p1eE7aWrgBBwtdhS9",
|
|
81
72
|
"TUxd6v64YTWkfpFpNDdtgc5Ps4SfGxwizT",
|
|
82
73
|
"TY2ksFgpvb82TgGPwUSa7iseqPW5weYQyh",
|
|
83
|
-
])("should always be sync without error for address %s", (accountId) =>
|
|
84
|
-
const account =
|
|
74
|
+
])("should always be sync without error for address %s", async (accountId) => {
|
|
75
|
+
const account = await syncAccount(bridge.accountBridge, {
|
|
76
|
+
...dummyAccount,
|
|
77
|
+
id: `js:2:tron:${accountId}:`,
|
|
78
|
+
freshAddress: accountId,
|
|
79
|
+
});
|
|
85
80
|
expect(account.id).toEqual(`js:2:tron:${accountId}:`);
|
|
86
|
-
}
|
|
81
|
+
}, 15 * 1_000);
|
|
87
82
|
});
|
|
88
83
|
//# sourceMappingURL=synchronization.integ.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"synchronization.integ.test.js","sourceRoot":"","sources":["../../src/bridge/synchronization.integ.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"synchronization.integ.test.js","sourceRoot":"","sources":["../../src/bridge/synchronization.integ.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { emptyHistoryCache, encodeAccountId, encodeTokenAccountId, } from "@ledgerhq/coin-framework/account";
|
|
11
2
|
import { makeSync } from "@ledgerhq/coin-framework/bridge/jsHelpers";
|
|
12
3
|
import { encodeOperationId } from "@ledgerhq/coin-framework/operation";
|
|
@@ -19,10 +10,9 @@ import { isParentTx, txInfoToOperation } from "../logic/utils";
|
|
|
19
10
|
import { fetchCurrentBlockHeight, fetchTronAccount, fetchTronAccountTxs, getTronResources, } from "../network";
|
|
20
11
|
// the balance does not update straightaway so we should ignore recent operations if they are in pending for a bit
|
|
21
12
|
const PREFER_PENDING_OPERATIONS_UNTIL_BLOCK_VALIDATION = 35;
|
|
22
|
-
export const getAccountShape =
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
const tronAcc = yield fetchTronAccount(address);
|
|
13
|
+
export const getAccountShape = async ({ initialAccount, currency, address, derivationMode }, syncConfig) => {
|
|
14
|
+
const blockHeight = await fetchCurrentBlockHeight();
|
|
15
|
+
const tronAcc = await fetchTronAccount(address);
|
|
26
16
|
const accountId = encodeAccountId({
|
|
27
17
|
type: "js",
|
|
28
18
|
version: "2",
|
|
@@ -31,7 +21,7 @@ export const getAccountShape = (_a, syncConfig_1) => __awaiter(void 0, [_a, sync
|
|
|
31
21
|
derivationMode: derivationMode,
|
|
32
22
|
});
|
|
33
23
|
if (tronAcc.length === 0) {
|
|
34
|
-
const defaultTronResources =
|
|
24
|
+
const defaultTronResources = await getTronResources();
|
|
35
25
|
return {
|
|
36
26
|
id: accountId,
|
|
37
27
|
blockHeight,
|
|
@@ -42,12 +32,15 @@ export const getAccountShape = (_a, syncConfig_1) => __awaiter(void 0, [_a, sync
|
|
|
42
32
|
const acc = tronAcc[0];
|
|
43
33
|
const spendableBalance = acc.balance ? new BigNumber(acc.balance) : new BigNumber(0);
|
|
44
34
|
const cacheTransactionInfoById = initialAccount
|
|
45
|
-
?
|
|
35
|
+
? {
|
|
36
|
+
...(initialAccount?.tronResources?.cacheTransactionInfoById || {}),
|
|
37
|
+
}
|
|
38
|
+
: {};
|
|
46
39
|
const operationsPageSize = Math.min(1000, getOperationsPageSize(initialAccount && initialAccount.id, syncConfig));
|
|
47
40
|
// FIXME: this is not optional especially that we might already have initialAccount
|
|
48
41
|
// use minimalOperationsBuilderSync to reconciliate and KEEP REF
|
|
49
|
-
const txs =
|
|
50
|
-
const tronResources =
|
|
42
|
+
const txs = await fetchTronAccountTxs(address, txs => txs.length < operationsPageSize, cacheTransactionInfoById);
|
|
43
|
+
const tronResources = await getTronResources(acc, txs, cacheTransactionInfoById);
|
|
51
44
|
const balance = spendableBalance
|
|
52
45
|
.plus(tronResources.frozen.bandwidth ? tronResources.frozen.bandwidth.amount : new BigNumber(0))
|
|
53
46
|
.plus(tronResources.frozen.energy ? tronResources.frozen.energy.amount : new BigNumber(0))
|
|
@@ -102,7 +95,6 @@ export const getAccountShape = (_a, syncConfig_1) => __awaiter(void 0, [_a, sync
|
|
|
102
95
|
}, []);
|
|
103
96
|
const { blacklistedTokenIds = [] } = syncConfig;
|
|
104
97
|
const subAccounts = compact(trc10Tokens.concat(trc20Tokens).map(({ key, tokenId, balance }) => {
|
|
105
|
-
var _a;
|
|
106
98
|
const { blacklistedTokenIds = [] } = syncConfig;
|
|
107
99
|
const token = findTokenById(tokenId);
|
|
108
100
|
if (!token || blacklistedTokenIds.includes(tokenId))
|
|
@@ -110,7 +102,7 @@ export const getAccountShape = (_a, syncConfig_1) => __awaiter(void 0, [_a, sync
|
|
|
110
102
|
const id = encodeTokenAccountId(accountId, token);
|
|
111
103
|
const tokenTxs = txs.filter(tx => tx.tokenId === key);
|
|
112
104
|
const operations = compact(tokenTxs.map(tx => txInfoToOperation(id, address, tx)));
|
|
113
|
-
const maybeExistingSubAccount =
|
|
105
|
+
const maybeExistingSubAccount = initialAccount?.subAccounts?.find(a => a.id === id);
|
|
114
106
|
const bnBalance = new BigNumber(balance);
|
|
115
107
|
const sub = {
|
|
116
108
|
type: "TokenAccount",
|
|
@@ -130,14 +122,20 @@ export const getAccountShape = (_a, syncConfig_1) => __awaiter(void 0, [_a, sync
|
|
|
130
122
|
}));
|
|
131
123
|
// Filter blacklisted tokens from the initial account's subAccounts
|
|
132
124
|
// Could be use to filter out tokens that got their CAL id changed
|
|
133
|
-
const filteredInitialSubAccounts = (
|
|
125
|
+
const filteredInitialSubAccounts = (initialAccount?.subAccounts || []).filter(subAccount => !blacklistedTokenIds.includes(subAccount.token.id));
|
|
134
126
|
// keep old account with emptyBalance and a history not returned by the BE fixes LIVE-12797
|
|
135
127
|
const mergedSubAccounts = mergeSubAccounts(subAccounts, filteredInitialSubAccounts);
|
|
136
128
|
// get 'OUT' token operations with fee
|
|
137
129
|
const subOutOperationsWithFee = subAccounts
|
|
138
130
|
.flatMap(s => s.operations)
|
|
139
131
|
.filter(o => o.type === "OUT" && o.fee.isGreaterThan(0))
|
|
140
|
-
.map((o) => (
|
|
132
|
+
.map((o) => ({
|
|
133
|
+
...o,
|
|
134
|
+
accountId,
|
|
135
|
+
value: o.fee,
|
|
136
|
+
id: encodeOperationId(accountId, o.hash, "OUT"),
|
|
137
|
+
extra: o.extra,
|
|
138
|
+
}));
|
|
141
139
|
// add them to the parent operations and sort by date desc
|
|
142
140
|
/**
|
|
143
141
|
* FIXME
|
|
@@ -159,7 +157,7 @@ export const getAccountShape = (_a, syncConfig_1) => __awaiter(void 0, [_a, sync
|
|
|
159
157
|
tronResources,
|
|
160
158
|
blockHeight,
|
|
161
159
|
};
|
|
162
|
-
}
|
|
160
|
+
};
|
|
163
161
|
const postSync = (initial, parent) => {
|
|
164
162
|
function evictRecentOpsIfPending(a) {
|
|
165
163
|
a.pendingOperations.forEach(pending => {
|
|
@@ -196,7 +194,11 @@ const mergeSubAccounts = (subAccounts1, subAccounts2) => {
|
|
|
196
194
|
}
|
|
197
195
|
else {
|
|
198
196
|
// Set balance and spendableBalance to 0 has if they are not here it means balance is 0
|
|
199
|
-
return
|
|
197
|
+
return {
|
|
198
|
+
...subAccount,
|
|
199
|
+
balance: new BigNumber(0),
|
|
200
|
+
spendableBalance: new BigNumber(0),
|
|
201
|
+
};
|
|
200
202
|
}
|
|
201
203
|
})
|
|
202
204
|
.filter((elt) => elt !== null);
|