这一章讲一下地址和合约。
地址相关
<address>.balance (uint256):Address的余额,以wei为单位。
<address>.transfer(uint256 amount):- 发送给定数量的
ether到某个地址,以wei为单位。失败时抛出异常。
- 发送给定数量的
<address>.send(uint256 amount) returns (bool):- 发送给定数量的
ether到某个地址,以wei为单位, 失败时返回false。
- 发送给定数量的
<address>.call(...) returns (bool):- 发起底层的
call调用。失败时返回false。
- 发起底层的
<address>.callcode(...) returns (bool):- 发起底层的
callcode调用,失败时返回false。 不鼓励使用,未来可能会移除。
- 发起底层的
<address>.delegatecall(...) returns (bool):- 发起底层的
delegatecall调用,失败时返回false
- 发起底层的
警告:send() 执行有一些风险:如果调用栈的深度超过1024或gas耗光,交易都会失败。因此,为了保证安全,必须检查send的返回值,如果交易失败,会回退以太币。如果用transfer会更好。
具体用法参考
合约相关
this(当前合约的类型):- 表示当前合约,可以显式的转换为
Address
- 表示当前合约,可以显式的转换为
selfdestruct(address recipient):- 销毁当前合约,并把它所有资金发送到给定的地址。
suicide(address recipient):selfdestruct的别名
1 | pragma solidity ^0.4.18; |
另外,当前合约里的所有函数均可支持调用,包括当前函数本身。