I am trying to add maxFee parameter to a transfer txn using the getTransactionCost method, however I get the error -
_FuelError: Validity(InsufficientFeeAmount { expected: 17396, provided: 49 })
_FuelError: InsufficientMaxFee { max_fee_from_policies: 17396, max_fee_from_gas_price: 17511 }
I am adding fee to the request as follows:
request.addResources(
await this.client.getResourcesToSpend(
B256From,
gasResults.txnCost.requiredQuantities
)
);
const gasResults = await this.client.getTransactionCost(props.txnRequest);
request.gasLimit = gasResults.txnCost.gasUsed;
request.maxFee = gasResults.txnCost.maxFee;
p.s
July 17, 2024, 5:24am
2
Hey @singhparshant
Ccould you share the full code snippet that you’re trying to run, including the construction of the transaction request props.txnRequest?
Hi @p.s ,This is my transaction request:
const request = new ScriptTransactionRequest();
const B256To = toB256(to as Bech32Address);
const B256From = toB256(from as Bech32Address);
request.addCoinOutput(
new Address(toBech32(B256To)),
transferAmount.toString(),
this.client.getBaseAssetId()
);
const result = await this.client.getTransactionCost(request);
const gasResults = {
txnCost: result,
txnRequest: request,
};
request.addResources(
await this.client.getResourcesToSpend(
B256From,
gasResults.txnCost.requiredQuantities
)
);
request.gasLimit = gasResults.txnCost.gasUsed;
request.maxFee = gasResults.txnCost.maxFee;
And when i try to dry run as well, i see this error:
"error": [FuelError: InsufficientMaxFee { max_fee_from_policies: 17396, max_fee_from_gas_price: 17511 }], "errorUpdateCount": 2, "errorUpdatedAt": 1721221511408, "failureCount": 4, "failureReason": [FuelError: InsufficientMaxFee { max_fee_from_policies: 17396, max_fee_from_gas_price: 17511 }],
p.s
July 17, 2024, 7:45pm
5
I believe the transaction flow here should be as follows:
Add coin output to the request (addCoinOutput )
Get the resource to spend for the request (getResourcesToSpend)
Add the resources to the request (addResources)
We can then get the transaction cost (getTransactionCost)
Set the maxFee and gasLimit for the request
The following snippet shows the flow in action.
const request = new ScriptTransactionRequest();
request.addCoinOutput(
recipent,
transferAmount.toString(),
provider.getBaseAssetId()
);
const resourcesToSpend = await provider.getResourcesToSpend(
owner.address,
request.getCoinOutputs()
)
request.addResources(resourcesToSpend);
const txCost = await provider.getTransactionCost(request);
request.gasLimit = txCost.gasUsed;
request.maxFee = txCost.maxFee;
const tx = await owner.sendTransaction(request);
const result = await tx.waitForResult();