【发布时间】:2021-07-17 05:28:49
【问题描述】:
在我的合同中我有这个功能(solc 0.8.4):
function makeDecision(address person) external returns (string memory name, bool approved) {
require(msg.sender == loanOfficer, "Only the loan officer can initiate a decision.");
require(bytes(applicants[person].name).length != 0, "That person is not in the pool of applicants.");
if (applicants[person].credScore > 650 && applicants[person].credAge > 5) {
applicants[person].approved = true;
}
return (applicants[person].name, applicants[person].approved);
}
当我进入我的 truffle 控制台并以这种方式调用我的函数 loanContract.makeDecision(accounts[1]) 时,一切正常,但我得到一个 tx 收据作为响应。
当我通过 truffle 控制台loanContract.makeDecision.call(accounts[1]) 以这种方式调用我的函数时,我会从我的函数中得到预期的响应。我想要一个解释,告诉我为什么会出现这种响应差异,以便我更深入地了解正在发生的事情。我讨厌在不了解它们为什么起作用的情况下使用东西。
如果有帮助,我的合约(名为 LoanDisbursement)会在控制台中初始化,如下所示:let loanContract = await LoanDisbursement.deployed() 和我的帐户变量:let accounts = await web3.eth.getAccounts()
任何提示都会有所帮助,因为我仍在学习和深入这个生态系统。到目前为止,我还没有找到任何关于这个功能的像样的文档。谢谢。
【问题讨论】: