@fuel-ts/account 0.0.0-rc-2034-20240411123358 → 0.0.0-rc-2021-20240411141803
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/README.md +1 -1
- package/dist/account.d.ts +5 -4
- package/dist/account.d.ts.map +1 -1
- package/dist/configs.d.ts.map +1 -1
- package/dist/configs.global.js +1 -1
- package/dist/configs.global.js.map +1 -1
- package/dist/configs.js +1 -1
- package/dist/configs.js.map +1 -1
- package/dist/configs.mjs +1 -1
- package/dist/configs.mjs.map +1 -1
- package/dist/index.global.js +819 -568
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +805 -572
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +639 -407
- package/dist/index.mjs.map +1 -1
- package/dist/predicate/predicate.d.ts +10 -2
- package/dist/predicate/predicate.d.ts.map +1 -1
- package/dist/providers/__generated__/operations.d.ts +888 -322
- package/dist/providers/__generated__/operations.d.ts.map +1 -1
- package/dist/providers/coin-quantity.d.ts +1 -1
- package/dist/providers/coin-quantity.d.ts.map +1 -1
- package/dist/providers/coin.d.ts +4 -2
- package/dist/providers/coin.d.ts.map +1 -1
- package/dist/providers/fuel-graphql-subscriber.d.ts.map +1 -1
- package/dist/providers/message.d.ts +3 -1
- package/dist/providers/message.d.ts.map +1 -1
- package/dist/providers/provider.d.ts +37 -30
- package/dist/providers/provider.d.ts.map +1 -1
- package/dist/providers/transaction-request/create-transaction-request.d.ts.map +1 -1
- package/dist/providers/transaction-request/input.d.ts +2 -2
- package/dist/providers/transaction-request/input.d.ts.map +1 -1
- package/dist/providers/transaction-request/script-transaction-request.d.ts.map +1 -1
- package/dist/providers/transaction-request/transaction-request.d.ts +8 -25
- package/dist/providers/transaction-request/transaction-request.d.ts.map +1 -1
- package/dist/providers/transaction-request/utils.d.ts +3 -0
- package/dist/providers/transaction-request/utils.d.ts.map +1 -1
- package/dist/providers/transaction-response/transaction-response.d.ts.map +1 -1
- package/dist/providers/transaction-summary/assemble-transaction-summary.d.ts +2 -0
- package/dist/providers/transaction-summary/assemble-transaction-summary.d.ts.map +1 -1
- package/dist/providers/transaction-summary/calculate-transaction-fee.d.ts +3 -2
- package/dist/providers/transaction-summary/calculate-transaction-fee.d.ts.map +1 -1
- package/dist/providers/transaction-summary/get-transaction-summary.d.ts.map +1 -1
- package/dist/providers/utils/gas.d.ts +8 -2
- package/dist/providers/utils/gas.d.ts.map +1 -1
- package/dist/test-utils/launchNode.d.ts.map +1 -1
- package/dist/test-utils.global.js +1535 -1067
- package/dist/test-utils.global.js.map +1 -1
- package/dist/test-utils.js +780 -565
- package/dist/test-utils.js.map +1 -1
- package/dist/test-utils.mjs +631 -416
- package/dist/test-utils.mjs.map +1 -1
- package/dist/wallet/base-wallet-unlocked.d.ts.map +1 -1
- package/package.json +17 -17
package/dist/index.js
CHANGED
@@ -95,7 +95,7 @@ __export(src_exports, {
|
|
95
95
|
WalletLocked: () => WalletLocked,
|
96
96
|
WalletManager: () => WalletManager,
|
97
97
|
WalletUnlocked: () => WalletUnlocked,
|
98
|
-
|
98
|
+
addAmountToCoinQuantities: () => addAmountToCoinQuantities,
|
99
99
|
addOperation: () => addOperation,
|
100
100
|
assemblePanicError: () => assemblePanicError,
|
101
101
|
assembleReceiptByType: () => assembleReceiptByType,
|
@@ -104,9 +104,10 @@ __export(src_exports, {
|
|
104
104
|
assets: () => assets,
|
105
105
|
buildBlockExplorerUrl: () => buildBlockExplorerUrl,
|
106
106
|
cacheFor: () => cacheFor,
|
107
|
+
cacheTxInputsFromOwner: () => cacheTxInputsFromOwner,
|
108
|
+
calculateGasFee: () => calculateGasFee,
|
107
109
|
calculateMetadataGasForTxCreate: () => calculateMetadataGasForTxCreate,
|
108
110
|
calculateMetadataGasForTxScript: () => calculateMetadataGasForTxScript,
|
109
|
-
calculatePriceWithFactor: () => calculatePriceWithFactor,
|
110
111
|
calculateTransactionFee: () => calculateTransactionFee,
|
111
112
|
coinQuantityfy: () => coinQuantityfy,
|
112
113
|
deferPromise: () => deferPromise,
|
@@ -187,8 +188,9 @@ var import_address4 = require("@fuel-ts/address");
|
|
187
188
|
var import_configs12 = require("@fuel-ts/address/configs");
|
188
189
|
var import_errors16 = require("@fuel-ts/errors");
|
189
190
|
var import_interfaces = require("@fuel-ts/interfaces");
|
190
|
-
var
|
191
|
-
var
|
191
|
+
var import_math19 = require("@fuel-ts/math");
|
192
|
+
var import_utils27 = require("@fuel-ts/utils");
|
193
|
+
var import_ramda4 = require("ramda");
|
192
194
|
|
193
195
|
// src/providers/coin-quantity.ts
|
194
196
|
var import_configs = require("@fuel-ts/address/configs");
|
@@ -197,24 +199,24 @@ var import_utils = require("@fuel-ts/utils");
|
|
197
199
|
var coinQuantityfy = (coinQuantityLike) => {
|
198
200
|
let assetId;
|
199
201
|
let amount;
|
200
|
-
let
|
202
|
+
let max;
|
201
203
|
if (Array.isArray(coinQuantityLike)) {
|
202
204
|
amount = coinQuantityLike[0];
|
203
205
|
assetId = coinQuantityLike[1] ?? import_configs.BaseAssetId;
|
204
|
-
|
206
|
+
max = coinQuantityLike[2] ?? void 0;
|
205
207
|
} else {
|
206
208
|
amount = coinQuantityLike.amount;
|
207
209
|
assetId = coinQuantityLike.assetId ?? import_configs.BaseAssetId;
|
208
|
-
|
210
|
+
max = coinQuantityLike.max ?? void 0;
|
209
211
|
}
|
210
212
|
const bnAmount = (0, import_math.bn)(amount);
|
211
213
|
return {
|
212
214
|
assetId: (0, import_utils.hexlify)(assetId),
|
213
215
|
amount: bnAmount.lt(1) ? (0, import_math.bn)(1) : bnAmount,
|
214
|
-
max:
|
216
|
+
max: max ? (0, import_math.bn)(max) : void 0
|
215
217
|
};
|
216
218
|
};
|
217
|
-
var
|
219
|
+
var addAmountToCoinQuantities = (params) => {
|
218
220
|
const { amount, assetId } = params;
|
219
221
|
const coinQuantities = [...params.coinQuantities];
|
220
222
|
const assetIdx = coinQuantities.findIndex((coinQuantity) => coinQuantity.assetId === assetId);
|
@@ -229,12 +231,12 @@ var addAmountToAsset = (params) => {
|
|
229
231
|
// src/providers/provider.ts
|
230
232
|
var import_address3 = require("@fuel-ts/address");
|
231
233
|
var import_errors14 = require("@fuel-ts/errors");
|
232
|
-
var
|
233
|
-
var
|
234
|
-
var
|
234
|
+
var import_math16 = require("@fuel-ts/math");
|
235
|
+
var import_transactions19 = require("@fuel-ts/transactions");
|
236
|
+
var import_utils22 = require("@fuel-ts/utils");
|
235
237
|
var import_versions = require("@fuel-ts/versions");
|
236
|
-
var
|
237
|
-
var
|
238
|
+
var import_utils23 = require("@noble/curves/abstract/utils");
|
239
|
+
var import_ethers2 = require("ethers");
|
238
240
|
var import_graphql_request = require("graphql-request");
|
239
241
|
var import_ramda3 = require("ramda");
|
240
242
|
|
@@ -242,14 +244,10 @@ var import_ramda3 = require("ramda");
|
|
242
244
|
var import_graphql_tag = __toESM(require("graphql-tag"));
|
243
245
|
var ReceiptFragmentFragmentDoc = import_graphql_tag.default`
|
244
246
|
fragment receiptFragment on Receipt {
|
245
|
-
|
246
|
-
id
|
247
|
-
}
|
247
|
+
id
|
248
248
|
pc
|
249
249
|
is
|
250
|
-
to
|
251
|
-
id
|
252
|
-
}
|
250
|
+
to
|
253
251
|
toAddress
|
254
252
|
amount
|
255
253
|
assetId
|
@@ -287,10 +285,16 @@ var TransactionStatusFragmentFragmentDoc = import_graphql_tag.default`
|
|
287
285
|
id
|
288
286
|
}
|
289
287
|
time
|
288
|
+
receipts {
|
289
|
+
...receiptFragment
|
290
|
+
}
|
290
291
|
programState {
|
291
292
|
returnType
|
292
293
|
data
|
293
294
|
}
|
295
|
+
receipts {
|
296
|
+
...receiptFragment
|
297
|
+
}
|
294
298
|
}
|
295
299
|
... on FailureStatus {
|
296
300
|
block {
|
@@ -298,26 +302,24 @@ var TransactionStatusFragmentFragmentDoc = import_graphql_tag.default`
|
|
298
302
|
}
|
299
303
|
time
|
300
304
|
reason
|
305
|
+
receipts {
|
306
|
+
...receiptFragment
|
307
|
+
}
|
301
308
|
}
|
302
309
|
... on SqueezedOutStatus {
|
303
310
|
reason
|
304
311
|
}
|
305
312
|
}
|
306
|
-
`;
|
313
|
+
${ReceiptFragmentFragmentDoc}`;
|
307
314
|
var TransactionFragmentFragmentDoc = import_graphql_tag.default`
|
308
315
|
fragment transactionFragment on Transaction {
|
309
316
|
id
|
310
317
|
rawPayload
|
311
|
-
gasPrice
|
312
|
-
receipts {
|
313
|
-
...receiptFragment
|
314
|
-
}
|
315
318
|
status {
|
316
319
|
...transactionStatusFragment
|
317
320
|
}
|
318
321
|
}
|
319
|
-
${
|
320
|
-
${TransactionStatusFragmentFragmentDoc}`;
|
322
|
+
${TransactionStatusFragmentFragmentDoc}`;
|
321
323
|
var InputEstimatePredicatesFragmentFragmentDoc = import_graphql_tag.default`
|
322
324
|
fragment inputEstimatePredicatesFragment on Input {
|
323
325
|
... on InputCoin {
|
@@ -335,6 +337,46 @@ var TransactionEstimatePredicatesFragmentFragmentDoc = import_graphql_tag.defaul
|
|
335
337
|
}
|
336
338
|
}
|
337
339
|
${InputEstimatePredicatesFragmentFragmentDoc}`;
|
340
|
+
var DryRunFailureStatusFragmentFragmentDoc = import_graphql_tag.default`
|
341
|
+
fragment dryRunFailureStatusFragment on DryRunFailureStatus {
|
342
|
+
reason
|
343
|
+
programState {
|
344
|
+
returnType
|
345
|
+
data
|
346
|
+
}
|
347
|
+
}
|
348
|
+
`;
|
349
|
+
var DryRunSuccessStatusFragmentFragmentDoc = import_graphql_tag.default`
|
350
|
+
fragment dryRunSuccessStatusFragment on DryRunSuccessStatus {
|
351
|
+
programState {
|
352
|
+
returnType
|
353
|
+
data
|
354
|
+
}
|
355
|
+
}
|
356
|
+
`;
|
357
|
+
var DryRunTransactionStatusFragmentFragmentDoc = import_graphql_tag.default`
|
358
|
+
fragment dryRunTransactionStatusFragment on DryRunTransactionStatus {
|
359
|
+
... on DryRunFailureStatus {
|
360
|
+
...dryRunFailureStatusFragment
|
361
|
+
}
|
362
|
+
... on DryRunSuccessStatus {
|
363
|
+
...dryRunSuccessStatusFragment
|
364
|
+
}
|
365
|
+
}
|
366
|
+
${DryRunFailureStatusFragmentFragmentDoc}
|
367
|
+
${DryRunSuccessStatusFragmentFragmentDoc}`;
|
368
|
+
var DryRunTransactionExecutionStatusFragmentFragmentDoc = import_graphql_tag.default`
|
369
|
+
fragment dryRunTransactionExecutionStatusFragment on DryRunTransactionExecutionStatus {
|
370
|
+
id
|
371
|
+
status {
|
372
|
+
...dryRunTransactionStatusFragment
|
373
|
+
}
|
374
|
+
receipts {
|
375
|
+
...receiptFragment
|
376
|
+
}
|
377
|
+
}
|
378
|
+
${DryRunTransactionStatusFragmentFragmentDoc}
|
379
|
+
${ReceiptFragmentFragmentDoc}`;
|
338
380
|
var CoinFragmentFragmentDoc = import_graphql_tag.default`
|
339
381
|
fragment coinFragment on Coin {
|
340
382
|
__typename
|
@@ -342,7 +384,6 @@ var CoinFragmentFragmentDoc = import_graphql_tag.default`
|
|
342
384
|
owner
|
343
385
|
amount
|
344
386
|
assetId
|
345
|
-
maturity
|
346
387
|
blockCreated
|
347
388
|
txCreatedIdx
|
348
389
|
}
|
@@ -387,7 +428,6 @@ var MessageProofFragmentFragmentDoc = import_graphql_tag.default`
|
|
387
428
|
prevRoot
|
388
429
|
time
|
389
430
|
applicationHash
|
390
|
-
messageReceiptRoot
|
391
431
|
messageReceiptCount
|
392
432
|
}
|
393
433
|
commitBlockHeader {
|
@@ -399,7 +439,6 @@ var MessageProofFragmentFragmentDoc = import_graphql_tag.default`
|
|
399
439
|
prevRoot
|
400
440
|
time
|
401
441
|
applicationHash
|
402
|
-
messageReceiptRoot
|
403
442
|
messageReceiptCount
|
404
443
|
}
|
405
444
|
sender
|
@@ -419,8 +458,8 @@ var BalanceFragmentFragmentDoc = import_graphql_tag.default`
|
|
419
458
|
var BlockFragmentFragmentDoc = import_graphql_tag.default`
|
420
459
|
fragment blockFragment on Block {
|
421
460
|
id
|
461
|
+
height
|
422
462
|
header {
|
423
|
-
height
|
424
463
|
time
|
425
464
|
}
|
426
465
|
transactions {
|
@@ -478,6 +517,11 @@ var DependentCostFragmentFragmentDoc = import_graphql_tag.default`
|
|
478
517
|
`;
|
479
518
|
var GasCostsFragmentFragmentDoc = import_graphql_tag.default`
|
480
519
|
fragment GasCostsFragment on GasCosts {
|
520
|
+
version {
|
521
|
+
... on Version {
|
522
|
+
value
|
523
|
+
}
|
524
|
+
}
|
481
525
|
add
|
482
526
|
addi
|
483
527
|
aloc
|
@@ -490,7 +534,6 @@ var GasCostsFragmentFragmentDoc = import_graphql_tag.default`
|
|
490
534
|
cb
|
491
535
|
cfei
|
492
536
|
cfsi
|
493
|
-
croo
|
494
537
|
div
|
495
538
|
divi
|
496
539
|
ecr1
|
@@ -573,6 +616,9 @@ var GasCostsFragmentFragmentDoc = import_graphql_tag.default`
|
|
573
616
|
ccp {
|
574
617
|
...DependentCostFragment
|
575
618
|
}
|
619
|
+
croo {
|
620
|
+
...DependentCostFragment
|
621
|
+
}
|
576
622
|
csiz {
|
577
623
|
...DependentCostFragment
|
578
624
|
}
|
@@ -632,6 +678,11 @@ var GasCostsFragmentFragmentDoc = import_graphql_tag.default`
|
|
632
678
|
${DependentCostFragmentFragmentDoc}`;
|
633
679
|
var ConsensusParametersFragmentFragmentDoc = import_graphql_tag.default`
|
634
680
|
fragment consensusParametersFragment on ConsensusParameters {
|
681
|
+
version {
|
682
|
+
... on Version {
|
683
|
+
value
|
684
|
+
}
|
685
|
+
}
|
635
686
|
txParams {
|
636
687
|
...TxParametersFragment
|
637
688
|
}
|
@@ -691,18 +742,9 @@ var NodeInfoFragmentFragmentDoc = import_graphql_tag.default`
|
|
691
742
|
fragment nodeInfoFragment on NodeInfo {
|
692
743
|
utxoValidation
|
693
744
|
vmBacktrace
|
694
|
-
minGasPrice
|
695
745
|
maxTx
|
696
746
|
maxDepth
|
697
747
|
nodeVersion
|
698
|
-
peers {
|
699
|
-
id
|
700
|
-
addresses
|
701
|
-
clientVersion
|
702
|
-
blockHeight
|
703
|
-
lastHeartbeatMs
|
704
|
-
appScore
|
705
|
-
}
|
706
748
|
}
|
707
749
|
`;
|
708
750
|
var GetVersionDocument = import_graphql_tag.default`
|
@@ -737,13 +779,9 @@ var GetTransactionWithReceiptsDocument = import_graphql_tag.default`
|
|
737
779
|
query getTransactionWithReceipts($transactionId: TransactionId!) {
|
738
780
|
transaction(id: $transactionId) {
|
739
781
|
...transactionFragment
|
740
|
-
receipts {
|
741
|
-
...receiptFragment
|
742
|
-
}
|
743
782
|
}
|
744
783
|
}
|
745
|
-
${TransactionFragmentFragmentDoc}
|
746
|
-
${ReceiptFragmentFragmentDoc}`;
|
784
|
+
${TransactionFragmentFragmentDoc}`;
|
747
785
|
var GetTransactionsDocument = import_graphql_tag.default`
|
748
786
|
query getTransactions($after: String, $before: String, $first: Int, $last: Int) {
|
749
787
|
transactions(after: $after, before: $before, first: $first, last: $last) {
|
@@ -871,6 +909,20 @@ var GetBalanceDocument = import_graphql_tag.default`
|
|
871
909
|
}
|
872
910
|
}
|
873
911
|
${BalanceFragmentFragmentDoc}`;
|
912
|
+
var GetLatestGasPriceDocument = import_graphql_tag.default`
|
913
|
+
query getLatestGasPrice {
|
914
|
+
latestGasPrice {
|
915
|
+
gasPrice
|
916
|
+
}
|
917
|
+
}
|
918
|
+
`;
|
919
|
+
var EstimateGasPriceDocument = import_graphql_tag.default`
|
920
|
+
query estimateGasPrice($blockHorizon: U32!) {
|
921
|
+
estimateGasPrice(blockHorizon: $blockHorizon) {
|
922
|
+
gasPrice
|
923
|
+
}
|
924
|
+
}
|
925
|
+
`;
|
874
926
|
var GetBalancesDocument = import_graphql_tag.default`
|
875
927
|
query getBalances($filter: BalanceFilterInput!, $after: String, $before: String, $first: Int, $last: Int) {
|
876
928
|
balances(
|
@@ -925,12 +977,12 @@ var GetMessageStatusDocument = import_graphql_tag.default`
|
|
925
977
|
}
|
926
978
|
`;
|
927
979
|
var DryRunDocument = import_graphql_tag.default`
|
928
|
-
mutation dryRun($
|
929
|
-
dryRun(
|
930
|
-
...
|
980
|
+
mutation dryRun($encodedTransactions: [HexString!]!, $utxoValidation: Boolean) {
|
981
|
+
dryRun(txs: $encodedTransactions, utxoValidation: $utxoValidation) {
|
982
|
+
...dryRunTransactionExecutionStatusFragment
|
931
983
|
}
|
932
984
|
}
|
933
|
-
${
|
985
|
+
${DryRunTransactionExecutionStatusFragmentFragmentDoc}`;
|
934
986
|
var SubmitDocument = import_graphql_tag.default`
|
935
987
|
mutation submit($encodedTransaction: HexString!) {
|
936
988
|
submit(tx: $encodedTransaction) {
|
@@ -1013,6 +1065,12 @@ function getSdk(requester) {
|
|
1013
1065
|
getBalance(variables, options) {
|
1014
1066
|
return requester(GetBalanceDocument, variables, options);
|
1015
1067
|
},
|
1068
|
+
getLatestGasPrice(variables, options) {
|
1069
|
+
return requester(GetLatestGasPriceDocument, variables, options);
|
1070
|
+
},
|
1071
|
+
estimateGasPrice(variables, options) {
|
1072
|
+
return requester(EstimateGasPriceDocument, variables, options);
|
1073
|
+
},
|
1016
1074
|
getBalances(variables, options) {
|
1017
1075
|
return requester(GetBalancesDocument, variables, options);
|
1018
1076
|
},
|
@@ -1082,11 +1140,14 @@ var _FuelGraphqlSubscriber = class {
|
|
1082
1140
|
let data;
|
1083
1141
|
let errors;
|
1084
1142
|
try {
|
1085
|
-
|
1143
|
+
const sanitizedText = text.replace(/\s/g, "");
|
1144
|
+
({ data, errors } = JSON.parse(sanitizedText.replace(/^data:/, "")));
|
1086
1145
|
} catch (e) {
|
1087
1146
|
throw new import_errors.FuelError(
|
1088
1147
|
import_errors.ErrorCode.STREAM_PARSING_ERROR,
|
1089
|
-
`Error while parsing stream data response: ${text}
|
1148
|
+
`Error while parsing stream data response: ${text}
|
1149
|
+
|
1150
|
+
Thrown error: ${e}`
|
1090
1151
|
);
|
1091
1152
|
}
|
1092
1153
|
if (Array.isArray(errors)) {
|
@@ -1173,7 +1234,6 @@ var MemoryCache = class {
|
|
1173
1234
|
};
|
1174
1235
|
|
1175
1236
|
// src/providers/transaction-request/input.ts
|
1176
|
-
var import_abi_coder = require("@fuel-ts/abi-coder");
|
1177
1237
|
var import_configs2 = require("@fuel-ts/address/configs");
|
1178
1238
|
var import_errors3 = require("@fuel-ts/errors");
|
1179
1239
|
var import_math2 = require("@fuel-ts/math");
|
@@ -1187,8 +1247,8 @@ var inputify = (value) => {
|
|
1187
1247
|
const predicateData = (0, import_utils3.arrayify)(value.predicateData ?? "0x");
|
1188
1248
|
return {
|
1189
1249
|
type: import_transactions.InputType.Coin,
|
1190
|
-
txID: (0, import_utils3.hexlify)((0, import_utils3.arrayify)(value.id).slice(0,
|
1191
|
-
outputIndex: (0, import_math2.toNumber)((0, import_utils3.arrayify)(value.id).slice(
|
1250
|
+
txID: (0, import_utils3.hexlify)((0, import_utils3.arrayify)(value.id).slice(0, 32)),
|
1251
|
+
outputIndex: (0, import_math2.toNumber)((0, import_utils3.arrayify)(value.id).slice(32, 34)),
|
1192
1252
|
owner: (0, import_utils3.hexlify)(value.owner),
|
1193
1253
|
amount: (0, import_math2.bn)(value.amount),
|
1194
1254
|
assetId: (0, import_utils3.hexlify)(value.assetId),
|
@@ -1197,10 +1257,9 @@ var inputify = (value) => {
|
|
1197
1257
|
txIndex: (0, import_math2.toNumber)((0, import_utils3.arrayify)(value.txPointer).slice(8, 16))
|
1198
1258
|
},
|
1199
1259
|
witnessIndex: value.witnessIndex,
|
1200
|
-
maturity: value.maturity ?? 0,
|
1201
1260
|
predicateGasUsed: (0, import_math2.bn)(value.predicateGasUsed),
|
1202
|
-
predicateLength: predicate.length,
|
1203
|
-
predicateDataLength: predicateData.length,
|
1261
|
+
predicateLength: (0, import_math2.bn)(predicate.length),
|
1262
|
+
predicateDataLength: (0, import_math2.bn)(predicateData.length),
|
1204
1263
|
predicate: (0, import_utils3.hexlify)(predicate),
|
1205
1264
|
predicateData: (0, import_utils3.hexlify)(predicateData)
|
1206
1265
|
};
|
@@ -1231,8 +1290,8 @@ var inputify = (value) => {
|
|
1231
1290
|
nonce: (0, import_utils3.hexlify)(value.nonce),
|
1232
1291
|
witnessIndex: value.witnessIndex,
|
1233
1292
|
predicateGasUsed: (0, import_math2.bn)(value.predicateGasUsed),
|
1234
|
-
predicateLength: predicate.length,
|
1235
|
-
predicateDataLength: predicateData.length,
|
1293
|
+
predicateLength: (0, import_math2.bn)(predicate.length),
|
1294
|
+
predicateDataLength: (0, import_math2.bn)(predicateData.length),
|
1236
1295
|
predicate: (0, import_utils3.hexlify)(predicate),
|
1237
1296
|
predicateData: (0, import_utils3.hexlify)(predicateData),
|
1238
1297
|
data: (0, import_utils3.hexlify)(data),
|
@@ -1306,13 +1365,12 @@ var outputify = (value) => {
|
|
1306
1365
|
};
|
1307
1366
|
|
1308
1367
|
// src/providers/transaction-request/transaction-request.ts
|
1309
|
-
var import_abi_coder2 = require("@fuel-ts/abi-coder");
|
1310
1368
|
var import_address = require("@fuel-ts/address");
|
1311
1369
|
var import_configs7 = require("@fuel-ts/address/configs");
|
1312
|
-
var import_crypto = require("@fuel-ts/crypto");
|
1313
1370
|
var import_math7 = require("@fuel-ts/math");
|
1314
1371
|
var import_transactions6 = require("@fuel-ts/transactions");
|
1315
1372
|
var import_utils9 = require("@fuel-ts/utils");
|
1373
|
+
var import_ethers = require("ethers");
|
1316
1374
|
|
1317
1375
|
// src/providers/resource.ts
|
1318
1376
|
var isRawCoin = (resource) => "utxoId" in resource;
|
@@ -1351,8 +1409,8 @@ function assembleReceiptByType(receipt) {
|
|
1351
1409
|
case "CALL" /* Call */: {
|
1352
1410
|
const callReceipt = {
|
1353
1411
|
type: import_transactions3.ReceiptType.Call,
|
1354
|
-
from: hexOrZero(receipt.
|
1355
|
-
to: hexOrZero(receipt?.to
|
1412
|
+
from: hexOrZero(receipt.id || receipt.contractId),
|
1413
|
+
to: hexOrZero(receipt?.to),
|
1356
1414
|
amount: (0, import_math4.bn)(receipt.amount),
|
1357
1415
|
assetId: hexOrZero(receipt.assetId),
|
1358
1416
|
gas: (0, import_math4.bn)(receipt.gas),
|
@@ -1366,7 +1424,7 @@ function assembleReceiptByType(receipt) {
|
|
1366
1424
|
case "RETURN" /* Return */: {
|
1367
1425
|
const returnReceipt = {
|
1368
1426
|
type: import_transactions3.ReceiptType.Return,
|
1369
|
-
id: hexOrZero(receipt.
|
1427
|
+
id: hexOrZero(receipt.id || receipt.contractId),
|
1370
1428
|
val: (0, import_math4.bn)(receipt.val),
|
1371
1429
|
pc: (0, import_math4.bn)(receipt.pc),
|
1372
1430
|
is: (0, import_math4.bn)(receipt.is)
|
@@ -1376,7 +1434,7 @@ function assembleReceiptByType(receipt) {
|
|
1376
1434
|
case "RETURN_DATA" /* ReturnData */: {
|
1377
1435
|
const returnDataReceipt = {
|
1378
1436
|
type: import_transactions3.ReceiptType.ReturnData,
|
1379
|
-
id: hexOrZero(receipt.
|
1437
|
+
id: hexOrZero(receipt.id || receipt.contractId),
|
1380
1438
|
ptr: (0, import_math4.bn)(receipt.ptr),
|
1381
1439
|
len: (0, import_math4.bn)(receipt.len),
|
1382
1440
|
digest: hexOrZero(receipt.digest),
|
@@ -1388,7 +1446,7 @@ function assembleReceiptByType(receipt) {
|
|
1388
1446
|
case "PANIC" /* Panic */: {
|
1389
1447
|
const panicReceipt = {
|
1390
1448
|
type: import_transactions3.ReceiptType.Panic,
|
1391
|
-
id: hexOrZero(receipt.
|
1449
|
+
id: hexOrZero(receipt.id),
|
1392
1450
|
reason: (0, import_math4.bn)(receipt.reason),
|
1393
1451
|
pc: (0, import_math4.bn)(receipt.pc),
|
1394
1452
|
is: (0, import_math4.bn)(receipt.is),
|
@@ -1399,7 +1457,7 @@ function assembleReceiptByType(receipt) {
|
|
1399
1457
|
case "REVERT" /* Revert */: {
|
1400
1458
|
const revertReceipt = {
|
1401
1459
|
type: import_transactions3.ReceiptType.Revert,
|
1402
|
-
id: hexOrZero(receipt.
|
1460
|
+
id: hexOrZero(receipt.id || receipt.contractId),
|
1403
1461
|
val: (0, import_math4.bn)(receipt.ra),
|
1404
1462
|
pc: (0, import_math4.bn)(receipt.pc),
|
1405
1463
|
is: (0, import_math4.bn)(receipt.is)
|
@@ -1409,7 +1467,7 @@ function assembleReceiptByType(receipt) {
|
|
1409
1467
|
case "LOG" /* Log */: {
|
1410
1468
|
const logReceipt = {
|
1411
1469
|
type: import_transactions3.ReceiptType.Log,
|
1412
|
-
id: hexOrZero(receipt.
|
1470
|
+
id: hexOrZero(receipt.id || receipt.contractId),
|
1413
1471
|
val0: (0, import_math4.bn)(receipt.ra),
|
1414
1472
|
val1: (0, import_math4.bn)(receipt.rb),
|
1415
1473
|
val2: (0, import_math4.bn)(receipt.rc),
|
@@ -1422,7 +1480,7 @@ function assembleReceiptByType(receipt) {
|
|
1422
1480
|
case "LOG_DATA" /* LogData */: {
|
1423
1481
|
const logDataReceipt = {
|
1424
1482
|
type: import_transactions3.ReceiptType.LogData,
|
1425
|
-
id: hexOrZero(receipt.
|
1483
|
+
id: hexOrZero(receipt.id || receipt.contractId),
|
1426
1484
|
val0: (0, import_math4.bn)(receipt.ra),
|
1427
1485
|
val1: (0, import_math4.bn)(receipt.rb),
|
1428
1486
|
ptr: (0, import_math4.bn)(receipt.ptr),
|
@@ -1436,8 +1494,8 @@ function assembleReceiptByType(receipt) {
|
|
1436
1494
|
case "TRANSFER" /* Transfer */: {
|
1437
1495
|
const transferReceipt = {
|
1438
1496
|
type: import_transactions3.ReceiptType.Transfer,
|
1439
|
-
from: hexOrZero(receipt.
|
1440
|
-
to: hexOrZero(receipt.toAddress || receipt?.to
|
1497
|
+
from: hexOrZero(receipt.id || receipt.contractId),
|
1498
|
+
to: hexOrZero(receipt.toAddress || receipt?.to),
|
1441
1499
|
amount: (0, import_math4.bn)(receipt.amount),
|
1442
1500
|
assetId: hexOrZero(receipt.assetId),
|
1443
1501
|
pc: (0, import_math4.bn)(receipt.pc),
|
@@ -1448,8 +1506,8 @@ function assembleReceiptByType(receipt) {
|
|
1448
1506
|
case "TRANSFER_OUT" /* TransferOut */: {
|
1449
1507
|
const transferOutReceipt = {
|
1450
1508
|
type: import_transactions3.ReceiptType.TransferOut,
|
1451
|
-
from: hexOrZero(receipt.
|
1452
|
-
to: hexOrZero(receipt.toAddress || receipt.to
|
1509
|
+
from: hexOrZero(receipt.id || receipt.contractId),
|
1510
|
+
to: hexOrZero(receipt.toAddress || receipt.to),
|
1453
1511
|
amount: (0, import_math4.bn)(receipt.amount),
|
1454
1512
|
assetId: hexOrZero(receipt.assetId),
|
1455
1513
|
pc: (0, import_math4.bn)(receipt.pc),
|
@@ -1492,7 +1550,7 @@ function assembleReceiptByType(receipt) {
|
|
1492
1550
|
return receiptMessageOut;
|
1493
1551
|
}
|
1494
1552
|
case "MINT" /* Mint */: {
|
1495
|
-
const contractId = hexOrZero(receipt.
|
1553
|
+
const contractId = hexOrZero(receipt.id || receipt.contractId);
|
1496
1554
|
const subId = hexOrZero(receipt.subId);
|
1497
1555
|
const assetId = import_transactions3.ReceiptMintCoder.getAssetId(contractId, subId);
|
1498
1556
|
const mintReceipt = {
|
@@ -1507,7 +1565,7 @@ function assembleReceiptByType(receipt) {
|
|
1507
1565
|
return mintReceipt;
|
1508
1566
|
}
|
1509
1567
|
case "BURN" /* Burn */: {
|
1510
|
-
const contractId = hexOrZero(receipt.
|
1568
|
+
const contractId = hexOrZero(receipt.id || receipt.contractId);
|
1511
1569
|
const subId = hexOrZero(receipt.subId);
|
1512
1570
|
const assetId = import_transactions3.ReceiptBurnCoder.getAssetId(contractId, subId);
|
1513
1571
|
const burnReceipt = {
|
@@ -1592,7 +1650,6 @@ var buildBlockExplorerUrl = (options = {}) => {
|
|
1592
1650
|
var import_math5 = require("@fuel-ts/math");
|
1593
1651
|
var import_transactions4 = require("@fuel-ts/transactions");
|
1594
1652
|
var import_utils6 = require("@fuel-ts/utils");
|
1595
|
-
var calculatePriceWithFactor = (gas, gasPrice, priceFactor) => (0, import_math5.bn)(Math.ceil(gas.mul(gasPrice).toNumber() / priceFactor.toNumber()));
|
1596
1653
|
var getGasUsedFromReceipts = (receipts) => {
|
1597
1654
|
const scriptResult = receipts.filter(
|
1598
1655
|
(receipt) => receipt.type === import_transactions4.ReceiptType.ScriptResult
|
@@ -1613,18 +1670,28 @@ function resolveGasDependentCosts(byteSize, gasDependentCost) {
|
|
1613
1670
|
}
|
1614
1671
|
function gasUsedByInputs(inputs, txBytesSize, gasCosts) {
|
1615
1672
|
const witnessCache = [];
|
1616
|
-
const
|
1673
|
+
const chargeableInputs = inputs.filter((input) => {
|
1674
|
+
const isCoinOrMessage = "owner" in input || "sender" in input;
|
1675
|
+
if (isCoinOrMessage) {
|
1676
|
+
if ("predicate" in input && input.predicate && input.predicate !== "0x") {
|
1677
|
+
return true;
|
1678
|
+
}
|
1679
|
+
if (!witnessCache.includes(input.witnessIndex)) {
|
1680
|
+
witnessCache.push(input.witnessIndex);
|
1681
|
+
return true;
|
1682
|
+
}
|
1683
|
+
}
|
1684
|
+
return false;
|
1685
|
+
});
|
1686
|
+
const vmInitializationCost = resolveGasDependentCosts(txBytesSize, gasCosts.vmInitialization);
|
1687
|
+
const totalGas = chargeableInputs.reduce((total, input) => {
|
1617
1688
|
if ("predicate" in input && input.predicate && input.predicate !== "0x") {
|
1618
1689
|
return total.add(
|
1619
|
-
|
1690
|
+
vmInitializationCost.add(resolveGasDependentCosts((0, import_utils6.arrayify)(input.predicate).length, gasCosts.contractRoot)).add((0, import_math5.bn)(input.predicateGasUsed))
|
1620
1691
|
);
|
1621
1692
|
}
|
1622
|
-
|
1623
|
-
|
1624
|
-
return total.add(gasCosts.ecr1);
|
1625
|
-
}
|
1626
|
-
return total;
|
1627
|
-
}, (0, import_math5.bn)());
|
1693
|
+
return total.add(gasCosts.ecr1);
|
1694
|
+
}, (0, import_math5.bn)(0));
|
1628
1695
|
return totalGas;
|
1629
1696
|
}
|
1630
1697
|
function getMinGas(params) {
|
@@ -1636,12 +1703,20 @@ function getMinGas(params) {
|
|
1636
1703
|
return minGas;
|
1637
1704
|
}
|
1638
1705
|
function getMaxGas(params) {
|
1639
|
-
const {
|
1706
|
+
const {
|
1707
|
+
gasPerByte,
|
1708
|
+
witnessesLength,
|
1709
|
+
witnessLimit,
|
1710
|
+
minGas,
|
1711
|
+
gasLimit = (0, import_math5.bn)(0),
|
1712
|
+
maxGasPerTx
|
1713
|
+
} = params;
|
1640
1714
|
let remainingAllowedWitnessGas = (0, import_math5.bn)(0);
|
1641
1715
|
if (witnessLimit?.gt(0) && witnessLimit.gte(witnessesLength)) {
|
1642
1716
|
remainingAllowedWitnessGas = (0, import_math5.bn)(witnessLimit).sub(witnessesLength).mul(gasPerByte);
|
1643
1717
|
}
|
1644
|
-
|
1718
|
+
const maxGas = remainingAllowedWitnessGas.add(minGas).add(gasLimit);
|
1719
|
+
return maxGas.gte(maxGasPerTx) ? maxGasPerTx : maxGas;
|
1645
1720
|
}
|
1646
1721
|
function calculateMetadataGasForTxCreate({
|
1647
1722
|
gasCosts,
|
@@ -1663,6 +1738,10 @@ function calculateMetadataGasForTxScript({
|
|
1663
1738
|
}) {
|
1664
1739
|
return resolveGasDependentCosts(txBytesSize, gasCosts.s256);
|
1665
1740
|
}
|
1741
|
+
var calculateGasFee = (params) => {
|
1742
|
+
const { gas, gasPrice, priceFactor, tip } = params;
|
1743
|
+
return gas.mul(gasPrice).div(priceFactor).add(tip);
|
1744
|
+
};
|
1666
1745
|
|
1667
1746
|
// src/providers/utils/json.ts
|
1668
1747
|
var import_utils7 = require("@fuel-ts/utils");
|
@@ -1811,7 +1890,7 @@ var witnessify = (value) => {
|
|
1811
1890
|
// src/providers/transaction-request/transaction-request.ts
|
1812
1891
|
var BaseTransactionRequest = class {
|
1813
1892
|
/** Gas price for transaction */
|
1814
|
-
|
1893
|
+
tip;
|
1815
1894
|
/** Block until which tx cannot be included */
|
1816
1895
|
maturity;
|
1817
1896
|
/** The maximum fee payable by this transaction using BASE_ASSET. */
|
@@ -1830,7 +1909,7 @@ var BaseTransactionRequest = class {
|
|
1830
1909
|
* @param baseTransactionRequest - Optional object containing properties to initialize the transaction request.
|
1831
1910
|
*/
|
1832
1911
|
constructor({
|
1833
|
-
|
1912
|
+
tip,
|
1834
1913
|
maturity,
|
1835
1914
|
maxFee,
|
1836
1915
|
witnessLimit,
|
@@ -1838,7 +1917,7 @@ var BaseTransactionRequest = class {
|
|
1838
1917
|
outputs,
|
1839
1918
|
witnesses
|
1840
1919
|
} = {}) {
|
1841
|
-
this.
|
1920
|
+
this.tip = (0, import_math7.bn)(tip);
|
1842
1921
|
this.maturity = maturity ?? 0;
|
1843
1922
|
this.witnessLimit = witnessLimit ? (0, import_math7.bn)(witnessLimit) : void 0;
|
1844
1923
|
this.maxFee = maxFee ? (0, import_math7.bn)(maxFee) : void 0;
|
@@ -1849,9 +1928,9 @@ var BaseTransactionRequest = class {
|
|
1849
1928
|
static getPolicyMeta(req) {
|
1850
1929
|
let policyTypes = 0;
|
1851
1930
|
const policies = [];
|
1852
|
-
if (req.
|
1853
|
-
policyTypes += import_transactions6.PolicyType.
|
1854
|
-
policies.push({ data: req.
|
1931
|
+
if (req.tip) {
|
1932
|
+
policyTypes += import_transactions6.PolicyType.Tip;
|
1933
|
+
policies.push({ data: req.tip, type: import_transactions6.PolicyType.Tip });
|
1855
1934
|
}
|
1856
1935
|
if (req.witnessLimit) {
|
1857
1936
|
policyTypes += import_transactions6.PolicyType.WitnessLimit;
|
@@ -2038,10 +2117,10 @@ var BaseTransactionRequest = class {
|
|
2038
2117
|
* @param predicate - Predicate bytes.
|
2039
2118
|
* @param predicateData - Predicate data bytes.
|
2040
2119
|
*/
|
2041
|
-
addCoinInput(coin
|
2120
|
+
addCoinInput(coin) {
|
2042
2121
|
const { assetId, owner, amount } = coin;
|
2043
2122
|
let witnessIndex;
|
2044
|
-
if (predicate) {
|
2123
|
+
if (coin.predicate) {
|
2045
2124
|
witnessIndex = 0;
|
2046
2125
|
} else {
|
2047
2126
|
witnessIndex = this.getCoinInputWitnessIndexByOwner(owner);
|
@@ -2056,8 +2135,7 @@ var BaseTransactionRequest = class {
|
|
2056
2135
|
amount,
|
2057
2136
|
assetId,
|
2058
2137
|
txPointer: "0x00000000000000000000000000000000",
|
2059
|
-
witnessIndex
|
2060
|
-
predicate: predicate?.bytes
|
2138
|
+
witnessIndex
|
2061
2139
|
};
|
2062
2140
|
this.pushInput(input);
|
2063
2141
|
this.addChangeOutput(owner, assetId);
|
@@ -2070,11 +2148,11 @@ var BaseTransactionRequest = class {
|
|
2070
2148
|
* @param predicate - Predicate bytes.
|
2071
2149
|
* @param predicateData - Predicate data bytes.
|
2072
2150
|
*/
|
2073
|
-
addMessageInput(message
|
2151
|
+
addMessageInput(message) {
|
2074
2152
|
const { recipient, sender, amount } = message;
|
2075
2153
|
const assetId = import_configs7.BaseAssetId;
|
2076
2154
|
let witnessIndex;
|
2077
|
-
if (predicate) {
|
2155
|
+
if (message.predicate) {
|
2078
2156
|
witnessIndex = 0;
|
2079
2157
|
} else {
|
2080
2158
|
witnessIndex = this.getCoinInputWitnessIndexByOwner(recipient);
|
@@ -2088,8 +2166,7 @@ var BaseTransactionRequest = class {
|
|
2088
2166
|
sender: sender.toB256(),
|
2089
2167
|
recipient: recipient.toB256(),
|
2090
2168
|
amount,
|
2091
|
-
witnessIndex
|
2092
|
-
predicate: predicate?.bytes
|
2169
|
+
witnessIndex
|
2093
2170
|
};
|
2094
2171
|
this.pushInput(input);
|
2095
2172
|
this.addChangeOutput(recipient, assetId);
|
@@ -2120,32 +2197,6 @@ var BaseTransactionRequest = class {
|
|
2120
2197
|
resources.forEach((resource) => this.addResource(resource));
|
2121
2198
|
return this;
|
2122
2199
|
}
|
2123
|
-
/**
|
2124
|
-
* Adds multiple resources to the transaction by adding coin/message inputs and change
|
2125
|
-
* outputs from the related assetIds.
|
2126
|
-
*
|
2127
|
-
* @param resources - The resources to add.
|
2128
|
-
* @returns This transaction.
|
2129
|
-
*/
|
2130
|
-
addPredicateResource(resource, predicate) {
|
2131
|
-
if (isCoin(resource)) {
|
2132
|
-
this.addCoinInput(resource, predicate);
|
2133
|
-
} else {
|
2134
|
-
this.addMessageInput(resource, predicate);
|
2135
|
-
}
|
2136
|
-
return this;
|
2137
|
-
}
|
2138
|
-
/**
|
2139
|
-
* Adds multiple predicate coin/message inputs to the transaction and change outputs
|
2140
|
-
* from the related assetIds.
|
2141
|
-
*
|
2142
|
-
* @param resources - The resources to add.
|
2143
|
-
* @returns This transaction.
|
2144
|
-
*/
|
2145
|
-
addPredicateResources(resources, predicate) {
|
2146
|
-
resources.forEach((resource) => this.addPredicateResource(resource, predicate));
|
2147
|
-
return this;
|
2148
|
-
}
|
2149
2200
|
/**
|
2150
2201
|
* Adds a coin output to the transaction.
|
2151
2202
|
*
|
@@ -2225,7 +2276,7 @@ var BaseTransactionRequest = class {
|
|
2225
2276
|
}
|
2226
2277
|
calculateMaxGas(chainInfo, minGas) {
|
2227
2278
|
const { consensusParameters } = chainInfo;
|
2228
|
-
const { gasPerByte } = consensusParameters;
|
2279
|
+
const { gasPerByte, maxGasPerTx } = consensusParameters;
|
2229
2280
|
const witnessesLength = this.toTransaction().witnesses.reduce(
|
2230
2281
|
(acc, wit) => acc + wit.dataLength,
|
2231
2282
|
0
|
@@ -2234,7 +2285,8 @@ var BaseTransactionRequest = class {
|
|
2234
2285
|
gasPerByte,
|
2235
2286
|
minGas,
|
2236
2287
|
witnessesLength,
|
2237
|
-
witnessLimit: this.witnessLimit
|
2288
|
+
witnessLimit: this.witnessLimit,
|
2289
|
+
maxGasPerTx
|
2238
2290
|
});
|
2239
2291
|
}
|
2240
2292
|
/**
|
@@ -2252,17 +2304,20 @@ var BaseTransactionRequest = class {
|
|
2252
2304
|
});
|
2253
2305
|
const updateAssetInput = (assetId, quantity) => {
|
2254
2306
|
const assetInput = findAssetInput(assetId);
|
2307
|
+
let usedQuantity = quantity;
|
2308
|
+
if (assetId === import_configs7.BaseAssetId) {
|
2309
|
+
usedQuantity = (0, import_math7.bn)("1000000000000000000");
|
2310
|
+
}
|
2255
2311
|
if (assetInput && "assetId" in assetInput) {
|
2256
|
-
assetInput.id = (0, import_utils9.hexlify)((0,
|
2257
|
-
assetInput.amount =
|
2312
|
+
assetInput.id = (0, import_utils9.hexlify)((0, import_ethers.randomBytes)(34));
|
2313
|
+
assetInput.amount = usedQuantity;
|
2258
2314
|
} else {
|
2259
2315
|
this.addResources([
|
2260
2316
|
{
|
2261
|
-
id: (0, import_utils9.hexlify)((0,
|
2262
|
-
amount:
|
2317
|
+
id: (0, import_utils9.hexlify)((0, import_ethers.randomBytes)(34)),
|
2318
|
+
amount: usedQuantity,
|
2263
2319
|
assetId,
|
2264
2320
|
owner: resourcesOwner || import_address.Address.fromRandom(),
|
2265
|
-
maturity: 0,
|
2266
2321
|
blockCreated: (0, import_math7.bn)(1),
|
2267
2322
|
txCreatedIdx: (0, import_math7.bn)(1)
|
2268
2323
|
}
|
@@ -2294,7 +2349,7 @@ var BaseTransactionRequest = class {
|
|
2294
2349
|
toJSON() {
|
2295
2350
|
return normalizeJSON(this);
|
2296
2351
|
}
|
2297
|
-
|
2352
|
+
updatePredicateGasUsed(inputs) {
|
2298
2353
|
this.inputs.forEach((i) => {
|
2299
2354
|
let correspondingInput;
|
2300
2355
|
switch (i.type) {
|
@@ -2316,6 +2371,15 @@ var BaseTransactionRequest = class {
|
|
2316
2371
|
}
|
2317
2372
|
});
|
2318
2373
|
}
|
2374
|
+
shiftPredicateData() {
|
2375
|
+
this.inputs.forEach((input) => {
|
2376
|
+
if ("predicateData" in input && "paddPredicateData" in input && typeof input.paddPredicateData === "function") {
|
2377
|
+
input.predicateData = input.paddPredicateData(
|
2378
|
+
BaseTransactionRequest.getPolicyMeta(this).policies.length
|
2379
|
+
);
|
2380
|
+
}
|
2381
|
+
});
|
2382
|
+
}
|
2319
2383
|
};
|
2320
2384
|
|
2321
2385
|
// src/providers/transaction-request/create-transaction-request.ts
|
@@ -2462,9 +2526,8 @@ var CreateTransactionRequest = class extends BaseTransactionRequest {
|
|
2462
2526
|
return {
|
2463
2527
|
type: import_transactions8.TransactionType.Create,
|
2464
2528
|
...baseTransaction,
|
2465
|
-
bytecodeLength: baseTransaction.witnesses[bytecodeWitnessIndex].dataLength / 4,
|
2466
2529
|
bytecodeWitnessIndex,
|
2467
|
-
storageSlotsCount: storageSlots.length,
|
2530
|
+
storageSlotsCount: (0, import_math9.bn)(storageSlots.length),
|
2468
2531
|
salt: this.salt ? (0, import_utils13.hexlify)(this.salt) : import_configs9.ZeroBytes32,
|
2469
2532
|
storageSlots
|
2470
2533
|
};
|
@@ -2513,7 +2576,7 @@ var CreateTransactionRequest = class extends BaseTransactionRequest {
|
|
2513
2576
|
};
|
2514
2577
|
|
2515
2578
|
// src/providers/transaction-request/script-transaction-request.ts
|
2516
|
-
var
|
2579
|
+
var import_abi_coder = require("@fuel-ts/abi-coder");
|
2517
2580
|
var import_address2 = require("@fuel-ts/address");
|
2518
2581
|
var import_configs10 = require("@fuel-ts/address/configs");
|
2519
2582
|
var import_math10 = require("@fuel-ts/math");
|
@@ -2587,8 +2650,8 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
|
|
2587
2650
|
type: import_transactions9.TransactionType.Script,
|
2588
2651
|
scriptGasLimit: this.gasLimit,
|
2589
2652
|
...super.getBaseTransaction(),
|
2590
|
-
scriptLength: script.length,
|
2591
|
-
scriptDataLength: scriptData.length,
|
2653
|
+
scriptLength: (0, import_math10.bn)(script.length),
|
2654
|
+
scriptDataLength: (0, import_math10.bn)(scriptData.length),
|
2592
2655
|
receiptsRoot: import_configs10.ZeroBytes32,
|
2593
2656
|
script: (0, import_utils15.hexlify)(script),
|
2594
2657
|
scriptData: (0, import_utils15.hexlify)(scriptData)
|
@@ -2652,7 +2715,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
|
|
2652
2715
|
}
|
2653
2716
|
calculateMaxGas(chainInfo, minGas) {
|
2654
2717
|
const { consensusParameters } = chainInfo;
|
2655
|
-
const { gasPerByte } = consensusParameters;
|
2718
|
+
const { gasPerByte, maxGasPerTx } = consensusParameters;
|
2656
2719
|
const witnessesLength = this.toTransaction().witnesses.reduce(
|
2657
2720
|
(acc, wit) => acc + wit.dataLength,
|
2658
2721
|
0
|
@@ -2662,7 +2725,8 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
|
|
2662
2725
|
minGas,
|
2663
2726
|
witnessesLength,
|
2664
2727
|
witnessLimit: this.witnessLimit,
|
2665
|
-
gasLimit: this.gasLimit
|
2728
|
+
gasLimit: this.gasLimit,
|
2729
|
+
maxGasPerTx
|
2666
2730
|
});
|
2667
2731
|
}
|
2668
2732
|
/**
|
@@ -2705,7 +2769,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
|
|
2705
2769
|
* @returns The current instance of the `ScriptTransactionRequest`.
|
2706
2770
|
*/
|
2707
2771
|
setData(abi, args) {
|
2708
|
-
const abiInterface = new
|
2772
|
+
const abiInterface = new import_abi_coder.Interface(abi);
|
2709
2773
|
this.scriptData = abiInterface.functions.main.encodeArguments(args);
|
2710
2774
|
return this;
|
2711
2775
|
}
|
@@ -2737,15 +2801,32 @@ var transactionRequestify = (obj) => {
|
|
2737
2801
|
}
|
2738
2802
|
}
|
2739
2803
|
};
|
2804
|
+
var cacheTxInputsFromOwner = (inputs, owner) => inputs.reduce(
|
2805
|
+
(acc, input) => {
|
2806
|
+
if (input.type === import_transactions10.InputType.Coin && input.owner === owner) {
|
2807
|
+
acc.utxos.push(input.id);
|
2808
|
+
}
|
2809
|
+
if (input.type === import_transactions10.InputType.Message && input.recipient === owner) {
|
2810
|
+
acc.messages.push(input.nonce);
|
2811
|
+
}
|
2812
|
+
return acc;
|
2813
|
+
},
|
2814
|
+
{
|
2815
|
+
utxos: [],
|
2816
|
+
messages: []
|
2817
|
+
}
|
2818
|
+
);
|
2740
2819
|
|
2741
2820
|
// src/providers/transaction-response/transaction-response.ts
|
2742
2821
|
var import_errors13 = require("@fuel-ts/errors");
|
2743
|
-
var
|
2744
|
-
var
|
2745
|
-
var
|
2822
|
+
var import_math15 = require("@fuel-ts/math");
|
2823
|
+
var import_transactions18 = require("@fuel-ts/transactions");
|
2824
|
+
var import_utils20 = require("@fuel-ts/utils");
|
2746
2825
|
|
2747
2826
|
// src/providers/transaction-summary/assemble-transaction-summary.ts
|
2748
|
-
var
|
2827
|
+
var import_math14 = require("@fuel-ts/math");
|
2828
|
+
var import_transactions16 = require("@fuel-ts/transactions");
|
2829
|
+
var import_utils18 = require("@fuel-ts/utils");
|
2749
2830
|
|
2750
2831
|
// src/providers/transaction-summary/calculate-transaction-fee.ts
|
2751
2832
|
var import_math11 = require("@fuel-ts/math");
|
@@ -2753,9 +2834,10 @@ var import_transactions11 = require("@fuel-ts/transactions");
|
|
2753
2834
|
var import_utils16 = require("@fuel-ts/utils");
|
2754
2835
|
var calculateTransactionFee = (params) => {
|
2755
2836
|
const {
|
2756
|
-
|
2837
|
+
gasPrice,
|
2757
2838
|
rawPayload,
|
2758
|
-
|
2839
|
+
tip,
|
2840
|
+
consensusParameters: { gasCosts, feeParams, maxGasPerTx }
|
2759
2841
|
} = params;
|
2760
2842
|
const gasPerByte = (0, import_math11.bn)(feeParams.gasPerByte);
|
2761
2843
|
const gasPriceFactor = (0, import_math11.bn)(feeParams.gasPriceFactor);
|
@@ -2765,8 +2847,7 @@ var calculateTransactionFee = (params) => {
|
|
2765
2847
|
return {
|
2766
2848
|
fee: (0, import_math11.bn)(0),
|
2767
2849
|
minFee: (0, import_math11.bn)(0),
|
2768
|
-
maxFee: (0, import_math11.bn)(0)
|
2769
|
-
feeFromGasUsed: (0, import_math11.bn)(0)
|
2850
|
+
maxFee: (0, import_math11.bn)(0)
|
2770
2851
|
};
|
2771
2852
|
}
|
2772
2853
|
const { type, witnesses, inputs, policies } = transaction;
|
@@ -2798,7 +2879,6 @@ var calculateTransactionFee = (params) => {
|
|
2798
2879
|
metadataGas,
|
2799
2880
|
txBytesSize: transactionBytes.length
|
2800
2881
|
});
|
2801
|
-
const gasPrice = (0, import_math11.bn)(policies.find((policy) => policy.type === import_transactions11.PolicyType.GasPrice)?.data);
|
2802
2882
|
const witnessLimit = policies.find((policy) => policy.type === import_transactions11.PolicyType.WitnessLimit)?.data;
|
2803
2883
|
const witnessesLength = witnesses.reduce((acc, wit) => acc + wit.dataLength, 0);
|
2804
2884
|
const maxGas = getMaxGas({
|
@@ -2806,17 +2886,25 @@ var calculateTransactionFee = (params) => {
|
|
2806
2886
|
minGas,
|
2807
2887
|
witnessesLength,
|
2808
2888
|
gasLimit,
|
2809
|
-
witnessLimit
|
2889
|
+
witnessLimit,
|
2890
|
+
maxGasPerTx
|
2891
|
+
});
|
2892
|
+
const minFee = calculateGasFee({
|
2893
|
+
gasPrice,
|
2894
|
+
gas: minGas,
|
2895
|
+
priceFactor: gasPriceFactor,
|
2896
|
+
tip
|
2897
|
+
});
|
2898
|
+
const maxFee = calculateGasFee({
|
2899
|
+
gasPrice,
|
2900
|
+
gas: maxGas,
|
2901
|
+
priceFactor: gasPriceFactor,
|
2902
|
+
tip
|
2810
2903
|
});
|
2811
|
-
const feeFromGasUsed = calculatePriceWithFactor(gasUsed, gasPrice, gasPriceFactor);
|
2812
|
-
const minFee = calculatePriceWithFactor(minGas, gasPrice, gasPriceFactor);
|
2813
|
-
const maxFee = calculatePriceWithFactor(maxGas, gasPrice, gasPriceFactor);
|
2814
|
-
const fee = minFee.add(feeFromGasUsed);
|
2815
2904
|
return {
|
2816
|
-
fee,
|
2817
2905
|
minFee,
|
2818
2906
|
maxFee,
|
2819
|
-
|
2907
|
+
fee: maxFee
|
2820
2908
|
};
|
2821
2909
|
};
|
2822
2910
|
|
@@ -2827,17 +2915,17 @@ var import_math13 = require("@fuel-ts/math");
|
|
2827
2915
|
var import_transactions14 = require("@fuel-ts/transactions");
|
2828
2916
|
|
2829
2917
|
// src/providers/transaction-summary/call.ts
|
2830
|
-
var
|
2918
|
+
var import_abi_coder2 = require("@fuel-ts/abi-coder");
|
2831
2919
|
var import_math12 = require("@fuel-ts/math");
|
2832
2920
|
var getFunctionCall = ({ abi, receipt, rawPayload, maxInputs }) => {
|
2833
|
-
const abiInterface = new
|
2921
|
+
const abiInterface = new import_abi_coder2.Interface(abi);
|
2834
2922
|
const callFunctionSelector = receipt.param1.toHex(8);
|
2835
2923
|
const functionFragment = abiInterface.getFunction(callFunctionSelector);
|
2836
2924
|
const inputs = functionFragment.jsonFn.inputs;
|
2837
2925
|
let encodedArgs;
|
2838
2926
|
if (functionFragment.isInputDataPointer) {
|
2839
2927
|
if (rawPayload) {
|
2840
|
-
const argsOffset = (0, import_math12.bn)(receipt.param2).sub((0,
|
2928
|
+
const argsOffset = (0, import_math12.bn)(receipt.param2).sub((0, import_abi_coder2.calculateVmTxMemory)({ maxInputs: maxInputs.toNumber() })).toNumber();
|
2841
2929
|
encodedArgs = `0x${rawPayload.slice(2).slice(argsOffset * 2)}`;
|
2842
2930
|
}
|
2843
2931
|
} else {
|
@@ -3430,10 +3518,12 @@ function assembleTransactionSummary(params) {
|
|
3430
3518
|
gqlTransactionStatus,
|
3431
3519
|
abiMap = {},
|
3432
3520
|
maxInputs,
|
3433
|
-
gasCosts
|
3521
|
+
gasCosts,
|
3522
|
+
maxGasPerTx,
|
3523
|
+
gasPrice
|
3434
3524
|
} = params;
|
3435
3525
|
const gasUsed = getGasUsedFromReceipts(receipts);
|
3436
|
-
const rawPayload = (0,
|
3526
|
+
const rawPayload = (0, import_utils18.hexlify)(transactionBytes);
|
3437
3527
|
const operations = getOperations({
|
3438
3528
|
transactionType: transaction.type,
|
3439
3529
|
inputs: transaction.inputs || [],
|
@@ -3444,11 +3534,14 @@ function assembleTransactionSummary(params) {
|
|
3444
3534
|
maxInputs
|
3445
3535
|
});
|
3446
3536
|
const typeName = getTransactionTypeName(transaction.type);
|
3537
|
+
const tip = (0, import_math14.bn)(transaction.policies?.find((policy) => policy.type === import_transactions16.PolicyType.Tip)?.data);
|
3447
3538
|
const { fee } = calculateTransactionFee({
|
3448
|
-
|
3539
|
+
gasPrice,
|
3449
3540
|
rawPayload,
|
3541
|
+
tip,
|
3450
3542
|
consensusParameters: {
|
3451
3543
|
gasCosts,
|
3544
|
+
maxGasPerTx,
|
3452
3545
|
feeParams: {
|
3453
3546
|
gasPerByte,
|
3454
3547
|
gasPriceFactor
|
@@ -3460,7 +3553,7 @@ function assembleTransactionSummary(params) {
|
|
3460
3553
|
const burnedAssets = extractBurnedAssetsFromReceipts(receipts);
|
3461
3554
|
let date;
|
3462
3555
|
if (time) {
|
3463
|
-
date =
|
3556
|
+
date = import_utils18.DateTime.fromTai64(time);
|
3464
3557
|
}
|
3465
3558
|
const transactionSummary = {
|
3466
3559
|
id,
|
@@ -3487,13 +3580,13 @@ function assembleTransactionSummary(params) {
|
|
3487
3580
|
}
|
3488
3581
|
|
3489
3582
|
// src/providers/transaction-response/getDecodedLogs.ts
|
3490
|
-
var
|
3491
|
-
var
|
3583
|
+
var import_abi_coder3 = require("@fuel-ts/abi-coder");
|
3584
|
+
var import_transactions17 = require("@fuel-ts/transactions");
|
3492
3585
|
function getDecodedLogs(receipts, mainAbi, externalAbis = {}) {
|
3493
3586
|
return receipts.reduce((logs, receipt) => {
|
3494
|
-
if (receipt.type ===
|
3495
|
-
const interfaceToUse = new
|
3496
|
-
const data = receipt.type ===
|
3587
|
+
if (receipt.type === import_transactions17.ReceiptType.LogData || receipt.type === import_transactions17.ReceiptType.Log) {
|
3588
|
+
const interfaceToUse = new import_abi_coder3.Interface(externalAbis[receipt.id] || mainAbi);
|
3589
|
+
const data = receipt.type === import_transactions17.ReceiptType.Log ? new import_abi_coder3.BigNumberCoder("u64").encode(receipt.val0) : receipt.data;
|
3497
3590
|
const [decodedLog] = interfaceToUse.decodeLog(data, receipt.val1.toNumber());
|
3498
3591
|
logs.push(decodedLog);
|
3499
3592
|
}
|
@@ -3508,7 +3601,7 @@ var TransactionResponse = class {
|
|
3508
3601
|
/** Current provider */
|
3509
3602
|
provider;
|
3510
3603
|
/** Gas used on the transaction */
|
3511
|
-
gasUsed = (0,
|
3604
|
+
gasUsed = (0, import_math15.bn)(0);
|
3512
3605
|
/** The graphql Transaction with receipts object. */
|
3513
3606
|
gqlTransaction;
|
3514
3607
|
abis;
|
@@ -3566,8 +3659,8 @@ var TransactionResponse = class {
|
|
3566
3659
|
* @returns The decoded transaction.
|
3567
3660
|
*/
|
3568
3661
|
decodeTransaction(transactionWithReceipts) {
|
3569
|
-
return new
|
3570
|
-
(0,
|
3662
|
+
return new import_transactions18.TransactionCoder().decode(
|
3663
|
+
(0, import_utils20.arrayify)(transactionWithReceipts.rawPayload),
|
3571
3664
|
0
|
3572
3665
|
)?.[0];
|
3573
3666
|
}
|
@@ -3586,20 +3679,27 @@ var TransactionResponse = class {
|
|
3586
3679
|
const decodedTransaction = this.decodeTransaction(
|
3587
3680
|
transaction
|
3588
3681
|
);
|
3589
|
-
|
3590
|
-
|
3682
|
+
let txReceipts = [];
|
3683
|
+
if (transaction?.status && "receipts" in transaction.status) {
|
3684
|
+
txReceipts = transaction.status.receipts;
|
3685
|
+
}
|
3686
|
+
const receipts = txReceipts.map(processGqlReceipt) || [];
|
3687
|
+
const { gasPerByte, gasPriceFactor, gasCosts, maxGasPerTx } = this.provider.getGasConfig();
|
3688
|
+
const gasPrice = await this.provider.getLatestGasPrice();
|
3591
3689
|
const maxInputs = this.provider.getChain().consensusParameters.maxInputs;
|
3592
3690
|
const transactionSummary = assembleTransactionSummary({
|
3593
3691
|
id: this.id,
|
3594
3692
|
receipts,
|
3595
3693
|
transaction: decodedTransaction,
|
3596
|
-
transactionBytes: (0,
|
3694
|
+
transactionBytes: (0, import_utils20.arrayify)(transaction.rawPayload),
|
3597
3695
|
gqlTransactionStatus: transaction.status,
|
3598
3696
|
gasPerByte,
|
3599
3697
|
gasPriceFactor,
|
3600
3698
|
abiMap: contractsAbiMap,
|
3601
3699
|
maxInputs,
|
3602
|
-
gasCosts
|
3700
|
+
gasCosts,
|
3701
|
+
maxGasPerTx,
|
3702
|
+
gasPrice
|
3603
3703
|
});
|
3604
3704
|
return transactionSummary;
|
3605
3705
|
}
|
@@ -3726,29 +3826,29 @@ var processGqlChain = (chain) => {
|
|
3726
3826
|
const { contractParams, feeParams, predicateParams, scriptParams, txParams, gasCosts } = consensusParameters;
|
3727
3827
|
return {
|
3728
3828
|
name,
|
3729
|
-
baseChainHeight: (0,
|
3829
|
+
baseChainHeight: (0, import_math16.bn)(daHeight),
|
3730
3830
|
consensusParameters: {
|
3731
|
-
contractMaxSize: (0,
|
3732
|
-
maxInputs: (0,
|
3733
|
-
maxOutputs: (0,
|
3734
|
-
maxWitnesses: (0,
|
3735
|
-
maxGasPerTx: (0,
|
3736
|
-
maxScriptLength: (0,
|
3737
|
-
maxScriptDataLength: (0,
|
3738
|
-
maxStorageSlots: (0,
|
3739
|
-
maxPredicateLength: (0,
|
3740
|
-
maxPredicateDataLength: (0,
|
3741
|
-
maxGasPerPredicate: (0,
|
3742
|
-
gasPriceFactor: (0,
|
3743
|
-
gasPerByte: (0,
|
3744
|
-
maxMessageDataLength: (0,
|
3745
|
-
chainId: (0,
|
3831
|
+
contractMaxSize: (0, import_math16.bn)(contractParams.contractMaxSize),
|
3832
|
+
maxInputs: (0, import_math16.bn)(txParams.maxInputs),
|
3833
|
+
maxOutputs: (0, import_math16.bn)(txParams.maxOutputs),
|
3834
|
+
maxWitnesses: (0, import_math16.bn)(txParams.maxWitnesses),
|
3835
|
+
maxGasPerTx: (0, import_math16.bn)(txParams.maxGasPerTx),
|
3836
|
+
maxScriptLength: (0, import_math16.bn)(scriptParams.maxScriptLength),
|
3837
|
+
maxScriptDataLength: (0, import_math16.bn)(scriptParams.maxScriptDataLength),
|
3838
|
+
maxStorageSlots: (0, import_math16.bn)(contractParams.maxStorageSlots),
|
3839
|
+
maxPredicateLength: (0, import_math16.bn)(predicateParams.maxPredicateLength),
|
3840
|
+
maxPredicateDataLength: (0, import_math16.bn)(predicateParams.maxPredicateDataLength),
|
3841
|
+
maxGasPerPredicate: (0, import_math16.bn)(predicateParams.maxGasPerPredicate),
|
3842
|
+
gasPriceFactor: (0, import_math16.bn)(feeParams.gasPriceFactor),
|
3843
|
+
gasPerByte: (0, import_math16.bn)(feeParams.gasPerByte),
|
3844
|
+
maxMessageDataLength: (0, import_math16.bn)(predicateParams.maxMessageDataLength),
|
3845
|
+
chainId: (0, import_math16.bn)(consensusParameters.chainId),
|
3746
3846
|
gasCosts
|
3747
3847
|
},
|
3748
3848
|
gasCosts,
|
3749
3849
|
latestBlock: {
|
3750
3850
|
id: latestBlock.id,
|
3751
|
-
height: (0,
|
3851
|
+
height: (0, import_math16.bn)(latestBlock.height),
|
3752
3852
|
time: latestBlock.header.time,
|
3753
3853
|
transactions: latestBlock.transactions.map((i) => ({
|
3754
3854
|
id: i.id
|
@@ -3842,10 +3942,8 @@ var _Provider = class {
|
|
3842
3942
|
* Returns some helpful parameters related to gas fees.
|
3843
3943
|
*/
|
3844
3944
|
getGasConfig() {
|
3845
|
-
const { minGasPrice } = this.getNode();
|
3846
3945
|
const { maxGasPerTx, maxGasPerPredicate, gasPriceFactor, gasPerByte, gasCosts } = this.getChain().consensusParameters;
|
3847
3946
|
return {
|
3848
|
-
minGasPrice,
|
3849
3947
|
maxGasPerTx,
|
3850
3948
|
maxGasPerPredicate,
|
3851
3949
|
gasPriceFactor,
|
@@ -3933,7 +4031,7 @@ var _Provider = class {
|
|
3933
4031
|
name,
|
3934
4032
|
consensusParameters: { chainId }
|
3935
4033
|
} = await this.getChain();
|
3936
|
-
const network = new
|
4034
|
+
const network = new import_ethers2.Network(name, chainId.toNumber());
|
3937
4035
|
return Promise.resolve(network);
|
3938
4036
|
}
|
3939
4037
|
/**
|
@@ -3943,7 +4041,7 @@ var _Provider = class {
|
|
3943
4041
|
*/
|
3944
4042
|
async getBlockNumber() {
|
3945
4043
|
const { chain } = await this.operations.getChain();
|
3946
|
-
return (0,
|
4044
|
+
return (0, import_math16.bn)(chain.latestBlock.height, 10);
|
3947
4045
|
}
|
3948
4046
|
/**
|
3949
4047
|
* Returns the chain information.
|
@@ -3953,13 +4051,11 @@ var _Provider = class {
|
|
3953
4051
|
async fetchNode() {
|
3954
4052
|
const { nodeInfo } = await this.operations.getNodeInfo();
|
3955
4053
|
const processedNodeInfo = {
|
3956
|
-
maxDepth: (0,
|
3957
|
-
maxTx: (0,
|
3958
|
-
minGasPrice: (0, import_math15.bn)(nodeInfo.minGasPrice),
|
4054
|
+
maxDepth: (0, import_math16.bn)(nodeInfo.maxDepth),
|
4055
|
+
maxTx: (0, import_math16.bn)(nodeInfo.maxTx),
|
3959
4056
|
nodeVersion: nodeInfo.nodeVersion,
|
3960
4057
|
utxoValidation: nodeInfo.utxoValidation,
|
3961
|
-
vmBacktrace: nodeInfo.vmBacktrace
|
3962
|
-
peers: nodeInfo.peers
|
4058
|
+
vmBacktrace: nodeInfo.vmBacktrace
|
3963
4059
|
};
|
3964
4060
|
_Provider.nodeInfoCache[this.url] = processedNodeInfo;
|
3965
4061
|
return processedNodeInfo;
|
@@ -4001,9 +4097,9 @@ var _Provider = class {
|
|
4001
4097
|
if (estimateTxDependencies) {
|
4002
4098
|
await this.estimateTxDependencies(transactionRequest);
|
4003
4099
|
}
|
4004
|
-
const encodedTransaction = (0,
|
4100
|
+
const encodedTransaction = (0, import_utils22.hexlify)(transactionRequest.toTransactionBytes());
|
4005
4101
|
let abis;
|
4006
|
-
if (transactionRequest.type ===
|
4102
|
+
if (transactionRequest.type === import_transactions19.TransactionType.Script) {
|
4007
4103
|
abis = transactionRequest.abis;
|
4008
4104
|
}
|
4009
4105
|
if (awaitExecution) {
|
@@ -4044,15 +4140,14 @@ var _Provider = class {
|
|
4044
4140
|
if (estimateTxDependencies) {
|
4045
4141
|
return this.estimateTxDependencies(transactionRequest);
|
4046
4142
|
}
|
4047
|
-
const encodedTransaction = (0,
|
4048
|
-
const { dryRun:
|
4049
|
-
encodedTransaction,
|
4143
|
+
const encodedTransaction = (0, import_utils22.hexlify)(transactionRequest.toTransactionBytes());
|
4144
|
+
const { dryRun: dryRunStatuses } = await this.operations.dryRun({
|
4145
|
+
encodedTransactions: encodedTransaction,
|
4050
4146
|
utxoValidation: utxoValidation || false
|
4051
4147
|
});
|
4052
|
-
const receipts =
|
4053
|
-
|
4054
|
-
|
4055
|
-
};
|
4148
|
+
const [{ receipts: rawReceipts, status }] = dryRunStatuses;
|
4149
|
+
const receipts = rawReceipts.map(processGqlReceipt);
|
4150
|
+
return { receipts, dryrunStatus: status };
|
4056
4151
|
}
|
4057
4152
|
/**
|
4058
4153
|
* Verifies whether enough gas is available to complete transaction.
|
@@ -4063,13 +4158,13 @@ var _Provider = class {
|
|
4063
4158
|
async estimatePredicates(transactionRequest) {
|
4064
4159
|
const shouldEstimatePredicates = Boolean(
|
4065
4160
|
transactionRequest.inputs.find(
|
4066
|
-
(input) => "predicate" in input && input.predicate && !(0,
|
4161
|
+
(input) => "predicate" in input && input.predicate && !(0, import_utils23.equalBytes)((0, import_utils22.arrayify)(input.predicate), (0, import_utils22.arrayify)("0x")) && new import_math16.BN(input.predicateGasUsed).isZero()
|
4067
4162
|
)
|
4068
4163
|
);
|
4069
4164
|
if (!shouldEstimatePredicates) {
|
4070
4165
|
return transactionRequest;
|
4071
4166
|
}
|
4072
|
-
const encodedTransaction = (0,
|
4167
|
+
const encodedTransaction = (0, import_utils22.hexlify)(transactionRequest.toTransactionBytes());
|
4073
4168
|
const response = await this.operations.estimatePredicates({
|
4074
4169
|
encodedTransaction
|
4075
4170
|
});
|
@@ -4078,7 +4173,7 @@ var _Provider = class {
|
|
4078
4173
|
} = response;
|
4079
4174
|
if (inputs) {
|
4080
4175
|
inputs.forEach((input, index) => {
|
4081
|
-
if ("predicateGasUsed" in input && (0,
|
4176
|
+
if ("predicateGasUsed" in input && (0, import_math16.bn)(input.predicateGasUsed).gt(0)) {
|
4082
4177
|
transactionRequest.inputs[index].predicateGasUsed = input.predicateGasUsed;
|
4083
4178
|
}
|
4084
4179
|
});
|
@@ -4091,31 +4186,31 @@ var _Provider = class {
|
|
4091
4186
|
* If there are missing variable outputs,
|
4092
4187
|
* `addVariableOutputs` is called on the transaction.
|
4093
4188
|
*
|
4094
|
-
* @privateRemarks
|
4095
|
-
* TODO: Investigate support for missing contract IDs
|
4096
|
-
* TODO: Add support for missing output messages
|
4097
4189
|
*
|
4098
4190
|
* @param transactionRequest - The transaction request object.
|
4099
4191
|
* @returns A promise.
|
4100
4192
|
*/
|
4101
4193
|
async estimateTxDependencies(transactionRequest) {
|
4102
|
-
if (transactionRequest.type ===
|
4194
|
+
if (transactionRequest.type === import_transactions19.TransactionType.Create) {
|
4103
4195
|
return {
|
4104
4196
|
receipts: [],
|
4105
4197
|
outputVariables: 0,
|
4106
4198
|
missingContractIds: []
|
4107
4199
|
};
|
4108
4200
|
}
|
4109
|
-
await this.estimatePredicates(transactionRequest);
|
4110
4201
|
let receipts = [];
|
4111
4202
|
const missingContractIds = [];
|
4112
4203
|
let outputVariables = 0;
|
4204
|
+
let dryrunStatus;
|
4113
4205
|
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
4114
|
-
const {
|
4115
|
-
|
4206
|
+
const {
|
4207
|
+
dryRun: [{ receipts: rawReceipts, status }]
|
4208
|
+
} = await this.operations.dryRun({
|
4209
|
+
encodedTransactions: [(0, import_utils22.hexlify)(transactionRequest.toTransactionBytes())],
|
4116
4210
|
utxoValidation: false
|
4117
4211
|
});
|
4118
|
-
receipts =
|
4212
|
+
receipts = rawReceipts.map(processGqlReceipt);
|
4213
|
+
dryrunStatus = status;
|
4119
4214
|
const { missingOutputVariables, missingOutputContractIds } = getReceiptsWithMissingData(receipts);
|
4120
4215
|
const hasMissingOutputs = missingOutputVariables.length !== 0 || missingOutputContractIds.length !== 0;
|
4121
4216
|
if (hasMissingOutputs) {
|
@@ -4125,6 +4220,11 @@ var _Provider = class {
|
|
4125
4220
|
transactionRequest.addContractInputAndOutput(import_address3.Address.fromString(contractId));
|
4126
4221
|
missingContractIds.push(contractId);
|
4127
4222
|
});
|
4223
|
+
const { maxFee } = await this.estimateTxGasAndFee({
|
4224
|
+
transactionRequest,
|
4225
|
+
optimizeGas: false
|
4226
|
+
});
|
4227
|
+
transactionRequest.maxFee = maxFee;
|
4128
4228
|
} else {
|
4129
4229
|
break;
|
4130
4230
|
}
|
@@ -4132,37 +4232,133 @@ var _Provider = class {
|
|
4132
4232
|
return {
|
4133
4233
|
receipts,
|
4134
4234
|
outputVariables,
|
4135
|
-
missingContractIds
|
4235
|
+
missingContractIds,
|
4236
|
+
dryrunStatus
|
4136
4237
|
};
|
4137
4238
|
}
|
4138
4239
|
/**
|
4139
|
-
*
|
4140
|
-
*
|
4141
|
-
*
|
4240
|
+
* Dry runs multiple transactions and checks for missing dependencies in batches.
|
4241
|
+
*
|
4242
|
+
* Transactions are dry run in batches. After each dry run, transactions requiring
|
4243
|
+
* further modifications are identified. The method iteratively updates these transactions
|
4244
|
+
* and performs subsequent dry runs until all dependencies for each transaction are satisfied.
|
4245
|
+
*
|
4246
|
+
* @param transactionRequests - Array of transaction request objects.
|
4247
|
+
* @returns A promise that resolves to an array of results for each transaction.
|
4142
4248
|
*/
|
4143
|
-
|
4144
|
-
const
|
4145
|
-
|
4249
|
+
async estimateMultipleTxDependencies(transactionRequests) {
|
4250
|
+
const results = transactionRequests.map(() => ({
|
4251
|
+
receipts: [],
|
4252
|
+
outputVariables: 0,
|
4253
|
+
missingContractIds: [],
|
4254
|
+
dryrunStatus: void 0
|
4255
|
+
}));
|
4256
|
+
const allRequests = (0, import_ramda3.clone)(transactionRequests);
|
4257
|
+
const serializedTransactionsMap = /* @__PURE__ */ new Map();
|
4258
|
+
allRequests.forEach((req, index) => {
|
4259
|
+
if (req.type === import_transactions19.TransactionType.Script) {
|
4260
|
+
serializedTransactionsMap.set(index, (0, import_utils22.hexlify)(req.toTransactionBytes()));
|
4261
|
+
}
|
4262
|
+
});
|
4263
|
+
let transactionsToProcess = Array.from(serializedTransactionsMap.keys());
|
4264
|
+
let attempt = 0;
|
4265
|
+
while (transactionsToProcess.length > 0 && attempt < MAX_RETRIES) {
|
4266
|
+
const encodedTransactions = transactionsToProcess.map(
|
4267
|
+
(index) => serializedTransactionsMap.get(index)
|
4268
|
+
);
|
4269
|
+
const dryRunResults = await this.operations.dryRun({
|
4270
|
+
encodedTransactions,
|
4271
|
+
utxoValidation: false
|
4272
|
+
});
|
4273
|
+
const nextRoundTransactions = [];
|
4274
|
+
for (let i = 0; i < dryRunResults.dryRun.length; i++) {
|
4275
|
+
const currentResultIndex = transactionsToProcess[i];
|
4276
|
+
const { receipts: rawReceipts, status } = dryRunResults.dryRun[i];
|
4277
|
+
results[currentResultIndex].receipts = rawReceipts.map(processGqlReceipt);
|
4278
|
+
results[currentResultIndex].dryrunStatus = status;
|
4279
|
+
const { missingOutputVariables, missingOutputContractIds } = getReceiptsWithMissingData(
|
4280
|
+
results[currentResultIndex].receipts
|
4281
|
+
);
|
4282
|
+
const hasMissingOutputs = missingOutputVariables.length > 0 || missingOutputContractIds.length > 0;
|
4283
|
+
const requestToProcess = allRequests[currentResultIndex];
|
4284
|
+
if (hasMissingOutputs && requestToProcess?.type === import_transactions19.TransactionType.Script) {
|
4285
|
+
results[currentResultIndex].outputVariables += missingOutputVariables.length;
|
4286
|
+
requestToProcess.addVariableOutputs(missingOutputVariables.length);
|
4287
|
+
missingOutputContractIds.forEach(({ contractId }) => {
|
4288
|
+
requestToProcess.addContractInputAndOutput(import_address3.Address.fromString(contractId));
|
4289
|
+
results[currentResultIndex].missingContractIds.push(contractId);
|
4290
|
+
});
|
4291
|
+
const { maxFee } = await this.estimateTxGasAndFee({
|
4292
|
+
transactionRequest: requestToProcess,
|
4293
|
+
optimizeGas: false
|
4294
|
+
});
|
4295
|
+
requestToProcess.maxFee = maxFee;
|
4296
|
+
serializedTransactionsMap.set(
|
4297
|
+
currentResultIndex,
|
4298
|
+
(0, import_utils22.hexlify)(requestToProcess.toTransactionBytes())
|
4299
|
+
);
|
4300
|
+
nextRoundTransactions.push(currentResultIndex);
|
4301
|
+
allRequests[currentResultIndex] = requestToProcess;
|
4302
|
+
}
|
4303
|
+
}
|
4304
|
+
transactionsToProcess = nextRoundTransactions;
|
4305
|
+
attempt += 1;
|
4306
|
+
}
|
4307
|
+
return results;
|
4308
|
+
}
|
4309
|
+
async dryRunMultipleTransactions(transactionRequests, { utxoValidation, estimateTxDependencies = true } = {}) {
|
4310
|
+
if (estimateTxDependencies) {
|
4311
|
+
return this.estimateMultipleTxDependencies(transactionRequests);
|
4312
|
+
}
|
4313
|
+
const encodedTransactions = transactionRequests.map((tx) => (0, import_utils22.hexlify)(tx.toTransactionBytes()));
|
4314
|
+
const { dryRun: dryRunStatuses } = await this.operations.dryRun({
|
4315
|
+
encodedTransactions,
|
4316
|
+
utxoValidation: utxoValidation || false
|
4317
|
+
});
|
4318
|
+
const results = dryRunStatuses.map(({ receipts: rawReceipts, status }) => {
|
4319
|
+
const receipts = rawReceipts.map(processGqlReceipt);
|
4320
|
+
return { receipts, dryrunStatus: status };
|
4321
|
+
});
|
4322
|
+
return results;
|
4323
|
+
}
|
4324
|
+
async estimateTxGasAndFee(params) {
|
4325
|
+
const { transactionRequest, optimizeGas = true } = params;
|
4326
|
+
let { gasPrice } = params;
|
4146
4327
|
const chainInfo = this.getChain();
|
4147
|
-
const
|
4148
|
-
transactionRequest.gasPrice = gasPrice;
|
4328
|
+
const { gasPriceFactor } = this.getGasConfig();
|
4149
4329
|
const minGas = transactionRequest.calculateMinGas(chainInfo);
|
4150
|
-
|
4151
|
-
|
4152
|
-
|
4330
|
+
if (!gasPrice) {
|
4331
|
+
gasPrice = await this.estimateGasPrice(10);
|
4332
|
+
}
|
4333
|
+
const minFee = calculateGasFee({
|
4334
|
+
gasPrice: (0, import_math16.bn)(gasPrice),
|
4335
|
+
gas: minGas,
|
4336
|
+
priceFactor: gasPriceFactor,
|
4337
|
+
tip: transactionRequest.tip
|
4338
|
+
}).add(1);
|
4339
|
+
let gasLimit = (0, import_math16.bn)(0);
|
4340
|
+
if (transactionRequest.type === import_transactions19.TransactionType.Script) {
|
4341
|
+
gasLimit = transactionRequest.gasLimit;
|
4342
|
+
if (!optimizeGas) {
|
4153
4343
|
transactionRequest.gasLimit = minGas;
|
4154
|
-
|
4155
|
-
|
4156
|
-
);
|
4344
|
+
gasLimit = transactionRequest.calculateMaxGas(chainInfo, minGas);
|
4345
|
+
transactionRequest.gasLimit = gasLimit;
|
4157
4346
|
}
|
4158
4347
|
}
|
4159
4348
|
const maxGas = transactionRequest.calculateMaxGas(chainInfo, minGas);
|
4160
|
-
const maxFee =
|
4349
|
+
const maxFee = calculateGasFee({
|
4350
|
+
gasPrice: (0, import_math16.bn)(gasPrice),
|
4351
|
+
gas: maxGas,
|
4352
|
+
priceFactor: gasPriceFactor,
|
4353
|
+
tip: transactionRequest.tip
|
4354
|
+
}).add(1);
|
4161
4355
|
return {
|
4162
4356
|
minGas,
|
4163
4357
|
minFee,
|
4164
4358
|
maxGas,
|
4165
|
-
maxFee
|
4359
|
+
maxFee,
|
4360
|
+
gasPrice,
|
4361
|
+
gasLimit
|
4166
4362
|
};
|
4167
4363
|
}
|
4168
4364
|
/**
|
@@ -4180,15 +4376,17 @@ var _Provider = class {
|
|
4180
4376
|
if (estimateTxDependencies) {
|
4181
4377
|
return this.estimateTxDependencies(transactionRequest);
|
4182
4378
|
}
|
4183
|
-
const
|
4184
|
-
const { dryRun:
|
4185
|
-
|
4379
|
+
const encodedTransactions = [(0, import_utils22.hexlify)(transactionRequest.toTransactionBytes())];
|
4380
|
+
const { dryRun: dryRunStatuses } = await this.operations.dryRun({
|
4381
|
+
encodedTransactions,
|
4186
4382
|
utxoValidation: true
|
4187
4383
|
});
|
4188
|
-
const
|
4189
|
-
|
4190
|
-
receipts
|
4191
|
-
|
4384
|
+
const callResult = dryRunStatuses.map((dryRunStatus) => {
|
4385
|
+
const { id, receipts, status } = dryRunStatus;
|
4386
|
+
const processedReceipts = receipts.map(processGqlReceipt);
|
4387
|
+
return { id, receipts: processedReceipts, status };
|
4388
|
+
});
|
4389
|
+
return { receipts: callResult[0].receipts };
|
4192
4390
|
}
|
4193
4391
|
/**
|
4194
4392
|
* Returns a transaction cost to enable user
|
@@ -4205,77 +4403,80 @@ var _Provider = class {
|
|
4205
4403
|
* @param tolerance - The tolerance to add on top of the gasUsed.
|
4206
4404
|
* @returns A promise that resolves to the transaction cost object.
|
4207
4405
|
*/
|
4208
|
-
async getTransactionCost(transactionRequestLike,
|
4209
|
-
estimateTxDependencies = true,
|
4210
|
-
estimatePredicates = true,
|
4211
|
-
resourcesOwner,
|
4212
|
-
signatureCallback
|
4213
|
-
} = {}) {
|
4406
|
+
async getTransactionCost(transactionRequestLike, { resourcesOwner, signatureCallback, quantitiesToContract = [] } = {}) {
|
4214
4407
|
const txRequestClone = (0, import_ramda3.clone)(transactionRequestify(transactionRequestLike));
|
4215
|
-
const
|
4216
|
-
const setGasPrice = (0, import_math15.max)(txRequestClone.gasPrice, minGasPrice);
|
4217
|
-
const isScriptTransaction = txRequestClone.type === import_transactions18.TransactionType.Script;
|
4408
|
+
const isScriptTransaction = txRequestClone.type === import_transactions19.TransactionType.Script;
|
4218
4409
|
const coinOutputsQuantities = txRequestClone.getCoinOutputsQuantities();
|
4219
|
-
const allQuantities = mergeQuantities(coinOutputsQuantities,
|
4410
|
+
const allQuantities = mergeQuantities(coinOutputsQuantities, quantitiesToContract);
|
4220
4411
|
txRequestClone.fundWithFakeUtxos(allQuantities, resourcesOwner?.address);
|
4412
|
+
txRequestClone.maxFee = (0, import_math16.bn)(0);
|
4221
4413
|
if (isScriptTransaction) {
|
4222
|
-
txRequestClone.gasLimit = (0,
|
4414
|
+
txRequestClone.gasLimit = (0, import_math16.bn)(0);
|
4223
4415
|
}
|
4224
|
-
if (
|
4225
|
-
|
4226
|
-
resourcesOwner.populateTransactionPredicateData(txRequestClone);
|
4227
|
-
}
|
4228
|
-
await this.estimatePredicates(txRequestClone);
|
4416
|
+
if (resourcesOwner && "populateTransactionPredicateData" in resourcesOwner) {
|
4417
|
+
resourcesOwner.populateTransactionPredicateData(txRequestClone);
|
4229
4418
|
}
|
4419
|
+
const signedRequest = (0, import_ramda3.clone)(txRequestClone);
|
4420
|
+
let addedSignatures = 0;
|
4230
4421
|
if (signatureCallback && isScriptTransaction) {
|
4231
|
-
|
4232
|
-
|
4233
|
-
|
4234
|
-
|
4422
|
+
const lengthBefore = signedRequest.witnesses.length;
|
4423
|
+
await signatureCallback(signedRequest);
|
4424
|
+
addedSignatures = signedRequest.witnesses.length - lengthBefore;
|
4425
|
+
}
|
4426
|
+
await this.estimatePredicates(signedRequest);
|
4427
|
+
let { maxFee, maxGas, minFee, minGas, gasPrice, gasLimit } = await this.estimateTxGasAndFee({
|
4428
|
+
transactionRequest: signedRequest,
|
4429
|
+
optimizeGas: false
|
4235
4430
|
});
|
4431
|
+
txRequestClone.maxFee = maxFee;
|
4236
4432
|
let receipts = [];
|
4237
4433
|
let missingContractIds = [];
|
4238
4434
|
let outputVariables = 0;
|
4239
|
-
let gasUsed = (0,
|
4240
|
-
|
4241
|
-
|
4435
|
+
let gasUsed = (0, import_math16.bn)(0);
|
4436
|
+
txRequestClone.updatePredicateGasUsed(signedRequest.inputs);
|
4437
|
+
if (isScriptTransaction) {
|
4438
|
+
if (signatureCallback) {
|
4439
|
+
await signatureCallback(txRequestClone);
|
4440
|
+
}
|
4441
|
+
txRequestClone.gasLimit = gasLimit;
|
4242
4442
|
const result = await this.estimateTxDependencies(txRequestClone);
|
4243
4443
|
receipts = result.receipts;
|
4244
4444
|
outputVariables = result.outputVariables;
|
4245
4445
|
missingContractIds = result.missingContractIds;
|
4246
|
-
gasUsed =
|
4446
|
+
gasUsed = getGasUsedFromReceipts(receipts);
|
4247
4447
|
txRequestClone.gasLimit = gasUsed;
|
4248
|
-
|
4249
|
-
|
4250
|
-
|
4448
|
+
({ maxFee, maxGas, minFee, minGas, gasPrice } = await this.estimateTxGasAndFee({
|
4449
|
+
transactionRequest: txRequestClone,
|
4450
|
+
gasPrice
|
4251
4451
|
}));
|
4252
4452
|
}
|
4253
4453
|
return {
|
4254
4454
|
requiredQuantities: allQuantities,
|
4255
4455
|
receipts,
|
4256
4456
|
gasUsed,
|
4257
|
-
|
4258
|
-
gasPrice: setGasPrice,
|
4457
|
+
gasPrice,
|
4259
4458
|
minGas,
|
4260
4459
|
maxGas,
|
4261
4460
|
minFee,
|
4262
4461
|
maxFee,
|
4263
|
-
estimatedInputs: txRequestClone.inputs,
|
4264
4462
|
outputVariables,
|
4265
|
-
missingContractIds
|
4463
|
+
missingContractIds,
|
4464
|
+
addedSignatures,
|
4465
|
+
estimatedPredicates: txRequestClone.inputs
|
4266
4466
|
};
|
4267
4467
|
}
|
4268
|
-
async getResourcesForTransaction(owner, transactionRequestLike,
|
4468
|
+
async getResourcesForTransaction(owner, transactionRequestLike, quantitiesToContract = []) {
|
4269
4469
|
const ownerAddress = import_address3.Address.fromAddressOrString(owner);
|
4270
4470
|
const transactionRequest = transactionRequestify((0, import_ramda3.clone)(transactionRequestLike));
|
4271
|
-
const transactionCost = await this.getTransactionCost(transactionRequest,
|
4471
|
+
const transactionCost = await this.getTransactionCost(transactionRequest, {
|
4472
|
+
quantitiesToContract
|
4473
|
+
});
|
4272
4474
|
transactionRequest.addResources(
|
4273
4475
|
await this.getResourcesToSpend(ownerAddress, transactionCost.requiredQuantities)
|
4274
4476
|
);
|
4275
|
-
const { requiredQuantities, ...txCost } = await this.getTransactionCost(
|
4276
|
-
|
4277
|
-
|
4278
|
-
);
|
4477
|
+
const { requiredQuantities, ...txCost } = await this.getTransactionCost(transactionRequest, {
|
4478
|
+
quantitiesToContract
|
4479
|
+
});
|
4279
4480
|
const resources = await this.getResourcesToSpend(ownerAddress, requiredQuantities);
|
4280
4481
|
return {
|
4281
4482
|
resources,
|
@@ -4291,17 +4492,16 @@ var _Provider = class {
|
|
4291
4492
|
const result = await this.operations.getCoins({
|
4292
4493
|
first: 10,
|
4293
4494
|
...paginationArgs,
|
4294
|
-
filter: { owner: ownerAddress.toB256(), assetId: assetId && (0,
|
4495
|
+
filter: { owner: ownerAddress.toB256(), assetId: assetId && (0, import_utils22.hexlify)(assetId) }
|
4295
4496
|
});
|
4296
4497
|
const coins = result.coins.edges.map((edge) => edge.node);
|
4297
4498
|
return coins.map((coin) => ({
|
4298
4499
|
id: coin.utxoId,
|
4299
4500
|
assetId: coin.assetId,
|
4300
|
-
amount: (0,
|
4501
|
+
amount: (0, import_math16.bn)(coin.amount),
|
4301
4502
|
owner: import_address3.Address.fromAddressOrString(coin.owner),
|
4302
|
-
|
4303
|
-
|
4304
|
-
txCreatedIdx: (0, import_math15.bn)(coin.txCreatedIdx)
|
4503
|
+
blockCreated: (0, import_math16.bn)(coin.blockCreated),
|
4504
|
+
txCreatedIdx: (0, import_math16.bn)(coin.txCreatedIdx)
|
4305
4505
|
}));
|
4306
4506
|
}
|
4307
4507
|
/**
|
@@ -4315,19 +4515,19 @@ var _Provider = class {
|
|
4315
4515
|
async getResourcesToSpend(owner, quantities, excludedIds) {
|
4316
4516
|
const ownerAddress = import_address3.Address.fromAddressOrString(owner);
|
4317
4517
|
const excludeInput = {
|
4318
|
-
messages: excludedIds?.messages?.map((nonce) => (0,
|
4319
|
-
utxos: excludedIds?.utxos?.map((id) => (0,
|
4518
|
+
messages: excludedIds?.messages?.map((nonce) => (0, import_utils22.hexlify)(nonce)) || [],
|
4519
|
+
utxos: excludedIds?.utxos?.map((id) => (0, import_utils22.hexlify)(id)) || []
|
4320
4520
|
};
|
4321
4521
|
if (this.cache) {
|
4322
4522
|
const uniqueUtxos = new Set(
|
4323
|
-
excludeInput.utxos.concat(this.cache?.getActiveData().map((id) => (0,
|
4523
|
+
excludeInput.utxos.concat(this.cache?.getActiveData().map((id) => (0, import_utils22.hexlify)(id)))
|
4324
4524
|
);
|
4325
4525
|
excludeInput.utxos = Array.from(uniqueUtxos);
|
4326
4526
|
}
|
4327
4527
|
const coinsQuery = {
|
4328
4528
|
owner: ownerAddress.toB256(),
|
4329
4529
|
queryPerAsset: quantities.map(coinQuantityfy).map(({ assetId, amount, max: maxPerAsset }) => ({
|
4330
|
-
assetId: (0,
|
4530
|
+
assetId: (0, import_utils22.hexlify)(assetId),
|
4331
4531
|
amount: amount.toString(10),
|
4332
4532
|
max: maxPerAsset ? maxPerAsset.toString(10) : void 0
|
4333
4533
|
})),
|
@@ -4338,9 +4538,9 @@ var _Provider = class {
|
|
4338
4538
|
switch (coin.__typename) {
|
4339
4539
|
case "MessageCoin":
|
4340
4540
|
return {
|
4341
|
-
amount: (0,
|
4541
|
+
amount: (0, import_math16.bn)(coin.amount),
|
4342
4542
|
assetId: coin.assetId,
|
4343
|
-
daHeight: (0,
|
4543
|
+
daHeight: (0, import_math16.bn)(coin.daHeight),
|
4344
4544
|
sender: import_address3.Address.fromAddressOrString(coin.sender),
|
4345
4545
|
recipient: import_address3.Address.fromAddressOrString(coin.recipient),
|
4346
4546
|
nonce: coin.nonce
|
@@ -4348,12 +4548,11 @@ var _Provider = class {
|
|
4348
4548
|
case "Coin":
|
4349
4549
|
return {
|
4350
4550
|
id: coin.utxoId,
|
4351
|
-
amount: (0,
|
4551
|
+
amount: (0, import_math16.bn)(coin.amount),
|
4352
4552
|
assetId: coin.assetId,
|
4353
4553
|
owner: import_address3.Address.fromAddressOrString(coin.owner),
|
4354
|
-
|
4355
|
-
|
4356
|
-
txCreatedIdx: (0, import_math15.bn)(coin.txCreatedIdx)
|
4554
|
+
blockCreated: (0, import_math16.bn)(coin.blockCreated),
|
4555
|
+
txCreatedIdx: (0, import_math16.bn)(coin.txCreatedIdx)
|
4357
4556
|
};
|
4358
4557
|
default:
|
4359
4558
|
return null;
|
@@ -4370,13 +4569,13 @@ var _Provider = class {
|
|
4370
4569
|
async getBlock(idOrHeight) {
|
4371
4570
|
let variables;
|
4372
4571
|
if (typeof idOrHeight === "number") {
|
4373
|
-
variables = { height: (0,
|
4572
|
+
variables = { height: (0, import_math16.bn)(idOrHeight).toString(10) };
|
4374
4573
|
} else if (idOrHeight === "latest") {
|
4375
4574
|
variables = { height: (await this.getBlockNumber()).toString(10) };
|
4376
4575
|
} else if (idOrHeight.length === 66) {
|
4377
4576
|
variables = { blockId: idOrHeight };
|
4378
4577
|
} else {
|
4379
|
-
variables = { blockId: (0,
|
4578
|
+
variables = { blockId: (0, import_math16.bn)(idOrHeight).toString(10) };
|
4380
4579
|
}
|
4381
4580
|
const { block } = await this.operations.getBlock(variables);
|
4382
4581
|
if (!block) {
|
@@ -4384,7 +4583,7 @@ var _Provider = class {
|
|
4384
4583
|
}
|
4385
4584
|
return {
|
4386
4585
|
id: block.id,
|
4387
|
-
height: (0,
|
4586
|
+
height: (0, import_math16.bn)(block.height),
|
4388
4587
|
time: block.header.time,
|
4389
4588
|
transactionIds: block.transactions.map((tx) => tx.id)
|
4390
4589
|
};
|
@@ -4399,7 +4598,7 @@ var _Provider = class {
|
|
4399
4598
|
const { blocks: fetchedData } = await this.operations.getBlocks(params);
|
4400
4599
|
const blocks = fetchedData.edges.map(({ node: block }) => ({
|
4401
4600
|
id: block.id,
|
4402
|
-
height: (0,
|
4601
|
+
height: (0, import_math16.bn)(block.height),
|
4403
4602
|
time: block.header.time,
|
4404
4603
|
transactionIds: block.transactions.map((tx) => tx.id)
|
4405
4604
|
}));
|
@@ -4414,7 +4613,7 @@ var _Provider = class {
|
|
4414
4613
|
async getBlockWithTransactions(idOrHeight) {
|
4415
4614
|
let variables;
|
4416
4615
|
if (typeof idOrHeight === "number") {
|
4417
|
-
variables = { blockHeight: (0,
|
4616
|
+
variables = { blockHeight: (0, import_math16.bn)(idOrHeight).toString(10) };
|
4418
4617
|
} else if (idOrHeight === "latest") {
|
4419
4618
|
variables = { blockHeight: (await this.getBlockNumber()).toString() };
|
4420
4619
|
} else {
|
@@ -4426,11 +4625,11 @@ var _Provider = class {
|
|
4426
4625
|
}
|
4427
4626
|
return {
|
4428
4627
|
id: block.id,
|
4429
|
-
height: (0,
|
4628
|
+
height: (0, import_math16.bn)(block.height, 10),
|
4430
4629
|
time: block.header.time,
|
4431
4630
|
transactionIds: block.transactions.map((tx) => tx.id),
|
4432
4631
|
transactions: block.transactions.map(
|
4433
|
-
(tx) => new
|
4632
|
+
(tx) => new import_transactions19.TransactionCoder().decode((0, import_utils22.arrayify)(tx.rawPayload), 0)?.[0]
|
4434
4633
|
)
|
4435
4634
|
};
|
4436
4635
|
}
|
@@ -4445,8 +4644,8 @@ var _Provider = class {
|
|
4445
4644
|
if (!transaction) {
|
4446
4645
|
return null;
|
4447
4646
|
}
|
4448
|
-
return new
|
4449
|
-
(0,
|
4647
|
+
return new import_transactions19.TransactionCoder().decode(
|
4648
|
+
(0, import_utils22.arrayify)(transaction.rawPayload),
|
4450
4649
|
0
|
4451
4650
|
)?.[0];
|
4452
4651
|
}
|
@@ -4473,9 +4672,9 @@ var _Provider = class {
|
|
4473
4672
|
async getContractBalance(contractId, assetId) {
|
4474
4673
|
const { contractBalance } = await this.operations.getContractBalance({
|
4475
4674
|
contract: import_address3.Address.fromAddressOrString(contractId).toB256(),
|
4476
|
-
asset: (0,
|
4675
|
+
asset: (0, import_utils22.hexlify)(assetId)
|
4477
4676
|
});
|
4478
|
-
return (0,
|
4677
|
+
return (0, import_math16.bn)(contractBalance.amount, 10);
|
4479
4678
|
}
|
4480
4679
|
/**
|
4481
4680
|
* Returns the balance for the given owner for the given asset ID.
|
@@ -4487,9 +4686,9 @@ var _Provider = class {
|
|
4487
4686
|
async getBalance(owner, assetId) {
|
4488
4687
|
const { balance } = await this.operations.getBalance({
|
4489
4688
|
owner: import_address3.Address.fromAddressOrString(owner).toB256(),
|
4490
|
-
assetId: (0,
|
4689
|
+
assetId: (0, import_utils22.hexlify)(assetId)
|
4491
4690
|
});
|
4492
|
-
return (0,
|
4691
|
+
return (0, import_math16.bn)(balance.amount, 10);
|
4493
4692
|
}
|
4494
4693
|
/**
|
4495
4694
|
* Returns balances for the given owner.
|
@@ -4507,7 +4706,7 @@ var _Provider = class {
|
|
4507
4706
|
const balances = result.balances.edges.map((edge) => edge.node);
|
4508
4707
|
return balances.map((balance) => ({
|
4509
4708
|
assetId: balance.assetId,
|
4510
|
-
amount: (0,
|
4709
|
+
amount: (0, import_math16.bn)(balance.amount)
|
4511
4710
|
}));
|
4512
4711
|
}
|
4513
4712
|
/**
|
@@ -4525,19 +4724,19 @@ var _Provider = class {
|
|
4525
4724
|
});
|
4526
4725
|
const messages = result.messages.edges.map((edge) => edge.node);
|
4527
4726
|
return messages.map((message) => ({
|
4528
|
-
messageId:
|
4727
|
+
messageId: import_transactions19.InputMessageCoder.getMessageId({
|
4529
4728
|
sender: message.sender,
|
4530
4729
|
recipient: message.recipient,
|
4531
4730
|
nonce: message.nonce,
|
4532
|
-
amount: (0,
|
4731
|
+
amount: (0, import_math16.bn)(message.amount),
|
4533
4732
|
data: message.data
|
4534
4733
|
}),
|
4535
4734
|
sender: import_address3.Address.fromAddressOrString(message.sender),
|
4536
4735
|
recipient: import_address3.Address.fromAddressOrString(message.recipient),
|
4537
4736
|
nonce: message.nonce,
|
4538
|
-
amount: (0,
|
4539
|
-
data:
|
4540
|
-
daHeight: (0,
|
4737
|
+
amount: (0, import_math16.bn)(message.amount),
|
4738
|
+
data: import_transactions19.InputMessageCoder.decodeData(message.data),
|
4739
|
+
daHeight: (0, import_math16.bn)(message.daHeight)
|
4541
4740
|
}));
|
4542
4741
|
}
|
4543
4742
|
/**
|
@@ -4590,44 +4789,52 @@ var _Provider = class {
|
|
4590
4789
|
} = result.messageProof;
|
4591
4790
|
return {
|
4592
4791
|
messageProof: {
|
4593
|
-
proofIndex: (0,
|
4792
|
+
proofIndex: (0, import_math16.bn)(messageProof.proofIndex),
|
4594
4793
|
proofSet: messageProof.proofSet
|
4595
4794
|
},
|
4596
4795
|
blockProof: {
|
4597
|
-
proofIndex: (0,
|
4796
|
+
proofIndex: (0, import_math16.bn)(blockProof.proofIndex),
|
4598
4797
|
proofSet: blockProof.proofSet
|
4599
4798
|
},
|
4600
4799
|
messageBlockHeader: {
|
4601
4800
|
id: messageBlockHeader.id,
|
4602
|
-
daHeight: (0,
|
4603
|
-
transactionsCount: (0,
|
4801
|
+
daHeight: (0, import_math16.bn)(messageBlockHeader.daHeight),
|
4802
|
+
transactionsCount: (0, import_math16.bn)(messageBlockHeader.transactionsCount),
|
4604
4803
|
transactionsRoot: messageBlockHeader.transactionsRoot,
|
4605
|
-
height: (0,
|
4804
|
+
height: (0, import_math16.bn)(messageBlockHeader.height),
|
4606
4805
|
prevRoot: messageBlockHeader.prevRoot,
|
4607
4806
|
time: messageBlockHeader.time,
|
4608
4807
|
applicationHash: messageBlockHeader.applicationHash,
|
4609
|
-
|
4610
|
-
messageReceiptCount: (0, import_math15.bn)(messageBlockHeader.messageReceiptCount)
|
4808
|
+
messageReceiptCount: (0, import_math16.bn)(messageBlockHeader.messageReceiptCount)
|
4611
4809
|
},
|
4612
4810
|
commitBlockHeader: {
|
4613
4811
|
id: commitBlockHeader.id,
|
4614
|
-
daHeight: (0,
|
4615
|
-
transactionsCount: (0,
|
4812
|
+
daHeight: (0, import_math16.bn)(commitBlockHeader.daHeight),
|
4813
|
+
transactionsCount: (0, import_math16.bn)(commitBlockHeader.transactionsCount),
|
4616
4814
|
transactionsRoot: commitBlockHeader.transactionsRoot,
|
4617
|
-
height: (0,
|
4815
|
+
height: (0, import_math16.bn)(commitBlockHeader.height),
|
4618
4816
|
prevRoot: commitBlockHeader.prevRoot,
|
4619
4817
|
time: commitBlockHeader.time,
|
4620
4818
|
applicationHash: commitBlockHeader.applicationHash,
|
4621
|
-
|
4622
|
-
messageReceiptCount: (0, import_math15.bn)(commitBlockHeader.messageReceiptCount)
|
4819
|
+
messageReceiptCount: (0, import_math16.bn)(commitBlockHeader.messageReceiptCount)
|
4623
4820
|
},
|
4624
4821
|
sender: import_address3.Address.fromAddressOrString(sender),
|
4625
4822
|
recipient: import_address3.Address.fromAddressOrString(recipient),
|
4626
4823
|
nonce,
|
4627
|
-
amount: (0,
|
4824
|
+
amount: (0, import_math16.bn)(amount),
|
4628
4825
|
data
|
4629
4826
|
};
|
4630
4827
|
}
|
4828
|
+
async getLatestGasPrice() {
|
4829
|
+
const { latestGasPrice } = await this.operations.getLatestGasPrice();
|
4830
|
+
return (0, import_math16.bn)(latestGasPrice.gasPrice);
|
4831
|
+
}
|
4832
|
+
async estimateGasPrice(blockHorizon) {
|
4833
|
+
const { estimateGasPrice } = await this.operations.estimateGasPrice({
|
4834
|
+
blockHorizon: String(blockHorizon)
|
4835
|
+
});
|
4836
|
+
return (0, import_math16.bn)(estimateGasPrice.gasPrice);
|
4837
|
+
}
|
4631
4838
|
/**
|
4632
4839
|
* Returns Message Proof for given transaction id and the message id from MessageOut receipt.
|
4633
4840
|
*
|
@@ -4647,10 +4854,10 @@ var _Provider = class {
|
|
4647
4854
|
*/
|
4648
4855
|
async produceBlocks(amount, startTime) {
|
4649
4856
|
const { produceBlocks: latestBlockHeight } = await this.operations.produceBlocks({
|
4650
|
-
blocksToProduce: (0,
|
4651
|
-
startTimestamp: startTime ?
|
4857
|
+
blocksToProduce: (0, import_math16.bn)(amount).toString(10),
|
4858
|
+
startTimestamp: startTime ? import_utils22.DateTime.fromUnixMilliseconds(startTime).toTai64() : void 0
|
4652
4859
|
});
|
4653
|
-
return (0,
|
4860
|
+
return (0, import_math16.bn)(latestBlockHeight);
|
4654
4861
|
}
|
4655
4862
|
// eslint-disable-next-line @typescript-eslint/require-await
|
4656
4863
|
async getTransactionResponse(transactionId) {
|
@@ -4664,7 +4871,7 @@ cacheInputs_fn = function(inputs) {
|
|
4664
4871
|
return;
|
4665
4872
|
}
|
4666
4873
|
inputs.forEach((input) => {
|
4667
|
-
if (input.type ===
|
4874
|
+
if (input.type === import_transactions19.InputType.Coin) {
|
4668
4875
|
this.cache?.set(input.id);
|
4669
4876
|
}
|
4670
4877
|
});
|
@@ -4674,9 +4881,9 @@ __publicField(Provider, "nodeInfoCache", {});
|
|
4674
4881
|
|
4675
4882
|
// src/providers/transaction-summary/get-transaction-summary.ts
|
4676
4883
|
var import_errors15 = require("@fuel-ts/errors");
|
4677
|
-
var
|
4678
|
-
var
|
4679
|
-
var
|
4884
|
+
var import_math17 = require("@fuel-ts/math");
|
4885
|
+
var import_transactions20 = require("@fuel-ts/transactions");
|
4886
|
+
var import_utils25 = require("@fuel-ts/utils");
|
4680
4887
|
async function getTransactionSummary(params) {
|
4681
4888
|
const { id, provider, abiMap } = params;
|
4682
4889
|
const { transaction: gqlTransaction } = await provider.operations.getTransactionWithReceipts({
|
@@ -4688,25 +4895,32 @@ async function getTransactionSummary(params) {
|
|
4688
4895
|
`Transaction not found for given id: ${id}.`
|
4689
4896
|
);
|
4690
4897
|
}
|
4691
|
-
const [decodedTransaction] = new
|
4692
|
-
(0,
|
4898
|
+
const [decodedTransaction] = new import_transactions20.TransactionCoder().decode(
|
4899
|
+
(0, import_utils25.arrayify)(gqlTransaction.rawPayload),
|
4693
4900
|
0
|
4694
4901
|
);
|
4695
|
-
|
4902
|
+
let txReceipts = [];
|
4903
|
+
if (gqlTransaction?.status && "receipts" in gqlTransaction.status) {
|
4904
|
+
txReceipts = gqlTransaction.status.receipts;
|
4905
|
+
}
|
4906
|
+
const receipts = txReceipts.map(processGqlReceipt);
|
4696
4907
|
const {
|
4697
|
-
consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts }
|
4908
|
+
consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts, maxGasPerTx }
|
4698
4909
|
} = provider.getChain();
|
4910
|
+
const gasPrice = await provider.getLatestGasPrice();
|
4699
4911
|
const transactionInfo = assembleTransactionSummary({
|
4700
4912
|
id: gqlTransaction.id,
|
4701
4913
|
receipts,
|
4702
4914
|
transaction: decodedTransaction,
|
4703
|
-
transactionBytes: (0,
|
4915
|
+
transactionBytes: (0, import_utils25.arrayify)(gqlTransaction.rawPayload),
|
4704
4916
|
gqlTransactionStatus: gqlTransaction.status,
|
4705
|
-
gasPerByte: (0,
|
4706
|
-
gasPriceFactor: (0,
|
4917
|
+
gasPerByte: (0, import_math17.bn)(gasPerByte),
|
4918
|
+
gasPriceFactor: (0, import_math17.bn)(gasPriceFactor),
|
4707
4919
|
abiMap,
|
4708
4920
|
maxInputs,
|
4709
|
-
gasCosts
|
4921
|
+
gasCosts,
|
4922
|
+
maxGasPerTx,
|
4923
|
+
gasPrice
|
4710
4924
|
});
|
4711
4925
|
return {
|
4712
4926
|
gqlTransaction,
|
@@ -4716,10 +4930,11 @@ async function getTransactionSummary(params) {
|
|
4716
4930
|
async function getTransactionSummaryFromRequest(params) {
|
4717
4931
|
const { provider, transactionRequest, abiMap } = params;
|
4718
4932
|
const { receipts } = await provider.call(transactionRequest);
|
4719
|
-
const { gasPerByte, gasPriceFactor, gasCosts } = provider.getGasConfig();
|
4933
|
+
const { gasPerByte, gasPriceFactor, gasCosts, maxGasPerTx } = provider.getGasConfig();
|
4720
4934
|
const maxInputs = provider.getChain().consensusParameters.maxInputs;
|
4721
4935
|
const transaction = transactionRequest.toTransaction();
|
4722
4936
|
const transactionBytes = transactionRequest.toTransactionBytes();
|
4937
|
+
const gasPrice = await provider.getLatestGasPrice();
|
4723
4938
|
const transactionSummary = assembleTransactionSummary({
|
4724
4939
|
receipts,
|
4725
4940
|
transaction,
|
@@ -4728,7 +4943,9 @@ async function getTransactionSummaryFromRequest(params) {
|
|
4728
4943
|
gasPerByte,
|
4729
4944
|
gasPriceFactor,
|
4730
4945
|
maxInputs,
|
4731
|
-
gasCosts
|
4946
|
+
gasCosts,
|
4947
|
+
maxGasPerTx,
|
4948
|
+
gasPrice
|
4732
4949
|
});
|
4733
4950
|
return transactionSummary;
|
4734
4951
|
}
|
@@ -4737,24 +4954,31 @@ async function getTransactionsSummaries(params) {
|
|
4737
4954
|
const { transactionsByOwner } = await provider.operations.getTransactionsByOwner(filters);
|
4738
4955
|
const { edges, pageInfo } = transactionsByOwner;
|
4739
4956
|
const {
|
4740
|
-
consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts }
|
4957
|
+
consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts, maxGasPerTx }
|
4741
4958
|
} = provider.getChain();
|
4959
|
+
const gasPrice = await provider.getLatestGasPrice();
|
4742
4960
|
const transactions = edges.map((edge) => {
|
4743
4961
|
const { node: gqlTransaction } = edge;
|
4744
|
-
const { id, rawPayload,
|
4745
|
-
const [decodedTransaction] = new
|
4746
|
-
|
4962
|
+
const { id, rawPayload, status } = gqlTransaction;
|
4963
|
+
const [decodedTransaction] = new import_transactions20.TransactionCoder().decode((0, import_utils25.arrayify)(rawPayload), 0);
|
4964
|
+
let txReceipts = [];
|
4965
|
+
if (gqlTransaction?.status && "receipts" in gqlTransaction.status) {
|
4966
|
+
txReceipts = gqlTransaction.status.receipts;
|
4967
|
+
}
|
4968
|
+
const receipts = txReceipts.map(processGqlReceipt);
|
4747
4969
|
const transactionSummary = assembleTransactionSummary({
|
4748
4970
|
id,
|
4749
4971
|
receipts,
|
4750
4972
|
transaction: decodedTransaction,
|
4751
|
-
transactionBytes: (0,
|
4973
|
+
transactionBytes: (0, import_utils25.arrayify)(rawPayload),
|
4752
4974
|
gqlTransactionStatus: status,
|
4753
4975
|
abiMap,
|
4754
4976
|
gasPerByte,
|
4755
4977
|
gasPriceFactor,
|
4756
4978
|
maxInputs,
|
4757
|
-
gasCosts
|
4979
|
+
gasCosts,
|
4980
|
+
maxGasPerTx,
|
4981
|
+
gasPrice
|
4758
4982
|
});
|
4759
4983
|
const output = {
|
4760
4984
|
gqlTransaction,
|
@@ -4890,18 +5114,18 @@ var assets = [
|
|
4890
5114
|
];
|
4891
5115
|
|
4892
5116
|
// src/utils/formatTransferToContractScriptData.ts
|
4893
|
-
var
|
4894
|
-
var
|
4895
|
-
var
|
5117
|
+
var import_abi_coder4 = require("@fuel-ts/abi-coder");
|
5118
|
+
var import_math18 = require("@fuel-ts/math");
|
5119
|
+
var import_utils26 = require("@fuel-ts/utils");
|
4896
5120
|
var asm = __toESM(require("@fuels/vm-asm"));
|
4897
5121
|
var formatTransferToContractScriptData = (params) => {
|
4898
5122
|
const { assetId, amountToTransfer, hexlifiedContractId } = params;
|
4899
|
-
const numberCoder = new
|
4900
|
-
const encoded = numberCoder.encode(new
|
5123
|
+
const numberCoder = new import_abi_coder4.BigNumberCoder("u64");
|
5124
|
+
const encoded = numberCoder.encode(new import_math18.BN(amountToTransfer).toNumber());
|
4901
5125
|
const scriptData = Uint8Array.from([
|
4902
|
-
...(0,
|
5126
|
+
...(0, import_utils26.arrayify)(hexlifiedContractId),
|
4903
5127
|
...encoded,
|
4904
|
-
...(0,
|
5128
|
+
...(0, import_utils26.arrayify)(assetId)
|
4905
5129
|
]);
|
4906
5130
|
return scriptData;
|
4907
5131
|
};
|
@@ -5086,36 +5310,33 @@ var Account = class extends import_interfaces.AbstractAccount {
|
|
5086
5310
|
* @param fee - The estimated transaction fee.
|
5087
5311
|
* @returns A promise that resolves when the resources are added to the transaction.
|
5088
5312
|
*/
|
5089
|
-
async fund(request,
|
5090
|
-
const
|
5091
|
-
|
5313
|
+
async fund(request, params) {
|
5314
|
+
const { addedSignatures, estimatedPredicates, maxFee: fee, requiredQuantities } = params;
|
5315
|
+
const txRequest = request;
|
5316
|
+
const requiredQuantitiesWithFee = addAmountToCoinQuantities({
|
5317
|
+
amount: (0, import_math19.bn)(fee),
|
5092
5318
|
assetId: import_configs12.BaseAssetId,
|
5093
|
-
coinQuantities
|
5319
|
+
coinQuantities: requiredQuantities
|
5094
5320
|
});
|
5095
5321
|
const quantitiesDict = {};
|
5096
|
-
|
5322
|
+
requiredQuantitiesWithFee.forEach(({ amount, assetId }) => {
|
5097
5323
|
quantitiesDict[assetId] = {
|
5098
5324
|
required: amount,
|
5099
|
-
owned: (0,
|
5325
|
+
owned: (0, import_math19.bn)(0)
|
5100
5326
|
};
|
5101
5327
|
});
|
5102
|
-
|
5103
|
-
const cachedMessages = [];
|
5104
|
-
const owner = this.address.toB256();
|
5105
|
-
request.inputs.forEach((input) => {
|
5328
|
+
txRequest.inputs.forEach((input) => {
|
5106
5329
|
const isResource = "amount" in input;
|
5107
5330
|
if (isResource) {
|
5108
5331
|
const isCoin2 = "owner" in input;
|
5109
5332
|
if (isCoin2) {
|
5110
5333
|
const assetId = String(input.assetId);
|
5111
|
-
if (
|
5112
|
-
const amount = (0,
|
5334
|
+
if (quantitiesDict[assetId]) {
|
5335
|
+
const amount = (0, import_math19.bn)(input.amount);
|
5113
5336
|
quantitiesDict[assetId].owned = quantitiesDict[assetId].owned.add(amount);
|
5114
|
-
cachedUtxos.push(input.id);
|
5115
5337
|
}
|
5116
|
-
} else if (input.
|
5338
|
+
} else if (input.amount && quantitiesDict[import_configs12.BaseAssetId]) {
|
5117
5339
|
quantitiesDict[import_configs12.BaseAssetId].owned = quantitiesDict[import_configs12.BaseAssetId].owned.add(input.amount);
|
5118
|
-
cachedMessages.push(input.nonce);
|
5119
5340
|
}
|
5120
5341
|
}
|
5121
5342
|
});
|
@@ -5130,12 +5351,23 @@ var Account = class extends import_interfaces.AbstractAccount {
|
|
5130
5351
|
});
|
5131
5352
|
const needsToBeFunded = missingQuantities.length;
|
5132
5353
|
if (needsToBeFunded) {
|
5133
|
-
const
|
5134
|
-
|
5135
|
-
|
5136
|
-
|
5137
|
-
|
5354
|
+
const excludedIds = cacheTxInputsFromOwner(txRequest.inputs, this.address.toB256());
|
5355
|
+
const resources = await this.getResourcesToSpend(missingQuantities, excludedIds);
|
5356
|
+
txRequest.addResources(resources);
|
5357
|
+
}
|
5358
|
+
txRequest.shiftPredicateData();
|
5359
|
+
txRequest.updatePredicateGasUsed(estimatedPredicates);
|
5360
|
+
const requestToBeReEstimate = (0, import_ramda4.clone)(txRequest);
|
5361
|
+
if (addedSignatures) {
|
5362
|
+
Array.from({ length: addedSignatures }).forEach(
|
5363
|
+
() => requestToBeReEstimate.addEmptyWitness()
|
5364
|
+
);
|
5138
5365
|
}
|
5366
|
+
const { maxFee } = await this.provider.estimateTxGasAndFee({
|
5367
|
+
transactionRequest: requestToBeReEstimate
|
5368
|
+
});
|
5369
|
+
txRequest.maxFee = maxFee;
|
5370
|
+
return txRequest;
|
5139
5371
|
}
|
5140
5372
|
/**
|
5141
5373
|
* A helper that creates a transfer transaction request and returns it.
|
@@ -5143,28 +5375,25 @@ var Account = class extends import_interfaces.AbstractAccount {
|
|
5143
5375
|
* @param destination - The address of the destination.
|
5144
5376
|
* @param amount - The amount of coins to transfer.
|
5145
5377
|
* @param assetId - The asset ID of the coins to transfer.
|
5146
|
-
* @param txParams - The transaction parameters (gasLimit,
|
5378
|
+
* @param txParams - The transaction parameters (gasLimit, tip, maturity, maxFee, witnessLimit).
|
5147
5379
|
* @returns A promise that resolves to the prepared transaction request.
|
5148
5380
|
*/
|
5149
5381
|
async createTransfer(destination, amount, assetId = import_configs12.BaseAssetId, txParams = {}) {
|
5150
|
-
const
|
5151
|
-
const params = { gasPrice: minGasPrice, ...txParams };
|
5152
|
-
const request = new ScriptTransactionRequest(params);
|
5382
|
+
const request = new ScriptTransactionRequest(txParams);
|
5153
5383
|
request.addCoinOutput(import_address4.Address.fromAddressOrString(destination), amount, assetId);
|
5154
|
-
const
|
5384
|
+
const txCost = await this.provider.getTransactionCost(request, {
|
5155
5385
|
estimateTxDependencies: true,
|
5156
5386
|
resourcesOwner: this
|
5157
5387
|
});
|
5158
|
-
|
5159
|
-
|
5160
|
-
|
5161
|
-
|
5162
|
-
|
5163
|
-
|
5164
|
-
|
5165
|
-
|
5166
|
-
await this.fund(request,
|
5167
|
-
request.updatePredicateInputs(estimatedInputs);
|
5388
|
+
if ("gasLimit" in txParams) {
|
5389
|
+
this.validateGas({
|
5390
|
+
gasUsed: txCost.gasUsed,
|
5391
|
+
gasLimit: request.gasLimit
|
5392
|
+
});
|
5393
|
+
}
|
5394
|
+
request.gasLimit = txCost.gasUsed;
|
5395
|
+
request.maxFee = txCost.maxFee;
|
5396
|
+
await this.fund(request, txCost);
|
5168
5397
|
return request;
|
5169
5398
|
}
|
5170
5399
|
/**
|
@@ -5177,7 +5406,7 @@ var Account = class extends import_interfaces.AbstractAccount {
|
|
5177
5406
|
* @returns A promise that resolves to the transaction response.
|
5178
5407
|
*/
|
5179
5408
|
async transfer(destination, amount, assetId = import_configs12.BaseAssetId, txParams = {}) {
|
5180
|
-
if ((0,
|
5409
|
+
if ((0, import_math19.bn)(amount).lte(0)) {
|
5181
5410
|
throw new import_errors16.FuelError(
|
5182
5411
|
import_errors16.ErrorCode.INVALID_TRANSFER_AMOUNT,
|
5183
5412
|
"Transfer amount must be a positive number."
|
@@ -5196,38 +5425,37 @@ var Account = class extends import_interfaces.AbstractAccount {
|
|
5196
5425
|
* @returns A promise that resolves to the transaction response.
|
5197
5426
|
*/
|
5198
5427
|
async transferToContract(contractId, amount, assetId = import_configs12.BaseAssetId, txParams = {}) {
|
5199
|
-
if ((0,
|
5428
|
+
if ((0, import_math19.bn)(amount).lte(0)) {
|
5200
5429
|
throw new import_errors16.FuelError(
|
5201
5430
|
import_errors16.ErrorCode.INVALID_TRANSFER_AMOUNT,
|
5202
5431
|
"Transfer amount must be a positive number."
|
5203
5432
|
);
|
5204
5433
|
}
|
5205
5434
|
const contractAddress = import_address4.Address.fromAddressOrString(contractId);
|
5206
|
-
const { minGasPrice } = this.provider.getGasConfig();
|
5207
|
-
const params = { gasPrice: minGasPrice, ...txParams };
|
5208
5435
|
const { script, scriptData } = await assembleTransferToContractScript({
|
5209
5436
|
hexlifiedContractId: contractAddress.toB256(),
|
5210
|
-
amountToTransfer: (0,
|
5437
|
+
amountToTransfer: (0, import_math19.bn)(amount),
|
5211
5438
|
assetId
|
5212
5439
|
});
|
5213
5440
|
const request = new ScriptTransactionRequest({
|
5214
|
-
...
|
5441
|
+
...txParams,
|
5215
5442
|
script,
|
5216
5443
|
scriptData
|
5217
5444
|
});
|
5218
5445
|
request.addContractInputAndOutput(contractAddress);
|
5219
|
-
const
|
5220
|
-
|
5221
|
-
[{ amount: (0,
|
5222
|
-
);
|
5223
|
-
request.gasLimit = (0, import_math18.bn)(params.gasLimit ?? gasUsed);
|
5224
|
-
this.validateGas({
|
5225
|
-
gasUsed,
|
5226
|
-
gasPrice: request.gasPrice,
|
5227
|
-
gasLimit: request.gasLimit,
|
5228
|
-
minGasPrice
|
5446
|
+
const txCost = await this.provider.getTransactionCost(request, {
|
5447
|
+
resourcesOwner: this,
|
5448
|
+
quantitiesToContract: [{ amount: (0, import_math19.bn)(amount), assetId: String(assetId) }]
|
5229
5449
|
});
|
5230
|
-
|
5450
|
+
if (txParams.gasLimit) {
|
5451
|
+
this.validateGas({
|
5452
|
+
gasUsed: txCost.gasUsed,
|
5453
|
+
gasLimit: request.gasLimit
|
5454
|
+
});
|
5455
|
+
}
|
5456
|
+
request.gasLimit = txCost.gasUsed;
|
5457
|
+
request.maxFee = txCost.maxFee;
|
5458
|
+
await this.fund(request, txCost);
|
5231
5459
|
return this.sendTransaction(request);
|
5232
5460
|
}
|
5233
5461
|
/**
|
@@ -5239,34 +5467,31 @@ var Account = class extends import_interfaces.AbstractAccount {
|
|
5239
5467
|
* @returns A promise that resolves to the transaction response.
|
5240
5468
|
*/
|
5241
5469
|
async withdrawToBaseLayer(recipient, amount, txParams = {}) {
|
5242
|
-
const { minGasPrice } = this.provider.getGasConfig();
|
5243
5470
|
const recipientAddress = import_address4.Address.fromAddressOrString(recipient);
|
5244
|
-
const recipientDataArray = (0,
|
5471
|
+
const recipientDataArray = (0, import_utils27.arrayify)(
|
5245
5472
|
"0x".concat(recipientAddress.toHexString().substring(2).padStart(64, "0"))
|
5246
5473
|
);
|
5247
|
-
const amountDataArray = (0,
|
5248
|
-
"0x".concat((0,
|
5474
|
+
const amountDataArray = (0, import_utils27.arrayify)(
|
5475
|
+
"0x".concat((0, import_math19.bn)(amount).toHex().substring(2).padStart(16, "0"))
|
5249
5476
|
);
|
5250
5477
|
const script = new Uint8Array([
|
5251
|
-
...(0,
|
5478
|
+
...(0, import_utils27.arrayify)(withdrawScript.bytes),
|
5252
5479
|
...recipientDataArray,
|
5253
5480
|
...amountDataArray
|
5254
5481
|
]);
|
5255
|
-
const params = { script,
|
5482
|
+
const params = { script, ...txParams };
|
5256
5483
|
const request = new ScriptTransactionRequest(params);
|
5257
|
-
const
|
5258
|
-
const
|
5259
|
-
|
5260
|
-
|
5261
|
-
|
5262
|
-
|
5263
|
-
|
5264
|
-
|
5265
|
-
|
5266
|
-
|
5267
|
-
|
5268
|
-
});
|
5269
|
-
await this.fund(request, requiredQuantities, maxFee);
|
5484
|
+
const quantitiesToContract = [{ amount: (0, import_math19.bn)(amount), assetId: import_configs12.BaseAssetId }];
|
5485
|
+
const txCost = await this.provider.getTransactionCost(request, { quantitiesToContract });
|
5486
|
+
if (txParams.gasLimit) {
|
5487
|
+
this.validateGas({
|
5488
|
+
gasUsed: txCost.gasUsed,
|
5489
|
+
gasLimit: request.gasLimit
|
5490
|
+
});
|
5491
|
+
}
|
5492
|
+
request.maxFee = txCost.maxFee;
|
5493
|
+
request.gasLimit = txCost.gasUsed;
|
5494
|
+
await this.fund(request, txCost);
|
5270
5495
|
return this.sendTransaction(request);
|
5271
5496
|
}
|
5272
5497
|
async signMessage(message) {
|
@@ -5324,18 +5549,7 @@ var Account = class extends import_interfaces.AbstractAccount {
|
|
5324
5549
|
}
|
5325
5550
|
return this.provider.simulate(transactionRequest, { estimateTxDependencies: false });
|
5326
5551
|
}
|
5327
|
-
validateGas({
|
5328
|
-
gasUsed,
|
5329
|
-
gasPrice,
|
5330
|
-
gasLimit,
|
5331
|
-
minGasPrice
|
5332
|
-
}) {
|
5333
|
-
if (minGasPrice.gt(gasPrice)) {
|
5334
|
-
throw new import_errors16.FuelError(
|
5335
|
-
import_errors16.ErrorCode.GAS_PRICE_TOO_LOW,
|
5336
|
-
`Gas price '${gasPrice}' is lower than the required: '${minGasPrice}'.`
|
5337
|
-
);
|
5338
|
-
}
|
5552
|
+
validateGas({ gasUsed, gasLimit }) {
|
5339
5553
|
if (gasUsed.gt(gasLimit)) {
|
5340
5554
|
throw new import_errors16.FuelError(
|
5341
5555
|
import_errors16.ErrorCode.GAS_LIMIT_TOO_LOW,
|
@@ -5347,14 +5561,14 @@ var Account = class extends import_interfaces.AbstractAccount {
|
|
5347
5561
|
|
5348
5562
|
// src/wallet/base-wallet-unlocked.ts
|
5349
5563
|
var import_hasher3 = require("@fuel-ts/hasher");
|
5350
|
-
var
|
5564
|
+
var import_utils30 = require("@fuel-ts/utils");
|
5351
5565
|
|
5352
5566
|
// src/signer/signer.ts
|
5353
5567
|
var import_address5 = require("@fuel-ts/address");
|
5354
|
-
var
|
5568
|
+
var import_crypto = require("@fuel-ts/crypto");
|
5355
5569
|
var import_hasher2 = require("@fuel-ts/hasher");
|
5356
|
-
var
|
5357
|
-
var
|
5570
|
+
var import_math20 = require("@fuel-ts/math");
|
5571
|
+
var import_utils28 = require("@fuel-ts/utils");
|
5358
5572
|
var import_secp256k1 = require("@noble/curves/secp256k1");
|
5359
5573
|
var Signer = class {
|
5360
5574
|
address;
|
@@ -5373,10 +5587,10 @@ var Signer = class {
|
|
5373
5587
|
privateKey = `0x${privateKey}`;
|
5374
5588
|
}
|
5375
5589
|
}
|
5376
|
-
const privateKeyBytes = (0,
|
5377
|
-
this.privateKey = (0,
|
5378
|
-
this.publicKey = (0,
|
5379
|
-
this.compressedPublicKey = (0,
|
5590
|
+
const privateKeyBytes = (0, import_math20.toBytes)(privateKey, 32);
|
5591
|
+
this.privateKey = (0, import_utils28.hexlify)(privateKeyBytes);
|
5592
|
+
this.publicKey = (0, import_utils28.hexlify)(import_secp256k1.secp256k1.getPublicKey(privateKeyBytes, false).slice(1));
|
5593
|
+
this.compressedPublicKey = (0, import_utils28.hexlify)(import_secp256k1.secp256k1.getPublicKey(privateKeyBytes, true));
|
5380
5594
|
this.address = import_address5.Address.fromPublicKey(this.publicKey);
|
5381
5595
|
}
|
5382
5596
|
/**
|
@@ -5390,11 +5604,11 @@ var Signer = class {
|
|
5390
5604
|
* @returns hashed signature
|
5391
5605
|
*/
|
5392
5606
|
sign(data) {
|
5393
|
-
const signature = import_secp256k1.secp256k1.sign((0,
|
5394
|
-
const r = (0,
|
5395
|
-
const s = (0,
|
5607
|
+
const signature = import_secp256k1.secp256k1.sign((0, import_utils28.arrayify)(data), (0, import_utils28.arrayify)(this.privateKey));
|
5608
|
+
const r = (0, import_math20.toBytes)(`0x${signature.r.toString(16)}`, 32);
|
5609
|
+
const s = (0, import_math20.toBytes)(`0x${signature.s.toString(16)}`, 32);
|
5396
5610
|
s[0] |= (signature.recovery || 0) << 7;
|
5397
|
-
return (0,
|
5611
|
+
return (0, import_utils28.hexlify)((0, import_utils28.concat)([r, s]));
|
5398
5612
|
}
|
5399
5613
|
/**
|
5400
5614
|
* Add point on the current elliptic curve
|
@@ -5403,8 +5617,8 @@ var Signer = class {
|
|
5403
5617
|
* @returns compressed point on the curve
|
5404
5618
|
*/
|
5405
5619
|
addPoint(point) {
|
5406
|
-
const p0 = import_secp256k1.secp256k1.ProjectivePoint.fromHex((0,
|
5407
|
-
const p1 = import_secp256k1.secp256k1.ProjectivePoint.fromHex((0,
|
5620
|
+
const p0 = import_secp256k1.secp256k1.ProjectivePoint.fromHex((0, import_utils28.arrayify)(this.compressedPublicKey));
|
5621
|
+
const p1 = import_secp256k1.secp256k1.ProjectivePoint.fromHex((0, import_utils28.arrayify)(point));
|
5408
5622
|
const result = p0.add(p1);
|
5409
5623
|
return `0x${result.toHex(true)}`;
|
5410
5624
|
}
|
@@ -5416,16 +5630,16 @@ var Signer = class {
|
|
5416
5630
|
* @returns public key from signature from the
|
5417
5631
|
*/
|
5418
5632
|
static recoverPublicKey(data, signature) {
|
5419
|
-
const signedMessageBytes = (0,
|
5633
|
+
const signedMessageBytes = (0, import_utils28.arrayify)(signature);
|
5420
5634
|
const r = signedMessageBytes.slice(0, 32);
|
5421
5635
|
const s = signedMessageBytes.slice(32, 64);
|
5422
5636
|
const recoveryParam = (s[0] & 128) >> 7;
|
5423
5637
|
s[0] &= 127;
|
5424
|
-
const sig = new import_secp256k1.secp256k1.Signature(BigInt((0,
|
5638
|
+
const sig = new import_secp256k1.secp256k1.Signature(BigInt((0, import_utils28.hexlify)(r)), BigInt((0, import_utils28.hexlify)(s))).addRecoveryBit(
|
5425
5639
|
recoveryParam
|
5426
5640
|
);
|
5427
|
-
const publicKey = sig.recoverPublicKey((0,
|
5428
|
-
return (0,
|
5641
|
+
const publicKey = sig.recoverPublicKey((0, import_utils28.arrayify)(data)).toRawBytes(false).slice(1);
|
5642
|
+
return (0, import_utils28.hexlify)(publicKey);
|
5429
5643
|
}
|
5430
5644
|
/**
|
5431
5645
|
* Recover the address from a signature performed with [`sign`](#sign).
|
@@ -5444,7 +5658,7 @@ var Signer = class {
|
|
5444
5658
|
* @returns random 32-byte hashed
|
5445
5659
|
*/
|
5446
5660
|
static generatePrivateKey(entropy) {
|
5447
|
-
return entropy ? (0, import_hasher2.hash)((0,
|
5661
|
+
return entropy ? (0, import_hasher2.hash)((0, import_utils28.concat)([(0, import_crypto.randomBytes)(32), (0, import_utils28.arrayify)(entropy)])) : (0, import_crypto.randomBytes)(32);
|
5448
5662
|
}
|
5449
5663
|
/**
|
5450
5664
|
* Extended publicKey from a compact publicKey
|
@@ -5453,16 +5667,16 @@ var Signer = class {
|
|
5453
5667
|
* @returns extended publicKey
|
5454
5668
|
*/
|
5455
5669
|
static extendPublicKey(publicKey) {
|
5456
|
-
const point = import_secp256k1.secp256k1.ProjectivePoint.fromHex((0,
|
5457
|
-
return (0,
|
5670
|
+
const point = import_secp256k1.secp256k1.ProjectivePoint.fromHex((0, import_utils28.arrayify)(publicKey));
|
5671
|
+
return (0, import_utils28.hexlify)(point.toRawBytes(false).slice(1));
|
5458
5672
|
}
|
5459
5673
|
};
|
5460
5674
|
|
5461
5675
|
// src/wallet/keystore-wallet.ts
|
5462
5676
|
var import_address6 = require("@fuel-ts/address");
|
5463
|
-
var
|
5677
|
+
var import_crypto2 = require("@fuel-ts/crypto");
|
5464
5678
|
var import_errors17 = require("@fuel-ts/errors");
|
5465
|
-
var
|
5679
|
+
var import_utils29 = require("@fuel-ts/utils");
|
5466
5680
|
var import_uuid = require("uuid");
|
5467
5681
|
var DEFAULT_KDF_PARAMS_LOG_N = 13;
|
5468
5682
|
var DEFAULT_KDF_PARAMS_R = 8;
|
@@ -5476,22 +5690,22 @@ var removeHexPrefix = (hexString) => {
|
|
5476
5690
|
return hexString;
|
5477
5691
|
};
|
5478
5692
|
async function encryptKeystoreWallet(privateKey, address, password) {
|
5479
|
-
const privateKeyBuffer = (0,
|
5693
|
+
const privateKeyBuffer = (0, import_crypto2.bufferFromString)(removeHexPrefix(privateKey), "hex");
|
5480
5694
|
const ownerAddress = import_address6.Address.fromAddressOrString(address);
|
5481
|
-
const salt = (0,
|
5482
|
-
const key = (0,
|
5483
|
-
password: (0,
|
5695
|
+
const salt = (0, import_crypto2.randomBytes)(DEFAULT_KEY_SIZE);
|
5696
|
+
const key = (0, import_crypto2.scrypt)({
|
5697
|
+
password: (0, import_crypto2.bufferFromString)(password),
|
5484
5698
|
salt,
|
5485
5699
|
dklen: DEFAULT_KEY_SIZE,
|
5486
5700
|
n: 2 ** DEFAULT_KDF_PARAMS_LOG_N,
|
5487
5701
|
r: DEFAULT_KDF_PARAMS_R,
|
5488
5702
|
p: DEFAULT_KDF_PARAMS_P
|
5489
5703
|
});
|
5490
|
-
const iv = (0,
|
5491
|
-
const ciphertext = await (0,
|
5704
|
+
const iv = (0, import_crypto2.randomBytes)(DEFAULT_IV_SIZE);
|
5705
|
+
const ciphertext = await (0, import_crypto2.encryptJsonWalletData)(privateKeyBuffer, key, iv);
|
5492
5706
|
const data = Uint8Array.from([...key.subarray(16, 32), ...ciphertext]);
|
5493
|
-
const macHashUint8Array = (0,
|
5494
|
-
const mac = (0,
|
5707
|
+
const macHashUint8Array = (0, import_crypto2.keccak256)(data);
|
5708
|
+
const mac = (0, import_crypto2.stringFromBuffer)(macHashUint8Array, "hex");
|
5495
5709
|
const keystore = {
|
5496
5710
|
id: (0, import_uuid.v4)(),
|
5497
5711
|
version: 3,
|
@@ -5499,15 +5713,15 @@ async function encryptKeystoreWallet(privateKey, address, password) {
|
|
5499
5713
|
crypto: {
|
5500
5714
|
cipher: "aes-128-ctr",
|
5501
5715
|
mac,
|
5502
|
-
cipherparams: { iv: (0,
|
5503
|
-
ciphertext: (0,
|
5716
|
+
cipherparams: { iv: (0, import_crypto2.stringFromBuffer)(iv, "hex") },
|
5717
|
+
ciphertext: (0, import_crypto2.stringFromBuffer)(ciphertext, "hex"),
|
5504
5718
|
kdf: "scrypt",
|
5505
5719
|
kdfparams: {
|
5506
5720
|
dklen: DEFAULT_KEY_SIZE,
|
5507
5721
|
n: 2 ** DEFAULT_KDF_PARAMS_LOG_N,
|
5508
5722
|
p: DEFAULT_KDF_PARAMS_P,
|
5509
5723
|
r: DEFAULT_KDF_PARAMS_R,
|
5510
|
-
salt: (0,
|
5724
|
+
salt: (0, import_crypto2.stringFromBuffer)(salt, "hex")
|
5511
5725
|
}
|
5512
5726
|
}
|
5513
5727
|
};
|
@@ -5523,11 +5737,11 @@ async function decryptKeystoreWallet(jsonWallet, password) {
|
|
5523
5737
|
kdfparams: { dklen, n, r, p, salt }
|
5524
5738
|
}
|
5525
5739
|
} = keystoreWallet;
|
5526
|
-
const ciphertextBuffer = (0,
|
5527
|
-
const ivBuffer = (0,
|
5528
|
-
const saltBuffer = (0,
|
5529
|
-
const passwordBuffer = (0,
|
5530
|
-
const key = (0,
|
5740
|
+
const ciphertextBuffer = (0, import_crypto2.bufferFromString)(ciphertext, "hex");
|
5741
|
+
const ivBuffer = (0, import_crypto2.bufferFromString)(iv, "hex");
|
5742
|
+
const saltBuffer = (0, import_crypto2.bufferFromString)(salt, "hex");
|
5743
|
+
const passwordBuffer = (0, import_crypto2.bufferFromString)(password);
|
5744
|
+
const key = (0, import_crypto2.scrypt)({
|
5531
5745
|
password: passwordBuffer,
|
5532
5746
|
salt: saltBuffer,
|
5533
5747
|
n,
|
@@ -5536,16 +5750,16 @@ async function decryptKeystoreWallet(jsonWallet, password) {
|
|
5536
5750
|
dklen
|
5537
5751
|
});
|
5538
5752
|
const data = Uint8Array.from([...key.subarray(16, 32), ...ciphertextBuffer]);
|
5539
|
-
const macHashUint8Array = (0,
|
5540
|
-
const macHash = (0,
|
5753
|
+
const macHashUint8Array = (0, import_crypto2.keccak256)(data);
|
5754
|
+
const macHash = (0, import_crypto2.stringFromBuffer)(macHashUint8Array, "hex");
|
5541
5755
|
if (mac !== macHash) {
|
5542
5756
|
throw new import_errors17.FuelError(
|
5543
5757
|
import_errors17.ErrorCode.INVALID_PASSWORD,
|
5544
5758
|
"Failed to decrypt the keystore wallet, the provided password is incorrect."
|
5545
5759
|
);
|
5546
5760
|
}
|
5547
|
-
const buffer = await (0,
|
5548
|
-
const privateKey = (0,
|
5761
|
+
const buffer = await (0, import_crypto2.decryptJsonWalletData)(ciphertextBuffer, key, ivBuffer);
|
5762
|
+
const privateKey = (0, import_utils29.hexlify)(buffer);
|
5549
5763
|
return privateKey;
|
5550
5764
|
}
|
5551
5765
|
|
@@ -5590,7 +5804,7 @@ var BaseWalletUnlocked = class extends Account {
|
|
5590
5804
|
*/
|
5591
5805
|
async signMessage(message) {
|
5592
5806
|
const signedMessage = await this.signer().sign((0, import_hasher3.hashMessage)(message));
|
5593
|
-
return (0,
|
5807
|
+
return (0, import_utils30.hexlify)(signedMessage);
|
5594
5808
|
}
|
5595
5809
|
/**
|
5596
5810
|
* Signs a transaction with the wallet's private key.
|
@@ -5603,7 +5817,7 @@ var BaseWalletUnlocked = class extends Account {
|
|
5603
5817
|
const chainId = this.provider.getChainId();
|
5604
5818
|
const hashedTransaction = transactionRequest.getTransactionId(chainId);
|
5605
5819
|
const signature = await this.signer().sign(hashedTransaction);
|
5606
|
-
return (0,
|
5820
|
+
return (0, import_utils30.hexlify)(signature);
|
5607
5821
|
}
|
5608
5822
|
/**
|
5609
5823
|
* Populates a transaction with the witnesses signature.
|
@@ -5623,7 +5837,7 @@ var BaseWalletUnlocked = class extends Account {
|
|
5623
5837
|
* @param transactionRequestLike - The transaction request to send.
|
5624
5838
|
* @returns A promise that resolves to the TransactionResponse object.
|
5625
5839
|
*/
|
5626
|
-
async sendTransaction(transactionRequestLike, { estimateTxDependencies =
|
5840
|
+
async sendTransaction(transactionRequestLike, { estimateTxDependencies = false, awaitExecution } = {}) {
|
5627
5841
|
const transactionRequest = transactionRequestify(transactionRequestLike);
|
5628
5842
|
if (estimateTxDependencies) {
|
5629
5843
|
await this.provider.estimateTxDependencies(transactionRequest);
|
@@ -5664,16 +5878,16 @@ __publicField(BaseWalletUnlocked, "defaultPath", "m/44'/1179993420'/0'/0/0");
|
|
5664
5878
|
// src/hdwallet/hdwallet.ts
|
5665
5879
|
var import_errors20 = require("@fuel-ts/errors");
|
5666
5880
|
var import_hasher6 = require("@fuel-ts/hasher");
|
5667
|
-
var
|
5668
|
-
var
|
5669
|
-
var
|
5881
|
+
var import_math21 = require("@fuel-ts/math");
|
5882
|
+
var import_utils34 = require("@fuel-ts/utils");
|
5883
|
+
var import_ethers4 = require("ethers");
|
5670
5884
|
|
5671
5885
|
// src/mnemonic/mnemonic.ts
|
5672
|
-
var
|
5886
|
+
var import_crypto3 = require("@fuel-ts/crypto");
|
5673
5887
|
var import_errors19 = require("@fuel-ts/errors");
|
5674
5888
|
var import_hasher5 = require("@fuel-ts/hasher");
|
5675
|
-
var
|
5676
|
-
var
|
5889
|
+
var import_utils32 = require("@fuel-ts/utils");
|
5890
|
+
var import_ethers3 = require("ethers");
|
5677
5891
|
|
5678
5892
|
// src/wordlists/words/english.ts
|
5679
5893
|
var english = [
|
@@ -7736,7 +7950,7 @@ var Language = /* @__PURE__ */ ((Language2) => {
|
|
7736
7950
|
// src/mnemonic/utils.ts
|
7737
7951
|
var import_errors18 = require("@fuel-ts/errors");
|
7738
7952
|
var import_hasher4 = require("@fuel-ts/hasher");
|
7739
|
-
var
|
7953
|
+
var import_utils31 = require("@fuel-ts/utils");
|
7740
7954
|
function toUtf8Bytes(stri) {
|
7741
7955
|
const str = stri.normalize("NFKD");
|
7742
7956
|
const result = [];
|
@@ -7803,14 +8017,14 @@ function entropyToMnemonicIndices(entropy) {
|
|
7803
8017
|
}
|
7804
8018
|
}
|
7805
8019
|
const checksumBits = entropy.length / 4;
|
7806
|
-
const checksum = (0,
|
8020
|
+
const checksum = (0, import_utils31.arrayify)((0, import_hasher4.sha256)(entropy))[0] & getUpperMask(checksumBits);
|
7807
8021
|
indices[indices.length - 1] <<= checksumBits;
|
7808
8022
|
indices[indices.length - 1] |= checksum >> 8 - checksumBits;
|
7809
8023
|
return indices;
|
7810
8024
|
}
|
7811
8025
|
function mnemonicWordsToEntropy(words, wordlist) {
|
7812
8026
|
const size = Math.ceil(11 * words.length / 8);
|
7813
|
-
const entropy = (0,
|
8027
|
+
const entropy = (0, import_utils31.arrayify)(new Uint8Array(size));
|
7814
8028
|
let offset = 0;
|
7815
8029
|
for (let i = 0; i < words.length; i += 1) {
|
7816
8030
|
const index = wordlist.indexOf(words[i].normalize("NFKD"));
|
@@ -7830,7 +8044,7 @@ function mnemonicWordsToEntropy(words, wordlist) {
|
|
7830
8044
|
const entropyBits = 32 * words.length / 3;
|
7831
8045
|
const checksumBits = words.length / 3;
|
7832
8046
|
const checksumMask = getUpperMask(checksumBits);
|
7833
|
-
const checksum = (0,
|
8047
|
+
const checksum = (0, import_utils31.arrayify)((0, import_hasher4.sha256)(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;
|
7834
8048
|
if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {
|
7835
8049
|
throw new import_errors18.FuelError(
|
7836
8050
|
import_errors18.ErrorCode.INVALID_CHECKSUM,
|
@@ -7905,7 +8119,7 @@ var Mnemonic = class {
|
|
7905
8119
|
static mnemonicToEntropy(phrase, wordlist = english) {
|
7906
8120
|
const words = getWords(phrase);
|
7907
8121
|
assertMnemonic(words);
|
7908
|
-
return (0,
|
8122
|
+
return (0, import_utils32.hexlify)(mnemonicWordsToEntropy(words, wordlist));
|
7909
8123
|
}
|
7910
8124
|
/**
|
7911
8125
|
* @param entropy - Entropy source to the mnemonic phrase.
|
@@ -7913,7 +8127,7 @@ var Mnemonic = class {
|
|
7913
8127
|
* @returns 64-byte array contains privateKey and chainCode as described on BIP39
|
7914
8128
|
*/
|
7915
8129
|
static entropyToMnemonic(entropy, wordlist = english) {
|
7916
|
-
const entropyBytes = (0,
|
8130
|
+
const entropyBytes = (0, import_utils32.arrayify)(entropy);
|
7917
8131
|
assertWordList(wordlist);
|
7918
8132
|
assertEntropy(entropyBytes);
|
7919
8133
|
return entropyToMnemonicIndices(entropyBytes).map((i) => wordlist[i]).join(" ");
|
@@ -7927,7 +8141,7 @@ var Mnemonic = class {
|
|
7927
8141
|
assertMnemonic(getWords(phrase));
|
7928
8142
|
const phraseBytes = toUtf8Bytes(getPhrase(phrase));
|
7929
8143
|
const salt = toUtf8Bytes(`mnemonic${passphrase}`);
|
7930
|
-
return (0,
|
8144
|
+
return (0, import_ethers3.pbkdf2)(phraseBytes, salt, 2048, 64, "sha512");
|
7931
8145
|
}
|
7932
8146
|
/**
|
7933
8147
|
* @param phrase - Mnemonic phrase composed by words from the provided wordlist
|
@@ -7982,14 +8196,14 @@ var Mnemonic = class {
|
|
7982
8196
|
* @returns 64-byte array contains privateKey and chainCode as described on BIP39
|
7983
8197
|
*/
|
7984
8198
|
static masterKeysFromSeed(seed) {
|
7985
|
-
const seedArray = (0,
|
8199
|
+
const seedArray = (0, import_utils32.arrayify)(seed);
|
7986
8200
|
if (seedArray.length < 16 || seedArray.length > 64) {
|
7987
8201
|
throw new import_errors19.FuelError(
|
7988
8202
|
import_errors19.ErrorCode.INVALID_SEED,
|
7989
8203
|
`Seed length should be between 16 and 64 bytes, but received ${seedArray.length} bytes.`
|
7990
8204
|
);
|
7991
8205
|
}
|
7992
|
-
return (0,
|
8206
|
+
return (0, import_utils32.arrayify)((0, import_ethers3.computeHmac)("sha512", MasterSecret, seedArray));
|
7993
8207
|
}
|
7994
8208
|
/**
|
7995
8209
|
* Get the extendKey as defined on BIP-32 from the provided seed
|
@@ -8000,22 +8214,22 @@ var Mnemonic = class {
|
|
8000
8214
|
*/
|
8001
8215
|
static seedToExtendedKey(seed, testnet = false) {
|
8002
8216
|
const masterKey = Mnemonic.masterKeysFromSeed(seed);
|
8003
|
-
const prefix = (0,
|
8217
|
+
const prefix = (0, import_utils32.arrayify)(testnet ? TestnetPRV : MainnetPRV);
|
8004
8218
|
const depth = "0x00";
|
8005
8219
|
const fingerprint = "0x00000000";
|
8006
8220
|
const index = "0x00000000";
|
8007
8221
|
const chainCode = masterKey.slice(32);
|
8008
8222
|
const privateKey = masterKey.slice(0, 32);
|
8009
|
-
const extendedKey = (0,
|
8223
|
+
const extendedKey = (0, import_utils32.concat)([
|
8010
8224
|
prefix,
|
8011
8225
|
depth,
|
8012
8226
|
fingerprint,
|
8013
8227
|
index,
|
8014
8228
|
chainCode,
|
8015
|
-
(0,
|
8229
|
+
(0, import_utils32.concat)(["0x00", privateKey])
|
8016
8230
|
]);
|
8017
|
-
const checksum = (0,
|
8018
|
-
return (0,
|
8231
|
+
const checksum = (0, import_ethers3.dataSlice)((0, import_hasher5.sha256)((0, import_hasher5.sha256)(extendedKey)), 0, 4);
|
8232
|
+
return (0, import_ethers3.encodeBase58)((0, import_utils32.concat)([extendedKey, checksum]));
|
8019
8233
|
}
|
8020
8234
|
/**
|
8021
8235
|
* Create a new mnemonic using a randomly generated number as entropy.
|
@@ -8030,7 +8244,7 @@ var Mnemonic = class {
|
|
8030
8244
|
* @returns A randomly generated mnemonic
|
8031
8245
|
*/
|
8032
8246
|
static generate(size = 32, extraEntropy = "") {
|
8033
|
-
const entropy = extraEntropy ? (0, import_hasher5.sha256)((0,
|
8247
|
+
const entropy = extraEntropy ? (0, import_hasher5.sha256)((0, import_utils32.concat)([(0, import_crypto3.randomBytes)(size), (0, import_utils32.arrayify)(extraEntropy)])) : (0, import_crypto3.randomBytes)(size);
|
8034
8248
|
return Mnemonic.entropyToMnemonic(entropy);
|
8035
8249
|
}
|
8036
8250
|
};
|
@@ -8038,12 +8252,12 @@ var mnemonic_default = Mnemonic;
|
|
8038
8252
|
|
8039
8253
|
// src/hdwallet/hdwallet.ts
|
8040
8254
|
var HARDENED_INDEX = 2147483648;
|
8041
|
-
var MainnetPRV2 = (0,
|
8042
|
-
var MainnetPUB = (0,
|
8043
|
-
var TestnetPRV2 = (0,
|
8044
|
-
var TestnetPUB = (0,
|
8255
|
+
var MainnetPRV2 = (0, import_utils34.hexlify)("0x0488ade4");
|
8256
|
+
var MainnetPUB = (0, import_utils34.hexlify)("0x0488b21e");
|
8257
|
+
var TestnetPRV2 = (0, import_utils34.hexlify)("0x04358394");
|
8258
|
+
var TestnetPUB = (0, import_utils34.hexlify)("0x043587cf");
|
8045
8259
|
function base58check(data) {
|
8046
|
-
return (0,
|
8260
|
+
return (0, import_ethers4.encodeBase58)((0, import_utils34.concat)([data, (0, import_ethers4.dataSlice)((0, import_hasher6.sha256)((0, import_hasher6.sha256)(data)), 0, 4)]));
|
8047
8261
|
}
|
8048
8262
|
function getExtendedKeyPrefix(isPublic = false, testnet = false) {
|
8049
8263
|
if (isPublic) {
|
@@ -8052,11 +8266,11 @@ function getExtendedKeyPrefix(isPublic = false, testnet = false) {
|
|
8052
8266
|
return testnet ? TestnetPRV2 : MainnetPRV2;
|
8053
8267
|
}
|
8054
8268
|
function isPublicExtendedKey(extendedKey) {
|
8055
|
-
return [MainnetPUB, TestnetPUB].includes((0,
|
8269
|
+
return [MainnetPUB, TestnetPUB].includes((0, import_utils34.hexlify)(extendedKey.slice(0, 4)));
|
8056
8270
|
}
|
8057
8271
|
function isValidExtendedKey(extendedKey) {
|
8058
8272
|
return [MainnetPRV2, TestnetPRV2, MainnetPUB, TestnetPUB].includes(
|
8059
|
-
(0,
|
8273
|
+
(0, import_utils34.hexlify)(extendedKey.slice(0, 4))
|
8060
8274
|
);
|
8061
8275
|
}
|
8062
8276
|
function parsePath(path, depth = 0) {
|
@@ -8074,8 +8288,8 @@ function parsePath(path, depth = 0) {
|
|
8074
8288
|
var HDWallet = class {
|
8075
8289
|
depth = 0;
|
8076
8290
|
index = 0;
|
8077
|
-
fingerprint = (0,
|
8078
|
-
parentFingerprint = (0,
|
8291
|
+
fingerprint = (0, import_utils34.hexlify)("0x00000000");
|
8292
|
+
parentFingerprint = (0, import_utils34.hexlify)("0x00000000");
|
8079
8293
|
privateKey;
|
8080
8294
|
publicKey;
|
8081
8295
|
chainCode;
|
@@ -8087,8 +8301,8 @@ var HDWallet = class {
|
|
8087
8301
|
constructor(config) {
|
8088
8302
|
if (config.privateKey) {
|
8089
8303
|
const signer = new Signer(config.privateKey);
|
8090
|
-
this.publicKey = (0,
|
8091
|
-
this.privateKey = (0,
|
8304
|
+
this.publicKey = (0, import_utils34.hexlify)(signer.compressedPublicKey);
|
8305
|
+
this.privateKey = (0, import_utils34.hexlify)(config.privateKey);
|
8092
8306
|
} else {
|
8093
8307
|
if (!config.publicKey) {
|
8094
8308
|
throw new import_errors20.FuelError(
|
@@ -8096,10 +8310,10 @@ var HDWallet = class {
|
|
8096
8310
|
"Both public and private Key cannot be missing. At least one should be provided."
|
8097
8311
|
);
|
8098
8312
|
}
|
8099
|
-
this.publicKey = (0,
|
8313
|
+
this.publicKey = (0, import_utils34.hexlify)(config.publicKey);
|
8100
8314
|
}
|
8101
8315
|
this.parentFingerprint = config.parentFingerprint || this.parentFingerprint;
|
8102
|
-
this.fingerprint = (0,
|
8316
|
+
this.fingerprint = (0, import_ethers4.dataSlice)((0, import_ethers4.ripemd160)((0, import_hasher6.sha256)(this.publicKey)), 0, 4);
|
8103
8317
|
this.depth = config.depth || this.depth;
|
8104
8318
|
this.index = config.index || this.index;
|
8105
8319
|
this.chainCode = config.chainCode;
|
@@ -8115,9 +8329,9 @@ var HDWallet = class {
|
|
8115
8329
|
* @returns A new instance of HDWallet on the derived index
|
8116
8330
|
*/
|
8117
8331
|
deriveIndex(index) {
|
8118
|
-
const privateKey = this.privateKey && (0,
|
8119
|
-
const publicKey = (0,
|
8120
|
-
const chainCode = (0,
|
8332
|
+
const privateKey = this.privateKey && (0, import_utils34.arrayify)(this.privateKey);
|
8333
|
+
const publicKey = (0, import_utils34.arrayify)(this.publicKey);
|
8334
|
+
const chainCode = (0, import_utils34.arrayify)(this.chainCode);
|
8121
8335
|
const data = new Uint8Array(37);
|
8122
8336
|
if (index & HARDENED_INDEX) {
|
8123
8337
|
if (!privateKey) {
|
@@ -8128,15 +8342,15 @@ var HDWallet = class {
|
|
8128
8342
|
}
|
8129
8343
|
data.set(privateKey, 1);
|
8130
8344
|
} else {
|
8131
|
-
data.set((0,
|
8345
|
+
data.set((0, import_utils34.arrayify)(this.publicKey));
|
8132
8346
|
}
|
8133
|
-
data.set((0,
|
8134
|
-
const bytes = (0,
|
8347
|
+
data.set((0, import_math21.toBytes)(index, 4), 33);
|
8348
|
+
const bytes = (0, import_utils34.arrayify)((0, import_ethers4.computeHmac)("sha512", chainCode, data));
|
8135
8349
|
const IL = bytes.slice(0, 32);
|
8136
8350
|
const IR = bytes.slice(32);
|
8137
8351
|
if (privateKey) {
|
8138
8352
|
const N = "0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141";
|
8139
|
-
const ki = (0,
|
8353
|
+
const ki = (0, import_math21.bn)(IL).add(privateKey).mod(N).toBytes(32);
|
8140
8354
|
return new HDWallet({
|
8141
8355
|
privateKey: ki,
|
8142
8356
|
chainCode: IR,
|
@@ -8145,7 +8359,7 @@ var HDWallet = class {
|
|
8145
8359
|
parentFingerprint: this.fingerprint
|
8146
8360
|
});
|
8147
8361
|
}
|
8148
|
-
const signer = new Signer((0,
|
8362
|
+
const signer = new Signer((0, import_utils34.hexlify)(IL));
|
8149
8363
|
const Ki = signer.addPoint(publicKey);
|
8150
8364
|
return new HDWallet({
|
8151
8365
|
publicKey: Ki,
|
@@ -8180,12 +8394,12 @@ var HDWallet = class {
|
|
8180
8394
|
);
|
8181
8395
|
}
|
8182
8396
|
const prefix = getExtendedKeyPrefix(this.privateKey == null || isPublic, testnet);
|
8183
|
-
const depth = (0,
|
8397
|
+
const depth = (0, import_utils34.hexlify)(Uint8Array.from([this.depth]));
|
8184
8398
|
const parentFingerprint = this.parentFingerprint;
|
8185
|
-
const index = (0,
|
8399
|
+
const index = (0, import_math21.toHex)(this.index, 4);
|
8186
8400
|
const chainCode = this.chainCode;
|
8187
|
-
const key = this.privateKey != null && !isPublic ? (0,
|
8188
|
-
const extendedKey = (0,
|
8401
|
+
const key = this.privateKey != null && !isPublic ? (0, import_utils34.concat)(["0x00", this.privateKey]) : this.publicKey;
|
8402
|
+
const extendedKey = (0, import_utils34.arrayify)((0, import_utils34.concat)([prefix, depth, parentFingerprint, index, chainCode, key]));
|
8189
8403
|
return base58check(extendedKey);
|
8190
8404
|
}
|
8191
8405
|
/**
|
@@ -8197,13 +8411,13 @@ var HDWallet = class {
|
|
8197
8411
|
static fromSeed(seed) {
|
8198
8412
|
const masterKey = mnemonic_default.masterKeysFromSeed(seed);
|
8199
8413
|
return new HDWallet({
|
8200
|
-
chainCode: (0,
|
8201
|
-
privateKey: (0,
|
8414
|
+
chainCode: (0, import_utils34.arrayify)(masterKey.slice(32)),
|
8415
|
+
privateKey: (0, import_utils34.arrayify)(masterKey.slice(0, 32))
|
8202
8416
|
});
|
8203
8417
|
}
|
8204
8418
|
static fromExtendedKey(extendedKey) {
|
8205
|
-
const decoded = (0,
|
8206
|
-
const bytes = (0,
|
8419
|
+
const decoded = (0, import_ethers4.toBeHex)((0, import_ethers4.decodeBase58)(extendedKey));
|
8420
|
+
const bytes = (0, import_utils34.arrayify)(decoded);
|
8207
8421
|
const validChecksum = base58check(bytes.slice(0, 78)) === extendedKey;
|
8208
8422
|
if (bytes.length !== 82 || !isValidExtendedKey(bytes)) {
|
8209
8423
|
throw new import_errors20.FuelError(import_errors20.ErrorCode.HD_WALLET_ERROR, "Provided key is not a valid extended key.");
|
@@ -8212,9 +8426,9 @@ var HDWallet = class {
|
|
8212
8426
|
throw new import_errors20.FuelError(import_errors20.ErrorCode.HD_WALLET_ERROR, "Provided key has an invalid checksum.");
|
8213
8427
|
}
|
8214
8428
|
const depth = bytes[4];
|
8215
|
-
const parentFingerprint = (0,
|
8216
|
-
const index = parseInt((0,
|
8217
|
-
const chainCode = (0,
|
8429
|
+
const parentFingerprint = (0, import_utils34.hexlify)(bytes.slice(5, 9));
|
8430
|
+
const index = parseInt((0, import_utils34.hexlify)(bytes.slice(9, 13)).substring(2), 16);
|
8431
|
+
const chainCode = (0, import_utils34.hexlify)(bytes.slice(13, 45));
|
8218
8432
|
const key = bytes.slice(45, 78);
|
8219
8433
|
if (depth === 0 && parentFingerprint !== "0x00000000" || depth === 0 && index !== 0) {
|
8220
8434
|
throw new import_errors20.FuelError(
|
@@ -8402,7 +8616,7 @@ __publicField(Wallet, "fromEncryptedJson", WalletUnlocked.fromEncryptedJson);
|
|
8402
8616
|
|
8403
8617
|
// src/wallet-manager/wallet-manager.ts
|
8404
8618
|
var import_address9 = require("@fuel-ts/address");
|
8405
|
-
var
|
8619
|
+
var import_crypto4 = require("@fuel-ts/crypto");
|
8406
8620
|
var import_errors23 = require("@fuel-ts/errors");
|
8407
8621
|
var import_events = require("events");
|
8408
8622
|
|
@@ -8730,7 +8944,7 @@ var _WalletManager = class extends import_events.EventEmitter {
|
|
8730
8944
|
await assert(!__privateGet(this, _isLocked), ERROR_MESSAGES.wallet_not_unlocked);
|
8731
8945
|
const data = await this.storage.getItem(this.STORAGE_KEY);
|
8732
8946
|
if (data) {
|
8733
|
-
const state = await (0,
|
8947
|
+
const state = await (0, import_crypto4.decrypt)(__privateGet(this, _passphrase), JSON.parse(data));
|
8734
8948
|
__privateSet(this, _vaults, __privateMethod(this, _deserializeVaults, deserializeVaults_fn).call(this, state.vaults));
|
8735
8949
|
}
|
8736
8950
|
}
|
@@ -8739,7 +8953,7 @@ var _WalletManager = class extends import_events.EventEmitter {
|
|
8739
8953
|
*/
|
8740
8954
|
async saveState() {
|
8741
8955
|
await assert(!__privateGet(this, _isLocked), ERROR_MESSAGES.wallet_not_unlocked);
|
8742
|
-
const encryptedData = await (0,
|
8956
|
+
const encryptedData = await (0, import_crypto4.encrypt)(__privateGet(this, _passphrase), {
|
8743
8957
|
vaults: __privateMethod(this, _serializeVaults, serializeVaults_fn).call(this, __privateGet(this, _vaults))
|
8744
8958
|
});
|
8745
8959
|
await this.storage.setItem(this.STORAGE_KEY, JSON.stringify(encryptedData));
|
@@ -8815,23 +9029,23 @@ var StorageAbstract = class {
|
|
8815
9029
|
};
|
8816
9030
|
|
8817
9031
|
// src/predicate/predicate.ts
|
8818
|
-
var
|
9032
|
+
var import_abi_coder5 = require("@fuel-ts/abi-coder");
|
8819
9033
|
var import_address10 = require("@fuel-ts/address");
|
8820
9034
|
var import_configs13 = require("@fuel-ts/address/configs");
|
8821
9035
|
var import_errors25 = require("@fuel-ts/errors");
|
8822
|
-
var
|
8823
|
-
var
|
9036
|
+
var import_transactions21 = require("@fuel-ts/transactions");
|
9037
|
+
var import_utils36 = require("@fuel-ts/utils");
|
8824
9038
|
|
8825
9039
|
// src/predicate/utils/getPredicateRoot.ts
|
8826
9040
|
var import_hasher7 = require("@fuel-ts/hasher");
|
8827
9041
|
var import_merkle = require("@fuel-ts/merkle");
|
8828
|
-
var
|
9042
|
+
var import_utils35 = require("@fuel-ts/utils");
|
8829
9043
|
var getPredicateRoot = (bytecode) => {
|
8830
9044
|
const chunkSize = 16 * 1024;
|
8831
|
-
const bytes = (0,
|
8832
|
-
const chunks = (0,
|
8833
|
-
const codeRoot = (0, import_merkle.calcRoot)(chunks.map((c) => (0,
|
8834
|
-
const predicateRoot = (0, import_hasher7.hash)((0,
|
9045
|
+
const bytes = (0, import_utils35.arrayify)(bytecode);
|
9046
|
+
const chunks = (0, import_utils35.chunkAndPadBytes)(bytes, chunkSize);
|
9047
|
+
const codeRoot = (0, import_merkle.calcRoot)(chunks.map((c) => (0, import_utils35.hexlify)(c)));
|
9048
|
+
const predicateRoot = (0, import_hasher7.hash)((0, import_utils35.concat)(["0x4655454C", codeRoot]));
|
8835
9049
|
return predicateRoot;
|
8836
9050
|
};
|
8837
9051
|
|
@@ -8879,9 +9093,9 @@ var Predicate = class extends Account {
|
|
8879
9093
|
const request = transactionRequestify(transactionRequestLike);
|
8880
9094
|
const { policies } = BaseTransactionRequest.getPolicyMeta(request);
|
8881
9095
|
request.inputs?.forEach((input) => {
|
8882
|
-
if (input.type ===
|
8883
|
-
input.predicate = this.bytes;
|
8884
|
-
input.predicateData = this.getPredicateData(policies.length);
|
9096
|
+
if (input.type === import_transactions21.InputType.Coin && (0, import_utils36.hexlify)(input.owner) === this.address.toB256()) {
|
9097
|
+
input.predicate = (0, import_utils36.hexlify)(this.bytes);
|
9098
|
+
input.predicateData = (0, import_utils36.hexlify)(this.getPredicateData(policies.length));
|
8885
9099
|
}
|
8886
9100
|
});
|
8887
9101
|
return request;
|
@@ -8896,8 +9110,7 @@ var Predicate = class extends Account {
|
|
8896
9110
|
* @returns A promise that resolves to the prepared transaction request.
|
8897
9111
|
*/
|
8898
9112
|
async createTransfer(destination, amount, assetId = import_configs13.BaseAssetId, txParams = {}) {
|
8899
|
-
|
8900
|
-
return this.populateTransactionPredicateData(request);
|
9113
|
+
return super.createTransfer(destination, amount, assetId, txParams);
|
8901
9114
|
}
|
8902
9115
|
/**
|
8903
9116
|
* Sends a transaction with the populated predicate data.
|
@@ -8905,9 +9118,9 @@ var Predicate = class extends Account {
|
|
8905
9118
|
* @param transactionRequestLike - The transaction request-like object.
|
8906
9119
|
* @returns A promise that resolves to the transaction response.
|
8907
9120
|
*/
|
8908
|
-
sendTransaction(transactionRequestLike
|
8909
|
-
const transactionRequest =
|
8910
|
-
return super.sendTransaction(transactionRequest,
|
9121
|
+
sendTransaction(transactionRequestLike) {
|
9122
|
+
const transactionRequest = transactionRequestify(transactionRequestLike);
|
9123
|
+
return super.sendTransaction(transactionRequest, { estimateTxDependencies: false });
|
8911
9124
|
}
|
8912
9125
|
/**
|
8913
9126
|
* Simulates a transaction with the populated predicate data.
|
@@ -8916,19 +9129,19 @@ var Predicate = class extends Account {
|
|
8916
9129
|
* @returns A promise that resolves to the call result.
|
8917
9130
|
*/
|
8918
9131
|
simulateTransaction(transactionRequestLike) {
|
8919
|
-
const transactionRequest =
|
8920
|
-
return super.simulateTransaction(transactionRequest);
|
9132
|
+
const transactionRequest = transactionRequestify(transactionRequestLike);
|
9133
|
+
return super.simulateTransaction(transactionRequest, { estimateTxDependencies: false });
|
8921
9134
|
}
|
8922
9135
|
getPredicateData(policiesLength) {
|
8923
9136
|
if (!this.predicateData.length) {
|
8924
9137
|
return new Uint8Array();
|
8925
9138
|
}
|
8926
9139
|
const mainFn = this.interface?.functions.main;
|
8927
|
-
const paddedCode = new
|
8928
|
-
const VM_TX_MEMORY = (0,
|
9140
|
+
const paddedCode = new import_transactions21.ByteArrayCoder(this.bytes.length).encode(this.bytes);
|
9141
|
+
const VM_TX_MEMORY = (0, import_abi_coder5.calculateVmTxMemory)({
|
8929
9142
|
maxInputs: this.provider.getChain().consensusParameters.maxInputs.toNumber()
|
8930
9143
|
});
|
8931
|
-
const OFFSET = VM_TX_MEMORY +
|
9144
|
+
const OFFSET = VM_TX_MEMORY + import_abi_coder5.SCRIPT_FIXED_SIZE + import_abi_coder5.INPUT_COIN_FIXED_SIZE + import_abi_coder5.WORD_SIZE + paddedCode.byteLength + policiesLength * import_abi_coder5.WORD_SIZE;
|
8932
9145
|
return mainFn?.encodeArguments(this.predicateData, OFFSET) || new Uint8Array();
|
8933
9146
|
}
|
8934
9147
|
/**
|
@@ -8940,10 +9153,10 @@ var Predicate = class extends Account {
|
|
8940
9153
|
* @returns An object containing the new predicate bytes and interface.
|
8941
9154
|
*/
|
8942
9155
|
static processPredicateData(bytes, jsonAbi, configurableConstants) {
|
8943
|
-
let predicateBytes = (0,
|
9156
|
+
let predicateBytes = (0, import_utils36.arrayify)(bytes);
|
8944
9157
|
let abiInterface;
|
8945
9158
|
if (jsonAbi) {
|
8946
|
-
abiInterface = new
|
9159
|
+
abiInterface = new import_abi_coder5.Interface(jsonAbi);
|
8947
9160
|
if (abiInterface.functions.main === void 0) {
|
8948
9161
|
throw new import_errors25.FuelError(
|
8949
9162
|
import_errors25.ErrorCode.ABI_MAIN_METHOD_MISSING,
|
@@ -8963,6 +9176,25 @@ var Predicate = class extends Account {
|
|
8963
9176
|
predicateInterface: abiInterface
|
8964
9177
|
};
|
8965
9178
|
}
|
9179
|
+
/**
|
9180
|
+
* Retrieves resources satisfying the spend query for the account.
|
9181
|
+
*
|
9182
|
+
* @param quantities - IDs of coins to exclude.
|
9183
|
+
* @param excludedIds - IDs of resources to be excluded from the query.
|
9184
|
+
* @returns A promise that resolves to an array of Resources.
|
9185
|
+
*/
|
9186
|
+
async getResourcesToSpend(quantities, excludedIds) {
|
9187
|
+
const resources = await this.provider.getResourcesToSpend(
|
9188
|
+
this.address,
|
9189
|
+
quantities,
|
9190
|
+
excludedIds
|
9191
|
+
);
|
9192
|
+
return resources.map((resource) => ({
|
9193
|
+
...resource,
|
9194
|
+
predicate: (0, import_utils36.hexlify)(this.bytes),
|
9195
|
+
paddPredicateData: (policiesLength) => (0, import_utils36.hexlify)(this.getPredicateData(policiesLength))
|
9196
|
+
}));
|
9197
|
+
}
|
8966
9198
|
/**
|
8967
9199
|
* Sets the configurable constants for the predicate.
|
8968
9200
|
*
|
@@ -9712,7 +9944,7 @@ __publicField(Fuel, "defaultConfig", {});
|
|
9712
9944
|
WalletLocked,
|
9713
9945
|
WalletManager,
|
9714
9946
|
WalletUnlocked,
|
9715
|
-
|
9947
|
+
addAmountToCoinQuantities,
|
9716
9948
|
addOperation,
|
9717
9949
|
assemblePanicError,
|
9718
9950
|
assembleReceiptByType,
|
@@ -9721,9 +9953,10 @@ __publicField(Fuel, "defaultConfig", {});
|
|
9721
9953
|
assets,
|
9722
9954
|
buildBlockExplorerUrl,
|
9723
9955
|
cacheFor,
|
9956
|
+
cacheTxInputsFromOwner,
|
9957
|
+
calculateGasFee,
|
9724
9958
|
calculateMetadataGasForTxCreate,
|
9725
9959
|
calculateMetadataGasForTxScript,
|
9726
|
-
calculatePriceWithFactor,
|
9727
9960
|
calculateTransactionFee,
|
9728
9961
|
coinQuantityfy,
|
9729
9962
|
deferPromise,
|