@fuel-ts/account 0.0.0-rc-2034-20240410113328 → 0.0.0-rc-2021-20240410132122
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 +798 -564
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +759 -525
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +639 -406
- 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 +36 -31
- 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 +1512 -1063
- package/dist/test-utils.global.js.map +1 -1
- package/dist/test-utils.js +735 -521
- package/dist/test-utils.js.map +1 -1
- package/dist/test-utils.mjs +629 -415
- 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,11 +231,11 @@ 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
|
238
|
+
var import_utils23 = require("@noble/curves/abstract/utils");
|
237
239
|
var import_ethers2 = require("ethers");
|
238
240
|
var import_graphql_request = require("graphql-request");
|
239
241
|
var import_ramda3 = require("ramda");
|
@@ -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)) {
|
@@ -1187,7 +1248,7 @@ var inputify = (value) => {
|
|
1187
1248
|
return {
|
1188
1249
|
type: import_transactions.InputType.Coin,
|
1189
1250
|
txID: (0, import_utils3.hexlify)((0, import_utils3.arrayify)(value.id).slice(0, 32)),
|
1190
|
-
outputIndex: (0, import_math2.toNumber)((0, import_utils3.arrayify)(value.id).slice(32,
|
1251
|
+
outputIndex: (0, import_math2.toNumber)((0, import_utils3.arrayify)(value.id).slice(32, 34)),
|
1191
1252
|
owner: (0, import_utils3.hexlify)(value.owner),
|
1192
1253
|
amount: (0, import_math2.bn)(value.amount),
|
1193
1254
|
assetId: (0, import_utils3.hexlify)(value.assetId),
|
@@ -1196,10 +1257,9 @@ var inputify = (value) => {
|
|
1196
1257
|
txIndex: (0, import_math2.toNumber)((0, import_utils3.arrayify)(value.txPointer).slice(8, 16))
|
1197
1258
|
},
|
1198
1259
|
witnessIndex: value.witnessIndex,
|
1199
|
-
maturity: value.maturity ?? 0,
|
1200
1260
|
predicateGasUsed: (0, import_math2.bn)(value.predicateGasUsed),
|
1201
|
-
predicateLength: predicate.length,
|
1202
|
-
predicateDataLength: predicateData.length,
|
1261
|
+
predicateLength: (0, import_math2.bn)(predicate.length),
|
1262
|
+
predicateDataLength: (0, import_math2.bn)(predicateData.length),
|
1203
1263
|
predicate: (0, import_utils3.hexlify)(predicate),
|
1204
1264
|
predicateData: (0, import_utils3.hexlify)(predicateData)
|
1205
1265
|
};
|
@@ -1230,8 +1290,8 @@ var inputify = (value) => {
|
|
1230
1290
|
nonce: (0, import_utils3.hexlify)(value.nonce),
|
1231
1291
|
witnessIndex: value.witnessIndex,
|
1232
1292
|
predicateGasUsed: (0, import_math2.bn)(value.predicateGasUsed),
|
1233
|
-
predicateLength: predicate.length,
|
1234
|
-
predicateDataLength: predicateData.length,
|
1293
|
+
predicateLength: (0, import_math2.bn)(predicate.length),
|
1294
|
+
predicateDataLength: (0, import_math2.bn)(predicateData.length),
|
1235
1295
|
predicate: (0, import_utils3.hexlify)(predicate),
|
1236
1296
|
predicateData: (0, import_utils3.hexlify)(predicateData),
|
1237
1297
|
data: (0, import_utils3.hexlify)(data),
|
@@ -1349,8 +1409,8 @@ function assembleReceiptByType(receipt) {
|
|
1349
1409
|
case "CALL" /* Call */: {
|
1350
1410
|
const callReceipt = {
|
1351
1411
|
type: import_transactions3.ReceiptType.Call,
|
1352
|
-
from: hexOrZero(receipt.
|
1353
|
-
to: hexOrZero(receipt?.to
|
1412
|
+
from: hexOrZero(receipt.id || receipt.contractId),
|
1413
|
+
to: hexOrZero(receipt?.to),
|
1354
1414
|
amount: (0, import_math4.bn)(receipt.amount),
|
1355
1415
|
assetId: hexOrZero(receipt.assetId),
|
1356
1416
|
gas: (0, import_math4.bn)(receipt.gas),
|
@@ -1364,7 +1424,7 @@ function assembleReceiptByType(receipt) {
|
|
1364
1424
|
case "RETURN" /* Return */: {
|
1365
1425
|
const returnReceipt = {
|
1366
1426
|
type: import_transactions3.ReceiptType.Return,
|
1367
|
-
id: hexOrZero(receipt.
|
1427
|
+
id: hexOrZero(receipt.id || receipt.contractId),
|
1368
1428
|
val: (0, import_math4.bn)(receipt.val),
|
1369
1429
|
pc: (0, import_math4.bn)(receipt.pc),
|
1370
1430
|
is: (0, import_math4.bn)(receipt.is)
|
@@ -1374,7 +1434,7 @@ function assembleReceiptByType(receipt) {
|
|
1374
1434
|
case "RETURN_DATA" /* ReturnData */: {
|
1375
1435
|
const returnDataReceipt = {
|
1376
1436
|
type: import_transactions3.ReceiptType.ReturnData,
|
1377
|
-
id: hexOrZero(receipt.
|
1437
|
+
id: hexOrZero(receipt.id || receipt.contractId),
|
1378
1438
|
ptr: (0, import_math4.bn)(receipt.ptr),
|
1379
1439
|
len: (0, import_math4.bn)(receipt.len),
|
1380
1440
|
digest: hexOrZero(receipt.digest),
|
@@ -1386,7 +1446,7 @@ function assembleReceiptByType(receipt) {
|
|
1386
1446
|
case "PANIC" /* Panic */: {
|
1387
1447
|
const panicReceipt = {
|
1388
1448
|
type: import_transactions3.ReceiptType.Panic,
|
1389
|
-
id: hexOrZero(receipt.
|
1449
|
+
id: hexOrZero(receipt.id),
|
1390
1450
|
reason: (0, import_math4.bn)(receipt.reason),
|
1391
1451
|
pc: (0, import_math4.bn)(receipt.pc),
|
1392
1452
|
is: (0, import_math4.bn)(receipt.is),
|
@@ -1397,7 +1457,7 @@ function assembleReceiptByType(receipt) {
|
|
1397
1457
|
case "REVERT" /* Revert */: {
|
1398
1458
|
const revertReceipt = {
|
1399
1459
|
type: import_transactions3.ReceiptType.Revert,
|
1400
|
-
id: hexOrZero(receipt.
|
1460
|
+
id: hexOrZero(receipt.id || receipt.contractId),
|
1401
1461
|
val: (0, import_math4.bn)(receipt.ra),
|
1402
1462
|
pc: (0, import_math4.bn)(receipt.pc),
|
1403
1463
|
is: (0, import_math4.bn)(receipt.is)
|
@@ -1407,7 +1467,7 @@ function assembleReceiptByType(receipt) {
|
|
1407
1467
|
case "LOG" /* Log */: {
|
1408
1468
|
const logReceipt = {
|
1409
1469
|
type: import_transactions3.ReceiptType.Log,
|
1410
|
-
id: hexOrZero(receipt.
|
1470
|
+
id: hexOrZero(receipt.id || receipt.contractId),
|
1411
1471
|
val0: (0, import_math4.bn)(receipt.ra),
|
1412
1472
|
val1: (0, import_math4.bn)(receipt.rb),
|
1413
1473
|
val2: (0, import_math4.bn)(receipt.rc),
|
@@ -1420,7 +1480,7 @@ function assembleReceiptByType(receipt) {
|
|
1420
1480
|
case "LOG_DATA" /* LogData */: {
|
1421
1481
|
const logDataReceipt = {
|
1422
1482
|
type: import_transactions3.ReceiptType.LogData,
|
1423
|
-
id: hexOrZero(receipt.
|
1483
|
+
id: hexOrZero(receipt.id || receipt.contractId),
|
1424
1484
|
val0: (0, import_math4.bn)(receipt.ra),
|
1425
1485
|
val1: (0, import_math4.bn)(receipt.rb),
|
1426
1486
|
ptr: (0, import_math4.bn)(receipt.ptr),
|
@@ -1434,8 +1494,8 @@ function assembleReceiptByType(receipt) {
|
|
1434
1494
|
case "TRANSFER" /* Transfer */: {
|
1435
1495
|
const transferReceipt = {
|
1436
1496
|
type: import_transactions3.ReceiptType.Transfer,
|
1437
|
-
from: hexOrZero(receipt.
|
1438
|
-
to: hexOrZero(receipt.toAddress || receipt?.to
|
1497
|
+
from: hexOrZero(receipt.id || receipt.contractId),
|
1498
|
+
to: hexOrZero(receipt.toAddress || receipt?.to),
|
1439
1499
|
amount: (0, import_math4.bn)(receipt.amount),
|
1440
1500
|
assetId: hexOrZero(receipt.assetId),
|
1441
1501
|
pc: (0, import_math4.bn)(receipt.pc),
|
@@ -1446,8 +1506,8 @@ function assembleReceiptByType(receipt) {
|
|
1446
1506
|
case "TRANSFER_OUT" /* TransferOut */: {
|
1447
1507
|
const transferOutReceipt = {
|
1448
1508
|
type: import_transactions3.ReceiptType.TransferOut,
|
1449
|
-
from: hexOrZero(receipt.
|
1450
|
-
to: hexOrZero(receipt.toAddress || receipt.to
|
1509
|
+
from: hexOrZero(receipt.id || receipt.contractId),
|
1510
|
+
to: hexOrZero(receipt.toAddress || receipt.to),
|
1451
1511
|
amount: (0, import_math4.bn)(receipt.amount),
|
1452
1512
|
assetId: hexOrZero(receipt.assetId),
|
1453
1513
|
pc: (0, import_math4.bn)(receipt.pc),
|
@@ -1490,7 +1550,7 @@ function assembleReceiptByType(receipt) {
|
|
1490
1550
|
return receiptMessageOut;
|
1491
1551
|
}
|
1492
1552
|
case "MINT" /* Mint */: {
|
1493
|
-
const contractId = hexOrZero(receipt.
|
1553
|
+
const contractId = hexOrZero(receipt.id || receipt.contractId);
|
1494
1554
|
const subId = hexOrZero(receipt.subId);
|
1495
1555
|
const assetId = import_transactions3.ReceiptMintCoder.getAssetId(contractId, subId);
|
1496
1556
|
const mintReceipt = {
|
@@ -1505,7 +1565,7 @@ function assembleReceiptByType(receipt) {
|
|
1505
1565
|
return mintReceipt;
|
1506
1566
|
}
|
1507
1567
|
case "BURN" /* Burn */: {
|
1508
|
-
const contractId = hexOrZero(receipt.
|
1568
|
+
const contractId = hexOrZero(receipt.id || receipt.contractId);
|
1509
1569
|
const subId = hexOrZero(receipt.subId);
|
1510
1570
|
const assetId = import_transactions3.ReceiptBurnCoder.getAssetId(contractId, subId);
|
1511
1571
|
const burnReceipt = {
|
@@ -1590,7 +1650,6 @@ var buildBlockExplorerUrl = (options = {}) => {
|
|
1590
1650
|
var import_math5 = require("@fuel-ts/math");
|
1591
1651
|
var import_transactions4 = require("@fuel-ts/transactions");
|
1592
1652
|
var import_utils6 = require("@fuel-ts/utils");
|
1593
|
-
var calculatePriceWithFactor = (gas, gasPrice, priceFactor) => (0, import_math5.bn)(Math.ceil(gas.mul(gasPrice).toNumber() / priceFactor.toNumber()));
|
1594
1653
|
var getGasUsedFromReceipts = (receipts) => {
|
1595
1654
|
const scriptResult = receipts.filter(
|
1596
1655
|
(receipt) => receipt.type === import_transactions4.ReceiptType.ScriptResult
|
@@ -1611,18 +1670,28 @@ function resolveGasDependentCosts(byteSize, gasDependentCost) {
|
|
1611
1670
|
}
|
1612
1671
|
function gasUsedByInputs(inputs, txBytesSize, gasCosts) {
|
1613
1672
|
const witnessCache = [];
|
1614
|
-
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) => {
|
1615
1688
|
if ("predicate" in input && input.predicate && input.predicate !== "0x") {
|
1616
1689
|
return total.add(
|
1617
|
-
|
1690
|
+
vmInitializationCost.add(resolveGasDependentCosts((0, import_utils6.arrayify)(input.predicate).length, gasCosts.contractRoot)).add((0, import_math5.bn)(input.predicateGasUsed))
|
1618
1691
|
);
|
1619
1692
|
}
|
1620
|
-
|
1621
|
-
|
1622
|
-
return total.add(gasCosts.ecr1);
|
1623
|
-
}
|
1624
|
-
return total;
|
1625
|
-
}, (0, import_math5.bn)());
|
1693
|
+
return total.add(gasCosts.ecr1);
|
1694
|
+
}, (0, import_math5.bn)(0));
|
1626
1695
|
return totalGas;
|
1627
1696
|
}
|
1628
1697
|
function getMinGas(params) {
|
@@ -1634,12 +1703,20 @@ function getMinGas(params) {
|
|
1634
1703
|
return minGas;
|
1635
1704
|
}
|
1636
1705
|
function getMaxGas(params) {
|
1637
|
-
const {
|
1706
|
+
const {
|
1707
|
+
gasPerByte,
|
1708
|
+
witnessesLength,
|
1709
|
+
witnessLimit,
|
1710
|
+
minGas,
|
1711
|
+
gasLimit = (0, import_math5.bn)(0),
|
1712
|
+
maxGasPerTx
|
1713
|
+
} = params;
|
1638
1714
|
let remainingAllowedWitnessGas = (0, import_math5.bn)(0);
|
1639
1715
|
if (witnessLimit?.gt(0) && witnessLimit.gte(witnessesLength)) {
|
1640
1716
|
remainingAllowedWitnessGas = (0, import_math5.bn)(witnessLimit).sub(witnessesLength).mul(gasPerByte);
|
1641
1717
|
}
|
1642
|
-
|
1718
|
+
const maxGas = remainingAllowedWitnessGas.add(minGas).add(gasLimit);
|
1719
|
+
return maxGas.gte(maxGasPerTx) ? maxGasPerTx : maxGas;
|
1643
1720
|
}
|
1644
1721
|
function calculateMetadataGasForTxCreate({
|
1645
1722
|
gasCosts,
|
@@ -1661,6 +1738,10 @@ function calculateMetadataGasForTxScript({
|
|
1661
1738
|
}) {
|
1662
1739
|
return resolveGasDependentCosts(txBytesSize, gasCosts.s256);
|
1663
1740
|
}
|
1741
|
+
var calculateGasFee = (params) => {
|
1742
|
+
const { gas, gasPrice, priceFactor, tip } = params;
|
1743
|
+
return gas.mul(gasPrice).div(priceFactor).add(tip);
|
1744
|
+
};
|
1664
1745
|
|
1665
1746
|
// src/providers/utils/json.ts
|
1666
1747
|
var import_utils7 = require("@fuel-ts/utils");
|
@@ -1809,7 +1890,7 @@ var witnessify = (value) => {
|
|
1809
1890
|
// src/providers/transaction-request/transaction-request.ts
|
1810
1891
|
var BaseTransactionRequest = class {
|
1811
1892
|
/** Gas price for transaction */
|
1812
|
-
|
1893
|
+
tip;
|
1813
1894
|
/** Block until which tx cannot be included */
|
1814
1895
|
maturity;
|
1815
1896
|
/** The maximum fee payable by this transaction using BASE_ASSET. */
|
@@ -1828,7 +1909,7 @@ var BaseTransactionRequest = class {
|
|
1828
1909
|
* @param baseTransactionRequest - Optional object containing properties to initialize the transaction request.
|
1829
1910
|
*/
|
1830
1911
|
constructor({
|
1831
|
-
|
1912
|
+
tip,
|
1832
1913
|
maturity,
|
1833
1914
|
maxFee,
|
1834
1915
|
witnessLimit,
|
@@ -1836,7 +1917,7 @@ var BaseTransactionRequest = class {
|
|
1836
1917
|
outputs,
|
1837
1918
|
witnesses
|
1838
1919
|
} = {}) {
|
1839
|
-
this.
|
1920
|
+
this.tip = (0, import_math7.bn)(tip);
|
1840
1921
|
this.maturity = maturity ?? 0;
|
1841
1922
|
this.witnessLimit = witnessLimit ? (0, import_math7.bn)(witnessLimit) : void 0;
|
1842
1923
|
this.maxFee = maxFee ? (0, import_math7.bn)(maxFee) : void 0;
|
@@ -1847,9 +1928,9 @@ var BaseTransactionRequest = class {
|
|
1847
1928
|
static getPolicyMeta(req) {
|
1848
1929
|
let policyTypes = 0;
|
1849
1930
|
const policies = [];
|
1850
|
-
if (req.
|
1851
|
-
policyTypes += import_transactions6.PolicyType.
|
1852
|
-
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 });
|
1853
1934
|
}
|
1854
1935
|
if (req.witnessLimit) {
|
1855
1936
|
policyTypes += import_transactions6.PolicyType.WitnessLimit;
|
@@ -2036,10 +2117,10 @@ var BaseTransactionRequest = class {
|
|
2036
2117
|
* @param predicate - Predicate bytes.
|
2037
2118
|
* @param predicateData - Predicate data bytes.
|
2038
2119
|
*/
|
2039
|
-
addCoinInput(coin
|
2120
|
+
addCoinInput(coin) {
|
2040
2121
|
const { assetId, owner, amount } = coin;
|
2041
2122
|
let witnessIndex;
|
2042
|
-
if (predicate) {
|
2123
|
+
if (coin.predicate) {
|
2043
2124
|
witnessIndex = 0;
|
2044
2125
|
} else {
|
2045
2126
|
witnessIndex = this.getCoinInputWitnessIndexByOwner(owner);
|
@@ -2054,9 +2135,7 @@ var BaseTransactionRequest = class {
|
|
2054
2135
|
amount,
|
2055
2136
|
assetId,
|
2056
2137
|
txPointer: "0x00000000000000000000000000000000",
|
2057
|
-
witnessIndex
|
2058
|
-
predicate: predicate?.bytes,
|
2059
|
-
predicateData: predicate?.predicateDataBytes
|
2138
|
+
witnessIndex
|
2060
2139
|
};
|
2061
2140
|
this.pushInput(input);
|
2062
2141
|
this.addChangeOutput(owner, assetId);
|
@@ -2069,11 +2148,11 @@ var BaseTransactionRequest = class {
|
|
2069
2148
|
* @param predicate - Predicate bytes.
|
2070
2149
|
* @param predicateData - Predicate data bytes.
|
2071
2150
|
*/
|
2072
|
-
addMessageInput(message
|
2151
|
+
addMessageInput(message) {
|
2073
2152
|
const { recipient, sender, amount } = message;
|
2074
2153
|
const assetId = import_configs7.BaseAssetId;
|
2075
2154
|
let witnessIndex;
|
2076
|
-
if (predicate) {
|
2155
|
+
if (message.predicate) {
|
2077
2156
|
witnessIndex = 0;
|
2078
2157
|
} else {
|
2079
2158
|
witnessIndex = this.getCoinInputWitnessIndexByOwner(recipient);
|
@@ -2087,9 +2166,7 @@ var BaseTransactionRequest = class {
|
|
2087
2166
|
sender: sender.toB256(),
|
2088
2167
|
recipient: recipient.toB256(),
|
2089
2168
|
amount,
|
2090
|
-
witnessIndex
|
2091
|
-
predicate: predicate?.bytes,
|
2092
|
-
predicateData: predicate?.predicateDataBytes
|
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, import_ethers.randomBytes)(
|
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, import_ethers.randomBytes)(
|
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
|
};
|
@@ -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
|
/**
|
@@ -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
|
|
@@ -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,
|
@@ -3488,12 +3581,12 @@ function assembleTransactionSummary(params) {
|
|
3488
3581
|
|
3489
3582
|
// src/providers/transaction-response/getDecodedLogs.ts
|
3490
3583
|
var import_abi_coder3 = require("@fuel-ts/abi-coder");
|
3491
|
-
var
|
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 ===
|
3587
|
+
if (receipt.type === import_transactions17.ReceiptType.LogData || receipt.type === import_transactions17.ReceiptType.Log) {
|
3495
3588
|
const interfaceToUse = new import_abi_coder3.Interface(externalAbis[receipt.id] || mainAbi);
|
3496
|
-
const data = receipt.type ===
|
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,
|
@@ -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,38 +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
|
-
*
|
4142
|
-
*
|
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.
|
4143
4248
|
*/
|
4144
|
-
|
4145
|
-
const
|
4146
|
-
|
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;
|
4147
4327
|
const chainInfo = this.getChain();
|
4148
|
-
const
|
4149
|
-
transactionRequest.gasPrice = gasPrice;
|
4328
|
+
const { gasPriceFactor } = this.getGasConfig();
|
4150
4329
|
const minGas = transactionRequest.calculateMinGas(chainInfo);
|
4151
|
-
|
4152
|
-
|
4153
|
-
|
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) {
|
4154
4343
|
transactionRequest.gasLimit = minGas;
|
4155
|
-
|
4156
|
-
|
4157
|
-
);
|
4344
|
+
gasLimit = transactionRequest.calculateMaxGas(chainInfo, minGas);
|
4345
|
+
transactionRequest.gasLimit = gasLimit;
|
4158
4346
|
}
|
4159
4347
|
}
|
4160
4348
|
const maxGas = transactionRequest.calculateMaxGas(chainInfo, minGas);
|
4161
|
-
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);
|
4162
4355
|
return {
|
4163
4356
|
minGas,
|
4164
4357
|
minFee,
|
4165
4358
|
maxGas,
|
4166
|
-
maxFee
|
4359
|
+
maxFee,
|
4360
|
+
gasPrice,
|
4361
|
+
gasLimit
|
4167
4362
|
};
|
4168
4363
|
}
|
4169
4364
|
/**
|
@@ -4181,15 +4376,17 @@ var _Provider = class {
|
|
4181
4376
|
if (estimateTxDependencies) {
|
4182
4377
|
return this.estimateTxDependencies(transactionRequest);
|
4183
4378
|
}
|
4184
|
-
const
|
4185
|
-
const { dryRun:
|
4186
|
-
|
4379
|
+
const encodedTransactions = [(0, import_utils22.hexlify)(transactionRequest.toTransactionBytes())];
|
4380
|
+
const { dryRun: dryRunStatuses } = await this.operations.dryRun({
|
4381
|
+
encodedTransactions,
|
4187
4382
|
utxoValidation: true
|
4188
4383
|
});
|
4189
|
-
const
|
4190
|
-
|
4191
|
-
receipts
|
4192
|
-
|
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 };
|
4193
4390
|
}
|
4194
4391
|
/**
|
4195
4392
|
* Returns a transaction cost to enable user
|
@@ -4206,77 +4403,80 @@ var _Provider = class {
|
|
4206
4403
|
* @param tolerance - The tolerance to add on top of the gasUsed.
|
4207
4404
|
* @returns A promise that resolves to the transaction cost object.
|
4208
4405
|
*/
|
4209
|
-
async getTransactionCost(transactionRequestLike,
|
4210
|
-
estimateTxDependencies = true,
|
4211
|
-
estimatePredicates = true,
|
4212
|
-
resourcesOwner,
|
4213
|
-
signatureCallback
|
4214
|
-
} = {}) {
|
4406
|
+
async getTransactionCost(transactionRequestLike, { resourcesOwner, signatureCallback, quantitiesToContract = [] } = {}) {
|
4215
4407
|
const txRequestClone = (0, import_ramda3.clone)(transactionRequestify(transactionRequestLike));
|
4216
|
-
const
|
4217
|
-
const setGasPrice = (0, import_math15.max)(txRequestClone.gasPrice, minGasPrice);
|
4218
|
-
const isScriptTransaction = txRequestClone.type === import_transactions18.TransactionType.Script;
|
4408
|
+
const isScriptTransaction = txRequestClone.type === import_transactions19.TransactionType.Script;
|
4219
4409
|
const coinOutputsQuantities = txRequestClone.getCoinOutputsQuantities();
|
4220
|
-
const allQuantities = mergeQuantities(coinOutputsQuantities,
|
4410
|
+
const allQuantities = mergeQuantities(coinOutputsQuantities, quantitiesToContract);
|
4221
4411
|
txRequestClone.fundWithFakeUtxos(allQuantities, resourcesOwner?.address);
|
4412
|
+
txRequestClone.maxFee = (0, import_math16.bn)(0);
|
4222
4413
|
if (isScriptTransaction) {
|
4223
|
-
txRequestClone.gasLimit = (0,
|
4414
|
+
txRequestClone.gasLimit = (0, import_math16.bn)(0);
|
4224
4415
|
}
|
4225
|
-
if (
|
4226
|
-
|
4227
|
-
resourcesOwner.populateTransactionPredicateData(txRequestClone);
|
4228
|
-
}
|
4229
|
-
await this.estimatePredicates(txRequestClone);
|
4416
|
+
if (resourcesOwner && "populateTransactionPredicateData" in resourcesOwner) {
|
4417
|
+
resourcesOwner.populateTransactionPredicateData(txRequestClone);
|
4230
4418
|
}
|
4419
|
+
const signedRequest = (0, import_ramda3.clone)(txRequestClone);
|
4420
|
+
let addedSignatures = 0;
|
4231
4421
|
if (signatureCallback && isScriptTransaction) {
|
4232
|
-
|
4233
|
-
|
4234
|
-
|
4235
|
-
|
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
|
4236
4430
|
});
|
4431
|
+
txRequestClone.maxFee = maxFee;
|
4237
4432
|
let receipts = [];
|
4238
4433
|
let missingContractIds = [];
|
4239
4434
|
let outputVariables = 0;
|
4240
|
-
let gasUsed = (0,
|
4241
|
-
|
4242
|
-
|
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;
|
4243
4442
|
const result = await this.estimateTxDependencies(txRequestClone);
|
4244
4443
|
receipts = result.receipts;
|
4245
4444
|
outputVariables = result.outputVariables;
|
4246
4445
|
missingContractIds = result.missingContractIds;
|
4247
|
-
gasUsed =
|
4446
|
+
gasUsed = getGasUsedFromReceipts(receipts);
|
4248
4447
|
txRequestClone.gasLimit = gasUsed;
|
4249
|
-
|
4250
|
-
|
4251
|
-
|
4448
|
+
({ maxFee, maxGas, minFee, minGas, gasPrice } = await this.estimateTxGasAndFee({
|
4449
|
+
transactionRequest: txRequestClone,
|
4450
|
+
gasPrice
|
4252
4451
|
}));
|
4253
4452
|
}
|
4254
4453
|
return {
|
4255
4454
|
requiredQuantities: allQuantities,
|
4256
4455
|
receipts,
|
4257
4456
|
gasUsed,
|
4258
|
-
|
4259
|
-
gasPrice: setGasPrice,
|
4457
|
+
gasPrice,
|
4260
4458
|
minGas,
|
4261
4459
|
maxGas,
|
4262
4460
|
minFee,
|
4263
4461
|
maxFee,
|
4264
|
-
estimatedInputs: txRequestClone.inputs,
|
4265
4462
|
outputVariables,
|
4266
|
-
missingContractIds
|
4463
|
+
missingContractIds,
|
4464
|
+
addedSignatures,
|
4465
|
+
estimatedPredicates: txRequestClone.inputs
|
4267
4466
|
};
|
4268
4467
|
}
|
4269
|
-
async getResourcesForTransaction(owner, transactionRequestLike,
|
4468
|
+
async getResourcesForTransaction(owner, transactionRequestLike, quantitiesToContract = []) {
|
4270
4469
|
const ownerAddress = import_address3.Address.fromAddressOrString(owner);
|
4271
4470
|
const transactionRequest = transactionRequestify((0, import_ramda3.clone)(transactionRequestLike));
|
4272
|
-
const transactionCost = await this.getTransactionCost(transactionRequest,
|
4471
|
+
const transactionCost = await this.getTransactionCost(transactionRequest, {
|
4472
|
+
quantitiesToContract
|
4473
|
+
});
|
4273
4474
|
transactionRequest.addResources(
|
4274
4475
|
await this.getResourcesToSpend(ownerAddress, transactionCost.requiredQuantities)
|
4275
4476
|
);
|
4276
|
-
const { requiredQuantities, ...txCost } = await this.getTransactionCost(
|
4277
|
-
|
4278
|
-
|
4279
|
-
);
|
4477
|
+
const { requiredQuantities, ...txCost } = await this.getTransactionCost(transactionRequest, {
|
4478
|
+
quantitiesToContract
|
4479
|
+
});
|
4280
4480
|
const resources = await this.getResourcesToSpend(ownerAddress, requiredQuantities);
|
4281
4481
|
return {
|
4282
4482
|
resources,
|
@@ -4292,17 +4492,16 @@ var _Provider = class {
|
|
4292
4492
|
const result = await this.operations.getCoins({
|
4293
4493
|
first: 10,
|
4294
4494
|
...paginationArgs,
|
4295
|
-
filter: { owner: ownerAddress.toB256(), assetId: assetId && (0,
|
4495
|
+
filter: { owner: ownerAddress.toB256(), assetId: assetId && (0, import_utils22.hexlify)(assetId) }
|
4296
4496
|
});
|
4297
4497
|
const coins = result.coins.edges.map((edge) => edge.node);
|
4298
4498
|
return coins.map((coin) => ({
|
4299
4499
|
id: coin.utxoId,
|
4300
4500
|
assetId: coin.assetId,
|
4301
|
-
amount: (0,
|
4501
|
+
amount: (0, import_math16.bn)(coin.amount),
|
4302
4502
|
owner: import_address3.Address.fromAddressOrString(coin.owner),
|
4303
|
-
|
4304
|
-
|
4305
|
-
txCreatedIdx: (0, import_math15.bn)(coin.txCreatedIdx)
|
4503
|
+
blockCreated: (0, import_math16.bn)(coin.blockCreated),
|
4504
|
+
txCreatedIdx: (0, import_math16.bn)(coin.txCreatedIdx)
|
4306
4505
|
}));
|
4307
4506
|
}
|
4308
4507
|
/**
|
@@ -4316,19 +4515,19 @@ var _Provider = class {
|
|
4316
4515
|
async getResourcesToSpend(owner, quantities, excludedIds) {
|
4317
4516
|
const ownerAddress = import_address3.Address.fromAddressOrString(owner);
|
4318
4517
|
const excludeInput = {
|
4319
|
-
messages: excludedIds?.messages?.map((nonce) => (0,
|
4320
|
-
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)) || []
|
4321
4520
|
};
|
4322
4521
|
if (this.cache) {
|
4323
4522
|
const uniqueUtxos = new Set(
|
4324
|
-
excludeInput.utxos.concat(this.cache?.getActiveData().map((id) => (0,
|
4523
|
+
excludeInput.utxos.concat(this.cache?.getActiveData().map((id) => (0, import_utils22.hexlify)(id)))
|
4325
4524
|
);
|
4326
4525
|
excludeInput.utxos = Array.from(uniqueUtxos);
|
4327
4526
|
}
|
4328
4527
|
const coinsQuery = {
|
4329
4528
|
owner: ownerAddress.toB256(),
|
4330
4529
|
queryPerAsset: quantities.map(coinQuantityfy).map(({ assetId, amount, max: maxPerAsset }) => ({
|
4331
|
-
assetId: (0,
|
4530
|
+
assetId: (0, import_utils22.hexlify)(assetId),
|
4332
4531
|
amount: amount.toString(10),
|
4333
4532
|
max: maxPerAsset ? maxPerAsset.toString(10) : void 0
|
4334
4533
|
})),
|
@@ -4339,9 +4538,9 @@ var _Provider = class {
|
|
4339
4538
|
switch (coin.__typename) {
|
4340
4539
|
case "MessageCoin":
|
4341
4540
|
return {
|
4342
|
-
amount: (0,
|
4541
|
+
amount: (0, import_math16.bn)(coin.amount),
|
4343
4542
|
assetId: coin.assetId,
|
4344
|
-
daHeight: (0,
|
4543
|
+
daHeight: (0, import_math16.bn)(coin.daHeight),
|
4345
4544
|
sender: import_address3.Address.fromAddressOrString(coin.sender),
|
4346
4545
|
recipient: import_address3.Address.fromAddressOrString(coin.recipient),
|
4347
4546
|
nonce: coin.nonce
|
@@ -4349,12 +4548,11 @@ var _Provider = class {
|
|
4349
4548
|
case "Coin":
|
4350
4549
|
return {
|
4351
4550
|
id: coin.utxoId,
|
4352
|
-
amount: (0,
|
4551
|
+
amount: (0, import_math16.bn)(coin.amount),
|
4353
4552
|
assetId: coin.assetId,
|
4354
4553
|
owner: import_address3.Address.fromAddressOrString(coin.owner),
|
4355
|
-
|
4356
|
-
|
4357
|
-
txCreatedIdx: (0, import_math15.bn)(coin.txCreatedIdx)
|
4554
|
+
blockCreated: (0, import_math16.bn)(coin.blockCreated),
|
4555
|
+
txCreatedIdx: (0, import_math16.bn)(coin.txCreatedIdx)
|
4358
4556
|
};
|
4359
4557
|
default:
|
4360
4558
|
return null;
|
@@ -4371,13 +4569,13 @@ var _Provider = class {
|
|
4371
4569
|
async getBlock(idOrHeight) {
|
4372
4570
|
let variables;
|
4373
4571
|
if (typeof idOrHeight === "number") {
|
4374
|
-
variables = { height: (0,
|
4572
|
+
variables = { height: (0, import_math16.bn)(idOrHeight).toString(10) };
|
4375
4573
|
} else if (idOrHeight === "latest") {
|
4376
4574
|
variables = { height: (await this.getBlockNumber()).toString(10) };
|
4377
4575
|
} else if (idOrHeight.length === 66) {
|
4378
4576
|
variables = { blockId: idOrHeight };
|
4379
4577
|
} else {
|
4380
|
-
variables = { blockId: (0,
|
4578
|
+
variables = { blockId: (0, import_math16.bn)(idOrHeight).toString(10) };
|
4381
4579
|
}
|
4382
4580
|
const { block } = await this.operations.getBlock(variables);
|
4383
4581
|
if (!block) {
|
@@ -4385,7 +4583,7 @@ var _Provider = class {
|
|
4385
4583
|
}
|
4386
4584
|
return {
|
4387
4585
|
id: block.id,
|
4388
|
-
height: (0,
|
4586
|
+
height: (0, import_math16.bn)(block.height),
|
4389
4587
|
time: block.header.time,
|
4390
4588
|
transactionIds: block.transactions.map((tx) => tx.id)
|
4391
4589
|
};
|
@@ -4400,7 +4598,7 @@ var _Provider = class {
|
|
4400
4598
|
const { blocks: fetchedData } = await this.operations.getBlocks(params);
|
4401
4599
|
const blocks = fetchedData.edges.map(({ node: block }) => ({
|
4402
4600
|
id: block.id,
|
4403
|
-
height: (0,
|
4601
|
+
height: (0, import_math16.bn)(block.height),
|
4404
4602
|
time: block.header.time,
|
4405
4603
|
transactionIds: block.transactions.map((tx) => tx.id)
|
4406
4604
|
}));
|
@@ -4415,7 +4613,7 @@ var _Provider = class {
|
|
4415
4613
|
async getBlockWithTransactions(idOrHeight) {
|
4416
4614
|
let variables;
|
4417
4615
|
if (typeof idOrHeight === "number") {
|
4418
|
-
variables = { blockHeight: (0,
|
4616
|
+
variables = { blockHeight: (0, import_math16.bn)(idOrHeight).toString(10) };
|
4419
4617
|
} else if (idOrHeight === "latest") {
|
4420
4618
|
variables = { blockHeight: (await this.getBlockNumber()).toString() };
|
4421
4619
|
} else {
|
@@ -4427,11 +4625,11 @@ var _Provider = class {
|
|
4427
4625
|
}
|
4428
4626
|
return {
|
4429
4627
|
id: block.id,
|
4430
|
-
height: (0,
|
4628
|
+
height: (0, import_math16.bn)(block.height, 10),
|
4431
4629
|
time: block.header.time,
|
4432
4630
|
transactionIds: block.transactions.map((tx) => tx.id),
|
4433
4631
|
transactions: block.transactions.map(
|
4434
|
-
(tx) => new
|
4632
|
+
(tx) => new import_transactions19.TransactionCoder().decode((0, import_utils22.arrayify)(tx.rawPayload), 0)?.[0]
|
4435
4633
|
)
|
4436
4634
|
};
|
4437
4635
|
}
|
@@ -4446,8 +4644,8 @@ var _Provider = class {
|
|
4446
4644
|
if (!transaction) {
|
4447
4645
|
return null;
|
4448
4646
|
}
|
4449
|
-
return new
|
4450
|
-
(0,
|
4647
|
+
return new import_transactions19.TransactionCoder().decode(
|
4648
|
+
(0, import_utils22.arrayify)(transaction.rawPayload),
|
4451
4649
|
0
|
4452
4650
|
)?.[0];
|
4453
4651
|
}
|
@@ -4474,9 +4672,9 @@ var _Provider = class {
|
|
4474
4672
|
async getContractBalance(contractId, assetId) {
|
4475
4673
|
const { contractBalance } = await this.operations.getContractBalance({
|
4476
4674
|
contract: import_address3.Address.fromAddressOrString(contractId).toB256(),
|
4477
|
-
asset: (0,
|
4675
|
+
asset: (0, import_utils22.hexlify)(assetId)
|
4478
4676
|
});
|
4479
|
-
return (0,
|
4677
|
+
return (0, import_math16.bn)(contractBalance.amount, 10);
|
4480
4678
|
}
|
4481
4679
|
/**
|
4482
4680
|
* Returns the balance for the given owner for the given asset ID.
|
@@ -4488,9 +4686,9 @@ var _Provider = class {
|
|
4488
4686
|
async getBalance(owner, assetId) {
|
4489
4687
|
const { balance } = await this.operations.getBalance({
|
4490
4688
|
owner: import_address3.Address.fromAddressOrString(owner).toB256(),
|
4491
|
-
assetId: (0,
|
4689
|
+
assetId: (0, import_utils22.hexlify)(assetId)
|
4492
4690
|
});
|
4493
|
-
return (0,
|
4691
|
+
return (0, import_math16.bn)(balance.amount, 10);
|
4494
4692
|
}
|
4495
4693
|
/**
|
4496
4694
|
* Returns balances for the given owner.
|
@@ -4508,7 +4706,7 @@ var _Provider = class {
|
|
4508
4706
|
const balances = result.balances.edges.map((edge) => edge.node);
|
4509
4707
|
return balances.map((balance) => ({
|
4510
4708
|
assetId: balance.assetId,
|
4511
|
-
amount: (0,
|
4709
|
+
amount: (0, import_math16.bn)(balance.amount)
|
4512
4710
|
}));
|
4513
4711
|
}
|
4514
4712
|
/**
|
@@ -4526,19 +4724,19 @@ var _Provider = class {
|
|
4526
4724
|
});
|
4527
4725
|
const messages = result.messages.edges.map((edge) => edge.node);
|
4528
4726
|
return messages.map((message) => ({
|
4529
|
-
messageId:
|
4727
|
+
messageId: import_transactions19.InputMessageCoder.getMessageId({
|
4530
4728
|
sender: message.sender,
|
4531
4729
|
recipient: message.recipient,
|
4532
4730
|
nonce: message.nonce,
|
4533
|
-
amount: (0,
|
4731
|
+
amount: (0, import_math16.bn)(message.amount),
|
4534
4732
|
data: message.data
|
4535
4733
|
}),
|
4536
4734
|
sender: import_address3.Address.fromAddressOrString(message.sender),
|
4537
4735
|
recipient: import_address3.Address.fromAddressOrString(message.recipient),
|
4538
4736
|
nonce: message.nonce,
|
4539
|
-
amount: (0,
|
4540
|
-
data:
|
4541
|
-
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)
|
4542
4740
|
}));
|
4543
4741
|
}
|
4544
4742
|
/**
|
@@ -4591,44 +4789,52 @@ var _Provider = class {
|
|
4591
4789
|
} = result.messageProof;
|
4592
4790
|
return {
|
4593
4791
|
messageProof: {
|
4594
|
-
proofIndex: (0,
|
4792
|
+
proofIndex: (0, import_math16.bn)(messageProof.proofIndex),
|
4595
4793
|
proofSet: messageProof.proofSet
|
4596
4794
|
},
|
4597
4795
|
blockProof: {
|
4598
|
-
proofIndex: (0,
|
4796
|
+
proofIndex: (0, import_math16.bn)(blockProof.proofIndex),
|
4599
4797
|
proofSet: blockProof.proofSet
|
4600
4798
|
},
|
4601
4799
|
messageBlockHeader: {
|
4602
4800
|
id: messageBlockHeader.id,
|
4603
|
-
daHeight: (0,
|
4604
|
-
transactionsCount: (0,
|
4801
|
+
daHeight: (0, import_math16.bn)(messageBlockHeader.daHeight),
|
4802
|
+
transactionsCount: (0, import_math16.bn)(messageBlockHeader.transactionsCount),
|
4605
4803
|
transactionsRoot: messageBlockHeader.transactionsRoot,
|
4606
|
-
height: (0,
|
4804
|
+
height: (0, import_math16.bn)(messageBlockHeader.height),
|
4607
4805
|
prevRoot: messageBlockHeader.prevRoot,
|
4608
4806
|
time: messageBlockHeader.time,
|
4609
4807
|
applicationHash: messageBlockHeader.applicationHash,
|
4610
|
-
|
4611
|
-
messageReceiptCount: (0, import_math15.bn)(messageBlockHeader.messageReceiptCount)
|
4808
|
+
messageReceiptCount: (0, import_math16.bn)(messageBlockHeader.messageReceiptCount)
|
4612
4809
|
},
|
4613
4810
|
commitBlockHeader: {
|
4614
4811
|
id: commitBlockHeader.id,
|
4615
|
-
daHeight: (0,
|
4616
|
-
transactionsCount: (0,
|
4812
|
+
daHeight: (0, import_math16.bn)(commitBlockHeader.daHeight),
|
4813
|
+
transactionsCount: (0, import_math16.bn)(commitBlockHeader.transactionsCount),
|
4617
4814
|
transactionsRoot: commitBlockHeader.transactionsRoot,
|
4618
|
-
height: (0,
|
4815
|
+
height: (0, import_math16.bn)(commitBlockHeader.height),
|
4619
4816
|
prevRoot: commitBlockHeader.prevRoot,
|
4620
4817
|
time: commitBlockHeader.time,
|
4621
4818
|
applicationHash: commitBlockHeader.applicationHash,
|
4622
|
-
|
4623
|
-
messageReceiptCount: (0, import_math15.bn)(commitBlockHeader.messageReceiptCount)
|
4819
|
+
messageReceiptCount: (0, import_math16.bn)(commitBlockHeader.messageReceiptCount)
|
4624
4820
|
},
|
4625
4821
|
sender: import_address3.Address.fromAddressOrString(sender),
|
4626
4822
|
recipient: import_address3.Address.fromAddressOrString(recipient),
|
4627
4823
|
nonce,
|
4628
|
-
amount: (0,
|
4824
|
+
amount: (0, import_math16.bn)(amount),
|
4629
4825
|
data
|
4630
4826
|
};
|
4631
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
|
+
}
|
4632
4838
|
/**
|
4633
4839
|
* Returns Message Proof for given transaction id and the message id from MessageOut receipt.
|
4634
4840
|
*
|
@@ -4648,10 +4854,10 @@ var _Provider = class {
|
|
4648
4854
|
*/
|
4649
4855
|
async produceBlocks(amount, startTime) {
|
4650
4856
|
const { produceBlocks: latestBlockHeight } = await this.operations.produceBlocks({
|
4651
|
-
blocksToProduce: (0,
|
4652
|
-
startTimestamp: startTime ?
|
4857
|
+
blocksToProduce: (0, import_math16.bn)(amount).toString(10),
|
4858
|
+
startTimestamp: startTime ? import_utils22.DateTime.fromUnixMilliseconds(startTime).toTai64() : void 0
|
4653
4859
|
});
|
4654
|
-
return (0,
|
4860
|
+
return (0, import_math16.bn)(latestBlockHeight);
|
4655
4861
|
}
|
4656
4862
|
// eslint-disable-next-line @typescript-eslint/require-await
|
4657
4863
|
async getTransactionResponse(transactionId) {
|
@@ -4665,7 +4871,7 @@ cacheInputs_fn = function(inputs) {
|
|
4665
4871
|
return;
|
4666
4872
|
}
|
4667
4873
|
inputs.forEach((input) => {
|
4668
|
-
if (input.type ===
|
4874
|
+
if (input.type === import_transactions19.InputType.Coin) {
|
4669
4875
|
this.cache?.set(input.id);
|
4670
4876
|
}
|
4671
4877
|
});
|
@@ -4675,9 +4881,9 @@ __publicField(Provider, "nodeInfoCache", {});
|
|
4675
4881
|
|
4676
4882
|
// src/providers/transaction-summary/get-transaction-summary.ts
|
4677
4883
|
var import_errors15 = require("@fuel-ts/errors");
|
4678
|
-
var
|
4679
|
-
var
|
4680
|
-
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");
|
4681
4887
|
async function getTransactionSummary(params) {
|
4682
4888
|
const { id, provider, abiMap } = params;
|
4683
4889
|
const { transaction: gqlTransaction } = await provider.operations.getTransactionWithReceipts({
|
@@ -4689,25 +4895,32 @@ async function getTransactionSummary(params) {
|
|
4689
4895
|
`Transaction not found for given id: ${id}.`
|
4690
4896
|
);
|
4691
4897
|
}
|
4692
|
-
const [decodedTransaction] = new
|
4693
|
-
(0,
|
4898
|
+
const [decodedTransaction] = new import_transactions20.TransactionCoder().decode(
|
4899
|
+
(0, import_utils25.arrayify)(gqlTransaction.rawPayload),
|
4694
4900
|
0
|
4695
4901
|
);
|
4696
|
-
|
4902
|
+
let txReceipts = [];
|
4903
|
+
if (gqlTransaction?.status && "receipts" in gqlTransaction.status) {
|
4904
|
+
txReceipts = gqlTransaction.status.receipts;
|
4905
|
+
}
|
4906
|
+
const receipts = txReceipts.map(processGqlReceipt);
|
4697
4907
|
const {
|
4698
|
-
consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts }
|
4908
|
+
consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts, maxGasPerTx }
|
4699
4909
|
} = provider.getChain();
|
4910
|
+
const gasPrice = await provider.getLatestGasPrice();
|
4700
4911
|
const transactionInfo = assembleTransactionSummary({
|
4701
4912
|
id: gqlTransaction.id,
|
4702
4913
|
receipts,
|
4703
4914
|
transaction: decodedTransaction,
|
4704
|
-
transactionBytes: (0,
|
4915
|
+
transactionBytes: (0, import_utils25.arrayify)(gqlTransaction.rawPayload),
|
4705
4916
|
gqlTransactionStatus: gqlTransaction.status,
|
4706
|
-
gasPerByte: (0,
|
4707
|
-
gasPriceFactor: (0,
|
4917
|
+
gasPerByte: (0, import_math17.bn)(gasPerByte),
|
4918
|
+
gasPriceFactor: (0, import_math17.bn)(gasPriceFactor),
|
4708
4919
|
abiMap,
|
4709
4920
|
maxInputs,
|
4710
|
-
gasCosts
|
4921
|
+
gasCosts,
|
4922
|
+
maxGasPerTx,
|
4923
|
+
gasPrice
|
4711
4924
|
});
|
4712
4925
|
return {
|
4713
4926
|
gqlTransaction,
|
@@ -4717,10 +4930,11 @@ async function getTransactionSummary(params) {
|
|
4717
4930
|
async function getTransactionSummaryFromRequest(params) {
|
4718
4931
|
const { provider, transactionRequest, abiMap } = params;
|
4719
4932
|
const { receipts } = await provider.call(transactionRequest);
|
4720
|
-
const { gasPerByte, gasPriceFactor, gasCosts } = provider.getGasConfig();
|
4933
|
+
const { gasPerByte, gasPriceFactor, gasCosts, maxGasPerTx } = provider.getGasConfig();
|
4721
4934
|
const maxInputs = provider.getChain().consensusParameters.maxInputs;
|
4722
4935
|
const transaction = transactionRequest.toTransaction();
|
4723
4936
|
const transactionBytes = transactionRequest.toTransactionBytes();
|
4937
|
+
const gasPrice = await provider.getLatestGasPrice();
|
4724
4938
|
const transactionSummary = assembleTransactionSummary({
|
4725
4939
|
receipts,
|
4726
4940
|
transaction,
|
@@ -4729,7 +4943,9 @@ async function getTransactionSummaryFromRequest(params) {
|
|
4729
4943
|
gasPerByte,
|
4730
4944
|
gasPriceFactor,
|
4731
4945
|
maxInputs,
|
4732
|
-
gasCosts
|
4946
|
+
gasCosts,
|
4947
|
+
maxGasPerTx,
|
4948
|
+
gasPrice
|
4733
4949
|
});
|
4734
4950
|
return transactionSummary;
|
4735
4951
|
}
|
@@ -4738,24 +4954,31 @@ async function getTransactionsSummaries(params) {
|
|
4738
4954
|
const { transactionsByOwner } = await provider.operations.getTransactionsByOwner(filters);
|
4739
4955
|
const { edges, pageInfo } = transactionsByOwner;
|
4740
4956
|
const {
|
4741
|
-
consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts }
|
4957
|
+
consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts, maxGasPerTx }
|
4742
4958
|
} = provider.getChain();
|
4959
|
+
const gasPrice = await provider.getLatestGasPrice();
|
4743
4960
|
const transactions = edges.map((edge) => {
|
4744
4961
|
const { node: gqlTransaction } = edge;
|
4745
|
-
const { id, rawPayload,
|
4746
|
-
const [decodedTransaction] = new
|
4747
|
-
|
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);
|
4748
4969
|
const transactionSummary = assembleTransactionSummary({
|
4749
4970
|
id,
|
4750
4971
|
receipts,
|
4751
4972
|
transaction: decodedTransaction,
|
4752
|
-
transactionBytes: (0,
|
4973
|
+
transactionBytes: (0, import_utils25.arrayify)(rawPayload),
|
4753
4974
|
gqlTransactionStatus: status,
|
4754
4975
|
abiMap,
|
4755
4976
|
gasPerByte,
|
4756
4977
|
gasPriceFactor,
|
4757
4978
|
maxInputs,
|
4758
|
-
gasCosts
|
4979
|
+
gasCosts,
|
4980
|
+
maxGasPerTx,
|
4981
|
+
gasPrice
|
4759
4982
|
});
|
4760
4983
|
const output = {
|
4761
4984
|
gqlTransaction,
|
@@ -4892,17 +5115,17 @@ var assets = [
|
|
4892
5115
|
|
4893
5116
|
// src/utils/formatTransferToContractScriptData.ts
|
4894
5117
|
var import_abi_coder4 = require("@fuel-ts/abi-coder");
|
4895
|
-
var
|
4896
|
-
var
|
5118
|
+
var import_math18 = require("@fuel-ts/math");
|
5119
|
+
var import_utils26 = require("@fuel-ts/utils");
|
4897
5120
|
var asm = __toESM(require("@fuels/vm-asm"));
|
4898
5121
|
var formatTransferToContractScriptData = (params) => {
|
4899
5122
|
const { assetId, amountToTransfer, hexlifiedContractId } = params;
|
4900
5123
|
const numberCoder = new import_abi_coder4.BigNumberCoder("u64");
|
4901
|
-
const encoded = numberCoder.encode(new
|
5124
|
+
const encoded = numberCoder.encode(new import_math18.BN(amountToTransfer).toNumber());
|
4902
5125
|
const scriptData = Uint8Array.from([
|
4903
|
-
...(0,
|
5126
|
+
...(0, import_utils26.arrayify)(hexlifiedContractId),
|
4904
5127
|
...encoded,
|
4905
|
-
...(0,
|
5128
|
+
...(0, import_utils26.arrayify)(assetId)
|
4906
5129
|
]);
|
4907
5130
|
return scriptData;
|
4908
5131
|
};
|
@@ -5087,36 +5310,33 @@ var Account = class extends import_interfaces.AbstractAccount {
|
|
5087
5310
|
* @param fee - The estimated transaction fee.
|
5088
5311
|
* @returns A promise that resolves when the resources are added to the transaction.
|
5089
5312
|
*/
|
5090
|
-
async fund(request,
|
5091
|
-
const
|
5092
|
-
|
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),
|
5093
5318
|
assetId: import_configs12.BaseAssetId,
|
5094
|
-
coinQuantities
|
5319
|
+
coinQuantities: requiredQuantities
|
5095
5320
|
});
|
5096
5321
|
const quantitiesDict = {};
|
5097
|
-
|
5322
|
+
requiredQuantitiesWithFee.forEach(({ amount, assetId }) => {
|
5098
5323
|
quantitiesDict[assetId] = {
|
5099
5324
|
required: amount,
|
5100
|
-
owned: (0,
|
5325
|
+
owned: (0, import_math19.bn)(0)
|
5101
5326
|
};
|
5102
5327
|
});
|
5103
|
-
|
5104
|
-
const cachedMessages = [];
|
5105
|
-
const owner = this.address.toB256();
|
5106
|
-
request.inputs.forEach((input) => {
|
5328
|
+
txRequest.inputs.forEach((input) => {
|
5107
5329
|
const isResource = "amount" in input;
|
5108
5330
|
if (isResource) {
|
5109
5331
|
const isCoin2 = "owner" in input;
|
5110
5332
|
if (isCoin2) {
|
5111
5333
|
const assetId = String(input.assetId);
|
5112
|
-
if (
|
5113
|
-
const amount = (0,
|
5334
|
+
if (quantitiesDict[assetId]) {
|
5335
|
+
const amount = (0, import_math19.bn)(input.amount);
|
5114
5336
|
quantitiesDict[assetId].owned = quantitiesDict[assetId].owned.add(amount);
|
5115
|
-
cachedUtxos.push(input.id);
|
5116
5337
|
}
|
5117
|
-
} else if (input.
|
5338
|
+
} else if (input.amount && quantitiesDict[import_configs12.BaseAssetId]) {
|
5118
5339
|
quantitiesDict[import_configs12.BaseAssetId].owned = quantitiesDict[import_configs12.BaseAssetId].owned.add(input.amount);
|
5119
|
-
cachedMessages.push(input.nonce);
|
5120
5340
|
}
|
5121
5341
|
}
|
5122
5342
|
});
|
@@ -5131,12 +5351,23 @@ var Account = class extends import_interfaces.AbstractAccount {
|
|
5131
5351
|
});
|
5132
5352
|
const needsToBeFunded = missingQuantities.length;
|
5133
5353
|
if (needsToBeFunded) {
|
5134
|
-
const
|
5135
|
-
|
5136
|
-
|
5137
|
-
|
5138
|
-
|
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
|
+
);
|
5139
5365
|
}
|
5366
|
+
const { maxFee } = await this.provider.estimateTxGasAndFee({
|
5367
|
+
transactionRequest: requestToBeReEstimate
|
5368
|
+
});
|
5369
|
+
txRequest.maxFee = maxFee;
|
5370
|
+
return txRequest;
|
5140
5371
|
}
|
5141
5372
|
/**
|
5142
5373
|
* A helper that creates a transfer transaction request and returns it.
|
@@ -5144,28 +5375,25 @@ var Account = class extends import_interfaces.AbstractAccount {
|
|
5144
5375
|
* @param destination - The address of the destination.
|
5145
5376
|
* @param amount - The amount of coins to transfer.
|
5146
5377
|
* @param assetId - The asset ID of the coins to transfer.
|
5147
|
-
* @param txParams - The transaction parameters (gasLimit,
|
5378
|
+
* @param txParams - The transaction parameters (gasLimit, tip, maturity, maxFee, witnessLimit).
|
5148
5379
|
* @returns A promise that resolves to the prepared transaction request.
|
5149
5380
|
*/
|
5150
5381
|
async createTransfer(destination, amount, assetId = import_configs12.BaseAssetId, txParams = {}) {
|
5151
|
-
const
|
5152
|
-
const params = { gasPrice: minGasPrice, ...txParams };
|
5153
|
-
const request = new ScriptTransactionRequest(params);
|
5382
|
+
const request = new ScriptTransactionRequest(txParams);
|
5154
5383
|
request.addCoinOutput(import_address4.Address.fromAddressOrString(destination), amount, assetId);
|
5155
|
-
const
|
5384
|
+
const txCost = await this.provider.getTransactionCost(request, {
|
5156
5385
|
estimateTxDependencies: true,
|
5157
5386
|
resourcesOwner: this
|
5158
5387
|
});
|
5159
|
-
|
5160
|
-
|
5161
|
-
|
5162
|
-
|
5163
|
-
|
5164
|
-
|
5165
|
-
|
5166
|
-
|
5167
|
-
await this.fund(request,
|
5168
|
-
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);
|
5169
5397
|
return request;
|
5170
5398
|
}
|
5171
5399
|
/**
|
@@ -5178,7 +5406,7 @@ var Account = class extends import_interfaces.AbstractAccount {
|
|
5178
5406
|
* @returns A promise that resolves to the transaction response.
|
5179
5407
|
*/
|
5180
5408
|
async transfer(destination, amount, assetId = import_configs12.BaseAssetId, txParams = {}) {
|
5181
|
-
if ((0,
|
5409
|
+
if ((0, import_math19.bn)(amount).lte(0)) {
|
5182
5410
|
throw new import_errors16.FuelError(
|
5183
5411
|
import_errors16.ErrorCode.INVALID_TRANSFER_AMOUNT,
|
5184
5412
|
"Transfer amount must be a positive number."
|
@@ -5197,38 +5425,37 @@ var Account = class extends import_interfaces.AbstractAccount {
|
|
5197
5425
|
* @returns A promise that resolves to the transaction response.
|
5198
5426
|
*/
|
5199
5427
|
async transferToContract(contractId, amount, assetId = import_configs12.BaseAssetId, txParams = {}) {
|
5200
|
-
if ((0,
|
5428
|
+
if ((0, import_math19.bn)(amount).lte(0)) {
|
5201
5429
|
throw new import_errors16.FuelError(
|
5202
5430
|
import_errors16.ErrorCode.INVALID_TRANSFER_AMOUNT,
|
5203
5431
|
"Transfer amount must be a positive number."
|
5204
5432
|
);
|
5205
5433
|
}
|
5206
5434
|
const contractAddress = import_address4.Address.fromAddressOrString(contractId);
|
5207
|
-
const { minGasPrice } = this.provider.getGasConfig();
|
5208
|
-
const params = { gasPrice: minGasPrice, ...txParams };
|
5209
5435
|
const { script, scriptData } = await assembleTransferToContractScript({
|
5210
5436
|
hexlifiedContractId: contractAddress.toB256(),
|
5211
|
-
amountToTransfer: (0,
|
5437
|
+
amountToTransfer: (0, import_math19.bn)(amount),
|
5212
5438
|
assetId
|
5213
5439
|
});
|
5214
5440
|
const request = new ScriptTransactionRequest({
|
5215
|
-
...
|
5441
|
+
...txParams,
|
5216
5442
|
script,
|
5217
5443
|
scriptData
|
5218
5444
|
});
|
5219
5445
|
request.addContractInputAndOutput(contractAddress);
|
5220
|
-
const
|
5221
|
-
|
5222
|
-
[{ amount: (0,
|
5223
|
-
);
|
5224
|
-
request.gasLimit = (0, import_math18.bn)(params.gasLimit ?? gasUsed);
|
5225
|
-
this.validateGas({
|
5226
|
-
gasUsed,
|
5227
|
-
gasPrice: request.gasPrice,
|
5228
|
-
gasLimit: request.gasLimit,
|
5229
|
-
minGasPrice
|
5446
|
+
const txCost = await this.provider.getTransactionCost(request, {
|
5447
|
+
resourcesOwner: this,
|
5448
|
+
quantitiesToContract: [{ amount: (0, import_math19.bn)(amount), assetId: String(assetId) }]
|
5230
5449
|
});
|
5231
|
-
|
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);
|
5232
5459
|
return this.sendTransaction(request);
|
5233
5460
|
}
|
5234
5461
|
/**
|
@@ -5240,34 +5467,31 @@ var Account = class extends import_interfaces.AbstractAccount {
|
|
5240
5467
|
* @returns A promise that resolves to the transaction response.
|
5241
5468
|
*/
|
5242
5469
|
async withdrawToBaseLayer(recipient, amount, txParams = {}) {
|
5243
|
-
const { minGasPrice } = this.provider.getGasConfig();
|
5244
5470
|
const recipientAddress = import_address4.Address.fromAddressOrString(recipient);
|
5245
|
-
const recipientDataArray = (0,
|
5471
|
+
const recipientDataArray = (0, import_utils27.arrayify)(
|
5246
5472
|
"0x".concat(recipientAddress.toHexString().substring(2).padStart(64, "0"))
|
5247
5473
|
);
|
5248
|
-
const amountDataArray = (0,
|
5249
|
-
"0x".concat((0,
|
5474
|
+
const amountDataArray = (0, import_utils27.arrayify)(
|
5475
|
+
"0x".concat((0, import_math19.bn)(amount).toHex().substring(2).padStart(16, "0"))
|
5250
5476
|
);
|
5251
5477
|
const script = new Uint8Array([
|
5252
|
-
...(0,
|
5478
|
+
...(0, import_utils27.arrayify)(withdrawScript.bytes),
|
5253
5479
|
...recipientDataArray,
|
5254
5480
|
...amountDataArray
|
5255
5481
|
]);
|
5256
|
-
const params = { script,
|
5482
|
+
const params = { script, ...txParams };
|
5257
5483
|
const request = new ScriptTransactionRequest(params);
|
5258
|
-
const
|
5259
|
-
const
|
5260
|
-
|
5261
|
-
|
5262
|
-
|
5263
|
-
|
5264
|
-
|
5265
|
-
|
5266
|
-
|
5267
|
-
|
5268
|
-
|
5269
|
-
});
|
5270
|
-
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);
|
5271
5495
|
return this.sendTransaction(request);
|
5272
5496
|
}
|
5273
5497
|
async signMessage(message) {
|
@@ -5325,18 +5549,7 @@ var Account = class extends import_interfaces.AbstractAccount {
|
|
5325
5549
|
}
|
5326
5550
|
return this.provider.simulate(transactionRequest, { estimateTxDependencies: false });
|
5327
5551
|
}
|
5328
|
-
validateGas({
|
5329
|
-
gasUsed,
|
5330
|
-
gasPrice,
|
5331
|
-
gasLimit,
|
5332
|
-
minGasPrice
|
5333
|
-
}) {
|
5334
|
-
if (minGasPrice.gt(gasPrice)) {
|
5335
|
-
throw new import_errors16.FuelError(
|
5336
|
-
import_errors16.ErrorCode.GAS_PRICE_TOO_LOW,
|
5337
|
-
`Gas price '${gasPrice}' is lower than the required: '${minGasPrice}'.`
|
5338
|
-
);
|
5339
|
-
}
|
5552
|
+
validateGas({ gasUsed, gasLimit }) {
|
5340
5553
|
if (gasUsed.gt(gasLimit)) {
|
5341
5554
|
throw new import_errors16.FuelError(
|
5342
5555
|
import_errors16.ErrorCode.GAS_LIMIT_TOO_LOW,
|
@@ -5348,14 +5561,14 @@ var Account = class extends import_interfaces.AbstractAccount {
|
|
5348
5561
|
|
5349
5562
|
// src/wallet/base-wallet-unlocked.ts
|
5350
5563
|
var import_hasher3 = require("@fuel-ts/hasher");
|
5351
|
-
var
|
5564
|
+
var import_utils30 = require("@fuel-ts/utils");
|
5352
5565
|
|
5353
5566
|
// src/signer/signer.ts
|
5354
5567
|
var import_address5 = require("@fuel-ts/address");
|
5355
5568
|
var import_crypto = require("@fuel-ts/crypto");
|
5356
5569
|
var import_hasher2 = require("@fuel-ts/hasher");
|
5357
|
-
var
|
5358
|
-
var
|
5570
|
+
var import_math20 = require("@fuel-ts/math");
|
5571
|
+
var import_utils28 = require("@fuel-ts/utils");
|
5359
5572
|
var import_secp256k1 = require("@noble/curves/secp256k1");
|
5360
5573
|
var Signer = class {
|
5361
5574
|
address;
|
@@ -5374,10 +5587,10 @@ var Signer = class {
|
|
5374
5587
|
privateKey = `0x${privateKey}`;
|
5375
5588
|
}
|
5376
5589
|
}
|
5377
|
-
const privateKeyBytes = (0,
|
5378
|
-
this.privateKey = (0,
|
5379
|
-
this.publicKey = (0,
|
5380
|
-
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));
|
5381
5594
|
this.address = import_address5.Address.fromPublicKey(this.publicKey);
|
5382
5595
|
}
|
5383
5596
|
/**
|
@@ -5391,11 +5604,11 @@ var Signer = class {
|
|
5391
5604
|
* @returns hashed signature
|
5392
5605
|
*/
|
5393
5606
|
sign(data) {
|
5394
|
-
const signature = import_secp256k1.secp256k1.sign((0,
|
5395
|
-
const r = (0,
|
5396
|
-
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);
|
5397
5610
|
s[0] |= (signature.recovery || 0) << 7;
|
5398
|
-
return (0,
|
5611
|
+
return (0, import_utils28.hexlify)((0, import_utils28.concat)([r, s]));
|
5399
5612
|
}
|
5400
5613
|
/**
|
5401
5614
|
* Add point on the current elliptic curve
|
@@ -5404,8 +5617,8 @@ var Signer = class {
|
|
5404
5617
|
* @returns compressed point on the curve
|
5405
5618
|
*/
|
5406
5619
|
addPoint(point) {
|
5407
|
-
const p0 = import_secp256k1.secp256k1.ProjectivePoint.fromHex((0,
|
5408
|
-
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));
|
5409
5622
|
const result = p0.add(p1);
|
5410
5623
|
return `0x${result.toHex(true)}`;
|
5411
5624
|
}
|
@@ -5417,16 +5630,16 @@ var Signer = class {
|
|
5417
5630
|
* @returns public key from signature from the
|
5418
5631
|
*/
|
5419
5632
|
static recoverPublicKey(data, signature) {
|
5420
|
-
const signedMessageBytes = (0,
|
5633
|
+
const signedMessageBytes = (0, import_utils28.arrayify)(signature);
|
5421
5634
|
const r = signedMessageBytes.slice(0, 32);
|
5422
5635
|
const s = signedMessageBytes.slice(32, 64);
|
5423
5636
|
const recoveryParam = (s[0] & 128) >> 7;
|
5424
5637
|
s[0] &= 127;
|
5425
|
-
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(
|
5426
5639
|
recoveryParam
|
5427
5640
|
);
|
5428
|
-
const publicKey = sig.recoverPublicKey((0,
|
5429
|
-
return (0,
|
5641
|
+
const publicKey = sig.recoverPublicKey((0, import_utils28.arrayify)(data)).toRawBytes(false).slice(1);
|
5642
|
+
return (0, import_utils28.hexlify)(publicKey);
|
5430
5643
|
}
|
5431
5644
|
/**
|
5432
5645
|
* Recover the address from a signature performed with [`sign`](#sign).
|
@@ -5445,7 +5658,7 @@ var Signer = class {
|
|
5445
5658
|
* @returns random 32-byte hashed
|
5446
5659
|
*/
|
5447
5660
|
static generatePrivateKey(entropy) {
|
5448
|
-
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);
|
5449
5662
|
}
|
5450
5663
|
/**
|
5451
5664
|
* Extended publicKey from a compact publicKey
|
@@ -5454,8 +5667,8 @@ var Signer = class {
|
|
5454
5667
|
* @returns extended publicKey
|
5455
5668
|
*/
|
5456
5669
|
static extendPublicKey(publicKey) {
|
5457
|
-
const point = import_secp256k1.secp256k1.ProjectivePoint.fromHex((0,
|
5458
|
-
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));
|
5459
5672
|
}
|
5460
5673
|
};
|
5461
5674
|
|
@@ -5463,7 +5676,7 @@ var Signer = class {
|
|
5463
5676
|
var import_address6 = require("@fuel-ts/address");
|
5464
5677
|
var import_crypto2 = require("@fuel-ts/crypto");
|
5465
5678
|
var import_errors17 = require("@fuel-ts/errors");
|
5466
|
-
var
|
5679
|
+
var import_utils29 = require("@fuel-ts/utils");
|
5467
5680
|
var import_uuid = require("uuid");
|
5468
5681
|
var DEFAULT_KDF_PARAMS_LOG_N = 13;
|
5469
5682
|
var DEFAULT_KDF_PARAMS_R = 8;
|
@@ -5546,7 +5759,7 @@ async function decryptKeystoreWallet(jsonWallet, password) {
|
|
5546
5759
|
);
|
5547
5760
|
}
|
5548
5761
|
const buffer = await (0, import_crypto2.decryptJsonWalletData)(ciphertextBuffer, key, ivBuffer);
|
5549
|
-
const privateKey = (0,
|
5762
|
+
const privateKey = (0, import_utils29.hexlify)(buffer);
|
5550
5763
|
return privateKey;
|
5551
5764
|
}
|
5552
5765
|
|
@@ -5591,7 +5804,7 @@ var BaseWalletUnlocked = class extends Account {
|
|
5591
5804
|
*/
|
5592
5805
|
async signMessage(message) {
|
5593
5806
|
const signedMessage = await this.signer().sign((0, import_hasher3.hashMessage)(message));
|
5594
|
-
return (0,
|
5807
|
+
return (0, import_utils30.hexlify)(signedMessage);
|
5595
5808
|
}
|
5596
5809
|
/**
|
5597
5810
|
* Signs a transaction with the wallet's private key.
|
@@ -5604,7 +5817,7 @@ var BaseWalletUnlocked = class extends Account {
|
|
5604
5817
|
const chainId = this.provider.getChainId();
|
5605
5818
|
const hashedTransaction = transactionRequest.getTransactionId(chainId);
|
5606
5819
|
const signature = await this.signer().sign(hashedTransaction);
|
5607
|
-
return (0,
|
5820
|
+
return (0, import_utils30.hexlify)(signature);
|
5608
5821
|
}
|
5609
5822
|
/**
|
5610
5823
|
* Populates a transaction with the witnesses signature.
|
@@ -5624,7 +5837,7 @@ var BaseWalletUnlocked = class extends Account {
|
|
5624
5837
|
* @param transactionRequestLike - The transaction request to send.
|
5625
5838
|
* @returns A promise that resolves to the TransactionResponse object.
|
5626
5839
|
*/
|
5627
|
-
async sendTransaction(transactionRequestLike, { estimateTxDependencies =
|
5840
|
+
async sendTransaction(transactionRequestLike, { estimateTxDependencies = false, awaitExecution } = {}) {
|
5628
5841
|
const transactionRequest = transactionRequestify(transactionRequestLike);
|
5629
5842
|
if (estimateTxDependencies) {
|
5630
5843
|
await this.provider.estimateTxDependencies(transactionRequest);
|
@@ -5665,15 +5878,15 @@ __publicField(BaseWalletUnlocked, "defaultPath", "m/44'/1179993420'/0'/0/0");
|
|
5665
5878
|
// src/hdwallet/hdwallet.ts
|
5666
5879
|
var import_errors20 = require("@fuel-ts/errors");
|
5667
5880
|
var import_hasher6 = require("@fuel-ts/hasher");
|
5668
|
-
var
|
5669
|
-
var
|
5881
|
+
var import_math21 = require("@fuel-ts/math");
|
5882
|
+
var import_utils34 = require("@fuel-ts/utils");
|
5670
5883
|
var import_ethers4 = require("ethers");
|
5671
5884
|
|
5672
5885
|
// src/mnemonic/mnemonic.ts
|
5673
5886
|
var import_crypto3 = require("@fuel-ts/crypto");
|
5674
5887
|
var import_errors19 = require("@fuel-ts/errors");
|
5675
5888
|
var import_hasher5 = require("@fuel-ts/hasher");
|
5676
|
-
var
|
5889
|
+
var import_utils32 = require("@fuel-ts/utils");
|
5677
5890
|
var import_ethers3 = require("ethers");
|
5678
5891
|
|
5679
5892
|
// src/wordlists/words/english.ts
|
@@ -7737,7 +7950,7 @@ var Language = /* @__PURE__ */ ((Language2) => {
|
|
7737
7950
|
// src/mnemonic/utils.ts
|
7738
7951
|
var import_errors18 = require("@fuel-ts/errors");
|
7739
7952
|
var import_hasher4 = require("@fuel-ts/hasher");
|
7740
|
-
var
|
7953
|
+
var import_utils31 = require("@fuel-ts/utils");
|
7741
7954
|
function toUtf8Bytes(stri) {
|
7742
7955
|
const str = stri.normalize("NFKD");
|
7743
7956
|
const result = [];
|
@@ -7804,14 +8017,14 @@ function entropyToMnemonicIndices(entropy) {
|
|
7804
8017
|
}
|
7805
8018
|
}
|
7806
8019
|
const checksumBits = entropy.length / 4;
|
7807
|
-
const checksum = (0,
|
8020
|
+
const checksum = (0, import_utils31.arrayify)((0, import_hasher4.sha256)(entropy))[0] & getUpperMask(checksumBits);
|
7808
8021
|
indices[indices.length - 1] <<= checksumBits;
|
7809
8022
|
indices[indices.length - 1] |= checksum >> 8 - checksumBits;
|
7810
8023
|
return indices;
|
7811
8024
|
}
|
7812
8025
|
function mnemonicWordsToEntropy(words, wordlist) {
|
7813
8026
|
const size = Math.ceil(11 * words.length / 8);
|
7814
|
-
const entropy = (0,
|
8027
|
+
const entropy = (0, import_utils31.arrayify)(new Uint8Array(size));
|
7815
8028
|
let offset = 0;
|
7816
8029
|
for (let i = 0; i < words.length; i += 1) {
|
7817
8030
|
const index = wordlist.indexOf(words[i].normalize("NFKD"));
|
@@ -7831,7 +8044,7 @@ function mnemonicWordsToEntropy(words, wordlist) {
|
|
7831
8044
|
const entropyBits = 32 * words.length / 3;
|
7832
8045
|
const checksumBits = words.length / 3;
|
7833
8046
|
const checksumMask = getUpperMask(checksumBits);
|
7834
|
-
const checksum = (0,
|
8047
|
+
const checksum = (0, import_utils31.arrayify)((0, import_hasher4.sha256)(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;
|
7835
8048
|
if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {
|
7836
8049
|
throw new import_errors18.FuelError(
|
7837
8050
|
import_errors18.ErrorCode.INVALID_CHECKSUM,
|
@@ -7906,7 +8119,7 @@ var Mnemonic = class {
|
|
7906
8119
|
static mnemonicToEntropy(phrase, wordlist = english) {
|
7907
8120
|
const words = getWords(phrase);
|
7908
8121
|
assertMnemonic(words);
|
7909
|
-
return (0,
|
8122
|
+
return (0, import_utils32.hexlify)(mnemonicWordsToEntropy(words, wordlist));
|
7910
8123
|
}
|
7911
8124
|
/**
|
7912
8125
|
* @param entropy - Entropy source to the mnemonic phrase.
|
@@ -7914,7 +8127,7 @@ var Mnemonic = class {
|
|
7914
8127
|
* @returns 64-byte array contains privateKey and chainCode as described on BIP39
|
7915
8128
|
*/
|
7916
8129
|
static entropyToMnemonic(entropy, wordlist = english) {
|
7917
|
-
const entropyBytes = (0,
|
8130
|
+
const entropyBytes = (0, import_utils32.arrayify)(entropy);
|
7918
8131
|
assertWordList(wordlist);
|
7919
8132
|
assertEntropy(entropyBytes);
|
7920
8133
|
return entropyToMnemonicIndices(entropyBytes).map((i) => wordlist[i]).join(" ");
|
@@ -7983,14 +8196,14 @@ var Mnemonic = class {
|
|
7983
8196
|
* @returns 64-byte array contains privateKey and chainCode as described on BIP39
|
7984
8197
|
*/
|
7985
8198
|
static masterKeysFromSeed(seed) {
|
7986
|
-
const seedArray = (0,
|
8199
|
+
const seedArray = (0, import_utils32.arrayify)(seed);
|
7987
8200
|
if (seedArray.length < 16 || seedArray.length > 64) {
|
7988
8201
|
throw new import_errors19.FuelError(
|
7989
8202
|
import_errors19.ErrorCode.INVALID_SEED,
|
7990
8203
|
`Seed length should be between 16 and 64 bytes, but received ${seedArray.length} bytes.`
|
7991
8204
|
);
|
7992
8205
|
}
|
7993
|
-
return (0,
|
8206
|
+
return (0, import_utils32.arrayify)((0, import_ethers3.computeHmac)("sha512", MasterSecret, seedArray));
|
7994
8207
|
}
|
7995
8208
|
/**
|
7996
8209
|
* Get the extendKey as defined on BIP-32 from the provided seed
|
@@ -8001,22 +8214,22 @@ var Mnemonic = class {
|
|
8001
8214
|
*/
|
8002
8215
|
static seedToExtendedKey(seed, testnet = false) {
|
8003
8216
|
const masterKey = Mnemonic.masterKeysFromSeed(seed);
|
8004
|
-
const prefix = (0,
|
8217
|
+
const prefix = (0, import_utils32.arrayify)(testnet ? TestnetPRV : MainnetPRV);
|
8005
8218
|
const depth = "0x00";
|
8006
8219
|
const fingerprint = "0x00000000";
|
8007
8220
|
const index = "0x00000000";
|
8008
8221
|
const chainCode = masterKey.slice(32);
|
8009
8222
|
const privateKey = masterKey.slice(0, 32);
|
8010
|
-
const extendedKey = (0,
|
8223
|
+
const extendedKey = (0, import_utils32.concat)([
|
8011
8224
|
prefix,
|
8012
8225
|
depth,
|
8013
8226
|
fingerprint,
|
8014
8227
|
index,
|
8015
8228
|
chainCode,
|
8016
|
-
(0,
|
8229
|
+
(0, import_utils32.concat)(["0x00", privateKey])
|
8017
8230
|
]);
|
8018
8231
|
const checksum = (0, import_ethers3.dataSlice)((0, import_hasher5.sha256)((0, import_hasher5.sha256)(extendedKey)), 0, 4);
|
8019
|
-
return (0, import_ethers3.encodeBase58)((0,
|
8232
|
+
return (0, import_ethers3.encodeBase58)((0, import_utils32.concat)([extendedKey, checksum]));
|
8020
8233
|
}
|
8021
8234
|
/**
|
8022
8235
|
* Create a new mnemonic using a randomly generated number as entropy.
|
@@ -8031,7 +8244,7 @@ var Mnemonic = class {
|
|
8031
8244
|
* @returns A randomly generated mnemonic
|
8032
8245
|
*/
|
8033
8246
|
static generate(size = 32, extraEntropy = "") {
|
8034
|
-
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);
|
8035
8248
|
return Mnemonic.entropyToMnemonic(entropy);
|
8036
8249
|
}
|
8037
8250
|
};
|
@@ -8039,12 +8252,12 @@ var mnemonic_default = Mnemonic;
|
|
8039
8252
|
|
8040
8253
|
// src/hdwallet/hdwallet.ts
|
8041
8254
|
var HARDENED_INDEX = 2147483648;
|
8042
|
-
var MainnetPRV2 = (0,
|
8043
|
-
var MainnetPUB = (0,
|
8044
|
-
var TestnetPRV2 = (0,
|
8045
|
-
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");
|
8046
8259
|
function base58check(data) {
|
8047
|
-
return (0, import_ethers4.encodeBase58)((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)]));
|
8048
8261
|
}
|
8049
8262
|
function getExtendedKeyPrefix(isPublic = false, testnet = false) {
|
8050
8263
|
if (isPublic) {
|
@@ -8053,11 +8266,11 @@ function getExtendedKeyPrefix(isPublic = false, testnet = false) {
|
|
8053
8266
|
return testnet ? TestnetPRV2 : MainnetPRV2;
|
8054
8267
|
}
|
8055
8268
|
function isPublicExtendedKey(extendedKey) {
|
8056
|
-
return [MainnetPUB, TestnetPUB].includes((0,
|
8269
|
+
return [MainnetPUB, TestnetPUB].includes((0, import_utils34.hexlify)(extendedKey.slice(0, 4)));
|
8057
8270
|
}
|
8058
8271
|
function isValidExtendedKey(extendedKey) {
|
8059
8272
|
return [MainnetPRV2, TestnetPRV2, MainnetPUB, TestnetPUB].includes(
|
8060
|
-
(0,
|
8273
|
+
(0, import_utils34.hexlify)(extendedKey.slice(0, 4))
|
8061
8274
|
);
|
8062
8275
|
}
|
8063
8276
|
function parsePath(path, depth = 0) {
|
@@ -8075,8 +8288,8 @@ function parsePath(path, depth = 0) {
|
|
8075
8288
|
var HDWallet = class {
|
8076
8289
|
depth = 0;
|
8077
8290
|
index = 0;
|
8078
|
-
fingerprint = (0,
|
8079
|
-
parentFingerprint = (0,
|
8291
|
+
fingerprint = (0, import_utils34.hexlify)("0x00000000");
|
8292
|
+
parentFingerprint = (0, import_utils34.hexlify)("0x00000000");
|
8080
8293
|
privateKey;
|
8081
8294
|
publicKey;
|
8082
8295
|
chainCode;
|
@@ -8088,8 +8301,8 @@ var HDWallet = class {
|
|
8088
8301
|
constructor(config) {
|
8089
8302
|
if (config.privateKey) {
|
8090
8303
|
const signer = new Signer(config.privateKey);
|
8091
|
-
this.publicKey = (0,
|
8092
|
-
this.privateKey = (0,
|
8304
|
+
this.publicKey = (0, import_utils34.hexlify)(signer.compressedPublicKey);
|
8305
|
+
this.privateKey = (0, import_utils34.hexlify)(config.privateKey);
|
8093
8306
|
} else {
|
8094
8307
|
if (!config.publicKey) {
|
8095
8308
|
throw new import_errors20.FuelError(
|
@@ -8097,7 +8310,7 @@ var HDWallet = class {
|
|
8097
8310
|
"Both public and private Key cannot be missing. At least one should be provided."
|
8098
8311
|
);
|
8099
8312
|
}
|
8100
|
-
this.publicKey = (0,
|
8313
|
+
this.publicKey = (0, import_utils34.hexlify)(config.publicKey);
|
8101
8314
|
}
|
8102
8315
|
this.parentFingerprint = config.parentFingerprint || this.parentFingerprint;
|
8103
8316
|
this.fingerprint = (0, import_ethers4.dataSlice)((0, import_ethers4.ripemd160)((0, import_hasher6.sha256)(this.publicKey)), 0, 4);
|
@@ -8116,9 +8329,9 @@ var HDWallet = class {
|
|
8116
8329
|
* @returns A new instance of HDWallet on the derived index
|
8117
8330
|
*/
|
8118
8331
|
deriveIndex(index) {
|
8119
|
-
const privateKey = this.privateKey && (0,
|
8120
|
-
const publicKey = (0,
|
8121
|
-
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);
|
8122
8335
|
const data = new Uint8Array(37);
|
8123
8336
|
if (index & HARDENED_INDEX) {
|
8124
8337
|
if (!privateKey) {
|
@@ -8129,15 +8342,15 @@ var HDWallet = class {
|
|
8129
8342
|
}
|
8130
8343
|
data.set(privateKey, 1);
|
8131
8344
|
} else {
|
8132
|
-
data.set((0,
|
8345
|
+
data.set((0, import_utils34.arrayify)(this.publicKey));
|
8133
8346
|
}
|
8134
|
-
data.set((0,
|
8135
|
-
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));
|
8136
8349
|
const IL = bytes.slice(0, 32);
|
8137
8350
|
const IR = bytes.slice(32);
|
8138
8351
|
if (privateKey) {
|
8139
8352
|
const N = "0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141";
|
8140
|
-
const ki = (0,
|
8353
|
+
const ki = (0, import_math21.bn)(IL).add(privateKey).mod(N).toBytes(32);
|
8141
8354
|
return new HDWallet({
|
8142
8355
|
privateKey: ki,
|
8143
8356
|
chainCode: IR,
|
@@ -8146,7 +8359,7 @@ var HDWallet = class {
|
|
8146
8359
|
parentFingerprint: this.fingerprint
|
8147
8360
|
});
|
8148
8361
|
}
|
8149
|
-
const signer = new Signer((0,
|
8362
|
+
const signer = new Signer((0, import_utils34.hexlify)(IL));
|
8150
8363
|
const Ki = signer.addPoint(publicKey);
|
8151
8364
|
return new HDWallet({
|
8152
8365
|
publicKey: Ki,
|
@@ -8181,12 +8394,12 @@ var HDWallet = class {
|
|
8181
8394
|
);
|
8182
8395
|
}
|
8183
8396
|
const prefix = getExtendedKeyPrefix(this.privateKey == null || isPublic, testnet);
|
8184
|
-
const depth = (0,
|
8397
|
+
const depth = (0, import_utils34.hexlify)(Uint8Array.from([this.depth]));
|
8185
8398
|
const parentFingerprint = this.parentFingerprint;
|
8186
|
-
const index = (0,
|
8399
|
+
const index = (0, import_math21.toHex)(this.index, 4);
|
8187
8400
|
const chainCode = this.chainCode;
|
8188
|
-
const key = this.privateKey != null && !isPublic ? (0,
|
8189
|
-
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]));
|
8190
8403
|
return base58check(extendedKey);
|
8191
8404
|
}
|
8192
8405
|
/**
|
@@ -8198,13 +8411,13 @@ var HDWallet = class {
|
|
8198
8411
|
static fromSeed(seed) {
|
8199
8412
|
const masterKey = mnemonic_default.masterKeysFromSeed(seed);
|
8200
8413
|
return new HDWallet({
|
8201
|
-
chainCode: (0,
|
8202
|
-
privateKey: (0,
|
8414
|
+
chainCode: (0, import_utils34.arrayify)(masterKey.slice(32)),
|
8415
|
+
privateKey: (0, import_utils34.arrayify)(masterKey.slice(0, 32))
|
8203
8416
|
});
|
8204
8417
|
}
|
8205
8418
|
static fromExtendedKey(extendedKey) {
|
8206
8419
|
const decoded = (0, import_ethers4.toBeHex)((0, import_ethers4.decodeBase58)(extendedKey));
|
8207
|
-
const bytes = (0,
|
8420
|
+
const bytes = (0, import_utils34.arrayify)(decoded);
|
8208
8421
|
const validChecksum = base58check(bytes.slice(0, 78)) === extendedKey;
|
8209
8422
|
if (bytes.length !== 82 || !isValidExtendedKey(bytes)) {
|
8210
8423
|
throw new import_errors20.FuelError(import_errors20.ErrorCode.HD_WALLET_ERROR, "Provided key is not a valid extended key.");
|
@@ -8213,9 +8426,9 @@ var HDWallet = class {
|
|
8213
8426
|
throw new import_errors20.FuelError(import_errors20.ErrorCode.HD_WALLET_ERROR, "Provided key has an invalid checksum.");
|
8214
8427
|
}
|
8215
8428
|
const depth = bytes[4];
|
8216
|
-
const parentFingerprint = (0,
|
8217
|
-
const index = parseInt((0,
|
8218
|
-
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));
|
8219
8432
|
const key = bytes.slice(45, 78);
|
8220
8433
|
if (depth === 0 && parentFingerprint !== "0x00000000" || depth === 0 && index !== 0) {
|
8221
8434
|
throw new import_errors20.FuelError(
|
@@ -8820,19 +9033,19 @@ var import_abi_coder5 = require("@fuel-ts/abi-coder");
|
|
8820
9033
|
var import_address10 = require("@fuel-ts/address");
|
8821
9034
|
var import_configs13 = require("@fuel-ts/address/configs");
|
8822
9035
|
var import_errors25 = require("@fuel-ts/errors");
|
8823
|
-
var
|
8824
|
-
var
|
9036
|
+
var import_transactions21 = require("@fuel-ts/transactions");
|
9037
|
+
var import_utils36 = require("@fuel-ts/utils");
|
8825
9038
|
|
8826
9039
|
// src/predicate/utils/getPredicateRoot.ts
|
8827
9040
|
var import_hasher7 = require("@fuel-ts/hasher");
|
8828
9041
|
var import_merkle = require("@fuel-ts/merkle");
|
8829
|
-
var
|
9042
|
+
var import_utils35 = require("@fuel-ts/utils");
|
8830
9043
|
var getPredicateRoot = (bytecode) => {
|
8831
9044
|
const chunkSize = 16 * 1024;
|
8832
|
-
const bytes = (0,
|
8833
|
-
const chunks = (0,
|
8834
|
-
const codeRoot = (0, import_merkle.calcRoot)(chunks.map((c) => (0,
|
8835
|
-
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]));
|
8836
9049
|
return predicateRoot;
|
8837
9050
|
};
|
8838
9051
|
|
@@ -8869,6 +9082,7 @@ var Predicate = class extends Account {
|
|
8869
9082
|
this.interface = predicateInterface;
|
8870
9083
|
if (inputData !== void 0 && inputData.length > 0) {
|
8871
9084
|
this.predicateData = inputData;
|
9085
|
+
this.predicateDataBytes = this.getPredicateData(0);
|
8872
9086
|
}
|
8873
9087
|
}
|
8874
9088
|
/**
|
@@ -8881,9 +9095,9 @@ var Predicate = class extends Account {
|
|
8881
9095
|
const request = transactionRequestify(transactionRequestLike);
|
8882
9096
|
const { policies } = BaseTransactionRequest.getPolicyMeta(request);
|
8883
9097
|
request.inputs?.forEach((input) => {
|
8884
|
-
if (input.type ===
|
8885
|
-
input.predicate = this.bytes;
|
8886
|
-
input.predicateData = this.getPredicateData(policies.length);
|
9098
|
+
if (input.type === import_transactions21.InputType.Coin && (0, import_utils36.hexlify)(input.owner) === this.address.toB256()) {
|
9099
|
+
input.predicate = (0, import_utils36.hexlify)(this.bytes);
|
9100
|
+
input.predicateData = (0, import_utils36.hexlify)(this.getPredicateData(policies.length));
|
8887
9101
|
}
|
8888
9102
|
});
|
8889
9103
|
return request;
|
@@ -8898,8 +9112,7 @@ var Predicate = class extends Account {
|
|
8898
9112
|
* @returns A promise that resolves to the prepared transaction request.
|
8899
9113
|
*/
|
8900
9114
|
async createTransfer(destination, amount, assetId = import_configs13.BaseAssetId, txParams = {}) {
|
8901
|
-
|
8902
|
-
return this.populateTransactionPredicateData(request);
|
9115
|
+
return super.createTransfer(destination, amount, assetId, txParams);
|
8903
9116
|
}
|
8904
9117
|
/**
|
8905
9118
|
* Sends a transaction with the populated predicate data.
|
@@ -8907,9 +9120,9 @@ var Predicate = class extends Account {
|
|
8907
9120
|
* @param transactionRequestLike - The transaction request-like object.
|
8908
9121
|
* @returns A promise that resolves to the transaction response.
|
8909
9122
|
*/
|
8910
|
-
sendTransaction(transactionRequestLike
|
8911
|
-
const transactionRequest =
|
8912
|
-
return super.sendTransaction(transactionRequest,
|
9123
|
+
sendTransaction(transactionRequestLike) {
|
9124
|
+
const transactionRequest = transactionRequestify(transactionRequestLike);
|
9125
|
+
return super.sendTransaction(transactionRequest, { estimateTxDependencies: false });
|
8913
9126
|
}
|
8914
9127
|
/**
|
8915
9128
|
* Simulates a transaction with the populated predicate data.
|
@@ -8918,15 +9131,15 @@ var Predicate = class extends Account {
|
|
8918
9131
|
* @returns A promise that resolves to the call result.
|
8919
9132
|
*/
|
8920
9133
|
simulateTransaction(transactionRequestLike) {
|
8921
|
-
const transactionRequest =
|
8922
|
-
return super.simulateTransaction(transactionRequest);
|
9134
|
+
const transactionRequest = transactionRequestify(transactionRequestLike);
|
9135
|
+
return super.simulateTransaction(transactionRequest, { estimateTxDependencies: false });
|
8923
9136
|
}
|
8924
9137
|
getPredicateData(policiesLength) {
|
8925
9138
|
if (!this.predicateData.length) {
|
8926
9139
|
return new Uint8Array();
|
8927
9140
|
}
|
8928
9141
|
const mainFn = this.interface?.functions.main;
|
8929
|
-
const paddedCode = new
|
9142
|
+
const paddedCode = new import_transactions21.ByteArrayCoder(this.bytes.length).encode(this.bytes);
|
8930
9143
|
const VM_TX_MEMORY = (0, import_abi_coder5.calculateVmTxMemory)({
|
8931
9144
|
maxInputs: this.provider.getChain().consensusParameters.maxInputs.toNumber()
|
8932
9145
|
});
|
@@ -8942,7 +9155,7 @@ var Predicate = class extends Account {
|
|
8942
9155
|
* @returns An object containing the new predicate bytes and interface.
|
8943
9156
|
*/
|
8944
9157
|
static processPredicateData(bytes, jsonAbi, configurableConstants) {
|
8945
|
-
let predicateBytes = (0,
|
9158
|
+
let predicateBytes = (0, import_utils36.arrayify)(bytes);
|
8946
9159
|
let abiInterface;
|
8947
9160
|
if (jsonAbi) {
|
8948
9161
|
abiInterface = new import_abi_coder5.Interface(jsonAbi);
|
@@ -8965,6 +9178,26 @@ var Predicate = class extends Account {
|
|
8965
9178
|
predicateInterface: abiInterface
|
8966
9179
|
};
|
8967
9180
|
}
|
9181
|
+
/**
|
9182
|
+
* Retrieves resources satisfying the spend query for the account.
|
9183
|
+
*
|
9184
|
+
* @param quantities - IDs of coins to exclude.
|
9185
|
+
* @param excludedIds - IDs of resources to be excluded from the query.
|
9186
|
+
* @returns A promise that resolves to an array of Resources.
|
9187
|
+
*/
|
9188
|
+
async getResourcesToSpend(quantities, excludedIds) {
|
9189
|
+
const resources = await this.provider.getResourcesToSpend(
|
9190
|
+
this.address,
|
9191
|
+
quantities,
|
9192
|
+
excludedIds
|
9193
|
+
);
|
9194
|
+
return resources.map((resource) => ({
|
9195
|
+
...resource,
|
9196
|
+
predicate: (0, import_utils36.hexlify)(this.bytes),
|
9197
|
+
predicateData: (0, import_utils36.hexlify)(this.predicateDataBytes),
|
9198
|
+
paddPredicateData: (policiesLength) => (0, import_utils36.hexlify)(this.getPredicateData(policiesLength))
|
9199
|
+
}));
|
9200
|
+
}
|
8968
9201
|
/**
|
8969
9202
|
* Sets the configurable constants for the predicate.
|
8970
9203
|
*
|
@@ -9714,7 +9947,7 @@ __publicField(Fuel, "defaultConfig", {});
|
|
9714
9947
|
WalletLocked,
|
9715
9948
|
WalletManager,
|
9716
9949
|
WalletUnlocked,
|
9717
|
-
|
9950
|
+
addAmountToCoinQuantities,
|
9718
9951
|
addOperation,
|
9719
9952
|
assemblePanicError,
|
9720
9953
|
assembleReceiptByType,
|
@@ -9723,9 +9956,10 @@ __publicField(Fuel, "defaultConfig", {});
|
|
9723
9956
|
assets,
|
9724
9957
|
buildBlockExplorerUrl,
|
9725
9958
|
cacheFor,
|
9959
|
+
cacheTxInputsFromOwner,
|
9960
|
+
calculateGasFee,
|
9726
9961
|
calculateMetadataGasForTxCreate,
|
9727
9962
|
calculateMetadataGasForTxScript,
|
9728
|
-
calculatePriceWithFactor,
|
9729
9963
|
calculateTransactionFee,
|
9730
9964
|
coinQuantityfy,
|
9731
9965
|
deferPromise,
|