这一章讲一下地址和合约。
地址相关
<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; |
另外,当前合约里的所有函数均可支持调用,包括当前函数本身。