返回

为社区贡献代码的简单方法:如何创建 Go + Solidity + Web 水龙头项目 - 第二部分

闲谈

前言

在上一篇文章中,我们创建了一个简单的 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("记录成功!");
};

总结

在本文中,我们完善了水龙头项目的交互功能。现在,用户可以查看水龙头剩余余额、记录地址、时间和获得多少币。这些功能使水龙头项目更加实用和易于使用。