@ledgerhq/live-common 21.32.0 → 21.32.4
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/lib/__tests__/families/bitcoin/wallet-btc/wallet.integration.test.js +1 -0
- package/lib/__tests__/families/bitcoin/wallet-btc/wallet.integration.test.js.map +1 -1
- package/lib/__tests__/families/bitcoin/wallet-btc/xpub.getAddress.d.ts +2 -0
- package/lib/__tests__/families/bitcoin/wallet-btc/xpub.getAddress.d.ts.map +1 -0
- package/lib/__tests__/families/bitcoin/wallet-btc/xpub.getAddress.js +126 -0
- package/lib/__tests__/families/bitcoin/wallet-btc/xpub.getAddress.js.map +1 -0
- package/lib/__tests__/families/bitcoin/wallet-btc/xpub.pickingStrategies.integration.test.js +0 -10
- package/lib/__tests__/families/bitcoin/wallet-btc/xpub.pickingStrategies.integration.test.js.map +1 -1
- package/lib/api/Ethereum.d.ts.map +1 -1
- package/lib/api/Ethereum.js +1 -0
- package/lib/api/Ethereum.js.map +1 -1
- package/lib/apps/logic.d.ts.map +1 -1
- package/lib/apps/logic.js +7 -5
- package/lib/apps/logic.js.map +1 -1
- package/lib/apps/polyfill.d.ts.map +1 -1
- package/lib/apps/polyfill.js +1 -0
- package/lib/apps/polyfill.js.map +1 -1
- package/lib/bot/engine.d.ts.map +1 -1
- package/lib/bot/engine.js +3 -0
- package/lib/bot/engine.js.map +1 -1
- package/lib/env.d.ts +10 -5
- package/lib/env.d.ts.map +1 -1
- package/lib/env.js +5 -0
- package/lib/env.js.map +1 -1
- package/lib/env.react.d.ts +1 -1
- package/lib/env.react.d.ts.map +1 -1
- package/lib/errors.d.ts +3 -0
- package/lib/errors.d.ts.map +1 -1
- package/lib/errors.js +3 -2
- package/lib/errors.js.map +1 -1
- package/lib/exchange/platform/transfer/index.d.ts.map +1 -1
- package/lib/exchange/platform/transfer/index.js +15 -1
- package/lib/exchange/platform/transfer/index.js.map +1 -1
- package/lib/families/algorand/buildTransaction.d.ts +2 -2
- package/lib/families/algorand/buildTransaction.d.ts.map +1 -1
- package/lib/families/algorand/buildTransaction.js +13 -19
- package/lib/families/algorand/buildTransaction.js.map +1 -1
- package/lib/families/algorand/js-getFeesForTransaction.js +4 -6
- package/lib/families/algorand/js-getFeesForTransaction.js.map +1 -1
- package/lib/families/algorand/js-signOperation.js +3 -7
- package/lib/families/algorand/js-signOperation.js.map +1 -1
- package/lib/families/algorand/js-synchronization.d.ts.map +1 -1
- package/lib/families/algorand/js-synchronization.js +1 -0
- package/lib/families/algorand/js-synchronization.js.map +1 -1
- package/lib/families/bitcoin/js-signOperation.d.ts.map +1 -1
- package/lib/families/bitcoin/js-signOperation.js +3 -5
- package/lib/families/bitcoin/js-signOperation.js.map +1 -1
- package/lib/families/bitcoin/js-synchronisation.js +4 -4
- package/lib/families/bitcoin/js-synchronisation.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/base.d.ts +4 -3
- package/lib/families/bitcoin/wallet-btc/crypto/base.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/base.js +8 -7
- package/lib/families/bitcoin/wallet-btc/crypto/base.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/bip32.js +2 -2
- package/lib/families/bitcoin/wallet-btc/crypto/bip32.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoin.d.ts +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoin.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoin.js +3 -7
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoin.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoincash.d.ts +3 -4
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoincash.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoincash.js +27 -53
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoincash.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/decred.d.ts +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/decred.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/decred.js +2 -7
- package/lib/families/bitcoin/wallet-btc/crypto/decred.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/litecoin.d.ts +1 -6
- package/lib/families/bitcoin/wallet-btc/crypto/litecoin.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/litecoin.js +0 -51
- package/lib/families/bitcoin/wallet-btc/crypto/litecoin.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/types.d.ts +1 -0
- package/lib/families/bitcoin/wallet-btc/crypto/types.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/zec.d.ts +5 -6
- package/lib/families/bitcoin/wallet-btc/crypto/zec.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/zec.js +63 -33
- package/lib/families/bitcoin/wallet-btc/crypto/zec.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/zen.d.ts +3 -5
- package/lib/families/bitcoin/wallet-btc/crypto/zen.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/zen.js +77 -46
- package/lib/families/bitcoin/wallet-btc/crypto/zen.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/explorer/index.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/explorer/index.js +20 -0
- package/lib/families/bitcoin/wallet-btc/explorer/index.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/storage/types.d.ts +0 -1
- package/lib/families/bitcoin/wallet-btc/storage/types.d.ts.map +1 -1
- package/lib/families/celo/speculos-deviceActions.d.ts.map +1 -1
- package/lib/families/celo/speculos-deviceActions.js +1 -2
- package/lib/families/celo/speculos-deviceActions.js.map +1 -1
- package/lib/families/ethereum/signOperation.d.ts.map +1 -1
- package/lib/families/ethereum/signOperation.js +26 -15
- package/lib/families/ethereum/signOperation.js.map +1 -1
- package/lib/families/ethereum/specs.d.ts.map +1 -1
- package/lib/families/ethereum/specs.js +2 -4
- package/lib/families/ethereum/specs.js.map +1 -1
- package/lib/families/ethereum/transaction.d.ts +4 -1
- package/lib/families/ethereum/transaction.d.ts.map +1 -1
- package/lib/families/ethereum/transaction.js +15 -27
- package/lib/families/ethereum/transaction.js.map +1 -1
- package/lib/families/solana/api/chain/instruction/token/types.d.ts +1 -1
- package/lib/families/solana/specs.js +1 -1
- package/lib/families/solana/specs.js.map +1 -1
- package/lib/families/solana/test-dataset.d.ts.map +1 -1
- package/lib/families/solana/test-dataset.js +1 -2
- package/lib/families/solana/test-dataset.js.map +1 -1
- package/lib/families/tezos/bakers.whitelist-default.d.ts.map +1 -1
- package/lib/families/tezos/bakers.whitelist-default.js +1 -1
- package/lib/families/tezos/bakers.whitelist-default.js.map +1 -1
- package/lib/families/tezos/bridge/js.d.ts.map +1 -1
- package/lib/families/tezos/bridge/js.js +2 -1
- package/lib/families/tezos/bridge/js.js.map +1 -1
- package/lib/families/tezos/synchronisation.d.ts.map +1 -1
- package/lib/families/tezos/synchronisation.js +2 -0
- package/lib/families/tezos/synchronisation.js.map +1 -1
- package/lib/families/tezos/test-specifics.d.ts.map +1 -1
- package/lib/families/tezos/test-specifics.js +1 -0
- package/lib/families/tezos/test-specifics.js.map +1 -1
- package/lib/families/tron/synchronisation.test.js +1 -0
- package/lib/families/tron/synchronisation.test.js.map +1 -1
- package/lib/featureFlags/FeatureToggle.js +2 -2
- package/lib/featureFlags/FeatureToggle.js.map +1 -1
- package/lib/featureFlags/defaultFeatures.js +1 -1
- package/lib/featureFlags/defaultFeatures.js.map +1 -1
- package/lib/featureFlags/types.d.ts +1 -1
- package/lib/featureFlags/types.d.ts.map +1 -1
- package/lib/load/speculos.d.ts +7 -0
- package/lib/load/speculos.d.ts.map +1 -1
- package/lib/load/speculos.js +27 -11
- package/lib/load/speculos.js.map +1 -1
- package/lib/platform/PlatformAppProvider/helpers.d.ts +1 -0
- package/lib/platform/PlatformAppProvider/helpers.d.ts.map +1 -1
- package/lib/platform/PlatformAppProvider/helpers.js +23 -1
- package/lib/platform/PlatformAppProvider/helpers.js.map +1 -1
- package/lib/platform/PlatformAppProvider/index.d.ts.map +1 -1
- package/lib/platform/PlatformAppProvider/index.js +2 -1
- package/lib/platform/PlatformAppProvider/index.js.map +1 -1
- package/package.json +21 -21
- package/src/__tests__/__snapshots__/all.libcore.ts.snap +109 -23
- package/src/__tests__/families/bitcoin/wallet-btc/wallet.integration.test.ts +2 -0
- package/src/__tests__/families/bitcoin/wallet-btc/xpub.getAddress.ts +78 -0
- package/src/__tests__/families/bitcoin/wallet-btc/xpub.pickingStrategies.integration.test.ts +0 -11
- package/src/api/Ethereum.ts +1 -0
- package/src/apps/logic.ts +6 -3
- package/src/apps/polyfill.ts +1 -0
- package/src/bot/engine.ts +3 -0
- package/src/env.ts +5 -0
- package/src/errors.ts +3 -0
- package/src/exchange/platform/transfer/index.ts +21 -1
- package/src/families/algorand/buildTransaction.ts +4 -8
- package/src/families/algorand/js-getFeesForTransaction.ts +1 -1
- package/src/families/algorand/js-signOperation.ts +2 -2
- package/src/families/algorand/js-synchronization.ts +1 -0
- package/src/families/bitcoin/js-signOperation.ts +3 -5
- package/src/families/bitcoin/js-synchronisation.ts +4 -4
- package/src/families/bitcoin/wallet-btc/crypto/base.ts +31 -18
- package/src/families/bitcoin/wallet-btc/crypto/bip32.ts +2 -2
- package/src/families/bitcoin/wallet-btc/crypto/bitcoin.ts +3 -17
- package/src/families/bitcoin/wallet-btc/crypto/bitcoincash.ts +5 -39
- package/src/families/bitcoin/wallet-btc/crypto/decred.ts +2 -15
- package/src/families/bitcoin/wallet-btc/crypto/litecoin.ts +1 -71
- package/src/families/bitcoin/wallet-btc/crypto/types.ts +7 -0
- package/src/families/bitcoin/wallet-btc/crypto/zec.ts +23 -41
- package/src/families/bitcoin/wallet-btc/crypto/zen.ts +30 -49
- package/src/families/bitcoin/wallet-btc/explorer/index.ts +20 -0
- package/src/families/bitcoin/wallet-btc/storage/types.ts +0 -1
- package/src/families/celo/speculos-deviceActions.ts +0 -1
- package/src/families/ethereum/signOperation.ts +21 -20
- package/src/families/ethereum/specs.ts +0 -2
- package/src/families/ethereum/transaction.ts +10 -24
- package/src/families/solana/specs.ts +1 -1
- package/src/families/solana/test-dataset.ts +3 -4
- package/src/families/tezos/bakers.whitelist-default.ts +0 -2
- package/src/families/tezos/bridge/js.ts +6 -1
- package/src/families/tezos/synchronisation.ts +2 -0
- package/src/families/tezos/test-specifics.ts +1 -0
- package/src/families/tron/synchronisation.test.ts +2 -0
- package/src/featureFlags/FeatureToggle.tsx +2 -2
- package/src/featureFlags/defaultFeatures.ts +1 -1
- package/src/featureFlags/types.ts +1 -1
- package/src/load/speculos.ts +23 -10
- package/src/platform/PlatformAppProvider/helpers.ts +29 -0
- package/src/platform/PlatformAppProvider/index.tsx +3 -2
- package/src/currencies/__snapshots__/sortByMarketcap.test.ts.snap +0 -6195
|
@@ -2,6 +2,7 @@ import invariant from "invariant";
|
|
|
2
2
|
import { Observable, from, of } from "rxjs";
|
|
3
3
|
import { mergeMap } from "rxjs/operators";
|
|
4
4
|
import eip55 from "eip55";
|
|
5
|
+
import { encode } from "rlp";
|
|
5
6
|
import { BigNumber } from "bignumber.js";
|
|
6
7
|
import { log } from "@ledgerhq/logs";
|
|
7
8
|
import { FeeNotLoaded } from "@ledgerhq/errors";
|
|
@@ -17,6 +18,7 @@ import { modes } from "./modules";
|
|
|
17
18
|
import { isNFTActive } from "../../nft";
|
|
18
19
|
import { getEnv } from "../../env";
|
|
19
20
|
import { LoadConfig } from "@ledgerhq/hw-app-eth/lib/services/types";
|
|
21
|
+
import { Transaction as EthereumTx } from "@ethereumjs/tx";
|
|
20
22
|
export const signOperation = ({
|
|
21
23
|
account,
|
|
22
24
|
deviceId,
|
|
@@ -54,18 +56,16 @@ export const signOperation = ({
|
|
|
54
56
|
throw new FeeNotLoaded();
|
|
55
57
|
}
|
|
56
58
|
|
|
57
|
-
const { tx, fillTransactionDataResult } =
|
|
58
|
-
account,
|
|
59
|
-
|
|
60
|
-
nonce
|
|
61
|
-
);
|
|
62
|
-
const to = eip55.encode("0x" + tx.to.toString("hex"));
|
|
59
|
+
const { ethTxObject, tx, common, fillTransactionDataResult } =
|
|
60
|
+
buildEthereumTx(account, transaction, nonce);
|
|
61
|
+
const to = eip55.encode((tx.to || "").toString());
|
|
63
62
|
const value = new BigNumber(
|
|
64
63
|
"0x" + (tx.value.toString("hex") || "0")
|
|
65
64
|
);
|
|
66
|
-
|
|
67
|
-
const
|
|
68
|
-
|
|
65
|
+
// rawData Format: `rlp([nonce, gasPrice, gasLimit, to, value, data, v, r, s])`
|
|
66
|
+
const rawData = tx.raw();
|
|
67
|
+
rawData[6] = Buffer.from([common.chainIdBN().toNumber()]);
|
|
68
|
+
const txHex = Buffer.from(encode(rawData)).toString("hex");
|
|
69
69
|
const loadConfig: LoadConfig = {};
|
|
70
70
|
if (isNFTActive(account.currency)) {
|
|
71
71
|
loadConfig.nftExplorerBaseURL =
|
|
@@ -106,26 +106,27 @@ export const signOperation = ({
|
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
o.next({
|
|
110
|
-
type: "device-signature-requested",
|
|
111
|
-
});
|
|
109
|
+
o.next({ type: "device-signature-requested" });
|
|
112
110
|
const result = await eth.signTransaction(
|
|
113
111
|
freshAddressPath,
|
|
114
112
|
txHex,
|
|
115
113
|
resolution
|
|
116
114
|
);
|
|
117
115
|
if (cancelled) return;
|
|
118
|
-
o.next({
|
|
119
|
-
type: "device-signature-granted",
|
|
120
|
-
});
|
|
116
|
+
o.next({ type: "device-signature-granted" });
|
|
121
117
|
// Second, we re-set some tx fields from the device signature
|
|
122
|
-
const v = result.v
|
|
118
|
+
const v = `0x${result.v}`;
|
|
119
|
+
const r = `0x${result.r}`;
|
|
120
|
+
const s = `0x${result.s}`;
|
|
121
|
+
|
|
122
|
+
const signedTx = new EthereumTx(
|
|
123
|
+
{ ...ethTxObject, v, r, s },
|
|
124
|
+
{ common }
|
|
125
|
+
);
|
|
123
126
|
|
|
124
|
-
tx.v = Buffer.from(v, "hex");
|
|
125
|
-
tx.r = Buffer.from(result.r, "hex");
|
|
126
|
-
tx.s = Buffer.from(result.s, "hex");
|
|
127
127
|
// Generate the signature ready to be broadcasted
|
|
128
|
-
const signature = `0x${
|
|
128
|
+
const signature = `0x${signedTx.serialize().toString("hex")}`;
|
|
129
|
+
|
|
129
130
|
// build optimistic operation
|
|
130
131
|
const txHash = ""; // resolved at broadcast time
|
|
131
132
|
|
|
@@ -118,7 +118,6 @@ const ethereum: AppSpec<Transaction> = {
|
|
|
118
118
|
appQuery: {
|
|
119
119
|
model: DeviceModelId.nanoS,
|
|
120
120
|
appName: "Ethereum",
|
|
121
|
-
appVersion: "1.5.0-rc3",
|
|
122
121
|
},
|
|
123
122
|
testTimeout: 4 * 60 * 1000,
|
|
124
123
|
transactionCheck: ({ maxSpendable }) => {
|
|
@@ -380,7 +379,6 @@ const ethereumRopsten: AppSpec<Transaction> = {
|
|
|
380
379
|
appQuery: {
|
|
381
380
|
model: DeviceModelId.nanoS,
|
|
382
381
|
appName: "Ethereum",
|
|
383
|
-
appVersion: "1.5.0-rc3",
|
|
384
382
|
},
|
|
385
383
|
testTimeout: 2 * 60 * 1000,
|
|
386
384
|
transactionCheck: ({ maxSpendable }) => {
|
|
@@ -6,8 +6,8 @@ import type {
|
|
|
6
6
|
TransactionRaw,
|
|
7
7
|
EthereumGasLimitRequest,
|
|
8
8
|
} from "./types";
|
|
9
|
-
import Common from "ethereumjs
|
|
10
|
-
import { Transaction as EthereumTx } from "ethereumjs
|
|
9
|
+
import Common from "@ethereumjs/common";
|
|
10
|
+
import { Transaction as EthereumTx } from "@ethereumjs/tx";
|
|
11
11
|
import eip55 from "eip55";
|
|
12
12
|
import {
|
|
13
13
|
InvalidAddress,
|
|
@@ -196,23 +196,18 @@ function getEthereumjsTxCommon(currency) {
|
|
|
196
196
|
`currency ${currency.id} did not set ethereumLikeInfo`
|
|
197
197
|
);
|
|
198
198
|
if (ethereumLikeInfo.chainId === 1) {
|
|
199
|
-
return new Common(
|
|
200
|
-
|
|
201
|
-
ethereumLikeInfo.
|
|
202
|
-
|
|
203
|
-
ethereumLikeInfo.hardfork || "petersburg"
|
|
204
|
-
);
|
|
199
|
+
return new Common({
|
|
200
|
+
chain: ethereumLikeInfo.baseChain || "mainnet",
|
|
201
|
+
hardfork: ethereumLikeInfo.hardfork || "petersburg",
|
|
202
|
+
});
|
|
205
203
|
}
|
|
206
204
|
return Common.forCustomChain(
|
|
207
|
-
// $FlowFixMe
|
|
208
205
|
ethereumLikeInfo.baseChain || "mainnet",
|
|
209
206
|
{
|
|
210
207
|
name: currency.ticker,
|
|
211
208
|
chainId: ethereumLikeInfo.chainId,
|
|
212
|
-
// $FlowFixMe
|
|
213
209
|
networkId: ethereumLikeInfo.networkId || ethereumLikeInfo.chainId,
|
|
214
210
|
},
|
|
215
|
-
// $FlowFixMe
|
|
216
211
|
ethereumLikeInfo.hardfork || "petersburg"
|
|
217
212
|
);
|
|
218
213
|
}
|
|
@@ -239,8 +234,6 @@ export function buildEthereumTx(
|
|
|
239
234
|
"only token accounts expected"
|
|
240
235
|
);
|
|
241
236
|
const common = getEthereumjsTxCommon(currency);
|
|
242
|
-
invariant(common, `common not found for currency ${currency.name}`);
|
|
243
|
-
// FIXME: make sure it doesn't break
|
|
244
237
|
if (!common) {
|
|
245
238
|
throw new Error(`common not found for currency ${currency.name}`);
|
|
246
239
|
}
|
|
@@ -258,18 +251,11 @@ export function buildEthereumTx(
|
|
|
258
251
|
ethTxObject
|
|
259
252
|
);
|
|
260
253
|
log("ethereum", "buildEthereumTx", ethTxObject);
|
|
261
|
-
const tx = new EthereumTx(ethTxObject, {
|
|
262
|
-
common,
|
|
263
|
-
});
|
|
264
|
-
// these will be filled by device signature
|
|
265
|
-
tx.raw[6] = Buffer.from([common.chainId()]); // v
|
|
266
|
-
|
|
267
|
-
tx.raw[7] = Buffer.from([]); // r
|
|
268
|
-
|
|
269
|
-
tx.raw[8] = Buffer.from([]); // s
|
|
270
|
-
|
|
254
|
+
const tx = new EthereumTx(ethTxObject, { common });
|
|
271
255
|
return {
|
|
272
256
|
tx,
|
|
257
|
+
common,
|
|
258
|
+
ethTxObject,
|
|
273
259
|
fillTransactionDataResult,
|
|
274
260
|
};
|
|
275
261
|
}
|
|
@@ -294,7 +280,7 @@ export function inferEthereumGasLimitRequest(
|
|
|
294
280
|
}
|
|
295
281
|
|
|
296
282
|
if (to) {
|
|
297
|
-
r.to =
|
|
283
|
+
r.to = to.toString();
|
|
298
284
|
}
|
|
299
285
|
|
|
300
286
|
if (data) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import BigNumber from "bignumber.js";
|
|
2
|
-
import { DatasetTest, encodeAccountId } from "../../types";
|
|
2
|
+
import { CurrenciesData, DatasetTest, encodeAccountId } from "../../types";
|
|
3
3
|
|
|
4
4
|
import { Transaction, TransactionModel } from "./types";
|
|
5
5
|
|
|
@@ -75,8 +75,7 @@ const fees = (signatureCount: number) =>
|
|
|
75
75
|
|
|
76
76
|
const zero = new BigNumber(0);
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
const solana = {
|
|
78
|
+
const solana: CurrenciesData<Transaction> = {
|
|
80
79
|
scanAccounts: [scanAccounts1],
|
|
81
80
|
accounts: [
|
|
82
81
|
{
|
|
@@ -438,7 +437,7 @@ const solana = {
|
|
|
438
437
|
const dataset: DatasetTest<Transaction> = {
|
|
439
438
|
implementations: [getEnv("MOCK") ? "mock" : "js"], // FIXME we should actually put both mock and js like other dataset do
|
|
440
439
|
currencies: {
|
|
441
|
-
|
|
440
|
+
solana,
|
|
442
441
|
},
|
|
443
442
|
};
|
|
444
443
|
|
|
@@ -17,8 +17,6 @@ tz1RCFbB9GpALpsZtu6J58sb74dm8qe6XBzv
|
|
|
17
17
|
tz1dbfppLAAxXZNtf2SDps7rch3qfUznKSoK
|
|
18
18
|
tz1Q8QkSBS63ZQnH3fBTiAMPes9R666Rn6Sc
|
|
19
19
|
tz2FCNBrERXtaTtNX6iimR1UJ5JSDxvdHM93
|
|
20
|
-
tz1Vyuu4EJ5Nym4JcrfRLnp3hpaq1DSEp1Ke
|
|
21
|
-
tz1S1Aew75hMrPUymqenKfHo8FspppXKpW7h
|
|
22
20
|
tz1SohptP53wDPZhzTWzDUFAUcWF6DMBpaJV
|
|
23
21
|
tz1P2Po7YM526ughEsRbY4oR9zaUPDZjxFrb
|
|
24
22
|
tz1KzSC1J9aBxKp7u8TUnpN8L7S65PBRkgdF
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
// @flow
|
|
2
2
|
import { BigNumber } from "bignumber.js";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
TezosToolkit,
|
|
5
|
+
DEFAULT_FEE,
|
|
6
|
+
DEFAULT_STORAGE_LIMIT,
|
|
7
|
+
} from "@taquito/taquito";
|
|
4
8
|
import {
|
|
5
9
|
AmountRequired,
|
|
6
10
|
NotEnoughBalance,
|
|
@@ -201,6 +205,7 @@ const prepareTransaction = async (
|
|
|
201
205
|
mutez: true,
|
|
202
206
|
to: transaction.recipient,
|
|
203
207
|
amount: amount.toNumber(),
|
|
208
|
+
storageLimit: DEFAULT_STORAGE_LIMIT.ORIGINATION, // https://github.com/TezTech/eztz/blob/master/PROTO_003_FEES.md for originating an account
|
|
204
209
|
});
|
|
205
210
|
break;
|
|
206
211
|
case "delegate":
|
|
@@ -74,6 +74,7 @@ export const getAccountShape: GetAccountShape = async (infoInput) => {
|
|
|
74
74
|
if (apiAccount.type === "empty") {
|
|
75
75
|
return {
|
|
76
76
|
id: accountId,
|
|
77
|
+
xpub: address,
|
|
77
78
|
blockHeight,
|
|
78
79
|
lastSyncDate: new Date(),
|
|
79
80
|
tezosResources: {
|
|
@@ -110,6 +111,7 @@ export const getAccountShape: GetAccountShape = async (infoInput) => {
|
|
|
110
111
|
|
|
111
112
|
const accountShape = {
|
|
112
113
|
id: accountId,
|
|
114
|
+
xpub: address,
|
|
113
115
|
operations,
|
|
114
116
|
balance,
|
|
115
117
|
subAccounts,
|
|
@@ -4,6 +4,7 @@ import { loadAccountDelegation, listBakers } from "./bakers";
|
|
|
4
4
|
import whitelist from "./bakers.whitelist-default";
|
|
5
5
|
export default () => {
|
|
6
6
|
describe("tezos bakers", () => {
|
|
7
|
+
// FIXME Flaky test that will fail every time a Tezos baker is discontinued
|
|
7
8
|
test("getting the bakers", async () => {
|
|
8
9
|
const list = await listBakers(whitelist);
|
|
9
10
|
expect(list.map((o) => o.address)).toEqual(whitelist);
|
package/src/load/speculos.ts
CHANGED
|
@@ -412,7 +412,13 @@ function parseAppSearch(query: string):
|
|
|
412
412
|
};
|
|
413
413
|
}
|
|
414
414
|
|
|
415
|
-
async function
|
|
415
|
+
export async function createImplicitSpeculos(query: string): Promise<{
|
|
416
|
+
device: {
|
|
417
|
+
transport: SpeculosTransport;
|
|
418
|
+
id: string;
|
|
419
|
+
};
|
|
420
|
+
appCandidate: AppCandidate;
|
|
421
|
+
} | null> {
|
|
416
422
|
const coinapps = getEnv("COINAPPS");
|
|
417
423
|
invariant(coinapps, "COINAPPS folder is missing!");
|
|
418
424
|
const seed = getEnv("SEED");
|
|
@@ -438,16 +444,23 @@ async function openImplicitSpeculos(query: string) {
|
|
|
438
444
|
"speculos",
|
|
439
445
|
"using app " + formatAppCandidate(appCandidate as AppCandidate)
|
|
440
446
|
);
|
|
441
|
-
|
|
442
|
-
?
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
447
|
+
return appCandidate
|
|
448
|
+
? {
|
|
449
|
+
device: await createSpeculosDevice({
|
|
450
|
+
...appCandidate,
|
|
451
|
+
coinapps,
|
|
452
|
+
appName,
|
|
453
|
+
dependency,
|
|
454
|
+
seed,
|
|
455
|
+
}),
|
|
456
|
+
appCandidate,
|
|
457
|
+
}
|
|
449
458
|
: null;
|
|
450
|
-
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
async function openImplicitSpeculos(query: string) {
|
|
462
|
+
const r = await createImplicitSpeculos(query);
|
|
463
|
+
return r?.device.transport;
|
|
451
464
|
}
|
|
452
465
|
|
|
453
466
|
registerTransportModule({
|
|
@@ -6,6 +6,7 @@ export type FilterParams = {
|
|
|
6
6
|
private?: boolean;
|
|
7
7
|
version?: string;
|
|
8
8
|
};
|
|
9
|
+
import { getEnv } from "../../env";
|
|
9
10
|
|
|
10
11
|
function matchVersion(filterParams: FilterParams, manifest: AppManifest) {
|
|
11
12
|
return (
|
|
@@ -52,3 +53,31 @@ export function mergeManifestLists(
|
|
|
52
53
|
const newIds = new Set(list2.map((elem) => elem.id));
|
|
53
54
|
return [...list1.filter((elem) => !newIds.has(elem.id)), ...list2];
|
|
54
55
|
}
|
|
56
|
+
|
|
57
|
+
export const initializeLocalManifest = (): Map<string, AppManifest> => {
|
|
58
|
+
const localManifestJsonRaw: string | null | undefined = getEnv(
|
|
59
|
+
"PLATFORM_LOCAL_MANIFEST_JSON"
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
if (!localManifestJsonRaw) {
|
|
63
|
+
return new Map();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
try {
|
|
67
|
+
const manifest: AppManifest | [AppManifest] =
|
|
68
|
+
JSON.parse(localManifestJsonRaw);
|
|
69
|
+
|
|
70
|
+
const manifestArray = Array.isArray(manifest) ? manifest : [manifest];
|
|
71
|
+
|
|
72
|
+
const map = new Map(manifestArray.map((m) => [m.id, m]));
|
|
73
|
+
|
|
74
|
+
return map;
|
|
75
|
+
} catch (error) {
|
|
76
|
+
/**
|
|
77
|
+
* Probable error during `JSON.parse` call, log error and return empty map
|
|
78
|
+
* as if env variable was not defined
|
|
79
|
+
*/
|
|
80
|
+
console.error(error);
|
|
81
|
+
return new Map();
|
|
82
|
+
}
|
|
83
|
+
};
|
|
@@ -9,11 +9,12 @@ import React, {
|
|
|
9
9
|
import type { PlatformAppContextType, Props, State } from "./types";
|
|
10
10
|
import api from "./api";
|
|
11
11
|
import type { AppManifest } from "../types";
|
|
12
|
+
import { initializeLocalManifest } from "./helpers";
|
|
12
13
|
|
|
13
14
|
// @ts-expect-error empty object creates an error
|
|
14
15
|
const PlatformAppContext = createContext<PlatformAppContextType>({});
|
|
15
16
|
const initialState: State = {
|
|
16
|
-
localManifests:
|
|
17
|
+
localManifests: initializeLocalManifest(),
|
|
17
18
|
remoteManifests: new Map(),
|
|
18
19
|
isLoading: false,
|
|
19
20
|
lastUpdateTime: undefined,
|
|
@@ -28,7 +29,7 @@ export function PlatformAppProvider({
|
|
|
28
29
|
autoUpdateDelay,
|
|
29
30
|
platformAppsServerURL,
|
|
30
31
|
children,
|
|
31
|
-
}: Props) {
|
|
32
|
+
}: Props): JSX.Element {
|
|
32
33
|
const [state, setState] = useState<State>(initialState);
|
|
33
34
|
|
|
34
35
|
const addLocalManifest = useCallback((manifest: AppManifest) => {
|