• 以太坊:根据例子学习Solidity-库合约使用


    库合约使用

    通过在合约中引入模块化方法(),可以帮助我们减少溢出等风险。 在下面的合约例子中,引入 Balances  合约使用了 move 方法, 去检查地址余额是否符合预期。

    现在大家只需了解下库的作用,后面的文档有 更多关于库的使用

    pragma solidity >=0.4.22 <0.7.0;
    
    library Balances {
        function move(mapping(address => uint256) storage balances, address from, address to, uint amount) internal {
            require(balances[from] >= amount);
            require(balances[to] + amount >= balances[to]);
            balances[from] -= amount;
            balances[to] += amount;
        }
    }
    
    contract Token {
        mapping(address => uint256) balances;
        using Balances for *;   // 引入库
        mapping(address => mapping (address => uint256)) allowed;
    
        event Transfer(address from, address to, uint amount);
        event Approval(address owner, address spender, uint amount);
    
        function balanceOf(address tokenOwner) public view returns (uint balance) {
            return balances[tokenOwner];
        }
        function transfer(address to, uint amount) public returns (bool success) {
            balances.move(msg.sender, to, amount);
            emit Transfer(msg.sender, to, amount);
            return true;
    
        }
    
        function transferFrom(address from, address to, uint amount) public returns (bool success) {
            require(allowed[from][msg.sender] >= amount);
            allowed[from][msg.sender] -= amount;
            balances.move(from, to, amount);   // 使用了库方法
            emit Transfer(from, to, amount);
            return true;
        }
    
        function approve(address spender, uint tokens) public returns (bool success) {
            require(allowed[msg.sender][spender] == 0, "");
            allowed[msg.sender][spender] = tokens;
            emit Approval(msg.sender, spender, tokens);
            return true;
        }
    }
  • 相关阅读:
    World Wide Web Publishing Service 服务成功发送一个 停止 控件
    绵竹网站整理
    利用AirPlayer空中播放PC服务器视频、音乐、图片
    ic管理系统
    IIS 6.0下访问aspx文件提示无法找到该页
    GHOST XP SP3无法安装IIS的解决办法
    html 整个页面变灰
    爱普生LQ630K 730K如何换色带
    sql 格式 00123
    serveu 错误1069 由于登陆失败而无法启动服务
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13313131.html
Copyright © 2020-2023  润新知