@fuel-ts/account 0.0.0-rc-2021-20240423152230 → 0.0.0-rc-2037-20240423161807
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 +4 -5
- 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 +604 -829
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +641 -857
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +459 -680
- package/dist/index.mjs.map +1 -1
- package/dist/predicate/predicate.d.ts +18 -11
- package/dist/predicate/predicate.d.ts.map +1 -1
- package/dist/providers/__generated__/operations.d.ts +327 -821
- 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 +1 -2
- package/dist/providers/coin.d.ts.map +1 -1
- package/dist/providers/message.d.ts +1 -6
- package/dist/providers/message.d.ts.map +1 -1
- package/dist/providers/provider.d.ts +27 -37
- 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/helpers.d.ts +10 -0
- package/dist/providers/transaction-request/helpers.d.ts.map +1 -0
- package/dist/providers/transaction-request/index.d.ts +1 -0
- package/dist/providers/transaction-request/index.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 +11 -6
- package/dist/providers/transaction-request/transaction-request.d.ts.map +1 -1
- package/dist/providers/transaction-request/utils.d.ts +0 -3
- 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 +0 -2
- package/dist/providers/transaction-summary/assemble-transaction-summary.d.ts.map +1 -1
- package/dist/providers/transaction-summary/calculate-transaction-fee.d.ts +2 -3
- 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 +2 -8
- package/dist/providers/utils/gas.d.ts.map +1 -1
- package/dist/test-utils/index.d.ts +1 -0
- package/dist/test-utils/index.d.ts.map +1 -1
- package/dist/test-utils/launchNode.d.ts.map +1 -1
- package/dist/test-utils/resources.d.ts +4 -0
- package/dist/test-utils/resources.d.ts.map +1 -0
- package/dist/test-utils/seedTestWallet.d.ts +1 -1
- package/dist/test-utils/seedTestWallet.d.ts.map +1 -1
- package/dist/test-utils/transactionRequest.d.ts +5 -0
- package/dist/test-utils/transactionRequest.d.ts.map +1 -0
- package/dist/test-utils.global.js +1082 -1547
- package/dist/test-utils.global.js.map +1 -1
- package/dist/test-utils.js +618 -839
- package/dist/test-utils.js.map +1 -1
- package/dist/test-utils.mjs +450 -674
- package/dist/test-utils.mjs.map +1 -1
- package/dist/wallet/base-wallet-unlocked.d.ts +2 -2
- package/dist/wallet/base-wallet-unlocked.d.ts.map +1 -1
- package/package.json +16 -16
package/dist/index.mjs
CHANGED
@@ -32,9 +32,8 @@ import { Address as Address3 } from "@fuel-ts/address";
|
|
32
32
|
import { BaseAssetId as BaseAssetId3 } from "@fuel-ts/address/configs";
|
33
33
|
import { ErrorCode as ErrorCode15, FuelError as FuelError15 } from "@fuel-ts/errors";
|
34
34
|
import { AbstractAccount } from "@fuel-ts/interfaces";
|
35
|
-
import { bn as
|
35
|
+
import { bn as bn17 } from "@fuel-ts/math";
|
36
36
|
import { arrayify as arrayify14 } from "@fuel-ts/utils";
|
37
|
-
import { clone as clone4 } from "ramda";
|
38
37
|
|
39
38
|
// src/providers/coin-quantity.ts
|
40
39
|
import { BaseAssetId } from "@fuel-ts/address/configs";
|
@@ -43,24 +42,24 @@ import { hexlify } from "@fuel-ts/utils";
|
|
43
42
|
var coinQuantityfy = (coinQuantityLike) => {
|
44
43
|
let assetId;
|
45
44
|
let amount;
|
46
|
-
let
|
45
|
+
let max2;
|
47
46
|
if (Array.isArray(coinQuantityLike)) {
|
48
47
|
amount = coinQuantityLike[0];
|
49
48
|
assetId = coinQuantityLike[1] ?? BaseAssetId;
|
50
|
-
|
49
|
+
max2 = coinQuantityLike[2] ?? void 0;
|
51
50
|
} else {
|
52
51
|
amount = coinQuantityLike.amount;
|
53
52
|
assetId = coinQuantityLike.assetId ?? BaseAssetId;
|
54
|
-
|
53
|
+
max2 = coinQuantityLike.max ?? void 0;
|
55
54
|
}
|
56
55
|
const bnAmount = bn(amount);
|
57
56
|
return {
|
58
57
|
assetId: hexlify(assetId),
|
59
58
|
amount: bnAmount.lt(1) ? bn(1) : bnAmount,
|
60
|
-
max:
|
59
|
+
max: max2 ? bn(max2) : void 0
|
61
60
|
};
|
62
61
|
};
|
63
|
-
var
|
62
|
+
var addAmountToAsset = (params) => {
|
64
63
|
const { amount, assetId } = params;
|
65
64
|
const coinQuantities = [...params.coinQuantities];
|
66
65
|
const assetIdx = coinQuantities.findIndex((coinQuantity) => coinQuantity.assetId === assetId);
|
@@ -75,7 +74,7 @@ var addAmountToCoinQuantities = (params) => {
|
|
75
74
|
// src/providers/provider.ts
|
76
75
|
import { Address as Address2 } from "@fuel-ts/address";
|
77
76
|
import { ErrorCode as ErrorCode13, FuelError as FuelError13 } from "@fuel-ts/errors";
|
78
|
-
import { BN, bn as
|
77
|
+
import { BN, bn as bn15, max } from "@fuel-ts/math";
|
79
78
|
import {
|
80
79
|
InputType as InputType7,
|
81
80
|
TransactionType as TransactionType8,
|
@@ -91,40 +90,16 @@ import { clone as clone3 } from "ramda";
|
|
91
90
|
|
92
91
|
// src/providers/__generated__/operations.ts
|
93
92
|
import gql from "graphql-tag";
|
94
|
-
var TransactionStatusSubscriptionFragmentFragmentDoc = gql`
|
95
|
-
fragment transactionStatusSubscriptionFragment on TransactionStatus {
|
96
|
-
type: __typename
|
97
|
-
... on SubmittedStatus {
|
98
|
-
time
|
99
|
-
}
|
100
|
-
... on SuccessStatus {
|
101
|
-
block {
|
102
|
-
id
|
103
|
-
}
|
104
|
-
time
|
105
|
-
programState {
|
106
|
-
returnType
|
107
|
-
data
|
108
|
-
}
|
109
|
-
}
|
110
|
-
... on FailureStatus {
|
111
|
-
block {
|
112
|
-
id
|
113
|
-
}
|
114
|
-
time
|
115
|
-
reason
|
116
|
-
}
|
117
|
-
... on SqueezedOutStatus {
|
118
|
-
reason
|
119
|
-
}
|
120
|
-
}
|
121
|
-
`;
|
122
93
|
var ReceiptFragmentFragmentDoc = gql`
|
123
94
|
fragment receiptFragment on Receipt {
|
124
|
-
|
95
|
+
contract {
|
96
|
+
id
|
97
|
+
}
|
125
98
|
pc
|
126
99
|
is
|
127
|
-
to
|
100
|
+
to {
|
101
|
+
id
|
102
|
+
}
|
128
103
|
toAddress
|
129
104
|
amount
|
130
105
|
assetId
|
@@ -162,16 +137,10 @@ var TransactionStatusFragmentFragmentDoc = gql`
|
|
162
137
|
id
|
163
138
|
}
|
164
139
|
time
|
165
|
-
receipts {
|
166
|
-
...receiptFragment
|
167
|
-
}
|
168
140
|
programState {
|
169
141
|
returnType
|
170
142
|
data
|
171
143
|
}
|
172
|
-
receipts {
|
173
|
-
...receiptFragment
|
174
|
-
}
|
175
144
|
}
|
176
145
|
... on FailureStatus {
|
177
146
|
block {
|
@@ -179,24 +148,26 @@ var TransactionStatusFragmentFragmentDoc = gql`
|
|
179
148
|
}
|
180
149
|
time
|
181
150
|
reason
|
182
|
-
receipts {
|
183
|
-
...receiptFragment
|
184
|
-
}
|
185
151
|
}
|
186
152
|
... on SqueezedOutStatus {
|
187
153
|
reason
|
188
154
|
}
|
189
155
|
}
|
190
|
-
|
156
|
+
`;
|
191
157
|
var TransactionFragmentFragmentDoc = gql`
|
192
158
|
fragment transactionFragment on Transaction {
|
193
159
|
id
|
194
160
|
rawPayload
|
161
|
+
gasPrice
|
162
|
+
receipts {
|
163
|
+
...receiptFragment
|
164
|
+
}
|
195
165
|
status {
|
196
166
|
...transactionStatusFragment
|
197
167
|
}
|
198
168
|
}
|
199
|
-
${
|
169
|
+
${ReceiptFragmentFragmentDoc}
|
170
|
+
${TransactionStatusFragmentFragmentDoc}`;
|
200
171
|
var InputEstimatePredicatesFragmentFragmentDoc = gql`
|
201
172
|
fragment inputEstimatePredicatesFragment on Input {
|
202
173
|
... on InputCoin {
|
@@ -214,46 +185,6 @@ var TransactionEstimatePredicatesFragmentFragmentDoc = gql`
|
|
214
185
|
}
|
215
186
|
}
|
216
187
|
${InputEstimatePredicatesFragmentFragmentDoc}`;
|
217
|
-
var DryRunFailureStatusFragmentFragmentDoc = gql`
|
218
|
-
fragment dryRunFailureStatusFragment on DryRunFailureStatus {
|
219
|
-
reason
|
220
|
-
programState {
|
221
|
-
returnType
|
222
|
-
data
|
223
|
-
}
|
224
|
-
}
|
225
|
-
`;
|
226
|
-
var DryRunSuccessStatusFragmentFragmentDoc = gql`
|
227
|
-
fragment dryRunSuccessStatusFragment on DryRunSuccessStatus {
|
228
|
-
programState {
|
229
|
-
returnType
|
230
|
-
data
|
231
|
-
}
|
232
|
-
}
|
233
|
-
`;
|
234
|
-
var DryRunTransactionStatusFragmentFragmentDoc = gql`
|
235
|
-
fragment dryRunTransactionStatusFragment on DryRunTransactionStatus {
|
236
|
-
... on DryRunFailureStatus {
|
237
|
-
...dryRunFailureStatusFragment
|
238
|
-
}
|
239
|
-
... on DryRunSuccessStatus {
|
240
|
-
...dryRunSuccessStatusFragment
|
241
|
-
}
|
242
|
-
}
|
243
|
-
${DryRunFailureStatusFragmentFragmentDoc}
|
244
|
-
${DryRunSuccessStatusFragmentFragmentDoc}`;
|
245
|
-
var DryRunTransactionExecutionStatusFragmentFragmentDoc = gql`
|
246
|
-
fragment dryRunTransactionExecutionStatusFragment on DryRunTransactionExecutionStatus {
|
247
|
-
id
|
248
|
-
status {
|
249
|
-
...dryRunTransactionStatusFragment
|
250
|
-
}
|
251
|
-
receipts {
|
252
|
-
...receiptFragment
|
253
|
-
}
|
254
|
-
}
|
255
|
-
${DryRunTransactionStatusFragmentFragmentDoc}
|
256
|
-
${ReceiptFragmentFragmentDoc}`;
|
257
188
|
var CoinFragmentFragmentDoc = gql`
|
258
189
|
fragment coinFragment on Coin {
|
259
190
|
__typename
|
@@ -261,6 +192,7 @@ var CoinFragmentFragmentDoc = gql`
|
|
261
192
|
owner
|
262
193
|
amount
|
263
194
|
assetId
|
195
|
+
maturity
|
264
196
|
blockCreated
|
265
197
|
txCreatedIdx
|
266
198
|
}
|
@@ -299,32 +231,26 @@ var MessageProofFragmentFragmentDoc = gql`
|
|
299
231
|
messageBlockHeader {
|
300
232
|
id
|
301
233
|
daHeight
|
302
|
-
consensusParametersVersion
|
303
|
-
stateTransitionBytecodeVersion
|
304
234
|
transactionsCount
|
305
|
-
messageReceiptCount
|
306
235
|
transactionsRoot
|
307
|
-
messageOutboxRoot
|
308
|
-
eventInboxRoot
|
309
236
|
height
|
310
237
|
prevRoot
|
311
238
|
time
|
312
239
|
applicationHash
|
240
|
+
messageReceiptRoot
|
241
|
+
messageReceiptCount
|
313
242
|
}
|
314
243
|
commitBlockHeader {
|
315
244
|
id
|
316
245
|
daHeight
|
317
|
-
consensusParametersVersion
|
318
|
-
stateTransitionBytecodeVersion
|
319
246
|
transactionsCount
|
320
|
-
messageReceiptCount
|
321
247
|
transactionsRoot
|
322
|
-
messageOutboxRoot
|
323
|
-
eventInboxRoot
|
324
248
|
height
|
325
249
|
prevRoot
|
326
250
|
time
|
327
251
|
applicationHash
|
252
|
+
messageReceiptRoot
|
253
|
+
messageReceiptCount
|
328
254
|
}
|
329
255
|
sender
|
330
256
|
recipient
|
@@ -343,8 +269,8 @@ var BalanceFragmentFragmentDoc = gql`
|
|
343
269
|
var BlockFragmentFragmentDoc = gql`
|
344
270
|
fragment blockFragment on Block {
|
345
271
|
id
|
346
|
-
height
|
347
272
|
header {
|
273
|
+
height
|
348
274
|
time
|
349
275
|
}
|
350
276
|
transactions {
|
@@ -402,11 +328,6 @@ var DependentCostFragmentFragmentDoc = gql`
|
|
402
328
|
`;
|
403
329
|
var GasCostsFragmentFragmentDoc = gql`
|
404
330
|
fragment GasCostsFragment on GasCosts {
|
405
|
-
version {
|
406
|
-
... on Version {
|
407
|
-
value
|
408
|
-
}
|
409
|
-
}
|
410
331
|
add
|
411
332
|
addi
|
412
333
|
aloc
|
@@ -419,6 +340,7 @@ var GasCostsFragmentFragmentDoc = gql`
|
|
419
340
|
cb
|
420
341
|
cfei
|
421
342
|
cfsi
|
343
|
+
croo
|
422
344
|
div
|
423
345
|
divi
|
424
346
|
ecr1
|
@@ -501,9 +423,6 @@ var GasCostsFragmentFragmentDoc = gql`
|
|
501
423
|
ccp {
|
502
424
|
...DependentCostFragment
|
503
425
|
}
|
504
|
-
croo {
|
505
|
-
...DependentCostFragment
|
506
|
-
}
|
507
426
|
csiz {
|
508
427
|
...DependentCostFragment
|
509
428
|
}
|
@@ -563,11 +482,6 @@ var GasCostsFragmentFragmentDoc = gql`
|
|
563
482
|
${DependentCostFragmentFragmentDoc}`;
|
564
483
|
var ConsensusParametersFragmentFragmentDoc = gql`
|
565
484
|
fragment consensusParametersFragment on ConsensusParameters {
|
566
|
-
version {
|
567
|
-
... on Version {
|
568
|
-
value
|
569
|
-
}
|
570
|
-
}
|
571
485
|
txParams {
|
572
486
|
...TxParametersFragment
|
573
487
|
}
|
@@ -627,9 +541,18 @@ var NodeInfoFragmentFragmentDoc = gql`
|
|
627
541
|
fragment nodeInfoFragment on NodeInfo {
|
628
542
|
utxoValidation
|
629
543
|
vmBacktrace
|
544
|
+
minGasPrice
|
630
545
|
maxTx
|
631
546
|
maxDepth
|
632
547
|
nodeVersion
|
548
|
+
peers {
|
549
|
+
id
|
550
|
+
addresses
|
551
|
+
clientVersion
|
552
|
+
blockHeight
|
553
|
+
lastHeartbeatMs
|
554
|
+
appScore
|
555
|
+
}
|
633
556
|
}
|
634
557
|
`;
|
635
558
|
var GetVersionDocument = gql`
|
@@ -664,9 +587,13 @@ var GetTransactionWithReceiptsDocument = gql`
|
|
664
587
|
query getTransactionWithReceipts($transactionId: TransactionId!) {
|
665
588
|
transaction(id: $transactionId) {
|
666
589
|
...transactionFragment
|
590
|
+
receipts {
|
591
|
+
...receiptFragment
|
592
|
+
}
|
667
593
|
}
|
668
594
|
}
|
669
|
-
${TransactionFragmentFragmentDoc}
|
595
|
+
${TransactionFragmentFragmentDoc}
|
596
|
+
${ReceiptFragmentFragmentDoc}`;
|
670
597
|
var GetTransactionsDocument = gql`
|
671
598
|
query getTransactions($after: String, $before: String, $first: Int, $last: Int) {
|
672
599
|
transactions(after: $after, before: $before, first: $first, last: $last) {
|
@@ -794,20 +721,6 @@ var GetBalanceDocument = gql`
|
|
794
721
|
}
|
795
722
|
}
|
796
723
|
${BalanceFragmentFragmentDoc}`;
|
797
|
-
var GetLatestGasPriceDocument = gql`
|
798
|
-
query getLatestGasPrice {
|
799
|
-
latestGasPrice {
|
800
|
-
gasPrice
|
801
|
-
}
|
802
|
-
}
|
803
|
-
`;
|
804
|
-
var EstimateGasPriceDocument = gql`
|
805
|
-
query estimateGasPrice($blockHorizon: U32!) {
|
806
|
-
estimateGasPrice(blockHorizon: $blockHorizon) {
|
807
|
-
gasPrice
|
808
|
-
}
|
809
|
-
}
|
810
|
-
`;
|
811
724
|
var GetBalancesDocument = gql`
|
812
725
|
query getBalances($filter: BalanceFilterInput!, $after: String, $before: String, $first: Int, $last: Int) {
|
813
726
|
balances(
|
@@ -862,12 +775,12 @@ var GetMessageStatusDocument = gql`
|
|
862
775
|
}
|
863
776
|
`;
|
864
777
|
var DryRunDocument = gql`
|
865
|
-
mutation dryRun($
|
866
|
-
dryRun(
|
867
|
-
...
|
778
|
+
mutation dryRun($encodedTransaction: HexString!, $utxoValidation: Boolean) {
|
779
|
+
dryRun(tx: $encodedTransaction, utxoValidation: $utxoValidation) {
|
780
|
+
...receiptFragment
|
868
781
|
}
|
869
782
|
}
|
870
|
-
${
|
783
|
+
${ReceiptFragmentFragmentDoc}`;
|
871
784
|
var SubmitDocument = gql`
|
872
785
|
mutation submit($encodedTransaction: HexString!) {
|
873
786
|
submit(tx: $encodedTransaction) {
|
@@ -886,17 +799,17 @@ var ProduceBlocksDocument = gql`
|
|
886
799
|
var SubmitAndAwaitDocument = gql`
|
887
800
|
subscription submitAndAwait($encodedTransaction: HexString!) {
|
888
801
|
submitAndAwait(tx: $encodedTransaction) {
|
889
|
-
...
|
802
|
+
...transactionStatusFragment
|
890
803
|
}
|
891
804
|
}
|
892
|
-
${
|
805
|
+
${TransactionStatusFragmentFragmentDoc}`;
|
893
806
|
var StatusChangeDocument = gql`
|
894
807
|
subscription statusChange($transactionId: TransactionId!) {
|
895
808
|
statusChange(id: $transactionId) {
|
896
|
-
...
|
809
|
+
...transactionStatusFragment
|
897
810
|
}
|
898
811
|
}
|
899
|
-
${
|
812
|
+
${TransactionStatusFragmentFragmentDoc}`;
|
900
813
|
function getSdk(requester) {
|
901
814
|
return {
|
902
815
|
getVersion(variables, options) {
|
@@ -950,12 +863,6 @@ function getSdk(requester) {
|
|
950
863
|
getBalance(variables, options) {
|
951
864
|
return requester(GetBalanceDocument, variables, options);
|
952
865
|
},
|
953
|
-
getLatestGasPrice(variables, options) {
|
954
|
-
return requester(GetLatestGasPriceDocument, variables, options);
|
955
|
-
},
|
956
|
-
estimateGasPrice(variables, options) {
|
957
|
-
return requester(EstimateGasPriceDocument, variables, options);
|
958
|
-
},
|
959
866
|
getBalances(variables, options) {
|
960
867
|
return requester(GetBalancesDocument, variables, options);
|
961
868
|
},
|
@@ -1149,9 +1056,10 @@ var inputify = (value) => {
|
|
1149
1056
|
txIndex: toNumber(arrayify(value.txPointer).slice(8, 16))
|
1150
1057
|
},
|
1151
1058
|
witnessIndex: value.witnessIndex,
|
1059
|
+
maturity: value.maturity ?? 0,
|
1152
1060
|
predicateGasUsed: bn2(value.predicateGasUsed),
|
1153
|
-
predicateLength:
|
1154
|
-
predicateDataLength:
|
1061
|
+
predicateLength: predicate.length,
|
1062
|
+
predicateDataLength: predicateData.length,
|
1155
1063
|
predicate: hexlify3(predicate),
|
1156
1064
|
predicateData: hexlify3(predicateData)
|
1157
1065
|
};
|
@@ -1182,8 +1090,8 @@ var inputify = (value) => {
|
|
1182
1090
|
nonce: hexlify3(value.nonce),
|
1183
1091
|
witnessIndex: value.witnessIndex,
|
1184
1092
|
predicateGasUsed: bn2(value.predicateGasUsed),
|
1185
|
-
predicateLength:
|
1186
|
-
predicateDataLength:
|
1093
|
+
predicateLength: predicate.length,
|
1094
|
+
predicateDataLength: predicateData.length,
|
1187
1095
|
predicate: hexlify3(predicate),
|
1188
1096
|
predicateData: hexlify3(predicateData),
|
1189
1097
|
data: hexlify3(data),
|
@@ -1265,7 +1173,7 @@ import { bn as bn7 } from "@fuel-ts/math";
|
|
1265
1173
|
import {
|
1266
1174
|
PolicyType,
|
1267
1175
|
TransactionCoder,
|
1268
|
-
InputType as
|
1176
|
+
InputType as InputType3,
|
1269
1177
|
OutputType as OutputType2,
|
1270
1178
|
TransactionType
|
1271
1179
|
} from "@fuel-ts/transactions";
|
@@ -1313,8 +1221,8 @@ function assembleReceiptByType(receipt) {
|
|
1313
1221
|
case "CALL" /* Call */: {
|
1314
1222
|
const callReceipt = {
|
1315
1223
|
type: ReceiptType.Call,
|
1316
|
-
from: hexOrZero(receipt.id
|
1317
|
-
to: hexOrZero(receipt?.to),
|
1224
|
+
from: hexOrZero(receipt.contract?.id),
|
1225
|
+
to: hexOrZero(receipt?.to?.id),
|
1318
1226
|
amount: bn4(receipt.amount),
|
1319
1227
|
assetId: hexOrZero(receipt.assetId),
|
1320
1228
|
gas: bn4(receipt.gas),
|
@@ -1328,7 +1236,7 @@ function assembleReceiptByType(receipt) {
|
|
1328
1236
|
case "RETURN" /* Return */: {
|
1329
1237
|
const returnReceipt = {
|
1330
1238
|
type: ReceiptType.Return,
|
1331
|
-
id: hexOrZero(receipt.id
|
1239
|
+
id: hexOrZero(receipt.contract?.id),
|
1332
1240
|
val: bn4(receipt.val),
|
1333
1241
|
pc: bn4(receipt.pc),
|
1334
1242
|
is: bn4(receipt.is)
|
@@ -1338,7 +1246,7 @@ function assembleReceiptByType(receipt) {
|
|
1338
1246
|
case "RETURN_DATA" /* ReturnData */: {
|
1339
1247
|
const returnDataReceipt = {
|
1340
1248
|
type: ReceiptType.ReturnData,
|
1341
|
-
id: hexOrZero(receipt.id
|
1249
|
+
id: hexOrZero(receipt.contract?.id),
|
1342
1250
|
ptr: bn4(receipt.ptr),
|
1343
1251
|
len: bn4(receipt.len),
|
1344
1252
|
digest: hexOrZero(receipt.digest),
|
@@ -1350,7 +1258,7 @@ function assembleReceiptByType(receipt) {
|
|
1350
1258
|
case "PANIC" /* Panic */: {
|
1351
1259
|
const panicReceipt = {
|
1352
1260
|
type: ReceiptType.Panic,
|
1353
|
-
id: hexOrZero(receipt.id),
|
1261
|
+
id: hexOrZero(receipt.contract?.id),
|
1354
1262
|
reason: bn4(receipt.reason),
|
1355
1263
|
pc: bn4(receipt.pc),
|
1356
1264
|
is: bn4(receipt.is),
|
@@ -1361,7 +1269,7 @@ function assembleReceiptByType(receipt) {
|
|
1361
1269
|
case "REVERT" /* Revert */: {
|
1362
1270
|
const revertReceipt = {
|
1363
1271
|
type: ReceiptType.Revert,
|
1364
|
-
id: hexOrZero(receipt.id
|
1272
|
+
id: hexOrZero(receipt.contract?.id),
|
1365
1273
|
val: bn4(receipt.ra),
|
1366
1274
|
pc: bn4(receipt.pc),
|
1367
1275
|
is: bn4(receipt.is)
|
@@ -1371,7 +1279,7 @@ function assembleReceiptByType(receipt) {
|
|
1371
1279
|
case "LOG" /* Log */: {
|
1372
1280
|
const logReceipt = {
|
1373
1281
|
type: ReceiptType.Log,
|
1374
|
-
id: hexOrZero(receipt.id
|
1282
|
+
id: hexOrZero(receipt.contract?.id),
|
1375
1283
|
val0: bn4(receipt.ra),
|
1376
1284
|
val1: bn4(receipt.rb),
|
1377
1285
|
val2: bn4(receipt.rc),
|
@@ -1384,7 +1292,7 @@ function assembleReceiptByType(receipt) {
|
|
1384
1292
|
case "LOG_DATA" /* LogData */: {
|
1385
1293
|
const logDataReceipt = {
|
1386
1294
|
type: ReceiptType.LogData,
|
1387
|
-
id: hexOrZero(receipt.id
|
1295
|
+
id: hexOrZero(receipt.contract?.id),
|
1388
1296
|
val0: bn4(receipt.ra),
|
1389
1297
|
val1: bn4(receipt.rb),
|
1390
1298
|
ptr: bn4(receipt.ptr),
|
@@ -1398,8 +1306,8 @@ function assembleReceiptByType(receipt) {
|
|
1398
1306
|
case "TRANSFER" /* Transfer */: {
|
1399
1307
|
const transferReceipt = {
|
1400
1308
|
type: ReceiptType.Transfer,
|
1401
|
-
from: hexOrZero(receipt.id
|
1402
|
-
to: hexOrZero(receipt.toAddress || receipt?.to),
|
1309
|
+
from: hexOrZero(receipt.contract?.id),
|
1310
|
+
to: hexOrZero(receipt.toAddress || receipt?.to?.id),
|
1403
1311
|
amount: bn4(receipt.amount),
|
1404
1312
|
assetId: hexOrZero(receipt.assetId),
|
1405
1313
|
pc: bn4(receipt.pc),
|
@@ -1410,8 +1318,8 @@ function assembleReceiptByType(receipt) {
|
|
1410
1318
|
case "TRANSFER_OUT" /* TransferOut */: {
|
1411
1319
|
const transferOutReceipt = {
|
1412
1320
|
type: ReceiptType.TransferOut,
|
1413
|
-
from: hexOrZero(receipt.id
|
1414
|
-
to: hexOrZero(receipt.toAddress || receipt.to),
|
1321
|
+
from: hexOrZero(receipt.contract?.id),
|
1322
|
+
to: hexOrZero(receipt.toAddress || receipt.to?.id),
|
1415
1323
|
amount: bn4(receipt.amount),
|
1416
1324
|
assetId: hexOrZero(receipt.assetId),
|
1417
1325
|
pc: bn4(receipt.pc),
|
@@ -1454,7 +1362,7 @@ function assembleReceiptByType(receipt) {
|
|
1454
1362
|
return receiptMessageOut;
|
1455
1363
|
}
|
1456
1364
|
case "MINT" /* Mint */: {
|
1457
|
-
const contractId = hexOrZero(receipt.id
|
1365
|
+
const contractId = hexOrZero(receipt.contract?.id);
|
1458
1366
|
const subId = hexOrZero(receipt.subId);
|
1459
1367
|
const assetId = ReceiptMintCoder.getAssetId(contractId, subId);
|
1460
1368
|
const mintReceipt = {
|
@@ -1469,7 +1377,7 @@ function assembleReceiptByType(receipt) {
|
|
1469
1377
|
return mintReceipt;
|
1470
1378
|
}
|
1471
1379
|
case "BURN" /* Burn */: {
|
1472
|
-
const contractId = hexOrZero(receipt.id
|
1380
|
+
const contractId = hexOrZero(receipt.contract?.id);
|
1473
1381
|
const subId = hexOrZero(receipt.subId);
|
1474
1382
|
const assetId = ReceiptBurnCoder.getAssetId(contractId, subId);
|
1475
1383
|
const burnReceipt = {
|
@@ -1554,6 +1462,7 @@ var buildBlockExplorerUrl = (options = {}) => {
|
|
1554
1462
|
import { bn as bn5 } from "@fuel-ts/math";
|
1555
1463
|
import { ReceiptType as ReceiptType2 } from "@fuel-ts/transactions";
|
1556
1464
|
import { arrayify as arrayify3 } from "@fuel-ts/utils";
|
1465
|
+
var calculatePriceWithFactor = (gas, gasPrice, priceFactor) => bn5(Math.ceil(gas.mul(gasPrice).toNumber() / priceFactor.toNumber()));
|
1557
1466
|
var getGasUsedFromReceipts = (receipts) => {
|
1558
1467
|
const scriptResult = receipts.filter(
|
1559
1468
|
(receipt) => receipt.type === ReceiptType2.ScriptResult
|
@@ -1574,28 +1483,18 @@ function resolveGasDependentCosts(byteSize, gasDependentCost) {
|
|
1574
1483
|
}
|
1575
1484
|
function gasUsedByInputs(inputs, txBytesSize, gasCosts) {
|
1576
1485
|
const witnessCache = [];
|
1577
|
-
const
|
1578
|
-
const isCoinOrMessage = "owner" in input || "sender" in input;
|
1579
|
-
if (isCoinOrMessage) {
|
1580
|
-
if ("predicate" in input && input.predicate && input.predicate !== "0x") {
|
1581
|
-
return true;
|
1582
|
-
}
|
1583
|
-
if (!witnessCache.includes(input.witnessIndex)) {
|
1584
|
-
witnessCache.push(input.witnessIndex);
|
1585
|
-
return true;
|
1586
|
-
}
|
1587
|
-
}
|
1588
|
-
return false;
|
1589
|
-
});
|
1590
|
-
const vmInitializationCost = resolveGasDependentCosts(txBytesSize, gasCosts.vmInitialization);
|
1591
|
-
const totalGas = chargeableInputs.reduce((total, input) => {
|
1486
|
+
const totalGas = inputs.reduce((total, input) => {
|
1592
1487
|
if ("predicate" in input && input.predicate && input.predicate !== "0x") {
|
1593
1488
|
return total.add(
|
1594
|
-
|
1489
|
+
resolveGasDependentCosts(txBytesSize, gasCosts.vmInitialization).add(resolveGasDependentCosts(arrayify3(input.predicate).length, gasCosts.contractRoot)).add(bn5(input.predicateGasUsed))
|
1595
1490
|
);
|
1596
1491
|
}
|
1597
|
-
|
1598
|
-
|
1492
|
+
if ("witnessIndex" in input && !witnessCache.includes(input.witnessIndex)) {
|
1493
|
+
witnessCache.push(input.witnessIndex);
|
1494
|
+
return total.add(gasCosts.ecr1);
|
1495
|
+
}
|
1496
|
+
return total;
|
1497
|
+
}, bn5());
|
1599
1498
|
return totalGas;
|
1600
1499
|
}
|
1601
1500
|
function getMinGas(params) {
|
@@ -1607,20 +1506,12 @@ function getMinGas(params) {
|
|
1607
1506
|
return minGas;
|
1608
1507
|
}
|
1609
1508
|
function getMaxGas(params) {
|
1610
|
-
const {
|
1611
|
-
gasPerByte,
|
1612
|
-
witnessesLength,
|
1613
|
-
witnessLimit,
|
1614
|
-
minGas,
|
1615
|
-
gasLimit = bn5(0),
|
1616
|
-
maxGasPerTx
|
1617
|
-
} = params;
|
1509
|
+
const { gasPerByte, witnessesLength, witnessLimit, minGas, gasLimit = bn5(0) } = params;
|
1618
1510
|
let remainingAllowedWitnessGas = bn5(0);
|
1619
1511
|
if (witnessLimit?.gt(0) && witnessLimit.gte(witnessesLength)) {
|
1620
1512
|
remainingAllowedWitnessGas = bn5(witnessLimit).sub(witnessesLength).mul(gasPerByte);
|
1621
1513
|
}
|
1622
|
-
|
1623
|
-
return maxGas.gte(maxGasPerTx) ? maxGasPerTx : maxGas;
|
1514
|
+
return remainingAllowedWitnessGas.add(minGas).add(gasLimit);
|
1624
1515
|
}
|
1625
1516
|
function calculateMetadataGasForTxCreate({
|
1626
1517
|
gasCosts,
|
@@ -1642,10 +1533,6 @@ function calculateMetadataGasForTxScript({
|
|
1642
1533
|
}) {
|
1643
1534
|
return resolveGasDependentCosts(txBytesSize, gasCosts.s256);
|
1644
1535
|
}
|
1645
|
-
var calculateGasFee = (params) => {
|
1646
|
-
const { gas, gasPrice, priceFactor, tip } = params;
|
1647
|
-
return gas.mul(gasPrice).div(priceFactor).add(tip);
|
1648
|
-
};
|
1649
1536
|
|
1650
1537
|
// src/providers/utils/json.ts
|
1651
1538
|
import { hexlify as hexlify5 } from "@fuel-ts/utils";
|
@@ -1789,6 +1676,28 @@ var NoWitnessByOwnerError = class extends Error {
|
|
1789
1676
|
name = "NoWitnessByOwnerError";
|
1790
1677
|
};
|
1791
1678
|
|
1679
|
+
// src/providers/transaction-request/helpers.ts
|
1680
|
+
import { InputType as InputType2 } from "@fuel-ts/transactions";
|
1681
|
+
var isRequestInputCoin = (input) => input.type === InputType2.Coin;
|
1682
|
+
var isRequestInputMessage = (input) => input.type === InputType2.Message;
|
1683
|
+
var isRequestInputResource = (input) => isRequestInputCoin(input) || isRequestInputMessage(input);
|
1684
|
+
var getRequestInputResourceOwner = (input) => isRequestInputCoin(input) ? input.owner : input.recipient;
|
1685
|
+
var isRequestInputResourceFromOwner = (input, owner) => getRequestInputResourceOwner(input) === owner.toB256();
|
1686
|
+
var cacheResources = (resources) => resources.reduce(
|
1687
|
+
(cache2, resource) => {
|
1688
|
+
if (isCoin(resource)) {
|
1689
|
+
cache2.utxos.push(resource.id);
|
1690
|
+
} else {
|
1691
|
+
cache2.messages.push(resource.nonce);
|
1692
|
+
}
|
1693
|
+
return cache2;
|
1694
|
+
},
|
1695
|
+
{
|
1696
|
+
utxos: [],
|
1697
|
+
messages: []
|
1698
|
+
}
|
1699
|
+
);
|
1700
|
+
|
1792
1701
|
// src/providers/transaction-request/witness.ts
|
1793
1702
|
import { arrayify as arrayify4, hexlify as hexlify6 } from "@fuel-ts/utils";
|
1794
1703
|
var witnessify = (value) => {
|
@@ -1802,7 +1711,7 @@ var witnessify = (value) => {
|
|
1802
1711
|
// src/providers/transaction-request/transaction-request.ts
|
1803
1712
|
var BaseTransactionRequest = class {
|
1804
1713
|
/** Gas price for transaction */
|
1805
|
-
|
1714
|
+
gasPrice;
|
1806
1715
|
/** Block until which tx cannot be included */
|
1807
1716
|
maturity;
|
1808
1717
|
/** The maximum fee payable by this transaction using BASE_ASSET. */
|
@@ -1821,7 +1730,7 @@ var BaseTransactionRequest = class {
|
|
1821
1730
|
* @param baseTransactionRequest - Optional object containing properties to initialize the transaction request.
|
1822
1731
|
*/
|
1823
1732
|
constructor({
|
1824
|
-
|
1733
|
+
gasPrice,
|
1825
1734
|
maturity,
|
1826
1735
|
maxFee,
|
1827
1736
|
witnessLimit,
|
@@ -1829,7 +1738,7 @@ var BaseTransactionRequest = class {
|
|
1829
1738
|
outputs,
|
1830
1739
|
witnesses
|
1831
1740
|
} = {}) {
|
1832
|
-
this.
|
1741
|
+
this.gasPrice = bn7(gasPrice);
|
1833
1742
|
this.maturity = maturity ?? 0;
|
1834
1743
|
this.witnessLimit = witnessLimit ? bn7(witnessLimit) : void 0;
|
1835
1744
|
this.maxFee = maxFee ? bn7(maxFee) : void 0;
|
@@ -1840,9 +1749,9 @@ var BaseTransactionRequest = class {
|
|
1840
1749
|
static getPolicyMeta(req) {
|
1841
1750
|
let policyTypes = 0;
|
1842
1751
|
const policies = [];
|
1843
|
-
if (req.
|
1844
|
-
policyTypes += PolicyType.
|
1845
|
-
policies.push({ data: req.
|
1752
|
+
if (req.gasPrice) {
|
1753
|
+
policyTypes += PolicyType.GasPrice;
|
1754
|
+
policies.push({ data: req.gasPrice, type: PolicyType.GasPrice });
|
1846
1755
|
}
|
1847
1756
|
if (req.witnessLimit) {
|
1848
1757
|
policyTypes += PolicyType.WitnessLimit;
|
@@ -1979,7 +1888,7 @@ var BaseTransactionRequest = class {
|
|
1979
1888
|
*/
|
1980
1889
|
getCoinInputs() {
|
1981
1890
|
return this.inputs.filter(
|
1982
|
-
(input) => input.type ===
|
1891
|
+
(input) => input.type === InputType3.Coin
|
1983
1892
|
);
|
1984
1893
|
}
|
1985
1894
|
/**
|
@@ -2011,9 +1920,9 @@ var BaseTransactionRequest = class {
|
|
2011
1920
|
const ownerAddress = addressify(owner);
|
2012
1921
|
const found = this.inputs.find((input) => {
|
2013
1922
|
switch (input.type) {
|
2014
|
-
case
|
1923
|
+
case InputType3.Coin:
|
2015
1924
|
return hexlify7(input.owner) === ownerAddress.toB256();
|
2016
|
-
case
|
1925
|
+
case InputType3.Message:
|
2017
1926
|
return hexlify7(input.recipient) === ownerAddress.toB256();
|
2018
1927
|
default:
|
2019
1928
|
return false;
|
@@ -2026,11 +1935,13 @@ var BaseTransactionRequest = class {
|
|
2026
1935
|
* assetId, if one it was not added yet.
|
2027
1936
|
*
|
2028
1937
|
* @param coin - Coin resource.
|
1938
|
+
* @param predicate - Predicate bytes.
|
1939
|
+
* @param predicateData - Predicate data bytes.
|
2029
1940
|
*/
|
2030
1941
|
addCoinInput(coin) {
|
2031
|
-
const { assetId, owner, amount } = coin;
|
1942
|
+
const { assetId, owner, amount, id, predicate } = coin;
|
2032
1943
|
let witnessIndex;
|
2033
|
-
if (
|
1944
|
+
if (predicate) {
|
2034
1945
|
witnessIndex = 0;
|
2035
1946
|
} else {
|
2036
1947
|
witnessIndex = this.getCoinInputWitnessIndexByOwner(owner);
|
@@ -2039,13 +1950,14 @@ var BaseTransactionRequest = class {
|
|
2039
1950
|
}
|
2040
1951
|
}
|
2041
1952
|
const input = {
|
2042
|
-
|
2043
|
-
type:
|
1953
|
+
id,
|
1954
|
+
type: InputType3.Coin,
|
2044
1955
|
owner: owner.toB256(),
|
2045
1956
|
amount,
|
2046
1957
|
assetId,
|
2047
1958
|
txPointer: "0x00000000000000000000000000000000",
|
2048
|
-
witnessIndex
|
1959
|
+
witnessIndex,
|
1960
|
+
predicate
|
2049
1961
|
};
|
2050
1962
|
this.pushInput(input);
|
2051
1963
|
this.addChangeOutput(owner, assetId);
|
@@ -2055,12 +1967,14 @@ var BaseTransactionRequest = class {
|
|
2055
1967
|
* baseAssetId, if one it was not added yet.
|
2056
1968
|
*
|
2057
1969
|
* @param message - Message resource.
|
1970
|
+
* @param predicate - Predicate bytes.
|
1971
|
+
* @param predicateData - Predicate data bytes.
|
2058
1972
|
*/
|
2059
1973
|
addMessageInput(message) {
|
2060
|
-
const { recipient, sender, amount } = message;
|
1974
|
+
const { recipient, sender, amount, predicate, nonce } = message;
|
2061
1975
|
const assetId = BaseAssetId2;
|
2062
1976
|
let witnessIndex;
|
2063
|
-
if (
|
1977
|
+
if (predicate) {
|
2064
1978
|
witnessIndex = 0;
|
2065
1979
|
} else {
|
2066
1980
|
witnessIndex = this.getCoinInputWitnessIndexByOwner(recipient);
|
@@ -2069,12 +1983,13 @@ var BaseTransactionRequest = class {
|
|
2069
1983
|
}
|
2070
1984
|
}
|
2071
1985
|
const input = {
|
2072
|
-
|
2073
|
-
type:
|
1986
|
+
nonce,
|
1987
|
+
type: InputType3.Message,
|
2074
1988
|
sender: sender.toB256(),
|
2075
1989
|
recipient: recipient.toB256(),
|
2076
1990
|
amount,
|
2077
|
-
witnessIndex
|
1991
|
+
witnessIndex,
|
1992
|
+
predicate
|
2078
1993
|
};
|
2079
1994
|
this.pushInput(input);
|
2080
1995
|
this.addChangeOutput(recipient, assetId);
|
@@ -2184,7 +2099,7 @@ var BaseTransactionRequest = class {
|
|
2184
2099
|
}
|
2185
2100
|
calculateMaxGas(chainInfo, minGas) {
|
2186
2101
|
const { consensusParameters } = chainInfo;
|
2187
|
-
const { gasPerByte
|
2102
|
+
const { gasPerByte } = consensusParameters;
|
2188
2103
|
const witnessesLength = this.toTransaction().witnesses.reduce(
|
2189
2104
|
(acc, wit) => acc + wit.dataLength,
|
2190
2105
|
0
|
@@ -2193,8 +2108,7 @@ var BaseTransactionRequest = class {
|
|
2193
2108
|
gasPerByte,
|
2194
2109
|
minGas,
|
2195
2110
|
witnessesLength,
|
2196
|
-
witnessLimit: this.witnessLimit
|
2197
|
-
maxGasPerTx
|
2111
|
+
witnessLimit: this.witnessLimit
|
2198
2112
|
});
|
2199
2113
|
}
|
2200
2114
|
/**
|
@@ -2212,20 +2126,17 @@ var BaseTransactionRequest = class {
|
|
2212
2126
|
});
|
2213
2127
|
const updateAssetInput = (assetId, quantity) => {
|
2214
2128
|
const assetInput = findAssetInput(assetId);
|
2215
|
-
let usedQuantity = quantity;
|
2216
|
-
if (assetId === BaseAssetId2) {
|
2217
|
-
usedQuantity = bn7("1000000000000000000");
|
2218
|
-
}
|
2219
2129
|
if (assetInput && "assetId" in assetInput) {
|
2220
2130
|
assetInput.id = hexlify7(randomBytes(UTXO_ID_LEN2));
|
2221
|
-
assetInput.amount =
|
2131
|
+
assetInput.amount = quantity;
|
2222
2132
|
} else {
|
2223
2133
|
this.addResources([
|
2224
2134
|
{
|
2225
2135
|
id: hexlify7(randomBytes(UTXO_ID_LEN2)),
|
2226
|
-
amount:
|
2136
|
+
amount: quantity,
|
2227
2137
|
assetId,
|
2228
2138
|
owner: resourcesOwner || Address.fromRandom(),
|
2139
|
+
maturity: 0,
|
2229
2140
|
blockCreated: bn7(1),
|
2230
2141
|
txCreatedIdx: bn7(1)
|
2231
2142
|
}
|
@@ -2257,16 +2168,20 @@ var BaseTransactionRequest = class {
|
|
2257
2168
|
toJSON() {
|
2258
2169
|
return normalizeJSON(this);
|
2259
2170
|
}
|
2260
|
-
|
2171
|
+
removeWitness(index) {
|
2172
|
+
this.witnesses.splice(index, 1);
|
2173
|
+
this.adjustWitnessIndexes(index);
|
2174
|
+
}
|
2175
|
+
updatePredicateInputs(inputs) {
|
2261
2176
|
this.inputs.forEach((i) => {
|
2262
2177
|
let correspondingInput;
|
2263
2178
|
switch (i.type) {
|
2264
|
-
case
|
2265
|
-
correspondingInput = inputs.find((x) => x.type ===
|
2179
|
+
case InputType3.Coin:
|
2180
|
+
correspondingInput = inputs.find((x) => x.type === InputType3.Coin && x.owner === i.owner);
|
2266
2181
|
break;
|
2267
|
-
case
|
2182
|
+
case InputType3.Message:
|
2268
2183
|
correspondingInput = inputs.find(
|
2269
|
-
(x) => x.type ===
|
2184
|
+
(x) => x.type === InputType3.Message && x.sender === i.sender
|
2270
2185
|
);
|
2271
2186
|
break;
|
2272
2187
|
default:
|
@@ -2279,12 +2194,10 @@ var BaseTransactionRequest = class {
|
|
2279
2194
|
}
|
2280
2195
|
});
|
2281
2196
|
}
|
2282
|
-
|
2283
|
-
this.inputs.forEach((input) => {
|
2284
|
-
if (
|
2285
|
-
input.
|
2286
|
-
BaseTransactionRequest.getPolicyMeta(this).policies.length
|
2287
|
-
);
|
2197
|
+
adjustWitnessIndexes(removedIndex) {
|
2198
|
+
this.inputs.filter(isRequestInputResource).forEach((input) => {
|
2199
|
+
if (input.witnessIndex > removedIndex) {
|
2200
|
+
input.witnessIndex -= 1;
|
2288
2201
|
}
|
2289
2202
|
});
|
2290
2203
|
}
|
@@ -2300,7 +2213,7 @@ import { arrayify as arrayify6, hexlify as hexlify9 } from "@fuel-ts/utils";
|
|
2300
2213
|
import { ZeroBytes32 as ZeroBytes325 } from "@fuel-ts/address/configs";
|
2301
2214
|
import { uint64ToBytesBE, sha256 } from "@fuel-ts/hasher";
|
2302
2215
|
import { bn as bn8 } from "@fuel-ts/math";
|
2303
|
-
import { TransactionType as TransactionType2, InputType as
|
2216
|
+
import { TransactionType as TransactionType2, InputType as InputType4, OutputType as OutputType3, TransactionCoder as TransactionCoder2 } from "@fuel-ts/transactions";
|
2304
2217
|
import { concat as concat2 } from "@fuel-ts/utils";
|
2305
2218
|
import { clone as clone2 } from "ramda";
|
2306
2219
|
function hashTransaction(transactionRequest, chainId) {
|
@@ -2311,7 +2224,7 @@ function hashTransaction(transactionRequest, chainId) {
|
|
2311
2224
|
transaction.inputs = transaction.inputs.map((input) => {
|
2312
2225
|
const inputClone = clone2(input);
|
2313
2226
|
switch (inputClone.type) {
|
2314
|
-
case
|
2227
|
+
case InputType4.Coin: {
|
2315
2228
|
inputClone.txPointer = {
|
2316
2229
|
blockHeight: 0,
|
2317
2230
|
txIndex: 0
|
@@ -2319,11 +2232,11 @@ function hashTransaction(transactionRequest, chainId) {
|
|
2319
2232
|
inputClone.predicateGasUsed = bn8(0);
|
2320
2233
|
return inputClone;
|
2321
2234
|
}
|
2322
|
-
case
|
2235
|
+
case InputType4.Message: {
|
2323
2236
|
inputClone.predicateGasUsed = bn8(0);
|
2324
2237
|
return inputClone;
|
2325
2238
|
}
|
2326
|
-
case
|
2239
|
+
case InputType4.Contract: {
|
2327
2240
|
inputClone.txPointer = {
|
2328
2241
|
blockHeight: 0,
|
2329
2242
|
txIndex: 0
|
@@ -2434,8 +2347,9 @@ var CreateTransactionRequest = class extends BaseTransactionRequest {
|
|
2434
2347
|
return {
|
2435
2348
|
type: TransactionType3.Create,
|
2436
2349
|
...baseTransaction,
|
2350
|
+
bytecodeLength: baseTransaction.witnesses[bytecodeWitnessIndex].dataLength / 4,
|
2437
2351
|
bytecodeWitnessIndex,
|
2438
|
-
storageSlotsCount:
|
2352
|
+
storageSlotsCount: storageSlots.length,
|
2439
2353
|
salt: this.salt ? hexlify9(this.salt) : ZeroBytes326,
|
2440
2354
|
storageSlots
|
2441
2355
|
};
|
@@ -2488,7 +2402,7 @@ import { Interface } from "@fuel-ts/abi-coder";
|
|
2488
2402
|
import { addressify as addressify2 } from "@fuel-ts/address";
|
2489
2403
|
import { ZeroBytes32 as ZeroBytes327 } from "@fuel-ts/address/configs";
|
2490
2404
|
import { bn as bn10 } from "@fuel-ts/math";
|
2491
|
-
import { InputType as
|
2405
|
+
import { InputType as InputType5, OutputType as OutputType5, TransactionType as TransactionType4 } from "@fuel-ts/transactions";
|
2492
2406
|
import { arrayify as arrayify8, hexlify as hexlify10 } from "@fuel-ts/utils";
|
2493
2407
|
|
2494
2408
|
// src/providers/transaction-request/scripts.ts
|
@@ -2558,8 +2472,8 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
|
|
2558
2472
|
type: TransactionType4.Script,
|
2559
2473
|
scriptGasLimit: this.gasLimit,
|
2560
2474
|
...super.getBaseTransaction(),
|
2561
|
-
scriptLength:
|
2562
|
-
scriptDataLength:
|
2475
|
+
scriptLength: script.length,
|
2476
|
+
scriptDataLength: scriptData.length,
|
2563
2477
|
receiptsRoot: ZeroBytes327,
|
2564
2478
|
script: hexlify10(script),
|
2565
2479
|
scriptData: hexlify10(scriptData)
|
@@ -2572,7 +2486,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
|
|
2572
2486
|
*/
|
2573
2487
|
getContractInputs() {
|
2574
2488
|
return this.inputs.filter(
|
2575
|
-
(input) => input.type ===
|
2489
|
+
(input) => input.type === InputType5.Contract
|
2576
2490
|
);
|
2577
2491
|
}
|
2578
2492
|
/**
|
@@ -2623,7 +2537,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
|
|
2623
2537
|
}
|
2624
2538
|
calculateMaxGas(chainInfo, minGas) {
|
2625
2539
|
const { consensusParameters } = chainInfo;
|
2626
|
-
const { gasPerByte
|
2540
|
+
const { gasPerByte } = consensusParameters;
|
2627
2541
|
const witnessesLength = this.toTransaction().witnesses.reduce(
|
2628
2542
|
(acc, wit) => acc + wit.dataLength,
|
2629
2543
|
0
|
@@ -2633,8 +2547,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
|
|
2633
2547
|
minGas,
|
2634
2548
|
witnessesLength,
|
2635
2549
|
witnessLimit: this.witnessLimit,
|
2636
|
-
gasLimit: this.gasLimit
|
2637
|
-
maxGasPerTx
|
2550
|
+
gasLimit: this.gasLimit
|
2638
2551
|
});
|
2639
2552
|
}
|
2640
2553
|
/**
|
@@ -2649,7 +2562,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
|
|
2649
2562
|
return this;
|
2650
2563
|
}
|
2651
2564
|
const inputIndex = super.pushInput({
|
2652
|
-
type:
|
2565
|
+
type: InputType5.Contract,
|
2653
2566
|
contractId: contractAddress.toB256(),
|
2654
2567
|
txPointer: "0x00000000000000000000000000000000"
|
2655
2568
|
});
|
@@ -2691,7 +2604,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
|
|
2691
2604
|
|
2692
2605
|
// src/providers/transaction-request/utils.ts
|
2693
2606
|
import { ErrorCode as ErrorCode8, FuelError as FuelError8 } from "@fuel-ts/errors";
|
2694
|
-
import { TransactionType as TransactionType5
|
2607
|
+
import { TransactionType as TransactionType5 } from "@fuel-ts/transactions";
|
2695
2608
|
var transactionRequestify = (obj) => {
|
2696
2609
|
if (obj instanceof ScriptTransactionRequest || obj instanceof CreateTransactionRequest) {
|
2697
2610
|
return obj;
|
@@ -2709,31 +2622,14 @@ var transactionRequestify = (obj) => {
|
|
2709
2622
|
}
|
2710
2623
|
}
|
2711
2624
|
};
|
2712
|
-
var cacheTxInputsFromOwner = (inputs, owner) => inputs.reduce(
|
2713
|
-
(acc, input) => {
|
2714
|
-
if (input.type === InputType5.Coin && input.owner === owner) {
|
2715
|
-
acc.utxos.push(input.id);
|
2716
|
-
}
|
2717
|
-
if (input.type === InputType5.Message && input.recipient === owner) {
|
2718
|
-
acc.messages.push(input.nonce);
|
2719
|
-
}
|
2720
|
-
return acc;
|
2721
|
-
},
|
2722
|
-
{
|
2723
|
-
utxos: [],
|
2724
|
-
messages: []
|
2725
|
-
}
|
2726
|
-
);
|
2727
2625
|
|
2728
2626
|
// src/providers/transaction-response/transaction-response.ts
|
2729
2627
|
import { ErrorCode as ErrorCode12, FuelError as FuelError12 } from "@fuel-ts/errors";
|
2730
|
-
import { bn as
|
2628
|
+
import { bn as bn14 } from "@fuel-ts/math";
|
2731
2629
|
import { TransactionCoder as TransactionCoder4 } from "@fuel-ts/transactions";
|
2732
2630
|
import { arrayify as arrayify10 } from "@fuel-ts/utils";
|
2733
2631
|
|
2734
2632
|
// src/providers/transaction-summary/assemble-transaction-summary.ts
|
2735
|
-
import { bn as bn14 } from "@fuel-ts/math";
|
2736
|
-
import { PolicyType as PolicyType3 } from "@fuel-ts/transactions";
|
2737
2633
|
import { DateTime, hexlify as hexlify11 } from "@fuel-ts/utils";
|
2738
2634
|
|
2739
2635
|
// src/providers/transaction-summary/calculate-transaction-fee.ts
|
@@ -2742,10 +2638,9 @@ import { PolicyType as PolicyType2, TransactionCoder as TransactionCoder3, Trans
|
|
2742
2638
|
import { arrayify as arrayify9 } from "@fuel-ts/utils";
|
2743
2639
|
var calculateTransactionFee = (params) => {
|
2744
2640
|
const {
|
2745
|
-
|
2641
|
+
gasUsed,
|
2746
2642
|
rawPayload,
|
2747
|
-
|
2748
|
-
consensusParameters: { gasCosts, feeParams, maxGasPerTx }
|
2643
|
+
consensusParameters: { gasCosts, feeParams }
|
2749
2644
|
} = params;
|
2750
2645
|
const gasPerByte = bn11(feeParams.gasPerByte);
|
2751
2646
|
const gasPriceFactor = bn11(feeParams.gasPriceFactor);
|
@@ -2755,7 +2650,8 @@ var calculateTransactionFee = (params) => {
|
|
2755
2650
|
return {
|
2756
2651
|
fee: bn11(0),
|
2757
2652
|
minFee: bn11(0),
|
2758
|
-
maxFee: bn11(0)
|
2653
|
+
maxFee: bn11(0),
|
2654
|
+
feeFromGasUsed: bn11(0)
|
2759
2655
|
};
|
2760
2656
|
}
|
2761
2657
|
const { type, witnesses, inputs, policies } = transaction;
|
@@ -2787,6 +2683,7 @@ var calculateTransactionFee = (params) => {
|
|
2787
2683
|
metadataGas,
|
2788
2684
|
txBytesSize: transactionBytes.length
|
2789
2685
|
});
|
2686
|
+
const gasPrice = bn11(policies.find((policy) => policy.type === PolicyType2.GasPrice)?.data);
|
2790
2687
|
const witnessLimit = policies.find((policy) => policy.type === PolicyType2.WitnessLimit)?.data;
|
2791
2688
|
const witnessesLength = witnesses.reduce((acc, wit) => acc + wit.dataLength, 0);
|
2792
2689
|
const maxGas = getMaxGas({
|
@@ -2794,25 +2691,17 @@ var calculateTransactionFee = (params) => {
|
|
2794
2691
|
minGas,
|
2795
2692
|
witnessesLength,
|
2796
2693
|
gasLimit,
|
2797
|
-
witnessLimit
|
2798
|
-
maxGasPerTx
|
2799
|
-
});
|
2800
|
-
const minFee = calculateGasFee({
|
2801
|
-
gasPrice,
|
2802
|
-
gas: minGas,
|
2803
|
-
priceFactor: gasPriceFactor,
|
2804
|
-
tip
|
2805
|
-
});
|
2806
|
-
const maxFee = calculateGasFee({
|
2807
|
-
gasPrice,
|
2808
|
-
gas: maxGas,
|
2809
|
-
priceFactor: gasPriceFactor,
|
2810
|
-
tip
|
2694
|
+
witnessLimit
|
2811
2695
|
});
|
2696
|
+
const feeFromGasUsed = calculatePriceWithFactor(gasUsed, gasPrice, gasPriceFactor);
|
2697
|
+
const minFee = calculatePriceWithFactor(minGas, gasPrice, gasPriceFactor);
|
2698
|
+
const maxFee = calculatePriceWithFactor(maxGas, gasPrice, gasPriceFactor);
|
2699
|
+
const fee = minFee.add(feeFromGasUsed);
|
2812
2700
|
return {
|
2701
|
+
fee,
|
2813
2702
|
minFee,
|
2814
2703
|
maxFee,
|
2815
|
-
|
2704
|
+
feeFromGasUsed
|
2816
2705
|
};
|
2817
2706
|
};
|
2818
2707
|
|
@@ -3426,9 +3315,7 @@ function assembleTransactionSummary(params) {
|
|
3426
3315
|
gqlTransactionStatus,
|
3427
3316
|
abiMap = {},
|
3428
3317
|
maxInputs,
|
3429
|
-
gasCosts
|
3430
|
-
maxGasPerTx,
|
3431
|
-
gasPrice
|
3318
|
+
gasCosts
|
3432
3319
|
} = params;
|
3433
3320
|
const gasUsed = getGasUsedFromReceipts(receipts);
|
3434
3321
|
const rawPayload = hexlify11(transactionBytes);
|
@@ -3442,14 +3329,11 @@ function assembleTransactionSummary(params) {
|
|
3442
3329
|
maxInputs
|
3443
3330
|
});
|
3444
3331
|
const typeName = getTransactionTypeName(transaction.type);
|
3445
|
-
const tip = bn14(transaction.policies?.find((policy) => policy.type === PolicyType3.Tip)?.data);
|
3446
3332
|
const { fee } = calculateTransactionFee({
|
3447
|
-
|
3333
|
+
gasUsed,
|
3448
3334
|
rawPayload,
|
3449
|
-
tip,
|
3450
3335
|
consensusParameters: {
|
3451
3336
|
gasCosts,
|
3452
|
-
maxGasPerTx,
|
3453
3337
|
feeParams: {
|
3454
3338
|
gasPerByte,
|
3455
3339
|
gasPriceFactor
|
@@ -3509,7 +3393,7 @@ var TransactionResponse = class {
|
|
3509
3393
|
/** Current provider */
|
3510
3394
|
provider;
|
3511
3395
|
/** Gas used on the transaction */
|
3512
|
-
gasUsed =
|
3396
|
+
gasUsed = bn14(0);
|
3513
3397
|
/** The graphql Transaction with receipts object. */
|
3514
3398
|
gqlTransaction;
|
3515
3399
|
abis;
|
@@ -3587,13 +3471,8 @@ var TransactionResponse = class {
|
|
3587
3471
|
const decodedTransaction = this.decodeTransaction(
|
3588
3472
|
transaction
|
3589
3473
|
);
|
3590
|
-
|
3591
|
-
|
3592
|
-
txReceipts = transaction.status.receipts;
|
3593
|
-
}
|
3594
|
-
const receipts = txReceipts.map(processGqlReceipt) || [];
|
3595
|
-
const { gasPerByte, gasPriceFactor, gasCosts, maxGasPerTx } = this.provider.getGasConfig();
|
3596
|
-
const gasPrice = await this.provider.getLatestGasPrice();
|
3474
|
+
const receipts = transaction.receipts?.map(processGqlReceipt) || [];
|
3475
|
+
const { gasPerByte, gasPriceFactor, gasCosts } = this.provider.getGasConfig();
|
3597
3476
|
const maxInputs = this.provider.getChain().consensusParameters.maxInputs;
|
3598
3477
|
const transactionSummary = assembleTransactionSummary({
|
3599
3478
|
id: this.id,
|
@@ -3605,9 +3484,7 @@ var TransactionResponse = class {
|
|
3605
3484
|
gasPriceFactor,
|
3606
3485
|
abiMap: contractsAbiMap,
|
3607
3486
|
maxInputs,
|
3608
|
-
gasCosts
|
3609
|
-
maxGasPerTx,
|
3610
|
-
gasPrice
|
3487
|
+
gasCosts
|
3611
3488
|
});
|
3612
3489
|
return transactionSummary;
|
3613
3490
|
}
|
@@ -3734,29 +3611,29 @@ var processGqlChain = (chain) => {
|
|
3734
3611
|
const { contractParams, feeParams, predicateParams, scriptParams, txParams, gasCosts } = consensusParameters;
|
3735
3612
|
return {
|
3736
3613
|
name,
|
3737
|
-
baseChainHeight:
|
3614
|
+
baseChainHeight: bn15(daHeight),
|
3738
3615
|
consensusParameters: {
|
3739
|
-
contractMaxSize:
|
3740
|
-
maxInputs:
|
3741
|
-
maxOutputs:
|
3742
|
-
maxWitnesses:
|
3743
|
-
maxGasPerTx:
|
3744
|
-
maxScriptLength:
|
3745
|
-
maxScriptDataLength:
|
3746
|
-
maxStorageSlots:
|
3747
|
-
maxPredicateLength:
|
3748
|
-
maxPredicateDataLength:
|
3749
|
-
maxGasPerPredicate:
|
3750
|
-
gasPriceFactor:
|
3751
|
-
gasPerByte:
|
3752
|
-
maxMessageDataLength:
|
3753
|
-
chainId:
|
3616
|
+
contractMaxSize: bn15(contractParams.contractMaxSize),
|
3617
|
+
maxInputs: bn15(txParams.maxInputs),
|
3618
|
+
maxOutputs: bn15(txParams.maxOutputs),
|
3619
|
+
maxWitnesses: bn15(txParams.maxWitnesses),
|
3620
|
+
maxGasPerTx: bn15(txParams.maxGasPerTx),
|
3621
|
+
maxScriptLength: bn15(scriptParams.maxScriptLength),
|
3622
|
+
maxScriptDataLength: bn15(scriptParams.maxScriptDataLength),
|
3623
|
+
maxStorageSlots: bn15(contractParams.maxStorageSlots),
|
3624
|
+
maxPredicateLength: bn15(predicateParams.maxPredicateLength),
|
3625
|
+
maxPredicateDataLength: bn15(predicateParams.maxPredicateDataLength),
|
3626
|
+
maxGasPerPredicate: bn15(predicateParams.maxGasPerPredicate),
|
3627
|
+
gasPriceFactor: bn15(feeParams.gasPriceFactor),
|
3628
|
+
gasPerByte: bn15(feeParams.gasPerByte),
|
3629
|
+
maxMessageDataLength: bn15(predicateParams.maxMessageDataLength),
|
3630
|
+
chainId: bn15(consensusParameters.chainId),
|
3754
3631
|
gasCosts
|
3755
3632
|
},
|
3756
3633
|
gasCosts,
|
3757
3634
|
latestBlock: {
|
3758
3635
|
id: latestBlock.id,
|
3759
|
-
height:
|
3636
|
+
height: bn15(latestBlock.header.height),
|
3760
3637
|
time: latestBlock.header.time,
|
3761
3638
|
transactions: latestBlock.transactions.map((i) => ({
|
3762
3639
|
id: i.id
|
@@ -3850,8 +3727,10 @@ var _Provider = class {
|
|
3850
3727
|
* Returns some helpful parameters related to gas fees.
|
3851
3728
|
*/
|
3852
3729
|
getGasConfig() {
|
3730
|
+
const { minGasPrice } = this.getNode();
|
3853
3731
|
const { maxGasPerTx, maxGasPerPredicate, gasPriceFactor, gasPerByte, gasCosts } = this.getChain().consensusParameters;
|
3854
3732
|
return {
|
3733
|
+
minGasPrice,
|
3855
3734
|
maxGasPerTx,
|
3856
3735
|
maxGasPerPredicate,
|
3857
3736
|
gasPriceFactor,
|
@@ -3949,7 +3828,7 @@ var _Provider = class {
|
|
3949
3828
|
*/
|
3950
3829
|
async getBlockNumber() {
|
3951
3830
|
const { chain } = await this.operations.getChain();
|
3952
|
-
return
|
3831
|
+
return bn15(chain.latestBlock.header.height, 10);
|
3953
3832
|
}
|
3954
3833
|
/**
|
3955
3834
|
* Returns the chain information.
|
@@ -3959,11 +3838,13 @@ var _Provider = class {
|
|
3959
3838
|
async fetchNode() {
|
3960
3839
|
const { nodeInfo } = await this.operations.getNodeInfo();
|
3961
3840
|
const processedNodeInfo = {
|
3962
|
-
maxDepth:
|
3963
|
-
maxTx:
|
3841
|
+
maxDepth: bn15(nodeInfo.maxDepth),
|
3842
|
+
maxTx: bn15(nodeInfo.maxTx),
|
3843
|
+
minGasPrice: bn15(nodeInfo.minGasPrice),
|
3964
3844
|
nodeVersion: nodeInfo.nodeVersion,
|
3965
3845
|
utxoValidation: nodeInfo.utxoValidation,
|
3966
|
-
vmBacktrace: nodeInfo.vmBacktrace
|
3846
|
+
vmBacktrace: nodeInfo.vmBacktrace,
|
3847
|
+
peers: nodeInfo.peers
|
3967
3848
|
};
|
3968
3849
|
_Provider.nodeInfoCache[this.url] = processedNodeInfo;
|
3969
3850
|
return processedNodeInfo;
|
@@ -4049,13 +3930,14 @@ var _Provider = class {
|
|
4049
3930
|
return this.estimateTxDependencies(transactionRequest);
|
4050
3931
|
}
|
4051
3932
|
const encodedTransaction = hexlify12(transactionRequest.toTransactionBytes());
|
4052
|
-
const { dryRun:
|
4053
|
-
|
3933
|
+
const { dryRun: gqlReceipts } = await this.operations.dryRun({
|
3934
|
+
encodedTransaction,
|
4054
3935
|
utxoValidation: utxoValidation || false
|
4055
3936
|
});
|
4056
|
-
const
|
4057
|
-
|
4058
|
-
|
3937
|
+
const receipts = gqlReceipts.map(processGqlReceipt);
|
3938
|
+
return {
|
3939
|
+
receipts
|
3940
|
+
};
|
4059
3941
|
}
|
4060
3942
|
/**
|
4061
3943
|
* Verifies whether enough gas is available to complete transaction.
|
@@ -4081,7 +3963,7 @@ var _Provider = class {
|
|
4081
3963
|
} = response;
|
4082
3964
|
if (inputs) {
|
4083
3965
|
inputs.forEach((input, index) => {
|
4084
|
-
if ("predicateGasUsed" in input &&
|
3966
|
+
if ("predicateGasUsed" in input && bn15(input.predicateGasUsed).gt(0)) {
|
4085
3967
|
transactionRequest.inputs[index].predicateGasUsed = input.predicateGasUsed;
|
4086
3968
|
}
|
4087
3969
|
});
|
@@ -4094,6 +3976,9 @@ var _Provider = class {
|
|
4094
3976
|
* If there are missing variable outputs,
|
4095
3977
|
* `addVariableOutputs` is called on the transaction.
|
4096
3978
|
*
|
3979
|
+
* @privateRemarks
|
3980
|
+
* TODO: Investigate support for missing contract IDs
|
3981
|
+
* TODO: Add support for missing output messages
|
4097
3982
|
*
|
4098
3983
|
* @param transactionRequest - The transaction request object.
|
4099
3984
|
* @returns A promise.
|
@@ -4106,19 +3991,16 @@ var _Provider = class {
|
|
4106
3991
|
missingContractIds: []
|
4107
3992
|
};
|
4108
3993
|
}
|
3994
|
+
await this.estimatePredicates(transactionRequest);
|
4109
3995
|
let receipts = [];
|
4110
3996
|
const missingContractIds = [];
|
4111
3997
|
let outputVariables = 0;
|
4112
|
-
let dryrunStatus;
|
4113
3998
|
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
4114
|
-
const {
|
4115
|
-
|
4116
|
-
} = await this.operations.dryRun({
|
4117
|
-
encodedTransactions: [hexlify12(transactionRequest.toTransactionBytes())],
|
3999
|
+
const { dryRun: gqlReceipts } = await this.operations.dryRun({
|
4000
|
+
encodedTransaction: hexlify12(transactionRequest.toTransactionBytes()),
|
4118
4001
|
utxoValidation: false
|
4119
4002
|
});
|
4120
|
-
receipts =
|
4121
|
-
dryrunStatus = status;
|
4003
|
+
receipts = gqlReceipts.map(processGqlReceipt);
|
4122
4004
|
const { missingOutputVariables, missingOutputContractIds } = getReceiptsWithMissingData(receipts);
|
4123
4005
|
const hasMissingOutputs = missingOutputVariables.length !== 0 || missingOutputContractIds.length !== 0;
|
4124
4006
|
if (hasMissingOutputs) {
|
@@ -4128,10 +4010,6 @@ var _Provider = class {
|
|
4128
4010
|
transactionRequest.addContractInputAndOutput(Address2.fromString(contractId));
|
4129
4011
|
missingContractIds.push(contractId);
|
4130
4012
|
});
|
4131
|
-
const { maxFee } = await this.estimateTxGasAndFee({
|
4132
|
-
transactionRequest
|
4133
|
-
});
|
4134
|
-
transactionRequest.maxFee = maxFee;
|
4135
4013
|
} else {
|
4136
4014
|
break;
|
4137
4015
|
}
|
@@ -4139,139 +4017,37 @@ var _Provider = class {
|
|
4139
4017
|
return {
|
4140
4018
|
receipts,
|
4141
4019
|
outputVariables,
|
4142
|
-
missingContractIds
|
4143
|
-
dryrunStatus
|
4020
|
+
missingContractIds
|
4144
4021
|
};
|
4145
4022
|
}
|
4146
|
-
/**
|
4147
|
-
* Dry runs multiple transactions and checks for missing dependencies in batches.
|
4148
|
-
*
|
4149
|
-
* Transactions are dry run in batches. After each dry run, transactions requiring
|
4150
|
-
* further modifications are identified. The method iteratively updates these transactions
|
4151
|
-
* and performs subsequent dry runs until all dependencies for each transaction are satisfied.
|
4152
|
-
*
|
4153
|
-
* @param transactionRequests - Array of transaction request objects.
|
4154
|
-
* @returns A promise that resolves to an array of results for each transaction.
|
4155
|
-
*/
|
4156
|
-
async estimateMultipleTxDependencies(transactionRequests) {
|
4157
|
-
const results = transactionRequests.map(() => ({
|
4158
|
-
receipts: [],
|
4159
|
-
outputVariables: 0,
|
4160
|
-
missingContractIds: [],
|
4161
|
-
dryrunStatus: void 0
|
4162
|
-
}));
|
4163
|
-
const allRequests = clone3(transactionRequests);
|
4164
|
-
const serializedTransactionsMap = /* @__PURE__ */ new Map();
|
4165
|
-
allRequests.forEach((req, index) => {
|
4166
|
-
if (req.type === TransactionType8.Script) {
|
4167
|
-
serializedTransactionsMap.set(index, hexlify12(req.toTransactionBytes()));
|
4168
|
-
}
|
4169
|
-
});
|
4170
|
-
let transactionsToProcess = Array.from(serializedTransactionsMap.keys());
|
4171
|
-
let attempt = 0;
|
4172
|
-
while (transactionsToProcess.length > 0 && attempt < MAX_RETRIES) {
|
4173
|
-
const encodedTransactions = transactionsToProcess.map(
|
4174
|
-
(index) => serializedTransactionsMap.get(index)
|
4175
|
-
);
|
4176
|
-
const dryRunResults = await this.operations.dryRun({
|
4177
|
-
encodedTransactions,
|
4178
|
-
utxoValidation: false
|
4179
|
-
});
|
4180
|
-
const nextRoundTransactions = [];
|
4181
|
-
for (let i = 0; i < dryRunResults.dryRun.length; i++) {
|
4182
|
-
const currentResultIndex = transactionsToProcess[i];
|
4183
|
-
const { receipts: rawReceipts, status } = dryRunResults.dryRun[i];
|
4184
|
-
results[currentResultIndex].receipts = rawReceipts.map(processGqlReceipt);
|
4185
|
-
results[currentResultIndex].dryrunStatus = status;
|
4186
|
-
const { missingOutputVariables, missingOutputContractIds } = getReceiptsWithMissingData(
|
4187
|
-
results[currentResultIndex].receipts
|
4188
|
-
);
|
4189
|
-
const hasMissingOutputs = missingOutputVariables.length > 0 || missingOutputContractIds.length > 0;
|
4190
|
-
const requestToProcess = allRequests[currentResultIndex];
|
4191
|
-
if (hasMissingOutputs && requestToProcess?.type === TransactionType8.Script) {
|
4192
|
-
results[currentResultIndex].outputVariables += missingOutputVariables.length;
|
4193
|
-
requestToProcess.addVariableOutputs(missingOutputVariables.length);
|
4194
|
-
missingOutputContractIds.forEach(({ contractId }) => {
|
4195
|
-
requestToProcess.addContractInputAndOutput(Address2.fromString(contractId));
|
4196
|
-
results[currentResultIndex].missingContractIds.push(contractId);
|
4197
|
-
});
|
4198
|
-
const { maxFee } = await this.estimateTxGasAndFee({
|
4199
|
-
transactionRequest: requestToProcess
|
4200
|
-
});
|
4201
|
-
requestToProcess.maxFee = maxFee;
|
4202
|
-
serializedTransactionsMap.set(
|
4203
|
-
currentResultIndex,
|
4204
|
-
hexlify12(requestToProcess.toTransactionBytes())
|
4205
|
-
);
|
4206
|
-
nextRoundTransactions.push(currentResultIndex);
|
4207
|
-
allRequests[currentResultIndex] = requestToProcess;
|
4208
|
-
}
|
4209
|
-
}
|
4210
|
-
transactionsToProcess = nextRoundTransactions;
|
4211
|
-
attempt += 1;
|
4212
|
-
}
|
4213
|
-
return results;
|
4214
|
-
}
|
4215
|
-
async dryRunMultipleTransactions(transactionRequests, { utxoValidation, estimateTxDependencies = true } = {}) {
|
4216
|
-
if (estimateTxDependencies) {
|
4217
|
-
return this.estimateMultipleTxDependencies(transactionRequests);
|
4218
|
-
}
|
4219
|
-
const encodedTransactions = transactionRequests.map((tx) => hexlify12(tx.toTransactionBytes()));
|
4220
|
-
const { dryRun: dryRunStatuses } = await this.operations.dryRun({
|
4221
|
-
encodedTransactions,
|
4222
|
-
utxoValidation: utxoValidation || false
|
4223
|
-
});
|
4224
|
-
const results = dryRunStatuses.map(({ receipts: rawReceipts, status }) => {
|
4225
|
-
const receipts = rawReceipts.map(processGqlReceipt);
|
4226
|
-
return { receipts, dryrunStatus: status };
|
4227
|
-
});
|
4228
|
-
return results;
|
4229
|
-
}
|
4230
4023
|
/**
|
4231
4024
|
* Estimates the transaction gas and fee based on the provided transaction request.
|
4232
4025
|
* @param transactionRequest - The transaction request object.
|
4233
4026
|
* @returns An object containing the estimated minimum gas, minimum fee, maximum gas, and maximum fee.
|
4234
4027
|
*/
|
4235
|
-
|
4028
|
+
estimateTxGasAndFee(params) {
|
4236
4029
|
const { transactionRequest } = params;
|
4237
|
-
|
4030
|
+
const { gasPriceFactor, minGasPrice, maxGasPerTx } = this.getGasConfig();
|
4238
4031
|
const chainInfo = this.getChain();
|
4239
|
-
const
|
4032
|
+
const gasPrice = transactionRequest.gasPrice.eq(0) ? minGasPrice : transactionRequest.gasPrice;
|
4033
|
+
transactionRequest.gasPrice = gasPrice;
|
4240
4034
|
const minGas = transactionRequest.calculateMinGas(chainInfo);
|
4241
|
-
|
4242
|
-
gasPrice = await this.estimateGasPrice(10);
|
4243
|
-
}
|
4244
|
-
const minFee = calculateGasFee({
|
4245
|
-
gasPrice: bn16(gasPrice),
|
4246
|
-
gas: minGas,
|
4247
|
-
priceFactor: gasPriceFactor,
|
4248
|
-
tip: transactionRequest.tip
|
4249
|
-
}).add(1);
|
4250
|
-
let gasLimit = bn16(0);
|
4035
|
+
const minFee = calculatePriceWithFactor(minGas, gasPrice, gasPriceFactor).normalizeZeroToOne();
|
4251
4036
|
if (transactionRequest.type === TransactionType8.Script) {
|
4252
|
-
gasLimit = transactionRequest.gasLimit;
|
4253
4037
|
if (transactionRequest.gasLimit.eq(0)) {
|
4254
4038
|
transactionRequest.gasLimit = minGas;
|
4255
4039
|
transactionRequest.gasLimit = maxGasPerTx.sub(
|
4256
4040
|
transactionRequest.calculateMaxGas(chainInfo, minGas)
|
4257
4041
|
);
|
4258
|
-
gasLimit = transactionRequest.gasLimit;
|
4259
4042
|
}
|
4260
4043
|
}
|
4261
4044
|
const maxGas = transactionRequest.calculateMaxGas(chainInfo, minGas);
|
4262
|
-
const maxFee =
|
4263
|
-
gasPrice: bn16(gasPrice),
|
4264
|
-
gas: maxGas,
|
4265
|
-
priceFactor: gasPriceFactor,
|
4266
|
-
tip: transactionRequest.tip
|
4267
|
-
}).add(1);
|
4045
|
+
const maxFee = calculatePriceWithFactor(maxGas, gasPrice, gasPriceFactor).normalizeZeroToOne();
|
4268
4046
|
return {
|
4269
4047
|
minGas,
|
4270
4048
|
minFee,
|
4271
4049
|
maxGas,
|
4272
|
-
maxFee
|
4273
|
-
gasPrice,
|
4274
|
-
gasLimit
|
4050
|
+
maxFee
|
4275
4051
|
};
|
4276
4052
|
}
|
4277
4053
|
/**
|
@@ -4289,17 +4065,15 @@ var _Provider = class {
|
|
4289
4065
|
if (estimateTxDependencies) {
|
4290
4066
|
return this.estimateTxDependencies(transactionRequest);
|
4291
4067
|
}
|
4292
|
-
const
|
4293
|
-
const { dryRun:
|
4294
|
-
|
4068
|
+
const encodedTransaction = hexlify12(transactionRequest.toTransactionBytes());
|
4069
|
+
const { dryRun: gqlReceipts } = await this.operations.dryRun({
|
4070
|
+
encodedTransaction,
|
4295
4071
|
utxoValidation: true
|
4296
4072
|
});
|
4297
|
-
const
|
4298
|
-
|
4299
|
-
|
4300
|
-
|
4301
|
-
});
|
4302
|
-
return { receipts: callResult[0].receipts };
|
4073
|
+
const receipts = gqlReceipts.map(processGqlReceipt);
|
4074
|
+
return {
|
4075
|
+
receipts
|
4076
|
+
};
|
4303
4077
|
}
|
4304
4078
|
/**
|
4305
4079
|
* Returns a transaction cost to enable user
|
@@ -4316,79 +4090,77 @@ var _Provider = class {
|
|
4316
4090
|
* @param tolerance - The tolerance to add on top of the gasUsed.
|
4317
4091
|
* @returns A promise that resolves to the transaction cost object.
|
4318
4092
|
*/
|
4319
|
-
async getTransactionCost(transactionRequestLike,
|
4093
|
+
async getTransactionCost(transactionRequestLike, forwardingQuantities = [], {
|
4094
|
+
estimateTxDependencies = true,
|
4095
|
+
estimatePredicates = true,
|
4096
|
+
resourcesOwner,
|
4097
|
+
signatureCallback
|
4098
|
+
} = {}) {
|
4320
4099
|
const txRequestClone = clone3(transactionRequestify(transactionRequestLike));
|
4100
|
+
const { minGasPrice } = this.getGasConfig();
|
4101
|
+
const setGasPrice = max(txRequestClone.gasPrice, minGasPrice);
|
4321
4102
|
const isScriptTransaction = txRequestClone.type === TransactionType8.Script;
|
4322
4103
|
const coinOutputsQuantities = txRequestClone.getCoinOutputsQuantities();
|
4323
|
-
const allQuantities = mergeQuantities(coinOutputsQuantities,
|
4104
|
+
const allQuantities = mergeQuantities(coinOutputsQuantities, forwardingQuantities);
|
4324
4105
|
txRequestClone.fundWithFakeUtxos(allQuantities, resourcesOwner?.address);
|
4325
|
-
txRequestClone.maxFee = bn16(0);
|
4326
4106
|
if (isScriptTransaction) {
|
4327
|
-
txRequestClone.gasLimit =
|
4107
|
+
txRequestClone.gasLimit = bn15(0);
|
4328
4108
|
}
|
4329
|
-
if (
|
4330
|
-
resourcesOwner
|
4109
|
+
if (estimatePredicates) {
|
4110
|
+
if (resourcesOwner && "populateTransactionPredicateData" in resourcesOwner) {
|
4111
|
+
resourcesOwner.populateTransactionPredicateData(txRequestClone);
|
4112
|
+
}
|
4113
|
+
await this.estimatePredicates(txRequestClone);
|
4331
4114
|
}
|
4332
|
-
const signedRequest = clone3(txRequestClone);
|
4333
|
-
let addedSignatures = 0;
|
4334
4115
|
if (signatureCallback && isScriptTransaction) {
|
4335
|
-
|
4336
|
-
await signatureCallback(signedRequest);
|
4337
|
-
addedSignatures = signedRequest.witnesses.length - lengthBefore;
|
4116
|
+
await signatureCallback(txRequestClone);
|
4338
4117
|
}
|
4339
|
-
|
4340
|
-
|
4341
|
-
transactionRequest: signedRequest
|
4118
|
+
let { maxFee, maxGas, minFee, minGas } = this.estimateTxGasAndFee({
|
4119
|
+
transactionRequest: txRequestClone
|
4342
4120
|
});
|
4343
4121
|
let receipts = [];
|
4344
4122
|
let missingContractIds = [];
|
4345
4123
|
let outputVariables = 0;
|
4346
|
-
let gasUsed =
|
4347
|
-
|
4348
|
-
|
4349
|
-
if (isScriptTransaction) {
|
4350
|
-
txRequestClone.gasLimit = gasLimit;
|
4351
|
-
if (signatureCallback) {
|
4352
|
-
await signatureCallback(txRequestClone);
|
4353
|
-
}
|
4124
|
+
let gasUsed = bn15(0);
|
4125
|
+
if (isScriptTransaction && estimateTxDependencies) {
|
4126
|
+
txRequestClone.gasPrice = bn15(0);
|
4354
4127
|
const result = await this.estimateTxDependencies(txRequestClone);
|
4355
4128
|
receipts = result.receipts;
|
4356
4129
|
outputVariables = result.outputVariables;
|
4357
4130
|
missingContractIds = result.missingContractIds;
|
4358
4131
|
gasUsed = isScriptTransaction ? getGasUsedFromReceipts(receipts) : gasUsed;
|
4359
4132
|
txRequestClone.gasLimit = gasUsed;
|
4360
|
-
|
4361
|
-
|
4362
|
-
|
4133
|
+
txRequestClone.gasPrice = setGasPrice;
|
4134
|
+
({ maxFee, maxGas, minFee, minGas } = this.estimateTxGasAndFee({
|
4135
|
+
transactionRequest: txRequestClone
|
4363
4136
|
}));
|
4364
4137
|
}
|
4365
4138
|
return {
|
4366
4139
|
requiredQuantities: allQuantities,
|
4367
4140
|
receipts,
|
4368
4141
|
gasUsed,
|
4369
|
-
|
4142
|
+
minGasPrice,
|
4143
|
+
gasPrice: setGasPrice,
|
4370
4144
|
minGas,
|
4371
4145
|
maxGas,
|
4372
4146
|
minFee,
|
4373
4147
|
maxFee,
|
4148
|
+
estimatedInputs: txRequestClone.inputs,
|
4374
4149
|
outputVariables,
|
4375
|
-
missingContractIds
|
4376
|
-
addedSignatures,
|
4377
|
-
estimatedPredicates: txRequestClone.inputs
|
4150
|
+
missingContractIds
|
4378
4151
|
};
|
4379
4152
|
}
|
4380
|
-
async getResourcesForTransaction(owner, transactionRequestLike,
|
4153
|
+
async getResourcesForTransaction(owner, transactionRequestLike, forwardingQuantities = []) {
|
4381
4154
|
const ownerAddress = Address2.fromAddressOrString(owner);
|
4382
4155
|
const transactionRequest = transactionRequestify(clone3(transactionRequestLike));
|
4383
|
-
const transactionCost = await this.getTransactionCost(transactionRequest,
|
4384
|
-
quantitiesToContract
|
4385
|
-
});
|
4156
|
+
const transactionCost = await this.getTransactionCost(transactionRequest, forwardingQuantities);
|
4386
4157
|
transactionRequest.addResources(
|
4387
4158
|
await this.getResourcesToSpend(ownerAddress, transactionCost.requiredQuantities)
|
4388
4159
|
);
|
4389
|
-
const { requiredQuantities, ...txCost } = await this.getTransactionCost(
|
4390
|
-
|
4391
|
-
|
4160
|
+
const { requiredQuantities, ...txCost } = await this.getTransactionCost(
|
4161
|
+
transactionRequest,
|
4162
|
+
forwardingQuantities
|
4163
|
+
);
|
4392
4164
|
const resources = await this.getResourcesToSpend(ownerAddress, requiredQuantities);
|
4393
4165
|
return {
|
4394
4166
|
resources,
|
@@ -4410,10 +4182,11 @@ var _Provider = class {
|
|
4410
4182
|
return coins.map((coin) => ({
|
4411
4183
|
id: coin.utxoId,
|
4412
4184
|
assetId: coin.assetId,
|
4413
|
-
amount:
|
4185
|
+
amount: bn15(coin.amount),
|
4414
4186
|
owner: Address2.fromAddressOrString(coin.owner),
|
4415
|
-
|
4416
|
-
|
4187
|
+
maturity: bn15(coin.maturity).toNumber(),
|
4188
|
+
blockCreated: bn15(coin.blockCreated),
|
4189
|
+
txCreatedIdx: bn15(coin.txCreatedIdx)
|
4417
4190
|
}));
|
4418
4191
|
}
|
4419
4192
|
/**
|
@@ -4450,9 +4223,9 @@ var _Provider = class {
|
|
4450
4223
|
switch (coin.__typename) {
|
4451
4224
|
case "MessageCoin":
|
4452
4225
|
return {
|
4453
|
-
amount:
|
4226
|
+
amount: bn15(coin.amount),
|
4454
4227
|
assetId: coin.assetId,
|
4455
|
-
daHeight:
|
4228
|
+
daHeight: bn15(coin.daHeight),
|
4456
4229
|
sender: Address2.fromAddressOrString(coin.sender),
|
4457
4230
|
recipient: Address2.fromAddressOrString(coin.recipient),
|
4458
4231
|
nonce: coin.nonce
|
@@ -4460,11 +4233,12 @@ var _Provider = class {
|
|
4460
4233
|
case "Coin":
|
4461
4234
|
return {
|
4462
4235
|
id: coin.utxoId,
|
4463
|
-
amount:
|
4236
|
+
amount: bn15(coin.amount),
|
4464
4237
|
assetId: coin.assetId,
|
4465
4238
|
owner: Address2.fromAddressOrString(coin.owner),
|
4466
|
-
|
4467
|
-
|
4239
|
+
maturity: bn15(coin.maturity).toNumber(),
|
4240
|
+
blockCreated: bn15(coin.blockCreated),
|
4241
|
+
txCreatedIdx: bn15(coin.txCreatedIdx)
|
4468
4242
|
};
|
4469
4243
|
default:
|
4470
4244
|
return null;
|
@@ -4481,13 +4255,13 @@ var _Provider = class {
|
|
4481
4255
|
async getBlock(idOrHeight) {
|
4482
4256
|
let variables;
|
4483
4257
|
if (typeof idOrHeight === "number") {
|
4484
|
-
variables = { height:
|
4258
|
+
variables = { height: bn15(idOrHeight).toString(10) };
|
4485
4259
|
} else if (idOrHeight === "latest") {
|
4486
4260
|
variables = { height: (await this.getBlockNumber()).toString(10) };
|
4487
4261
|
} else if (idOrHeight.length === 66) {
|
4488
4262
|
variables = { blockId: idOrHeight };
|
4489
4263
|
} else {
|
4490
|
-
variables = { blockId:
|
4264
|
+
variables = { blockId: bn15(idOrHeight).toString(10) };
|
4491
4265
|
}
|
4492
4266
|
const { block } = await this.operations.getBlock(variables);
|
4493
4267
|
if (!block) {
|
@@ -4495,7 +4269,7 @@ var _Provider = class {
|
|
4495
4269
|
}
|
4496
4270
|
return {
|
4497
4271
|
id: block.id,
|
4498
|
-
height:
|
4272
|
+
height: bn15(block.header.height),
|
4499
4273
|
time: block.header.time,
|
4500
4274
|
transactionIds: block.transactions.map((tx) => tx.id)
|
4501
4275
|
};
|
@@ -4510,7 +4284,7 @@ var _Provider = class {
|
|
4510
4284
|
const { blocks: fetchedData } = await this.operations.getBlocks(params);
|
4511
4285
|
const blocks = fetchedData.edges.map(({ node: block }) => ({
|
4512
4286
|
id: block.id,
|
4513
|
-
height:
|
4287
|
+
height: bn15(block.header.height),
|
4514
4288
|
time: block.header.time,
|
4515
4289
|
transactionIds: block.transactions.map((tx) => tx.id)
|
4516
4290
|
}));
|
@@ -4525,7 +4299,7 @@ var _Provider = class {
|
|
4525
4299
|
async getBlockWithTransactions(idOrHeight) {
|
4526
4300
|
let variables;
|
4527
4301
|
if (typeof idOrHeight === "number") {
|
4528
|
-
variables = { blockHeight:
|
4302
|
+
variables = { blockHeight: bn15(idOrHeight).toString(10) };
|
4529
4303
|
} else if (idOrHeight === "latest") {
|
4530
4304
|
variables = { blockHeight: (await this.getBlockNumber()).toString() };
|
4531
4305
|
} else {
|
@@ -4537,7 +4311,7 @@ var _Provider = class {
|
|
4537
4311
|
}
|
4538
4312
|
return {
|
4539
4313
|
id: block.id,
|
4540
|
-
height:
|
4314
|
+
height: bn15(block.header.height, 10),
|
4541
4315
|
time: block.header.time,
|
4542
4316
|
transactionIds: block.transactions.map((tx) => tx.id),
|
4543
4317
|
transactions: block.transactions.map(
|
@@ -4586,7 +4360,7 @@ var _Provider = class {
|
|
4586
4360
|
contract: Address2.fromAddressOrString(contractId).toB256(),
|
4587
4361
|
asset: hexlify12(assetId)
|
4588
4362
|
});
|
4589
|
-
return
|
4363
|
+
return bn15(contractBalance.amount, 10);
|
4590
4364
|
}
|
4591
4365
|
/**
|
4592
4366
|
* Returns the balance for the given owner for the given asset ID.
|
@@ -4600,7 +4374,7 @@ var _Provider = class {
|
|
4600
4374
|
owner: Address2.fromAddressOrString(owner).toB256(),
|
4601
4375
|
assetId: hexlify12(assetId)
|
4602
4376
|
});
|
4603
|
-
return
|
4377
|
+
return bn15(balance.amount, 10);
|
4604
4378
|
}
|
4605
4379
|
/**
|
4606
4380
|
* Returns balances for the given owner.
|
@@ -4618,7 +4392,7 @@ var _Provider = class {
|
|
4618
4392
|
const balances = result.balances.edges.map((edge) => edge.node);
|
4619
4393
|
return balances.map((balance) => ({
|
4620
4394
|
assetId: balance.assetId,
|
4621
|
-
amount:
|
4395
|
+
amount: bn15(balance.amount)
|
4622
4396
|
}));
|
4623
4397
|
}
|
4624
4398
|
/**
|
@@ -4640,15 +4414,15 @@ var _Provider = class {
|
|
4640
4414
|
sender: message.sender,
|
4641
4415
|
recipient: message.recipient,
|
4642
4416
|
nonce: message.nonce,
|
4643
|
-
amount:
|
4417
|
+
amount: bn15(message.amount),
|
4644
4418
|
data: message.data
|
4645
4419
|
}),
|
4646
4420
|
sender: Address2.fromAddressOrString(message.sender),
|
4647
4421
|
recipient: Address2.fromAddressOrString(message.recipient),
|
4648
4422
|
nonce: message.nonce,
|
4649
|
-
amount:
|
4423
|
+
amount: bn15(message.amount),
|
4650
4424
|
data: InputMessageCoder.decodeData(message.data),
|
4651
|
-
daHeight:
|
4425
|
+
daHeight: bn15(message.daHeight)
|
4652
4426
|
}));
|
4653
4427
|
}
|
4654
4428
|
/**
|
@@ -4701,60 +4475,44 @@ var _Provider = class {
|
|
4701
4475
|
} = result.messageProof;
|
4702
4476
|
return {
|
4703
4477
|
messageProof: {
|
4704
|
-
proofIndex:
|
4478
|
+
proofIndex: bn15(messageProof.proofIndex),
|
4705
4479
|
proofSet: messageProof.proofSet
|
4706
4480
|
},
|
4707
4481
|
blockProof: {
|
4708
|
-
proofIndex:
|
4482
|
+
proofIndex: bn15(blockProof.proofIndex),
|
4709
4483
|
proofSet: blockProof.proofSet
|
4710
4484
|
},
|
4711
4485
|
messageBlockHeader: {
|
4712
4486
|
id: messageBlockHeader.id,
|
4713
|
-
daHeight:
|
4714
|
-
transactionsCount:
|
4487
|
+
daHeight: bn15(messageBlockHeader.daHeight),
|
4488
|
+
transactionsCount: bn15(messageBlockHeader.transactionsCount),
|
4715
4489
|
transactionsRoot: messageBlockHeader.transactionsRoot,
|
4716
|
-
height:
|
4490
|
+
height: bn15(messageBlockHeader.height),
|
4717
4491
|
prevRoot: messageBlockHeader.prevRoot,
|
4718
4492
|
time: messageBlockHeader.time,
|
4719
4493
|
applicationHash: messageBlockHeader.applicationHash,
|
4720
|
-
|
4721
|
-
|
4722
|
-
consensusParametersVersion: messageBlockHeader.consensusParametersVersion,
|
4723
|
-
eventInboxRoot: messageBlockHeader.eventInboxRoot,
|
4724
|
-
stateTransitionBytecodeVersion: messageBlockHeader.stateTransitionBytecodeVersion
|
4494
|
+
messageReceiptRoot: messageBlockHeader.messageReceiptRoot,
|
4495
|
+
messageReceiptCount: bn15(messageBlockHeader.messageReceiptCount)
|
4725
4496
|
},
|
4726
4497
|
commitBlockHeader: {
|
4727
4498
|
id: commitBlockHeader.id,
|
4728
|
-
daHeight:
|
4729
|
-
transactionsCount:
|
4499
|
+
daHeight: bn15(commitBlockHeader.daHeight),
|
4500
|
+
transactionsCount: bn15(commitBlockHeader.transactionsCount),
|
4730
4501
|
transactionsRoot: commitBlockHeader.transactionsRoot,
|
4731
|
-
height:
|
4502
|
+
height: bn15(commitBlockHeader.height),
|
4732
4503
|
prevRoot: commitBlockHeader.prevRoot,
|
4733
4504
|
time: commitBlockHeader.time,
|
4734
4505
|
applicationHash: commitBlockHeader.applicationHash,
|
4735
|
-
|
4736
|
-
|
4737
|
-
consensusParametersVersion: commitBlockHeader.consensusParametersVersion,
|
4738
|
-
eventInboxRoot: commitBlockHeader.eventInboxRoot,
|
4739
|
-
stateTransitionBytecodeVersion: commitBlockHeader.stateTransitionBytecodeVersion
|
4506
|
+
messageReceiptRoot: commitBlockHeader.messageReceiptRoot,
|
4507
|
+
messageReceiptCount: bn15(commitBlockHeader.messageReceiptCount)
|
4740
4508
|
},
|
4741
4509
|
sender: Address2.fromAddressOrString(sender),
|
4742
4510
|
recipient: Address2.fromAddressOrString(recipient),
|
4743
4511
|
nonce,
|
4744
|
-
amount:
|
4512
|
+
amount: bn15(amount),
|
4745
4513
|
data
|
4746
4514
|
};
|
4747
4515
|
}
|
4748
|
-
async getLatestGasPrice() {
|
4749
|
-
const { latestGasPrice } = await this.operations.getLatestGasPrice();
|
4750
|
-
return bn16(latestGasPrice.gasPrice);
|
4751
|
-
}
|
4752
|
-
async estimateGasPrice(blockHorizon) {
|
4753
|
-
const { estimateGasPrice } = await this.operations.estimateGasPrice({
|
4754
|
-
blockHorizon: String(blockHorizon)
|
4755
|
-
});
|
4756
|
-
return bn16(estimateGasPrice.gasPrice);
|
4757
|
-
}
|
4758
4516
|
/**
|
4759
4517
|
* Returns Message Proof for given transaction id and the message id from MessageOut receipt.
|
4760
4518
|
*
|
@@ -4774,10 +4532,10 @@ var _Provider = class {
|
|
4774
4532
|
*/
|
4775
4533
|
async produceBlocks(amount, startTime) {
|
4776
4534
|
const { produceBlocks: latestBlockHeight } = await this.operations.produceBlocks({
|
4777
|
-
blocksToProduce:
|
4535
|
+
blocksToProduce: bn15(amount).toString(10),
|
4778
4536
|
startTimestamp: startTime ? DateTime2.fromUnixMilliseconds(startTime).toTai64() : void 0
|
4779
4537
|
});
|
4780
|
-
return
|
4538
|
+
return bn15(latestBlockHeight);
|
4781
4539
|
}
|
4782
4540
|
// eslint-disable-next-line @typescript-eslint/require-await
|
4783
4541
|
async getTransactionResponse(transactionId) {
|
@@ -4801,7 +4559,7 @@ __publicField(Provider, "nodeInfoCache", {});
|
|
4801
4559
|
|
4802
4560
|
// src/providers/transaction-summary/get-transaction-summary.ts
|
4803
4561
|
import { ErrorCode as ErrorCode14, FuelError as FuelError14 } from "@fuel-ts/errors";
|
4804
|
-
import { bn as
|
4562
|
+
import { bn as bn16 } from "@fuel-ts/math";
|
4805
4563
|
import { TransactionCoder as TransactionCoder6 } from "@fuel-ts/transactions";
|
4806
4564
|
import { arrayify as arrayify12 } from "@fuel-ts/utils";
|
4807
4565
|
async function getTransactionSummary(params) {
|
@@ -4819,28 +4577,21 @@ async function getTransactionSummary(params) {
|
|
4819
4577
|
arrayify12(gqlTransaction.rawPayload),
|
4820
4578
|
0
|
4821
4579
|
);
|
4822
|
-
|
4823
|
-
if (gqlTransaction?.status && "receipts" in gqlTransaction.status) {
|
4824
|
-
txReceipts = gqlTransaction.status.receipts;
|
4825
|
-
}
|
4826
|
-
const receipts = txReceipts.map(processGqlReceipt);
|
4580
|
+
const receipts = gqlTransaction.receipts?.map(processGqlReceipt) || [];
|
4827
4581
|
const {
|
4828
|
-
consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts
|
4582
|
+
consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts }
|
4829
4583
|
} = provider.getChain();
|
4830
|
-
const gasPrice = await provider.getLatestGasPrice();
|
4831
4584
|
const transactionInfo = assembleTransactionSummary({
|
4832
4585
|
id: gqlTransaction.id,
|
4833
4586
|
receipts,
|
4834
4587
|
transaction: decodedTransaction,
|
4835
4588
|
transactionBytes: arrayify12(gqlTransaction.rawPayload),
|
4836
4589
|
gqlTransactionStatus: gqlTransaction.status,
|
4837
|
-
gasPerByte:
|
4838
|
-
gasPriceFactor:
|
4590
|
+
gasPerByte: bn16(gasPerByte),
|
4591
|
+
gasPriceFactor: bn16(gasPriceFactor),
|
4839
4592
|
abiMap,
|
4840
4593
|
maxInputs,
|
4841
|
-
gasCosts
|
4842
|
-
maxGasPerTx,
|
4843
|
-
gasPrice
|
4594
|
+
gasCosts
|
4844
4595
|
});
|
4845
4596
|
return {
|
4846
4597
|
gqlTransaction,
|
@@ -4850,11 +4601,10 @@ async function getTransactionSummary(params) {
|
|
4850
4601
|
async function getTransactionSummaryFromRequest(params) {
|
4851
4602
|
const { provider, transactionRequest, abiMap } = params;
|
4852
4603
|
const { receipts } = await provider.call(transactionRequest);
|
4853
|
-
const { gasPerByte, gasPriceFactor, gasCosts
|
4604
|
+
const { gasPerByte, gasPriceFactor, gasCosts } = provider.getGasConfig();
|
4854
4605
|
const maxInputs = provider.getChain().consensusParameters.maxInputs;
|
4855
4606
|
const transaction = transactionRequest.toTransaction();
|
4856
4607
|
const transactionBytes = transactionRequest.toTransactionBytes();
|
4857
|
-
const gasPrice = await provider.getLatestGasPrice();
|
4858
4608
|
const transactionSummary = assembleTransactionSummary({
|
4859
4609
|
receipts,
|
4860
4610
|
transaction,
|
@@ -4863,9 +4613,7 @@ async function getTransactionSummaryFromRequest(params) {
|
|
4863
4613
|
gasPerByte,
|
4864
4614
|
gasPriceFactor,
|
4865
4615
|
maxInputs,
|
4866
|
-
gasCosts
|
4867
|
-
maxGasPerTx,
|
4868
|
-
gasPrice
|
4616
|
+
gasCosts
|
4869
4617
|
});
|
4870
4618
|
return transactionSummary;
|
4871
4619
|
}
|
@@ -4874,18 +4622,13 @@ async function getTransactionsSummaries(params) {
|
|
4874
4622
|
const { transactionsByOwner } = await provider.operations.getTransactionsByOwner(filters);
|
4875
4623
|
const { edges, pageInfo } = transactionsByOwner;
|
4876
4624
|
const {
|
4877
|
-
consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts
|
4625
|
+
consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts }
|
4878
4626
|
} = provider.getChain();
|
4879
|
-
const gasPrice = await provider.getLatestGasPrice();
|
4880
4627
|
const transactions = edges.map((edge) => {
|
4881
4628
|
const { node: gqlTransaction } = edge;
|
4882
|
-
const { id, rawPayload, status } = gqlTransaction;
|
4629
|
+
const { id, rawPayload, receipts: gqlReceipts, status } = gqlTransaction;
|
4883
4630
|
const [decodedTransaction] = new TransactionCoder6().decode(arrayify12(rawPayload), 0);
|
4884
|
-
|
4885
|
-
if (gqlTransaction?.status && "receipts" in gqlTransaction.status) {
|
4886
|
-
txReceipts = gqlTransaction.status.receipts;
|
4887
|
-
}
|
4888
|
-
const receipts = txReceipts.map(processGqlReceipt);
|
4631
|
+
const receipts = gqlReceipts?.map(processGqlReceipt) || [];
|
4889
4632
|
const transactionSummary = assembleTransactionSummary({
|
4890
4633
|
id,
|
4891
4634
|
receipts,
|
@@ -4896,9 +4639,7 @@ async function getTransactionsSummaries(params) {
|
|
4896
4639
|
gasPerByte,
|
4897
4640
|
gasPriceFactor,
|
4898
4641
|
maxInputs,
|
4899
|
-
gasCosts
|
4900
|
-
maxGasPerTx,
|
4901
|
-
gasPrice
|
4642
|
+
gasCosts
|
4902
4643
|
});
|
4903
4644
|
const output = {
|
4904
4645
|
gqlTransaction,
|
@@ -5230,33 +4971,36 @@ var Account = class extends AbstractAccount {
|
|
5230
4971
|
* @param fee - The estimated transaction fee.
|
5231
4972
|
* @returns A promise that resolves when the resources are added to the transaction.
|
5232
4973
|
*/
|
5233
|
-
async fund(request,
|
5234
|
-
const
|
5235
|
-
|
5236
|
-
const requiredQuantitiesWithFee = addAmountToCoinQuantities({
|
5237
|
-
amount: bn18(fee),
|
4974
|
+
async fund(request, coinQuantities, fee) {
|
4975
|
+
const updatedQuantities = addAmountToAsset({
|
4976
|
+
amount: bn17(fee),
|
5238
4977
|
assetId: BaseAssetId3,
|
5239
|
-
coinQuantities
|
4978
|
+
coinQuantities
|
5240
4979
|
});
|
5241
4980
|
const quantitiesDict = {};
|
5242
|
-
|
4981
|
+
updatedQuantities.forEach(({ amount, assetId }) => {
|
5243
4982
|
quantitiesDict[assetId] = {
|
5244
4983
|
required: amount,
|
5245
|
-
owned:
|
4984
|
+
owned: bn17(0)
|
5246
4985
|
};
|
5247
4986
|
});
|
5248
|
-
|
4987
|
+
const cachedUtxos = [];
|
4988
|
+
const cachedMessages = [];
|
4989
|
+
const owner = this.address.toB256();
|
4990
|
+
request.inputs.forEach((input) => {
|
5249
4991
|
const isResource = "amount" in input;
|
5250
4992
|
if (isResource) {
|
5251
4993
|
const isCoin2 = "owner" in input;
|
5252
4994
|
if (isCoin2) {
|
5253
4995
|
const assetId = String(input.assetId);
|
5254
|
-
if (quantitiesDict[assetId]) {
|
5255
|
-
const amount =
|
4996
|
+
if (input.owner === owner && quantitiesDict[assetId]) {
|
4997
|
+
const amount = bn17(input.amount);
|
5256
4998
|
quantitiesDict[assetId].owned = quantitiesDict[assetId].owned.add(amount);
|
4999
|
+
cachedUtxos.push(input.id);
|
5257
5000
|
}
|
5258
|
-
} else if (input.amount && quantitiesDict[BaseAssetId3]) {
|
5001
|
+
} else if (input.recipient === owner && input.amount && quantitiesDict[BaseAssetId3]) {
|
5259
5002
|
quantitiesDict[BaseAssetId3].owned = quantitiesDict[BaseAssetId3].owned.add(input.amount);
|
5003
|
+
cachedMessages.push(input.nonce);
|
5260
5004
|
}
|
5261
5005
|
}
|
5262
5006
|
});
|
@@ -5271,23 +5015,12 @@ var Account = class extends AbstractAccount {
|
|
5271
5015
|
});
|
5272
5016
|
const needsToBeFunded = missingQuantities.length;
|
5273
5017
|
if (needsToBeFunded) {
|
5274
|
-
const
|
5275
|
-
|
5276
|
-
|
5277
|
-
|
5278
|
-
|
5279
|
-
txRequest.updatePredicateGasUsed(estimatedPredicates);
|
5280
|
-
const requestToBeReEstimate = clone4(txRequest);
|
5281
|
-
if (addedSignatures) {
|
5282
|
-
Array.from({ length: addedSignatures }).forEach(
|
5283
|
-
() => requestToBeReEstimate.addEmptyWitness()
|
5284
|
-
);
|
5018
|
+
const resources = await this.getResourcesToSpend(missingQuantities, {
|
5019
|
+
messages: cachedMessages,
|
5020
|
+
utxos: cachedUtxos
|
5021
|
+
});
|
5022
|
+
request.addResources(resources);
|
5285
5023
|
}
|
5286
|
-
const { maxFee } = await this.provider.estimateTxGasAndFee({
|
5287
|
-
transactionRequest: requestToBeReEstimate
|
5288
|
-
});
|
5289
|
-
txRequest.maxFee = maxFee;
|
5290
|
-
return txRequest;
|
5291
5024
|
}
|
5292
5025
|
/**
|
5293
5026
|
* A helper that creates a transfer transaction request and returns it.
|
@@ -5295,25 +5028,28 @@ var Account = class extends AbstractAccount {
|
|
5295
5028
|
* @param destination - The address of the destination.
|
5296
5029
|
* @param amount - The amount of coins to transfer.
|
5297
5030
|
* @param assetId - The asset ID of the coins to transfer.
|
5298
|
-
* @param txParams - The transaction parameters (gasLimit,
|
5031
|
+
* @param txParams - The transaction parameters (gasLimit, gasPrice, maturity).
|
5299
5032
|
* @returns A promise that resolves to the prepared transaction request.
|
5300
5033
|
*/
|
5301
5034
|
async createTransfer(destination, amount, assetId = BaseAssetId3, txParams = {}) {
|
5302
|
-
const
|
5035
|
+
const { minGasPrice } = this.provider.getGasConfig();
|
5036
|
+
const params = { gasPrice: minGasPrice, ...txParams };
|
5037
|
+
const request = new ScriptTransactionRequest(params);
|
5303
5038
|
request.addCoinOutput(Address3.fromAddressOrString(destination), amount, assetId);
|
5304
|
-
const
|
5039
|
+
const { maxFee, requiredQuantities, gasUsed, estimatedInputs } = await this.provider.getTransactionCost(request, [], {
|
5305
5040
|
estimateTxDependencies: true,
|
5306
5041
|
resourcesOwner: this
|
5307
5042
|
});
|
5308
|
-
|
5309
|
-
|
5310
|
-
|
5311
|
-
|
5312
|
-
|
5313
|
-
|
5314
|
-
|
5315
|
-
|
5316
|
-
await this.fund(request,
|
5043
|
+
request.gasPrice = bn17(txParams.gasPrice ?? minGasPrice);
|
5044
|
+
request.gasLimit = bn17(txParams.gasLimit ?? gasUsed);
|
5045
|
+
this.validateGas({
|
5046
|
+
gasUsed,
|
5047
|
+
gasPrice: request.gasPrice,
|
5048
|
+
gasLimit: request.gasLimit,
|
5049
|
+
minGasPrice
|
5050
|
+
});
|
5051
|
+
await this.fund(request, requiredQuantities, maxFee);
|
5052
|
+
request.updatePredicateInputs(estimatedInputs);
|
5317
5053
|
return request;
|
5318
5054
|
}
|
5319
5055
|
/**
|
@@ -5326,7 +5062,7 @@ var Account = class extends AbstractAccount {
|
|
5326
5062
|
* @returns A promise that resolves to the transaction response.
|
5327
5063
|
*/
|
5328
5064
|
async transfer(destination, amount, assetId = BaseAssetId3, txParams = {}) {
|
5329
|
-
if (
|
5065
|
+
if (bn17(amount).lte(0)) {
|
5330
5066
|
throw new FuelError15(
|
5331
5067
|
ErrorCode15.INVALID_TRANSFER_AMOUNT,
|
5332
5068
|
"Transfer amount must be a positive number."
|
@@ -5345,37 +5081,38 @@ var Account = class extends AbstractAccount {
|
|
5345
5081
|
* @returns A promise that resolves to the transaction response.
|
5346
5082
|
*/
|
5347
5083
|
async transferToContract(contractId, amount, assetId = BaseAssetId3, txParams = {}) {
|
5348
|
-
if (
|
5084
|
+
if (bn17(amount).lte(0)) {
|
5349
5085
|
throw new FuelError15(
|
5350
5086
|
ErrorCode15.INVALID_TRANSFER_AMOUNT,
|
5351
5087
|
"Transfer amount must be a positive number."
|
5352
5088
|
);
|
5353
5089
|
}
|
5354
5090
|
const contractAddress = Address3.fromAddressOrString(contractId);
|
5091
|
+
const { minGasPrice } = this.provider.getGasConfig();
|
5092
|
+
const params = { gasPrice: minGasPrice, ...txParams };
|
5355
5093
|
const { script, scriptData } = await assembleTransferToContractScript({
|
5356
5094
|
hexlifiedContractId: contractAddress.toB256(),
|
5357
|
-
amountToTransfer:
|
5095
|
+
amountToTransfer: bn17(amount),
|
5358
5096
|
assetId
|
5359
5097
|
});
|
5360
5098
|
const request = new ScriptTransactionRequest({
|
5361
|
-
...
|
5099
|
+
...params,
|
5362
5100
|
script,
|
5363
5101
|
scriptData
|
5364
5102
|
});
|
5365
5103
|
request.addContractInputAndOutput(contractAddress);
|
5366
|
-
const
|
5367
|
-
|
5368
|
-
|
5104
|
+
const { maxFee, requiredQuantities, gasUsed } = await this.provider.getTransactionCost(
|
5105
|
+
request,
|
5106
|
+
[{ amount: bn17(amount), assetId: String(assetId) }]
|
5107
|
+
);
|
5108
|
+
request.gasLimit = bn17(params.gasLimit ?? gasUsed);
|
5109
|
+
this.validateGas({
|
5110
|
+
gasUsed,
|
5111
|
+
gasPrice: request.gasPrice,
|
5112
|
+
gasLimit: request.gasLimit,
|
5113
|
+
minGasPrice
|
5369
5114
|
});
|
5370
|
-
|
5371
|
-
this.validateGas({
|
5372
|
-
gasUsed: txCost.gasUsed,
|
5373
|
-
gasLimit: request.gasLimit
|
5374
|
-
});
|
5375
|
-
}
|
5376
|
-
request.gasLimit = txCost.gasUsed;
|
5377
|
-
request.maxFee = txCost.maxFee;
|
5378
|
-
await this.fund(request, txCost);
|
5115
|
+
await this.fund(request, requiredQuantities, maxFee);
|
5379
5116
|
return this.sendTransaction(request);
|
5380
5117
|
}
|
5381
5118
|
/**
|
@@ -5387,31 +5124,34 @@ var Account = class extends AbstractAccount {
|
|
5387
5124
|
* @returns A promise that resolves to the transaction response.
|
5388
5125
|
*/
|
5389
5126
|
async withdrawToBaseLayer(recipient, amount, txParams = {}) {
|
5127
|
+
const { minGasPrice } = this.provider.getGasConfig();
|
5390
5128
|
const recipientAddress = Address3.fromAddressOrString(recipient);
|
5391
5129
|
const recipientDataArray = arrayify14(
|
5392
5130
|
"0x".concat(recipientAddress.toHexString().substring(2).padStart(64, "0"))
|
5393
5131
|
);
|
5394
5132
|
const amountDataArray = arrayify14(
|
5395
|
-
"0x".concat(
|
5133
|
+
"0x".concat(bn17(amount).toHex().substring(2).padStart(16, "0"))
|
5396
5134
|
);
|
5397
5135
|
const script = new Uint8Array([
|
5398
5136
|
...arrayify14(withdrawScript.bytes),
|
5399
5137
|
...recipientDataArray,
|
5400
5138
|
...amountDataArray
|
5401
5139
|
]);
|
5402
|
-
const params = { script, ...txParams };
|
5140
|
+
const params = { script, gasPrice: minGasPrice, ...txParams };
|
5403
5141
|
const request = new ScriptTransactionRequest(params);
|
5404
|
-
const
|
5405
|
-
const
|
5406
|
-
|
5407
|
-
|
5408
|
-
|
5409
|
-
|
5410
|
-
|
5411
|
-
|
5412
|
-
|
5413
|
-
|
5414
|
-
|
5142
|
+
const forwardingQuantities = [{ amount: bn17(amount), assetId: BaseAssetId3 }];
|
5143
|
+
const { requiredQuantities, maxFee, gasUsed } = await this.provider.getTransactionCost(
|
5144
|
+
request,
|
5145
|
+
forwardingQuantities
|
5146
|
+
);
|
5147
|
+
request.gasLimit = bn17(params.gasLimit ?? gasUsed);
|
5148
|
+
this.validateGas({
|
5149
|
+
gasUsed,
|
5150
|
+
gasPrice: request.gasPrice,
|
5151
|
+
gasLimit: request.gasLimit,
|
5152
|
+
minGasPrice
|
5153
|
+
});
|
5154
|
+
await this.fund(request, requiredQuantities, maxFee);
|
5415
5155
|
return this.sendTransaction(request);
|
5416
5156
|
}
|
5417
5157
|
async signMessage(message) {
|
@@ -5469,7 +5209,18 @@ var Account = class extends AbstractAccount {
|
|
5469
5209
|
}
|
5470
5210
|
return this.provider.simulate(transactionRequest, { estimateTxDependencies: false });
|
5471
5211
|
}
|
5472
|
-
validateGas({
|
5212
|
+
validateGas({
|
5213
|
+
gasUsed,
|
5214
|
+
gasPrice,
|
5215
|
+
gasLimit,
|
5216
|
+
minGasPrice
|
5217
|
+
}) {
|
5218
|
+
if (minGasPrice.gt(gasPrice)) {
|
5219
|
+
throw new FuelError15(
|
5220
|
+
ErrorCode15.GAS_PRICE_TOO_LOW,
|
5221
|
+
`Gas price '${gasPrice}' is lower than the required: '${minGasPrice}'.`
|
5222
|
+
);
|
5223
|
+
}
|
5473
5224
|
if (gasUsed.gt(gasLimit)) {
|
5474
5225
|
throw new FuelError15(
|
5475
5226
|
ErrorCode15.GAS_LIMIT_TOO_LOW,
|
@@ -5765,7 +5516,7 @@ var BaseWalletUnlocked = class extends Account {
|
|
5765
5516
|
* @param transactionRequestLike - The transaction request to send.
|
5766
5517
|
* @returns A promise that resolves to the TransactionResponse object.
|
5767
5518
|
*/
|
5768
|
-
async sendTransaction(transactionRequestLike, { estimateTxDependencies =
|
5519
|
+
async sendTransaction(transactionRequestLike, { estimateTxDependencies = true, awaitExecution } = {}) {
|
5769
5520
|
const transactionRequest = transactionRequestify(transactionRequestLike);
|
5770
5521
|
if (estimateTxDependencies) {
|
5771
5522
|
await this.provider.estimateTxDependencies(transactionRequest);
|
@@ -5806,7 +5557,7 @@ __publicField(BaseWalletUnlocked, "defaultPath", "m/44'/1179993420'/0'/0/0");
|
|
5806
5557
|
// src/hdwallet/hdwallet.ts
|
5807
5558
|
import { ErrorCode as ErrorCode19, FuelError as FuelError19 } from "@fuel-ts/errors";
|
5808
5559
|
import { sha256 as sha2564 } from "@fuel-ts/hasher";
|
5809
|
-
import { bn as
|
5560
|
+
import { bn as bn18, toBytes as toBytes2, toHex } from "@fuel-ts/math";
|
5810
5561
|
import { arrayify as arrayify18, hexlify as hexlify17, concat as concat5 } from "@fuel-ts/utils";
|
5811
5562
|
import { toBeHex, dataSlice as dataSlice2, encodeBase58 as encodeBase582, decodeBase58, computeHmac as computeHmac2, ripemd160 } from "ethers";
|
5812
5563
|
|
@@ -8278,7 +8029,7 @@ var HDWallet = class {
|
|
8278
8029
|
const IR = bytes.slice(32);
|
8279
8030
|
if (privateKey) {
|
8280
8031
|
const N = "0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141";
|
8281
|
-
const ki =
|
8032
|
+
const ki = bn18(IL).add(privateKey).mod(N).toBytes(32);
|
8282
8033
|
return new HDWallet({
|
8283
8034
|
privateKey: ki,
|
8284
8035
|
chainCode: IR,
|
@@ -8967,7 +8718,7 @@ import {
|
|
8967
8718
|
import { Address as Address9 } from "@fuel-ts/address";
|
8968
8719
|
import { BaseAssetId as BaseAssetId4 } from "@fuel-ts/address/configs";
|
8969
8720
|
import { ErrorCode as ErrorCode24, FuelError as FuelError24 } from "@fuel-ts/errors";
|
8970
|
-
import { ByteArrayCoder
|
8721
|
+
import { ByteArrayCoder } from "@fuel-ts/transactions";
|
8971
8722
|
import { arrayify as arrayify20, hexlify as hexlify19 } from "@fuel-ts/utils";
|
8972
8723
|
|
8973
8724
|
// src/predicate/utils/getPredicateRoot.ts
|
@@ -9026,10 +8777,15 @@ var Predicate = class extends Account {
|
|
9026
8777
|
populateTransactionPredicateData(transactionRequestLike) {
|
9027
8778
|
const request = transactionRequestify(transactionRequestLike);
|
9028
8779
|
const { policies } = BaseTransactionRequest.getPolicyMeta(request);
|
9029
|
-
|
9030
|
-
|
9031
|
-
|
9032
|
-
|
8780
|
+
const placeholderIndex = this.getIndexFromPlaceholderWitness(request);
|
8781
|
+
if (placeholderIndex !== -1) {
|
8782
|
+
request.removeWitness(placeholderIndex);
|
8783
|
+
}
|
8784
|
+
request.inputs.filter(isRequestInputResource).forEach((input) => {
|
8785
|
+
if (isRequestInputResourceFromOwner(input, this.address)) {
|
8786
|
+
input.predicate = this.bytes;
|
8787
|
+
input.predicateData = this.getPredicateData(policies.length);
|
8788
|
+
input.witnessIndex = 0;
|
9033
8789
|
}
|
9034
8790
|
});
|
9035
8791
|
return request;
|
@@ -9044,7 +8800,8 @@ var Predicate = class extends Account {
|
|
9044
8800
|
* @returns A promise that resolves to the prepared transaction request.
|
9045
8801
|
*/
|
9046
8802
|
async createTransfer(destination, amount, assetId = BaseAssetId4, txParams = {}) {
|
9047
|
-
|
8803
|
+
const request = await super.createTransfer(destination, amount, assetId, txParams);
|
8804
|
+
return this.populateTransactionPredicateData(request);
|
9048
8805
|
}
|
9049
8806
|
/**
|
9050
8807
|
* Sends a transaction with the populated predicate data.
|
@@ -9052,9 +8809,9 @@ var Predicate = class extends Account {
|
|
9052
8809
|
* @param transactionRequestLike - The transaction request-like object.
|
9053
8810
|
* @returns A promise that resolves to the transaction response.
|
9054
8811
|
*/
|
9055
|
-
sendTransaction(transactionRequestLike) {
|
9056
|
-
const transactionRequest =
|
9057
|
-
return super.sendTransaction(transactionRequest,
|
8812
|
+
sendTransaction(transactionRequestLike, options) {
|
8813
|
+
const transactionRequest = this.populateTransactionPredicateData(transactionRequestLike);
|
8814
|
+
return super.sendTransaction(transactionRequest, options);
|
9058
8815
|
}
|
9059
8816
|
/**
|
9060
8817
|
* Simulates a transaction with the populated predicate data.
|
@@ -9063,8 +8820,22 @@ var Predicate = class extends Account {
|
|
9063
8820
|
* @returns A promise that resolves to the call result.
|
9064
8821
|
*/
|
9065
8822
|
simulateTransaction(transactionRequestLike) {
|
9066
|
-
const transactionRequest =
|
9067
|
-
return super.simulateTransaction(transactionRequest
|
8823
|
+
const transactionRequest = this.populateTransactionPredicateData(transactionRequestLike);
|
8824
|
+
return super.simulateTransaction(transactionRequest);
|
8825
|
+
}
|
8826
|
+
/**
|
8827
|
+
* Retrieves resources satisfying the spend query for the account.
|
8828
|
+
*
|
8829
|
+
* @param quantities - Coins to retrieve.
|
8830
|
+
* @param excludedIds - IDs of resources to be excluded from the query.
|
8831
|
+
* @returns A promise that resolves to an array of Resources.
|
8832
|
+
*/
|
8833
|
+
async getResourcesToSpend(quantities, excludedIds) {
|
8834
|
+
const resources = await super.getResourcesToSpend(quantities, excludedIds);
|
8835
|
+
return resources.map((resource) => ({
|
8836
|
+
...resource,
|
8837
|
+
predicate: hexlify19(this.bytes)
|
8838
|
+
}));
|
9068
8839
|
}
|
9069
8840
|
getPredicateData(policiesLength) {
|
9070
8841
|
if (!this.predicateData.length) {
|
@@ -9110,25 +8881,6 @@ var Predicate = class extends Account {
|
|
9110
8881
|
predicateInterface: abiInterface
|
9111
8882
|
};
|
9112
8883
|
}
|
9113
|
-
/**
|
9114
|
-
* Retrieves resources satisfying the spend query for the account.
|
9115
|
-
*
|
9116
|
-
* @param quantities - IDs of coins to exclude.
|
9117
|
-
* @param excludedIds - IDs of resources to be excluded from the query.
|
9118
|
-
* @returns A promise that resolves to an array of Resources.
|
9119
|
-
*/
|
9120
|
-
async getResourcesToSpend(quantities, excludedIds) {
|
9121
|
-
const resources = await this.provider.getResourcesToSpend(
|
9122
|
-
this.address,
|
9123
|
-
quantities,
|
9124
|
-
excludedIds
|
9125
|
-
);
|
9126
|
-
return resources.map((resource) => ({
|
9127
|
-
...resource,
|
9128
|
-
predicate: hexlify19(this.bytes),
|
9129
|
-
paddPredicateData: (policiesLength) => hexlify19(this.getPredicateData(policiesLength))
|
9130
|
-
}));
|
9131
|
-
}
|
9132
8884
|
/**
|
9133
8885
|
* Sets the configurable constants for the predicate.
|
9134
8886
|
*
|
@@ -9164,6 +8916,28 @@ var Predicate = class extends Account {
|
|
9164
8916
|
}
|
9165
8917
|
return mutatedBytes;
|
9166
8918
|
}
|
8919
|
+
/**
|
8920
|
+
* Returns the index of the witness placeholder that was added to this predicate.
|
8921
|
+
* If no witness placeholder was added, it returns -1.
|
8922
|
+
* @param request - The transaction request.
|
8923
|
+
* @returns The index of the witness placeholder, or -1 if there is no witness placeholder.
|
8924
|
+
*/
|
8925
|
+
getIndexFromPlaceholderWitness(request) {
|
8926
|
+
const predicateInputs = request.inputs.filter(isRequestInputResource).filter((input) => isRequestInputResourceFromOwner(input, this.address));
|
8927
|
+
let index = -1;
|
8928
|
+
const hasEmptyPredicateInputs = predicateInputs.find((input) => !input.predicate);
|
8929
|
+
if (hasEmptyPredicateInputs) {
|
8930
|
+
index = hasEmptyPredicateInputs.witnessIndex;
|
8931
|
+
const allInputsAreEmpty = predicateInputs.every((input) => !input.predicate);
|
8932
|
+
if (!allInputsAreEmpty) {
|
8933
|
+
const wasFilledInputAddedFirst = !!predicateInputs[0]?.predicate;
|
8934
|
+
if (wasFilledInputAddedFirst) {
|
8935
|
+
index = -1;
|
8936
|
+
}
|
8937
|
+
}
|
8938
|
+
}
|
8939
|
+
return index;
|
8940
|
+
}
|
9167
8941
|
};
|
9168
8942
|
|
9169
8943
|
// src/connectors/fuel.ts
|
@@ -9877,7 +9651,7 @@ export {
|
|
9877
9651
|
WalletLocked,
|
9878
9652
|
WalletManager,
|
9879
9653
|
WalletUnlocked,
|
9880
|
-
|
9654
|
+
addAmountToAsset,
|
9881
9655
|
addOperation,
|
9882
9656
|
assemblePanicError,
|
9883
9657
|
assembleReceiptByType,
|
@@ -9886,10 +9660,10 @@ export {
|
|
9886
9660
|
assets,
|
9887
9661
|
buildBlockExplorerUrl,
|
9888
9662
|
cacheFor,
|
9889
|
-
|
9890
|
-
calculateGasFee,
|
9663
|
+
cacheResources,
|
9891
9664
|
calculateMetadataGasForTxCreate,
|
9892
9665
|
calculateMetadataGasForTxScript,
|
9666
|
+
calculatePriceWithFactor,
|
9893
9667
|
calculateTransactionFee,
|
9894
9668
|
coinQuantityfy,
|
9895
9669
|
deferPromise,
|
@@ -9933,6 +9707,7 @@ export {
|
|
9933
9707
|
getReceiptsMessageOut,
|
9934
9708
|
getReceiptsTransferOut,
|
9935
9709
|
getReceiptsWithMissingData,
|
9710
|
+
getRequestInputResourceOwner,
|
9936
9711
|
getTransactionStatusName,
|
9937
9712
|
getTransactionSummary,
|
9938
9713
|
getTransactionSummaryFromRequest,
|
@@ -9946,6 +9721,10 @@ export {
|
|
9946
9721
|
isMessage,
|
9947
9722
|
isRawCoin,
|
9948
9723
|
isRawMessage,
|
9724
|
+
isRequestInputCoin,
|
9725
|
+
isRequestInputMessage,
|
9726
|
+
isRequestInputResource,
|
9727
|
+
isRequestInputResourceFromOwner,
|
9949
9728
|
isType,
|
9950
9729
|
isTypeCreate,
|
9951
9730
|
isTypeMint,
|