如何在react morals中优化我的天然气成本



所以我从智能合约中调用一个函数。我通过了相同的数据,相同的条件,但Remix中的气体估计值为0.001262923ETH,而我的应用程序前端使用react morals的气体估计为0.06131775ETH。这是一个巨大的成本差异,有人能告诉我一种优化前端气体成本的方法吗。

智能合约功能:

function createActivity(
string memory _id,
string memory _username,
string memory _title,
string memory _desc,
uint256 _totalTimeInMonths,
uint256 _price,
uint256 _level,
uint256 _maxMembers,
uint256 dateOfCreation,
uint256 _waitingPeriodInMonths //DDMMYYYY
) public payable {
require(_price <= minUSD[_level - 1], "ETH limit crossed");
uint256 id = arrayForLength.length + 1;
memberAddress.push(payable(msg.sender));
Activity memory activity = Activity(
id,
payable(msg.sender),
_title,
_desc,
_price,
_level,
ActivityStatus.OPEN,
block.timestamp,
_totalTimeInMonths,
_maxMembers,
memberAddress,
_waitingPeriodInMonths
);
Members[msg.sender] = Member(
_username,
_totalTimeInMonths,
dateOfCreation,
_id,
block.timestamp
);
arrayForLength.push(_id);
Activities[_id] = activity;
emit ActivityCreated(
_id,
_title,
_totalTimeInMonths,
_level,
dateOfCreation
);
delete memberAddress;
}

反道德功能调用:

const { runContractFunction: createActivity } = useWeb3Contract({
abi,
contractAddress: ActivityAddress,
functionName: "createActivity",
params: activity
? {
_id: activityId,
_username: user ? user.username : "",
_title: activity ? activity.title : null,
_desc: activity ? activity.description : null,
_totalTimeInMonths: activity ? activity.durationPeriod : null,
_price: activity.join_price,
_level: activity.difficulty_level,
_maxMembers: activity.member_limit,
_waitingPeriodInMonths: 1,
dateOfCreation: parseInt(getNumericDate()),
}
: {},
});

Hello底层useWeb3Contract代码只是使用ethers.js来进行事务。

我不确定同一合同功能交易的两个环境之间的天然气估计存在巨大差异的原因——请确保使用相同的钱包/网络设置(RPC URL(。如果这是一份测试网合同,你能在你的应用程序和Remix中进行交易吗?看看成本是多少。

您可以直接使用ethers.js进行测试,看看问题是使用了react morals还是ethers.js。

如果这是Moralis/react道德家的问题,请在Moralis论坛上发帖。

相关内容

  • 没有找到相关文章

最新更新