精通以太坊笔记(二)

本文介绍了以太坊的货币单位,从wei到ether的转换,并详细解析了第一个智能合约——水龙头合约的代码。合约中包含了一个允许用户提取一定数量以太币的函数,通过require判断防止超额提取,并使用transfer方法执行转账。此外,还提及了智能合约的回退函数,用于处理未指定函数调用的情况。
摘要由CSDN通过智能技术生成

以太币的单位

以太坊的货币单位为ether

以太币可以被拆分为更小的单元称为wei

值(以wei为单位)指数通俗名称            标准名称
11weiwei
1 000        10^{3}babbage        kilowei
1 000 000 10^{6}lovelace       megawei
1 000 000 000       10^{9}shannongigwei
1 000 000 000 00010^{12}szabomicroether
1 000 000 000 000 00010^{15}finneymilliether
1 000 000 000 000 000 00010^{18}etherether
1 000 000 000 000 000 000 00010^{21}grandkiloether
1 000 000 000 000 000 000 000 00010^{24}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属性,这意味这个合约可以接受以太币。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值