继承
在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和delegatecallcall 和 delegatecall 的区别:
区别在于delegatecall 只使用给定地址的代码,其它属性(存储,余额,……)都取自当前合约。delegatecall 的目的是使用存储在另外一个合约中的库代码,结果为自己的合约发生变化。而call完全执行了其他合约,包括代码属性,结果是被调用合约发生了变化。
网友评论