当我在智能合约中创建一个函数时,我怎么知道要指定多少来测试?



我写了一个小的智能合约来练习(在下面找到它)。当我尝试测试它时,由于某种原因它失败了,我想知道它是否与_amount值有关,因为我不知道它使用哪种货币,也不知道它是如何工作的。下面是我的Account结构:

struct Account {
uint balance;
uint lockedAmount;
}

下面是我的函数(wallettobalance只是钱包到结构体的映射):

function LockMoney(uint _amount) public canLockAmount(_amount) returns(uint result) {
accounts[WalletToBalance[msg.sender]].balance -= _amount;
accounts[WalletToBalance[msg.sender]].lockedAmount += _amount;
result = accounts[WalletToBalance[msg.sender]].lockedAmount;
return result;
}

我得到这个错误:const error: any = new Error(message); Error: underflow,我的事务状态是失败。有提示吗?

假设您在Remix IDE中使用Javascript VM,您可以在左侧的value部分指定交易金额。在没有明确说明或代码的情况下,solidity使用基础货币,在以太坊中是ETH。

在与函数交互之前,可以通过修改字段来指定需要多少ETH作为值。ETH也有18位小数,最小的分母是Wei, 1ETH = 1e18WEI。你可以试试这个网站。https://eth-converter.com/

最新更新