智能合约的一些主要优势包括在处理文档时的更高效率。这归功于它能够采用完全自动化的流程,不需要任何人为参与,只要满足智能合约代码所列出的要求即可。结果是,会节省时间,降低成本,交易更准确,且无法更改。
此外,智能合约去除任何第三方干扰,进一步增强了网络的去中心化。
详细说明参考代码注释。
// SPDX-License-Identifier: MIT
//file IERC20Metadata.sol
pragma solidity ^0.8.0;
import "./IERC20.sol";
interface IERC20Metadata is IERC20 {
// 代币名称, 如:BitCoin
function name() external view returns (string memory);
// 代币符号或简称, 如:BTC
function symbol() external view returns (string memory);
// 代币支持的小数点后位数,若无特别需求,我们一般默认采用18位。
function decimals() external view returns (uint8);
}
MetaData数据定义,该部分比较简单,定义三个函数,分别对应代币名称,代币简称和代币小数点位数。
具体代码实现:
// 地址余额
mapping(address => uint256) private _balances;
// 授权地址余额
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
ERC20合约中定义了5个变量:
_balances变量以keyv=>value方式存储帐号和其对应的余额。
_allowances变量是一个两层mapping,数据值以下结构存储:0x123456=>[0x123457=>1000, 0x123458=>2000],代表的意思是0x123456帐号授权0x123457和0x123458两个帐号,分别可以使用0x123456帐号1000和2000余额额度。使用余额的函数为transferFrom。
_totalSupply变量是存储当成代币合约发行的代币总量,一般我们每铸造一个新代币,就在其值上+1。