Ethereum有两个账户
第一种:
合约账户(contract accounts)
可以接收、和持有资金,但是不能转账,因为没有private key
第二种:
外部拥有账户(externally owned accounts)
可以对资金进行接收、持有、和转账,有private key
应该要知道的
- 1.
payable
关键字表示该函数可以接收funds - 2.
msg.value
关键字表示接收了多少的funds,但是wei - 3.如果把资金转账到了合约账户里,那么这个资金永远取不出来了,因为合约账户没有private key,无法进行transfer
- 4.
address.transfer()
是安全的,会花费2300的gas,遇到错误时,抛出异常 - 5.
address.send()
有时候安全,也会花费2300的gas,遇到错误时,return false(建议使用address.transfer()函数)