通过例子学Vyper(一)

学习一门语言,最好的方法就是动手去实现一个案例。

本文通过一个官方的公开拍卖合约示例来介绍Vyper编程。

当我们开始用Vyper进行智能合约编程时,要记住一个重要的原则:

所有Vyper语法都是有效的Python3语法,但并不是所有的Python3语法都可以在Vyper中使用。

在这个合约中,我们将实现一个简单的公开拍卖功能,通过该合约参与者可以在有限的时间内提交出价,直至拍卖结束,最高的出价者竞拍成功,合约自动将竞拍款支付给受益人。

以下是代码:

# 公开拍卖

# 拍卖参数
# beneficiary是受益人的以太坊地址,将获得出价最高者的竞拍款
# auction_start是竞拍开始时间,auction_end是结束时间
beneficiary: public(address)
auction_start: public(timestamp)
auction_end: public(timestamp)

# 保存当前最高出价的信息
# highest_bidder是最高出价人以太坊地址
# highest_bid是当前最高出价
highest_bidder: public(address)
highest_bid: public(wei_value)

# 用于标识拍卖是否结束,为True时拍卖结束
ended: public(bool)

# 构造函数,进行初始化
# '_beneficiary'参数代表受益人地址
# '_bidding_time'参数代表拍卖持续的时长
@public
def __init__(_beneficiary: address, _bidding_time: timedelta):
    self.beneficiary = _beneficiary
    self.auction_start = block.timestamp
    self.auction_end = self.auction_start + _bidding_time

# 竞价函数,通过调用该函数发送以太币参与竞拍
# 当竞拍结束时,你没有赢得拍卖,以太币将被退还
@public
@payable
def bid():
    # 检查拍卖是否结束了
    assert block.timestamp < self.auction_end
    # 检查出价是否比当前最高价高
    assert msg.value &g
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值