How to send Wei to payable function with ethers
How to send Wei to payable function with ethers
Loading saved threads...
Shadq · External communityPost link
External question — Ethereum Stack Exchange
Author: Shadq
Original post: https://ethereum.stackexchange.com/questions/148747
License: CC BY-SA 4.0 — https://creativecommons.org/licenses/by-sa/4.0/
Adaptation: HTML converted to plain text; contact email addresses removed.
I want to send this function
1 wei
using ethersJS while testing it on hardhat:
modifier payFee() {
bool sent = payable(address(this)).send(msg.value);
require(sent, "Didn't receive fee.");
_;
}
function executeTrade(
address _tokenA,
address _tokenB,
uint _tokensFromFlashLoan,
bool _startOnUniswap
) external payable payFee {
uint balanceBefore = IERC20(_tokenA).balanceOf(_tokenA);
bytes memory data = abi.encode(
_startOnUniswap,
_tokenA,
_tokenB,
_tokensFromFlashLoan,
balanceBefore
);
flashloan(_tokenA, _tokensFromFlashLoan, data);
}
When i test it on hardhat i do it like this:
const options = {
gasLimit: 3000000,
value: ethers.utils.parseUnits("1.0", "wei"),
};
trade = await contract.executeTrade(
tokenA,
tokenB,
ethers.utils.parseEther("10.0"),
false,
options
);
But the modifier reverts giving me an error saying that the function didn't receive the fee, is my method to send
1
WEI
wrong? if you have any suggestion please reply it would be very helpful.
Quote
Report
Saxtheowl · External communityPost link
External answer — Ethereum Stack Exchange
Author: Saxtheowl
Original post: https://ethereum.stackexchange.com/a/148749
License: CC BY-SA 4.0 — https://creativecommons.org/licenses/by-sa/4.0/
Adaptation: HTML converted to plain text; contact email addresses removed.
You are passing the
options
object as a parameter to the
executeTrade
but you should providing it as an optional object when calling the function.
const options = {
gasLimit: 3000000,
value: ethers.utils.parseUnits("1.0", "wei"),
};
trade = await contract.executeTrade(
tokenA,
tokenB,
ethers.utils.parseEther("10.0"),
false,
{ ...options }
);
Quote
Report
Post Reply
Quoted from Forex.com.bd-Editorial External answer — Ethereum Stack Exchange Author: Saxtheowl Source score (net votes, not local likes): 0 Original post: https://ethereum.stackexchange.com/a/148749 License: CC BY-SA 4.0 — https://creativecommons.org/licenses/by-sa/4.0/ Adaptation: HTML converted to plain text; contact email addresses removed. You are passing the options object as a parameter to the executeTrade but you should providing it as an optional object when calling the function. const options = { gasLimit: 3000000, value: ethers.utils.parseUnits("1.0", "wei"), }; trade = await contract.executeTrade( tokenA, tokenB, ethers.utils.parseEther("10.0"), false, { ...options } );
Checking account access…