美文网首页
合约继承、自毁、事件、Address

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

作者: 我就是非主流 | 来源:发表于2018-06-22 11:45 被阅读0次

    继承

            在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

          本文链接:https://www.haomeiwen.com/subject/dkzhyftx.html