Solidity(5)

169 阅读1分钟

合约转账


pragma solidity ^0.4.24;

contract PaySuper{
    // 属于默认缺省值为: internal
    address internal _owner;  // 存储合约的所有者
    
    // 判断合约所有者的修改器 (Java AOP)
    modifier onlyOwner{
        if(msg.sender!=_owner)
           throw;
        _; // _代表执行函数内部语句
    }
    
}

// 此智能合约可以实现向合约的所有转账的功能
contract PayableDemo is PaySuper{
    
    event showMsg(string);
    
    // 只有合约所有者才会调用构造函数
    function PayableDemo() payable{
        _owner = msg.sender;  // sender:获取函数调用者的地址
        // 合约创建者在创建合约时输入一定的金额
        msg.value;
    }
    
    // 创建一个函数,实现转账功能,转账函数必须有payable关键字
    function transfer() payable{
        _owner.transfer(msg.value);   // value:在调用当前函数时,传入value值
    }
    
    function showBalance() returns (address,uint256){
        address _account = msg.sender;
        return (_account,_account.balance);
    }
    
    modifier onlyOwner{
        showMsg('子类重写了父类的修改器!');
        if(msg.sender!=_owner)
           throw;
        _; // _代表执行函数内部语句
    }
    
    // 编写函数,实现合约自毁的功能
    function kill(address addr) onlyOwner{
        // 判断是否为合约所有者
        selfdestruct(addr);  // 销毁合约并且发送金额到指定地址
    }
    
}