以太币的单位
以太坊的货币单位为ether
以太币可以被拆分为更小的单元称为wei
值(以wei为单位) | 指数 | 通俗名称? ? ? ? ? ?? | 标准名称 |
---|
1 | 1 | wei | wei | 1 000? ? ? ?? | | babbage???????? | kilowei | 1 000 000? | | lovelace? ? ? ? | megawei | 1 000 000 000? ? ? ? | | shannon | gigwei | 1 000 000 000 000 | | szabo | microether | 1 000 000 000 000 000 | | finney | milliether | 1 000 000 000 000 000 000 | | ether | ether | 1 000 000 000 000 000 000 000 | | grand | kiloether | 1 000 000 000 000 000 000 000 000 | | | megaether |
第一个智能合约
//第一个水龙头智能合约
contract Faucet{
//给任何请求的人ether
function withdraw(uint withdraw_amount) public {
//限制取出数量 10^17
require(withdraw_amount <=100000000000000000);
//发送他们请求的ether到他们的地址
msg.sender.transfer(withdraw_amount);
}
//回退函数
function ()public payable{ }
}
//第一个水龙头智能合约? ? ?
注释不会被包括在EVM的字节码中,被编辑器忽略。
contract Faucet{?
实际合约的开始,声明一个contract对象,类似class。
?function withdraw(uint withdraw_amount) public {
声明函数 名字为withdraw 接收uint(无符号整型)名为?withdraw_amount的参数。函数被声明为公开函数,意味着它可以被其他合约调用。
require(withdraw_amount <=100000000000000000);
?使用Solidity内置函数require来判断条件即withdraw_amount是否小于等于10^17wei==0.1ether。如果条件判断不通过,则将导致合约执行停止并因异常而失败。
msg.sender.transfer(withdraw_amount);
?实际的提币行为。
????????????????????????msg对象是一个所有合约都可以访问的输入。
? ? ? ? ? ? ? ? ? ? ? ? sender属性就是发起这个交易的发起方地址。
? ? ? ? ? ? ? ? ? ? ? ? transfer函数是内置函数,用来转账。
function ()public payable{ }
回退函数,会在一些特殊情况下被调用,比如触发这个合约的交易没有指定调用哪一个具体函数,或者合约本身没有定义任何函数,再或者交易没有包括任何数据。合约可以有一个这样的默认函数(没有名字),通常也使用这个函数来接受以太币。定义包含public和payable属性,这意味这个合约可以接受以太币。?
|