合约继承、自毁、事件、Address

继承

        在Solidity中使用is关键字来表示继承关系,子类可以访问父类的除private限制的属性和方法,包括internal方法和变量,不可使用this来访问。

例:

继承

自毁

        销毁当前合约,并且把当前合约的余额发送给指定地址,关键字selfdestruct

例:

合约自毁

事件

        事件是与以太坊虚拟机日志工具的接口。关键字event,

例:

pragma solidity ^0.4.0;

contract SimpleAuction { 

    // 事件 

    event e(address bidder, uint amount); 

    function bid() public payable { 

    // 触发事件

    emit e(msg.sender, msg.value);  

    }

}

Address的方法

        transfer:向一个地址发送一定数量的以太币,失败时抛出异常,发送 2300 gas 的矿工费,不可调节。

        send:向一个地址发送一定数量的以太币,失败时返回 false,发送 2300 gas 的矿工费用,不可调节。(废弃)

        call:发出底层 CALL,失败时返回 false,发送所有可用 gas,不可调节。

        callcode:发出底层 CALLCODE,失败时返回 false,发送所有可用 gas,不可调节。

        delegatecall:发出底层 DELEGATECALL,失败时返回 false,发送所有可用 gas,不可调节。

transfer 用法:

send示例

call delegatecall 用法:

call和delegatecall

call delegatecall 的区别:

        区别在于delegatecall 只使用给定地址的代码,其它属性(存储,余额,……)都取自当前合约。delegatecall 的目的是使用存储在另外一个合约中的库代码,结果为自己的合约发生变化。而call完全执行了其他合约,包括代码属性,结果是被调用合约发生了变化。

你可能感兴趣的:(合约继承、自毁、事件、Address)