返回
为社区贡献代码的简单方法:如何创建 Go + Solidity + Web 水龙头项目 - 第二部分
闲谈
2023-12-02 21:31:39
前言
在上一篇文章中,我们创建了一个简单的 Go + Solidity + Web 水龙头项目,允许用户从智能合约中获取少量加密货币。在本教程的第二部分,我们将完善项目的功能,包括显示水龙头剩余余额、显示地址、时间以及获得多少币。
显示水龙头剩余余额
为了显示水龙头剩余余额,我们需要在智能合约中添加一个函数来获取余额。该函数应返回水龙头合约地址中剩余的加密货币数量。然后,我们需要在 Web 应用程序中调用此函数并将其结果显示给用户。
// 获取水龙头剩余余额
func (c *Faucet) GetBalance() (uint256, error) {
balance, err := c.token.BalanceOf(c.contractAddress)
if err != nil {
return 0, err
}
return balance, nil
}
// 显示水龙头剩余余额
const displayBalance = async () => {
const balance = await faucet.getBalance();
document.getElementById("balance").innerHTML = balance.toString();
};
// 定期更新水龙头剩余余额
setInterval(displayBalance, 1000);
显示地址、时间和获得多少币
为了显示地址、时间和获得多少币,我们需要在智能合约中添加一个函数来记录这些信息。该函数应接收地址、时间和获得多少币作为参数,并将这些信息存储在区块链上。然后,我们需要在 Web 应用程序中调用此函数并将其结果显示给用户。
// 记录地址、时间和获得多少币
func (c *Faucet) Record(address string, timestamp uint256, amount uint256) error {
tx, err := c.token.Transfer(address, amount)
if err != nil {
return err
}
return tx.Wait()
}
// 记录地址、时间和获得多少币
const record = async () => {
const address = document.getElementById("address").value;
const timestamp = Date.now();
const amount = document.getElementById("amount").value;
await faucet.record(address, timestamp, amount);
alert("记录成功!");
};
总结
在本文中,我们完善了水龙头项目的交互功能。现在,用户可以查看水龙头剩余余额、记录地址、时间和获得多少币。这些功能使水龙头项目更加实用和易于使用。