使用 Vyper 实现智能合约——一种 Python 方法

使用 Vyper 实现智能合约——一种 Python 方法

未标题-3

许多正在学习如何编写智能合约的程序员将学习Solidity语言。有丰富的在线教程和书籍资源,将教我们关于Solidity的内容。当与Truffle框架相结合时,Solidity形成了开发智能合约的“杀手”组合。几乎所有存在于以太坊区块链上的智能合约都是用Solidity编程语言编写的。

在本文中,我们将探讨如何用Vyper编程语言编写智能合约。

主题

  • 介绍
  • 设置环境
  • 使用Vyper创建智能合约
  • 将智能合约部署到 Ganache
  • 与智能合约交互
  • 与其他智能合约交互
  • 以编程方式编译代码

介绍

Vyper是什么?

Vyper是一种面向合约的python编程语言,以以太坊虚拟机(EVM)为目标。Vyper有非常简单/可理解的语法:Vyper的原则之一是使开发人员几乎不可能编写具有误导性的程序。

为什么要用Vyper ?

  • 安全性:在Vyper中构建安全的智能合约应该是可能的。
  • 语言和编译器的简单性:语言和编译器实现应该力求简单。
  • 可审核性:Vyper代码应该最大限度地让人可读。此外,编写具有误导性的代码应该是最困难的。读者的可读性比作者的可读性更重要,对于没有使用Vyper经验的读者(以及一般没有编程经验的读者)来说,简单性尤其重要。

因此,Vyper提供了以下特性:

  • 边界和溢出检查:对数组访问和算术。
  • 支持有符号整数和十进制定点数
  • 可判定性:可以计算任何Vyper函数调用的gas消耗的精确上限。
  • 强类型
  • 小而易懂的编译器代码
  • 对纯函数的有限支持:任何标记为常量的东西都不允许改变状态。

设置环境

Vyper需要Python 3.6软件。所以,如果我们没有安装Python 3.6软件,我们必须安装它,然后按照下面的步骤进行:

$ python3 -m pip install --user virtualenv
$ pip install vyper
$ virtualenv -p python3.6 vyper-venv
$ source vyper-venv/bin/activate
(vyper-venv) $ pip install vyper
(vyper-venv) $ vyper --version

使用Vyper创建智能合约

现在让我们用Vyper创建一个智能合约。首先,我们将创建一个扩展名为.vy的文件,并将其命名为hello.vy,如下:

name: public(String[24])

@external
def __init__():
    self.name = "Satoshi Nakamoto"
    
@external
def change_name(new_name: String[24]):
    self.name = new_name
    
@external
def say_hello() -> String[32]:
    return concat("Hello, ", self.name)

下面是编译vyper文件的方法:

(vyper-venv) $ vyper hello.vy

由此,我们将得到以下输出:

img

这是智能合约的字节码。要部署智能合约,就需要字节码,但要访问智能合约,需要abi。如何得到abi呢?可以通过以下命令来实现:

(vyper-venv) $ vyper -f json hello.vy

由此,我们将获得以下输出:

img

如果我们想在一个编译过程中同时得到abi和字节码,可以在编译过程中合并这两个标志,如下所示:

(vyper-venv) $ vyper -f json,bytecode hello.vy

这将给我们以下输出:

img

将智能合约部署到 Ganache

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值