@fuel-ts/account 0.0.0-rc-1832-20240415161726 → 0.0.0-rc-2034-20240415163000
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.
Potentially problematic release.
This version of @fuel-ts/account might be problematic. Click here for more details.
- package/dist/index.global.js +139 -121
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +96 -75
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +62 -41
- package/dist/index.mjs.map +1 -1
- package/dist/predicate/predicate.d.ts +0 -1
- package/dist/predicate/predicate.d.ts.map +1 -1
- package/dist/providers/provider.d.ts +13 -2
- package/dist/providers/provider.d.ts.map +1 -1
- package/dist/providers/transaction-request/input.d.ts.map +1 -1
- package/dist/providers/transaction-request/transaction-request.d.ts.map +1 -1
- package/dist/test-utils.global.js +141 -122
- package/dist/test-utils.global.js.map +1 -1
- package/dist/test-utils.js +93 -71
- package/dist/test-utils.js.map +1 -1
- package/dist/test-utils.mjs +64 -42
- package/dist/test-utils.mjs.map +1 -1
- package/package.json +16 -16
package/dist/index.js
CHANGED
@@ -1173,6 +1173,7 @@ var MemoryCache = class {
|
|
1173
1173
|
};
|
1174
1174
|
|
1175
1175
|
// src/providers/transaction-request/input.ts
|
1176
|
+
var import_abi_coder = require("@fuel-ts/abi-coder");
|
1176
1177
|
var import_configs2 = require("@fuel-ts/address/configs");
|
1177
1178
|
var import_errors3 = require("@fuel-ts/errors");
|
1178
1179
|
var import_math2 = require("@fuel-ts/math");
|
@@ -1186,8 +1187,8 @@ var inputify = (value) => {
|
|
1186
1187
|
const predicateData = (0, import_utils3.arrayify)(value.predicateData ?? "0x");
|
1187
1188
|
return {
|
1188
1189
|
type: import_transactions.InputType.Coin,
|
1189
|
-
txID: (0, import_utils3.hexlify)((0, import_utils3.arrayify)(value.id).slice(0,
|
1190
|
-
outputIndex: (0, import_utils3.arrayify)(value.id)
|
1190
|
+
txID: (0, import_utils3.hexlify)((0, import_utils3.arrayify)(value.id).slice(0, import_abi_coder.BYTES_32)),
|
1191
|
+
outputIndex: (0, import_math2.toNumber)((0, import_utils3.arrayify)(value.id).slice(import_abi_coder.BYTES_32, import_abi_coder.UTXO_ID_LEN)),
|
1191
1192
|
owner: (0, import_utils3.hexlify)(value.owner),
|
1192
1193
|
amount: (0, import_math2.bn)(value.amount),
|
1193
1194
|
assetId: (0, import_utils3.hexlify)(value.assetId),
|
@@ -1305,8 +1306,10 @@ var outputify = (value) => {
|
|
1305
1306
|
};
|
1306
1307
|
|
1307
1308
|
// src/providers/transaction-request/transaction-request.ts
|
1309
|
+
var import_abi_coder2 = require("@fuel-ts/abi-coder");
|
1308
1310
|
var import_address = require("@fuel-ts/address");
|
1309
1311
|
var import_configs7 = require("@fuel-ts/address/configs");
|
1312
|
+
var import_crypto = require("@fuel-ts/crypto");
|
1310
1313
|
var import_math7 = require("@fuel-ts/math");
|
1311
1314
|
var import_transactions6 = require("@fuel-ts/transactions");
|
1312
1315
|
var import_utils9 = require("@fuel-ts/utils");
|
@@ -2054,8 +2057,7 @@ var BaseTransactionRequest = class {
|
|
2054
2057
|
assetId,
|
2055
2058
|
txPointer: "0x00000000000000000000000000000000",
|
2056
2059
|
witnessIndex,
|
2057
|
-
predicate: predicate?.bytes
|
2058
|
-
predicateData: predicate?.predicateDataBytes
|
2060
|
+
predicate: predicate?.bytes
|
2059
2061
|
};
|
2060
2062
|
this.pushInput(input);
|
2061
2063
|
this.addChangeOutput(owner, assetId);
|
@@ -2087,8 +2089,7 @@ var BaseTransactionRequest = class {
|
|
2087
2089
|
recipient: recipient.toB256(),
|
2088
2090
|
amount,
|
2089
2091
|
witnessIndex,
|
2090
|
-
predicate: predicate?.bytes
|
2091
|
-
predicateData: predicate?.predicateDataBytes
|
2092
|
+
predicate: predicate?.bytes
|
2092
2093
|
};
|
2093
2094
|
this.pushInput(input);
|
2094
2095
|
this.addChangeOutput(recipient, assetId);
|
@@ -2243,12 +2244,6 @@ var BaseTransactionRequest = class {
|
|
2243
2244
|
* @param quantities - CoinQuantity Array.
|
2244
2245
|
*/
|
2245
2246
|
fundWithFakeUtxos(quantities, resourcesOwner) {
|
2246
|
-
let idCounter = 0;
|
2247
|
-
const generateId = () => {
|
2248
|
-
const counterString = String(idCounter++);
|
2249
|
-
const id = import_configs7.ZeroBytes32.slice(0, -counterString.length).concat(counterString);
|
2250
|
-
return id;
|
2251
|
-
};
|
2252
2247
|
const findAssetInput = (assetId) => this.inputs.find((input) => {
|
2253
2248
|
if ("assetId" in input) {
|
2254
2249
|
return input.assetId === assetId;
|
@@ -2258,12 +2253,12 @@ var BaseTransactionRequest = class {
|
|
2258
2253
|
const updateAssetInput = (assetId, quantity) => {
|
2259
2254
|
const assetInput = findAssetInput(assetId);
|
2260
2255
|
if (assetInput && "assetId" in assetInput) {
|
2261
|
-
assetInput.id =
|
2256
|
+
assetInput.id = (0, import_utils9.hexlify)((0, import_crypto.randomBytes)(import_abi_coder2.UTXO_ID_LEN));
|
2262
2257
|
assetInput.amount = quantity;
|
2263
2258
|
} else {
|
2264
2259
|
this.addResources([
|
2265
2260
|
{
|
2266
|
-
id:
|
2261
|
+
id: (0, import_utils9.hexlify)((0, import_crypto.randomBytes)(import_abi_coder2.UTXO_ID_LEN)),
|
2267
2262
|
amount: quantity,
|
2268
2263
|
assetId,
|
2269
2264
|
owner: resourcesOwner || import_address.Address.fromRandom(),
|
@@ -2518,7 +2513,7 @@ var CreateTransactionRequest = class extends BaseTransactionRequest {
|
|
2518
2513
|
};
|
2519
2514
|
|
2520
2515
|
// src/providers/transaction-request/script-transaction-request.ts
|
2521
|
-
var
|
2516
|
+
var import_abi_coder3 = require("@fuel-ts/abi-coder");
|
2522
2517
|
var import_address2 = require("@fuel-ts/address");
|
2523
2518
|
var import_configs10 = require("@fuel-ts/address/configs");
|
2524
2519
|
var import_math10 = require("@fuel-ts/math");
|
@@ -2710,7 +2705,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
|
|
2710
2705
|
* @returns The current instance of the `ScriptTransactionRequest`.
|
2711
2706
|
*/
|
2712
2707
|
setData(abi, args) {
|
2713
|
-
const abiInterface = new
|
2708
|
+
const abiInterface = new import_abi_coder3.Interface(abi);
|
2714
2709
|
this.scriptData = abiInterface.functions.main.encodeArguments(args);
|
2715
2710
|
return this;
|
2716
2711
|
}
|
@@ -2832,17 +2827,17 @@ var import_math13 = require("@fuel-ts/math");
|
|
2832
2827
|
var import_transactions14 = require("@fuel-ts/transactions");
|
2833
2828
|
|
2834
2829
|
// src/providers/transaction-summary/call.ts
|
2835
|
-
var
|
2830
|
+
var import_abi_coder4 = require("@fuel-ts/abi-coder");
|
2836
2831
|
var import_math12 = require("@fuel-ts/math");
|
2837
2832
|
var getFunctionCall = ({ abi, receipt, rawPayload, maxInputs }) => {
|
2838
|
-
const abiInterface = new
|
2833
|
+
const abiInterface = new import_abi_coder4.Interface(abi);
|
2839
2834
|
const callFunctionSelector = receipt.param1.toHex(8);
|
2840
2835
|
const functionFragment = abiInterface.getFunction(callFunctionSelector);
|
2841
2836
|
const inputs = functionFragment.jsonFn.inputs;
|
2842
2837
|
let encodedArgs;
|
2843
2838
|
if (functionFragment.isInputDataPointer) {
|
2844
2839
|
if (rawPayload) {
|
2845
|
-
const argsOffset = (0, import_math12.bn)(receipt.param2).sub((0,
|
2840
|
+
const argsOffset = (0, import_math12.bn)(receipt.param2).sub((0, import_abi_coder4.calculateVmTxMemory)({ maxInputs: maxInputs.toNumber() })).toNumber();
|
2846
2841
|
encodedArgs = `0x${rawPayload.slice(2).slice(argsOffset * 2)}`;
|
2847
2842
|
}
|
2848
2843
|
} else {
|
@@ -3492,13 +3487,13 @@ function assembleTransactionSummary(params) {
|
|
3492
3487
|
}
|
3493
3488
|
|
3494
3489
|
// src/providers/transaction-response/getDecodedLogs.ts
|
3495
|
-
var
|
3490
|
+
var import_abi_coder5 = require("@fuel-ts/abi-coder");
|
3496
3491
|
var import_transactions16 = require("@fuel-ts/transactions");
|
3497
3492
|
function getDecodedLogs(receipts, mainAbi, externalAbis = {}) {
|
3498
3493
|
return receipts.reduce((logs, receipt) => {
|
3499
3494
|
if (receipt.type === import_transactions16.ReceiptType.LogData || receipt.type === import_transactions16.ReceiptType.Log) {
|
3500
|
-
const interfaceToUse = new
|
3501
|
-
const data = receipt.type === import_transactions16.ReceiptType.Log ? new
|
3495
|
+
const interfaceToUse = new import_abi_coder5.Interface(externalAbis[receipt.id] || mainAbi);
|
3496
|
+
const data = receipt.type === import_transactions16.ReceiptType.Log ? new import_abi_coder5.BigNumberCoder("u64").encode(receipt.val0) : receipt.data;
|
3502
3497
|
const [decodedLog] = interfaceToUse.decodeLog(data, receipt.val1.toNumber());
|
3503
3498
|
logs.push(decodedLog);
|
3504
3499
|
}
|
@@ -4140,6 +4135,36 @@ var _Provider = class {
|
|
4140
4135
|
missingContractIds
|
4141
4136
|
};
|
4142
4137
|
}
|
4138
|
+
/**
|
4139
|
+
* Estimates the transaction gas and fee based on the provided transaction request.
|
4140
|
+
* @param transactionRequest - The transaction request object.
|
4141
|
+
* @returns An object containing the estimated minimum gas, minimum fee, maximum gas, and maximum fee.
|
4142
|
+
*/
|
4143
|
+
estimateTxGasAndFee(params) {
|
4144
|
+
const { transactionRequest } = params;
|
4145
|
+
const { gasPriceFactor, minGasPrice, maxGasPerTx } = this.getGasConfig();
|
4146
|
+
const chainInfo = this.getChain();
|
4147
|
+
const gasPrice = transactionRequest.gasPrice.eq(0) ? minGasPrice : transactionRequest.gasPrice;
|
4148
|
+
transactionRequest.gasPrice = gasPrice;
|
4149
|
+
const minGas = transactionRequest.calculateMinGas(chainInfo);
|
4150
|
+
const minFee = calculatePriceWithFactor(minGas, gasPrice, gasPriceFactor).normalizeZeroToOne();
|
4151
|
+
if (transactionRequest.type === import_transactions18.TransactionType.Script) {
|
4152
|
+
if (transactionRequest.gasLimit.eq(0)) {
|
4153
|
+
transactionRequest.gasLimit = minGas;
|
4154
|
+
transactionRequest.gasLimit = maxGasPerTx.sub(
|
4155
|
+
transactionRequest.calculateMaxGas(chainInfo, minGas)
|
4156
|
+
);
|
4157
|
+
}
|
4158
|
+
}
|
4159
|
+
const maxGas = transactionRequest.calculateMaxGas(chainInfo, minGas);
|
4160
|
+
const maxFee = calculatePriceWithFactor(maxGas, gasPrice, gasPriceFactor).normalizeZeroToOne();
|
4161
|
+
return {
|
4162
|
+
minGas,
|
4163
|
+
minFee,
|
4164
|
+
maxGas,
|
4165
|
+
maxFee
|
4166
|
+
};
|
4167
|
+
}
|
4143
4168
|
/**
|
4144
4169
|
* Executes a signed transaction without applying the states changes
|
4145
4170
|
* on the chain.
|
@@ -4187,17 +4212,16 @@ var _Provider = class {
|
|
4187
4212
|
signatureCallback
|
4188
4213
|
} = {}) {
|
4189
4214
|
const txRequestClone = (0, import_ramda3.clone)(transactionRequestify(transactionRequestLike));
|
4190
|
-
const
|
4191
|
-
const
|
4192
|
-
const gasPrice = (0, import_math15.max)(txRequestClone.gasPrice, minGasPrice);
|
4215
|
+
const { minGasPrice } = this.getGasConfig();
|
4216
|
+
const setGasPrice = (0, import_math15.max)(txRequestClone.gasPrice, minGasPrice);
|
4193
4217
|
const isScriptTransaction = txRequestClone.type === import_transactions18.TransactionType.Script;
|
4194
4218
|
const coinOutputsQuantities = txRequestClone.getCoinOutputsQuantities();
|
4195
4219
|
const allQuantities = mergeQuantities(coinOutputsQuantities, forwardingQuantities);
|
4196
4220
|
txRequestClone.fundWithFakeUtxos(allQuantities, resourcesOwner?.address);
|
4221
|
+
if (isScriptTransaction) {
|
4222
|
+
txRequestClone.gasLimit = (0, import_math15.bn)(0);
|
4223
|
+
}
|
4197
4224
|
if (estimatePredicates) {
|
4198
|
-
if (isScriptTransaction) {
|
4199
|
-
txRequestClone.gasLimit = (0, import_math15.bn)(0);
|
4200
|
-
}
|
4201
4225
|
if (resourcesOwner && "populateTransactionPredicateData" in resourcesOwner) {
|
4202
4226
|
resourcesOwner.populateTransactionPredicateData(txRequestClone);
|
4203
4227
|
}
|
@@ -4206,36 +4230,34 @@ var _Provider = class {
|
|
4206
4230
|
if (signatureCallback && isScriptTransaction) {
|
4207
4231
|
await signatureCallback(txRequestClone);
|
4208
4232
|
}
|
4209
|
-
|
4210
|
-
|
4233
|
+
let { maxFee, maxGas, minFee, minGas } = this.estimateTxGasAndFee({
|
4234
|
+
transactionRequest: txRequestClone
|
4235
|
+
});
|
4211
4236
|
let receipts = [];
|
4212
4237
|
let missingContractIds = [];
|
4213
4238
|
let outputVariables = 0;
|
4239
|
+
let gasUsed = (0, import_math15.bn)(0);
|
4214
4240
|
if (isScriptTransaction && estimateTxDependencies) {
|
4215
4241
|
txRequestClone.gasPrice = (0, import_math15.bn)(0);
|
4216
|
-
txRequestClone.gasLimit = (0, import_math15.bn)(maxGasPerTx.sub(maxGas).toNumber() * 0.9);
|
4217
4242
|
const result = await this.estimateTxDependencies(txRequestClone);
|
4218
4243
|
receipts = result.receipts;
|
4219
4244
|
outputVariables = result.outputVariables;
|
4220
4245
|
missingContractIds = result.missingContractIds;
|
4246
|
+
gasUsed = isScriptTransaction ? getGasUsedFromReceipts(receipts) : gasUsed;
|
4247
|
+
txRequestClone.gasLimit = gasUsed;
|
4248
|
+
txRequestClone.gasPrice = setGasPrice;
|
4249
|
+
({ maxFee, maxGas, minFee, minGas } = this.estimateTxGasAndFee({
|
4250
|
+
transactionRequest: txRequestClone
|
4251
|
+
}));
|
4221
4252
|
}
|
4222
|
-
const gasUsed = isScriptTransaction ? getGasUsedFromReceipts(receipts) : minGas;
|
4223
|
-
const usedFee = calculatePriceWithFactor(
|
4224
|
-
gasUsed,
|
4225
|
-
gasPrice,
|
4226
|
-
gasPriceFactor
|
4227
|
-
).normalizeZeroToOne();
|
4228
|
-
const minFee = calculatePriceWithFactor(minGas, gasPrice, gasPriceFactor).normalizeZeroToOne();
|
4229
|
-
const maxFee = calculatePriceWithFactor(maxGas, gasPrice, gasPriceFactor).normalizeZeroToOne();
|
4230
4253
|
return {
|
4231
4254
|
requiredQuantities: allQuantities,
|
4232
4255
|
receipts,
|
4233
4256
|
gasUsed,
|
4234
4257
|
minGasPrice,
|
4235
|
-
gasPrice,
|
4258
|
+
gasPrice: setGasPrice,
|
4236
4259
|
minGas,
|
4237
4260
|
maxGas,
|
4238
|
-
usedFee,
|
4239
4261
|
minFee,
|
4240
4262
|
maxFee,
|
4241
4263
|
estimatedInputs: txRequestClone.inputs,
|
@@ -4868,13 +4890,13 @@ var assets = [
|
|
4868
4890
|
];
|
4869
4891
|
|
4870
4892
|
// src/utils/formatTransferToContractScriptData.ts
|
4871
|
-
var
|
4893
|
+
var import_abi_coder6 = require("@fuel-ts/abi-coder");
|
4872
4894
|
var import_math17 = require("@fuel-ts/math");
|
4873
4895
|
var import_utils27 = require("@fuel-ts/utils");
|
4874
4896
|
var asm = __toESM(require("@fuels/vm-asm"));
|
4875
4897
|
var formatTransferToContractScriptData = (params) => {
|
4876
4898
|
const { assetId, amountToTransfer, hexlifiedContractId } = params;
|
4877
|
-
const numberCoder = new
|
4899
|
+
const numberCoder = new import_abi_coder6.BigNumberCoder("u64");
|
4878
4900
|
const encoded = numberCoder.encode(new import_math17.BN(amountToTransfer).toNumber());
|
4879
4901
|
const scriptData = Uint8Array.from([
|
4880
4902
|
...(0, import_utils27.arrayify)(hexlifiedContractId),
|
@@ -5329,7 +5351,7 @@ var import_utils31 = require("@fuel-ts/utils");
|
|
5329
5351
|
|
5330
5352
|
// src/signer/signer.ts
|
5331
5353
|
var import_address5 = require("@fuel-ts/address");
|
5332
|
-
var
|
5354
|
+
var import_crypto2 = require("@fuel-ts/crypto");
|
5333
5355
|
var import_hasher2 = require("@fuel-ts/hasher");
|
5334
5356
|
var import_math19 = require("@fuel-ts/math");
|
5335
5357
|
var import_utils29 = require("@fuel-ts/utils");
|
@@ -5422,7 +5444,7 @@ var Signer = class {
|
|
5422
5444
|
* @returns random 32-byte hashed
|
5423
5445
|
*/
|
5424
5446
|
static generatePrivateKey(entropy) {
|
5425
|
-
return entropy ? (0, import_hasher2.hash)((0, import_utils29.concat)([(0,
|
5447
|
+
return entropy ? (0, import_hasher2.hash)((0, import_utils29.concat)([(0, import_crypto2.randomBytes)(32), (0, import_utils29.arrayify)(entropy)])) : (0, import_crypto2.randomBytes)(32);
|
5426
5448
|
}
|
5427
5449
|
/**
|
5428
5450
|
* Extended publicKey from a compact publicKey
|
@@ -5438,7 +5460,7 @@ var Signer = class {
|
|
5438
5460
|
|
5439
5461
|
// src/wallet/keystore-wallet.ts
|
5440
5462
|
var import_address6 = require("@fuel-ts/address");
|
5441
|
-
var
|
5463
|
+
var import_crypto3 = require("@fuel-ts/crypto");
|
5442
5464
|
var import_errors17 = require("@fuel-ts/errors");
|
5443
5465
|
var import_utils30 = require("@fuel-ts/utils");
|
5444
5466
|
var import_uuid = require("uuid");
|
@@ -5454,22 +5476,22 @@ var removeHexPrefix = (hexString) => {
|
|
5454
5476
|
return hexString;
|
5455
5477
|
};
|
5456
5478
|
async function encryptKeystoreWallet(privateKey, address, password) {
|
5457
|
-
const privateKeyBuffer = (0,
|
5479
|
+
const privateKeyBuffer = (0, import_crypto3.bufferFromString)(removeHexPrefix(privateKey), "hex");
|
5458
5480
|
const ownerAddress = import_address6.Address.fromAddressOrString(address);
|
5459
|
-
const salt = (0,
|
5460
|
-
const key = (0,
|
5461
|
-
password: (0,
|
5481
|
+
const salt = (0, import_crypto3.randomBytes)(DEFAULT_KEY_SIZE);
|
5482
|
+
const key = (0, import_crypto3.scrypt)({
|
5483
|
+
password: (0, import_crypto3.bufferFromString)(password),
|
5462
5484
|
salt,
|
5463
5485
|
dklen: DEFAULT_KEY_SIZE,
|
5464
5486
|
n: 2 ** DEFAULT_KDF_PARAMS_LOG_N,
|
5465
5487
|
r: DEFAULT_KDF_PARAMS_R,
|
5466
5488
|
p: DEFAULT_KDF_PARAMS_P
|
5467
5489
|
});
|
5468
|
-
const iv = (0,
|
5469
|
-
const ciphertext = await (0,
|
5490
|
+
const iv = (0, import_crypto3.randomBytes)(DEFAULT_IV_SIZE);
|
5491
|
+
const ciphertext = await (0, import_crypto3.encryptJsonWalletData)(privateKeyBuffer, key, iv);
|
5470
5492
|
const data = Uint8Array.from([...key.subarray(16, 32), ...ciphertext]);
|
5471
|
-
const macHashUint8Array = (0,
|
5472
|
-
const mac = (0,
|
5493
|
+
const macHashUint8Array = (0, import_crypto3.keccak256)(data);
|
5494
|
+
const mac = (0, import_crypto3.stringFromBuffer)(macHashUint8Array, "hex");
|
5473
5495
|
const keystore = {
|
5474
5496
|
id: (0, import_uuid.v4)(),
|
5475
5497
|
version: 3,
|
@@ -5477,15 +5499,15 @@ async function encryptKeystoreWallet(privateKey, address, password) {
|
|
5477
5499
|
crypto: {
|
5478
5500
|
cipher: "aes-128-ctr",
|
5479
5501
|
mac,
|
5480
|
-
cipherparams: { iv: (0,
|
5481
|
-
ciphertext: (0,
|
5502
|
+
cipherparams: { iv: (0, import_crypto3.stringFromBuffer)(iv, "hex") },
|
5503
|
+
ciphertext: (0, import_crypto3.stringFromBuffer)(ciphertext, "hex"),
|
5482
5504
|
kdf: "scrypt",
|
5483
5505
|
kdfparams: {
|
5484
5506
|
dklen: DEFAULT_KEY_SIZE,
|
5485
5507
|
n: 2 ** DEFAULT_KDF_PARAMS_LOG_N,
|
5486
5508
|
p: DEFAULT_KDF_PARAMS_P,
|
5487
5509
|
r: DEFAULT_KDF_PARAMS_R,
|
5488
|
-
salt: (0,
|
5510
|
+
salt: (0, import_crypto3.stringFromBuffer)(salt, "hex")
|
5489
5511
|
}
|
5490
5512
|
}
|
5491
5513
|
};
|
@@ -5501,11 +5523,11 @@ async function decryptKeystoreWallet(jsonWallet, password) {
|
|
5501
5523
|
kdfparams: { dklen, n, r, p, salt }
|
5502
5524
|
}
|
5503
5525
|
} = keystoreWallet;
|
5504
|
-
const ciphertextBuffer = (0,
|
5505
|
-
const ivBuffer = (0,
|
5506
|
-
const saltBuffer = (0,
|
5507
|
-
const passwordBuffer = (0,
|
5508
|
-
const key = (0,
|
5526
|
+
const ciphertextBuffer = (0, import_crypto3.bufferFromString)(ciphertext, "hex");
|
5527
|
+
const ivBuffer = (0, import_crypto3.bufferFromString)(iv, "hex");
|
5528
|
+
const saltBuffer = (0, import_crypto3.bufferFromString)(salt, "hex");
|
5529
|
+
const passwordBuffer = (0, import_crypto3.bufferFromString)(password);
|
5530
|
+
const key = (0, import_crypto3.scrypt)({
|
5509
5531
|
password: passwordBuffer,
|
5510
5532
|
salt: saltBuffer,
|
5511
5533
|
n,
|
@@ -5514,15 +5536,15 @@ async function decryptKeystoreWallet(jsonWallet, password) {
|
|
5514
5536
|
dklen
|
5515
5537
|
});
|
5516
5538
|
const data = Uint8Array.from([...key.subarray(16, 32), ...ciphertextBuffer]);
|
5517
|
-
const macHashUint8Array = (0,
|
5518
|
-
const macHash = (0,
|
5539
|
+
const macHashUint8Array = (0, import_crypto3.keccak256)(data);
|
5540
|
+
const macHash = (0, import_crypto3.stringFromBuffer)(macHashUint8Array, "hex");
|
5519
5541
|
if (mac !== macHash) {
|
5520
5542
|
throw new import_errors17.FuelError(
|
5521
5543
|
import_errors17.ErrorCode.INVALID_PASSWORD,
|
5522
5544
|
"Failed to decrypt the keystore wallet, the provided password is incorrect."
|
5523
5545
|
);
|
5524
5546
|
}
|
5525
|
-
const buffer = await (0,
|
5547
|
+
const buffer = await (0, import_crypto3.decryptJsonWalletData)(ciphertextBuffer, key, ivBuffer);
|
5526
5548
|
const privateKey = (0, import_utils30.hexlify)(buffer);
|
5527
5549
|
return privateKey;
|
5528
5550
|
}
|
@@ -5647,7 +5669,7 @@ var import_utils35 = require("@fuel-ts/utils");
|
|
5647
5669
|
var import_ethers3 = require("ethers");
|
5648
5670
|
|
5649
5671
|
// src/mnemonic/mnemonic.ts
|
5650
|
-
var
|
5672
|
+
var import_crypto4 = require("@fuel-ts/crypto");
|
5651
5673
|
var import_errors19 = require("@fuel-ts/errors");
|
5652
5674
|
var import_hasher5 = require("@fuel-ts/hasher");
|
5653
5675
|
var import_utils33 = require("@fuel-ts/utils");
|
@@ -8008,7 +8030,7 @@ var Mnemonic = class {
|
|
8008
8030
|
* @returns A randomly generated mnemonic
|
8009
8031
|
*/
|
8010
8032
|
static generate(size = 32, extraEntropy = "") {
|
8011
|
-
const entropy = extraEntropy ? (0, import_hasher5.sha256)((0, import_utils33.concat)([(0,
|
8033
|
+
const entropy = extraEntropy ? (0, import_hasher5.sha256)((0, import_utils33.concat)([(0, import_crypto4.randomBytes)(size), (0, import_utils33.arrayify)(extraEntropy)])) : (0, import_crypto4.randomBytes)(size);
|
8012
8034
|
return Mnemonic.entropyToMnemonic(entropy);
|
8013
8035
|
}
|
8014
8036
|
};
|
@@ -8380,7 +8402,7 @@ __publicField(Wallet, "fromEncryptedJson", WalletUnlocked.fromEncryptedJson);
|
|
8380
8402
|
|
8381
8403
|
// src/wallet-manager/wallet-manager.ts
|
8382
8404
|
var import_address9 = require("@fuel-ts/address");
|
8383
|
-
var
|
8405
|
+
var import_crypto5 = require("@fuel-ts/crypto");
|
8384
8406
|
var import_errors23 = require("@fuel-ts/errors");
|
8385
8407
|
var import_events = require("events");
|
8386
8408
|
|
@@ -8708,7 +8730,7 @@ var _WalletManager = class extends import_events.EventEmitter {
|
|
8708
8730
|
await assert(!__privateGet(this, _isLocked), ERROR_MESSAGES.wallet_not_unlocked);
|
8709
8731
|
const data = await this.storage.getItem(this.STORAGE_KEY);
|
8710
8732
|
if (data) {
|
8711
|
-
const state = await (0,
|
8733
|
+
const state = await (0, import_crypto5.decrypt)(__privateGet(this, _passphrase), JSON.parse(data));
|
8712
8734
|
__privateSet(this, _vaults, __privateMethod(this, _deserializeVaults, deserializeVaults_fn).call(this, state.vaults));
|
8713
8735
|
}
|
8714
8736
|
}
|
@@ -8717,7 +8739,7 @@ var _WalletManager = class extends import_events.EventEmitter {
|
|
8717
8739
|
*/
|
8718
8740
|
async saveState() {
|
8719
8741
|
await assert(!__privateGet(this, _isLocked), ERROR_MESSAGES.wallet_not_unlocked);
|
8720
|
-
const encryptedData = await (0,
|
8742
|
+
const encryptedData = await (0, import_crypto5.encrypt)(__privateGet(this, _passphrase), {
|
8721
8743
|
vaults: __privateMethod(this, _serializeVaults, serializeVaults_fn).call(this, __privateGet(this, _vaults))
|
8722
8744
|
});
|
8723
8745
|
await this.storage.setItem(this.STORAGE_KEY, JSON.stringify(encryptedData));
|
@@ -8793,7 +8815,7 @@ var StorageAbstract = class {
|
|
8793
8815
|
};
|
8794
8816
|
|
8795
8817
|
// src/predicate/predicate.ts
|
8796
|
-
var
|
8818
|
+
var import_abi_coder7 = require("@fuel-ts/abi-coder");
|
8797
8819
|
var import_address10 = require("@fuel-ts/address");
|
8798
8820
|
var import_configs13 = require("@fuel-ts/address/configs");
|
8799
8821
|
var import_errors25 = require("@fuel-ts/errors");
|
@@ -8816,7 +8838,6 @@ var getPredicateRoot = (bytecode) => {
|
|
8816
8838
|
// src/predicate/predicate.ts
|
8817
8839
|
var Predicate = class extends Account {
|
8818
8840
|
bytes;
|
8819
|
-
predicateDataBytes = Uint8Array.from([]);
|
8820
8841
|
predicateData = [];
|
8821
8842
|
interface;
|
8822
8843
|
/**
|
@@ -8904,10 +8925,10 @@ var Predicate = class extends Account {
|
|
8904
8925
|
}
|
8905
8926
|
const mainFn = this.interface?.functions.main;
|
8906
8927
|
const paddedCode = new import_transactions20.ByteArrayCoder(this.bytes.length).encode(this.bytes);
|
8907
|
-
const VM_TX_MEMORY = (0,
|
8928
|
+
const VM_TX_MEMORY = (0, import_abi_coder7.calculateVmTxMemory)({
|
8908
8929
|
maxInputs: this.provider.getChain().consensusParameters.maxInputs.toNumber()
|
8909
8930
|
});
|
8910
|
-
const OFFSET = VM_TX_MEMORY +
|
8931
|
+
const OFFSET = VM_TX_MEMORY + import_abi_coder7.SCRIPT_FIXED_SIZE + import_abi_coder7.INPUT_COIN_FIXED_SIZE + import_abi_coder7.WORD_SIZE + paddedCode.byteLength + policiesLength * import_abi_coder7.WORD_SIZE;
|
8911
8932
|
return mainFn?.encodeArguments(this.predicateData, OFFSET) || new Uint8Array();
|
8912
8933
|
}
|
8913
8934
|
/**
|
@@ -8922,7 +8943,7 @@ var Predicate = class extends Account {
|
|
8922
8943
|
let predicateBytes = (0, import_utils37.arrayify)(bytes);
|
8923
8944
|
let abiInterface;
|
8924
8945
|
if (jsonAbi) {
|
8925
|
-
abiInterface = new
|
8946
|
+
abiInterface = new import_abi_coder7.Interface(jsonAbi);
|
8926
8947
|
if (abiInterface.functions.main === void 0) {
|
8927
8948
|
throw new import_errors25.FuelError(
|
8928
8949
|
import_errors25.ErrorCode.ABI_MAIN_METHOD_MISSING,
|