知世金融网专注于股票行情,期货开户,外汇储备等最新相关资讯信息提供投资者参考学习!

当前位置:网站首页 > 区块链 > 正文

使用Remix IDE 开发你的第一个vyper智能合约

原创
文章作者
知世-金融领域资深作者
知名金融领域作者,从事金融超过十余年,在行业内有一定影响力。
金融风险管理师认证证书 常识职业资格认证 特许金融分析师 国际金融理财师认证证书
发布时间:2020-02-16 18:52:31 发布来源:区块链研究实验室 文章点击:130

使用在线Remix IDE开始在Vyper中编写智能合约的是最简单的工具。 由于它是一个在线IDE,因此无需安装或开发环境设置,您可以打开该站点并开始使用! Remix提供在线环境中进行调试,静...

目录

    本文标题使用Remix IDE 开发你的第一个vyper智能合约,作者:知世,本文有1380个文字,大小约为6KB,预计阅读时间4分钟,请您欣赏。知世金融网众多优秀文章,如果想要浏览更多相关文章,请使用网站导航的搜索进行搜索。本站虽然不乏优秀之作,但仅作为投资者学习参考。

    使用在线Remix IDE开始在Vyper中编写智能合约的是最简单的工具。

    由于它是一个在线IDE,因此无需安装或开发环境设置,您可以打开该站点并开始使用!

    Remix提供在线环境中进行调试,静态分析和部署的工具。要将Remix与Vyper一起使用,首先需要从插件管理器选项卡启用Vyper插件。

    1. 在dapp中允许任何用户使用eth发放赏金
    2. 当满足一定要求时,任何拥有以太坊帐户的用户都可以在ETH中发放赏金
    3. 任何用户都可以提交一份赏金的履行情况和证明
    4. 赏金发行人接受履行支付

    我们首先清除编辑器的内容,并将文件命名为Bounty.vy。

    我们首先定义智能合约的结构。

    结构是自定义类型,可以对多个变量进行分组。

    struct Bounty:
    issuer: address
    deadline: timestamp
    data: bytes32
    status: uint256
    amount: wei_value

    struct Fulfillment:
    accepted: bool
    fulfiller_address: address
    data: bytes32

    要测试一切是否正常,请单击“compile”按钮以编译合同。

    如果一切正常,您应该在Bytecode,Runtime Bytecode和LLL选项卡中看到输出,这表明编译成功。

    发放赏金

    现在我们已经拥有智能合约的基本框架,我们可以开始添加功能了。首先我们解决允许用户发放赏金的问题。

    声明状态变量

    就像Solidity一样,Vyper有状态变量。状态变量是永久存储在合同存储中的值。

    接下来,我们定义合约的事件。Vyper可以记录在运行时捕获的事件并为用户显示它。

    BountyIssued: event({_id: int128, _issuer: indexed(address),

    _amount: wei_value, data: bytes32 })

    BountyCancelled: event({ _id: int128, _issuer: indexed(address),

    _amount: uint256 })

    BountyFulfilled: event({ _bountyId: int128, _issuer: indexed(address),

    _fulfiller: indexed(address), _fulfillmentId: int128, _amount: uint256})

    FulfillmentAccepted: event({ _bountyId: int128, _issuer: indexed(address)

    , _fulfiller: indexed(address), _fulfillmentId: int128, _amount: uint256 })

    我们有四个不同领域的活动。客户端可能希望侦听合约更改的事件。

    声明用于跟踪赏金状态的常量值:

    CREATED: constant(uint256) = 0
    ACCEPTED: constant(uint256) = 1
    CANCELLED: constant(uint256) = 2

    定义2个数组,我们存储有关每个已发放的赏金和履行的数据:

    bounties: map(int128, Bounty)
    fulfillments: map(int128, Fulfillment)

    为每个履行和赏金定义索引。我们需要这个来获得现有的履行和赏金的当前位置。

    nextBountyIndex: int128
    nextFulfillmentIndex: int128

    注意:如果未能定义索引,则在尝试测试合约时最终会遇到此错误。

    Persistent variable undeclared: nextBountyIndex

    发布赏金功能

    现在我们已经声明了我们的状态变量,我们可以添加函数以允许用户与我们的智能合约进行交互。

    将public decorator添加到函数中,以便外部用户可以从合约中调用它。为了将eth发送到我们的合约中,我们需要在函数中添加payable关键字。如果没有这个payme关键字,合约将拒绝通过此函数向其发送eth的所有尝试

    @public
    @payable
    def issueBounty(_data: bytes32, _deadline: timestamp):
    assert msg.value > 0
    assert _deadline > block.timestamp

    bIndex: int128 = self.nextBountyIndex

    self.bounties[bIndex] = Bounty({ issuer: msg.sender, deadline:

    _deadline, data: _data, status: 0, amount: msg.value })
    self.nextBountyIndex = bIndex + 1

    log.BountyIssued(bIndex, msg.sender, msg.value, _data)

    函数issueBounty接收一个名为_data的bytes32变量和一个timestamp_deadline作为参数。

    assert msg.value > 0
    assert _deadline > block.timestamp

    由于Vyper不支持修饰符,因此我们使用assert关键字检查来确保满足每个条件。如果不满足任何条件,该函数将返回错误。

    bIndex: int128 = self.nextBountyIndex

    我们定义一个int128变量来保存赏金的当前Index位置。这是必要的,因为我们需要使用它来存储赏金列表中的新赏金。

    我们的函数体有两行:

    self.bounties[bIndex] = Bounty({ issuer: msg.sender, deadline: _deadline,

    data: _data, status: 0, amount: msg.value })

    self.nextBountyIndex = bIndex + 1

    首先,我们使用bIndex将新的Bounty插入到我们的bounties数组中,将BountyStatus设置为CREATED。

    在Vyper中,msg.sender自动设置为发送方的地址,msg.value设置为Wei的数量(1 ETH = 1000000000000000000 Wei)。

    我们将msg.sender设置为发行者,将msg.value设置为赏金金额。

    log.BountyIssued(bIndex, msg.sender, msg.value, _data)

    最后,我们记录BountyIssued事件供用户订阅。

    亲自尝试一下

    既然您已经了解了如何添加函数来发放赏金,请尝试将以下函数添加到Bounties合约中:

    1. ulfilBounty(uint _bountyId,string _data)此函数存储附加到给定赏金的履行记录。 应将msg.sender记录为履行者。

    2. acceptFulfilment(uint _bountyId,uint _fulfilmentId)此函数接受给定的履行,并且如果存在针对给定赏金的记录。 然后它应该向履行者支付赏金。

    3. function cancelBounty(uint _bountyId)此函数取消赏金,如果尚未被接受,则将资金发回给发行人

    本文相关推荐: Metronome第一个跨区块链的新型加密货币区块链项目介绍

    以上便是知世金融网给大家分享的关于使用Remix IDE 开发你的第一个vyper智能合约/qkl/27478.html的相关信息了,希望能帮助到大家,更多金融相关信息,敬请关注知世金融网!

    网站内容均来自互联网,如侵害您的利益联系客服进行删除!

    关键词:第一个
    (0)
    (0)

    上一篇:金秋绽放,并驾齐驱,Etalonium深圳高端酒会圆满举行

    下一篇:解析比原链MOV:下一代去中心跨链Layer2价值交换协议

    本文标题:使用Remix IDE 开发你的第一个vyper智能合约

    本文地址:/index.php?s=article&c=search&keyword=%E7%AC%AC%E4%B8%80%E4%B8%AA

    金融知名领域

    南方财富网 | 金融界 | 金融界 |

    更多推荐

    • 茅台吃饱,经销商哭倒
      茅台吃饱,经销商哭倒
    • 汇金的五次增持从短期看具有一定的“稳定器“作用,但从市场表现看效果逐次递减
      汇金的五次增持从短期看具有一定的“稳定器“作用,但从市场表现看效果逐次递减
    • 158亿元!比亚迪收购!
      158亿元!比亚迪收购!
    • 9月价格回落近五成 “冷静期”酒店业备战“十一”市场
      9月价格回落近五成 “冷静期”酒店业备战“十一”市场
    • 2023哈马博览会哈尔滨银行展区精彩纷呈
      2023哈马博览会哈尔滨银行展区精彩纷呈
    • 大额解禁撂倒股价 医疗影像龙头跌出千亿俱乐部 葛兰二季度大幅减仓
      大额解禁撂倒股价 医疗影像龙头跌出千亿俱乐部 葛兰二季度大幅减仓
    • A股,又上了热搜!数字要素概念走高多股涨停,锂电池板块走低恩捷股份大举跌停
      A股,又上了热搜!数字要素概念走高多股涨停,锂电池板块走低恩捷股份大举跌停
    • 最新!巨头出手,加仓宁王51%
      最新!巨头出手,加仓宁王51%
    • 600亿巨头暴雷
      600亿巨头暴雷
    • 一天32家!科创板回购潮涌来
      一天32家!科创板回购潮涌来
    • 提振信心实招来了!30余家上市公司密集出手 最高要买10亿
      提振信心实招来了!30余家上市公司密集出手 最高要买10亿
    • 高盛再发50年后预测:2075年印度股市全球市值占比将升4倍 中国升3成
      高盛再发50年后预测:2075年印度股市全球市值占比将升4倍 中国升3成

    新闻资讯栏目

    站长QQ: 2397470084