Vyper教程 编译部署合约

文章目录

  • 写在前面
  • 合约编译与部署
    • 方法一:本地编译部署
    • 方法二:在线编译和部署
      • 打开Remix
      • 添加Vyper插件
      • 编译Vyper合约
      • 部署合约
      • 部署到主网络
  • 与合约交互
  • 写在最后

写在前面

上一篇 Vyper教程 第一个合约 中我们完成了第一个Vyper合约。这一节我们将学习如何把合约部署到区块链测试网络中。
在区块链上部署合约其实就是在创建一个特殊交易,在线部署过程中,我们会用到一个基于浏览器的以太坊钱包MetaMask和智能合约在线编译器Remix。
如何你完成过solidity合约的部署,可能对MetaMask和Remix以及以太坊测试网络比较熟悉。如果不熟悉,或者对接下来文中的概念有困惑,请先阅读 精通以太坊 第二章 。
请提前用MetaMask在Ropsten测试网络上获取一些测试以太坊。

合约编译与部署

方法一:本地编译部署

上一节中我们已经写好了wallet.vy,可以用下面的命令编译并生成字节码:

vyper wallet.vy 

生成智能合约的字节码后可以通过mist或geth或以太坊钱包钱包部署。教程

方法二:在线编译和部署

在线编译部署很方便,我们重点讲这种方式。

打开Remix

首先使用你的Chrome浏览器(安装好MetaMask钱包)打开 Remix IDE:

当你第一次加载Remix时,它会帮你生成一些示例合约,我们不需要它们。
点击左侧工具栏中的圆形加号,添加一个新文件,命名wallet.vy,并将我们的代码内容复制粘贴到这个文件中:
Vyper教程 编译部署合约_第1张图片

添加Vyper插件

接下来我们需要添加编译Vyper的插件。从左侧导航栏转到“PLUGIN MANAGER”,找到Vyper插件点击Activate按钮。就可以从左侧导航栏找到并使用这个插件了。
Vyper教程 编译部署合约_第2张图片

编译Vyper合约

从左侧导航栏转到“Vyper”插件里,选择“REMOTE COMPILER”,这里提示我们真正要上线使用的合约不建议使用远程编译器,而要使用本地编译器。我们作为学习、测试,使用远程编译器是完全没问题的。
然后选择“Compile browser/wallet.vy” 编译我们的合约文件。
Vyper教程 编译部署合约_第3张图片
编译好之后能看到字节码、ABI等已经生成好了:
Vyper教程 编译部署合约_第4张图片
当然如果你想使用本地编译器,请先根据之前的教程Vyper教程 开发环境搭建 安装好Vyper 然后执行vyper-server,默认地址是localhost:8000

$ vyper-serve
Listening on http://localhost:8000

启动本地Vyper服务后就可以用Local Compiler 进行编译了。

部署合约

从左侧导航栏转到“DEPLOY & RUN TRANSACTIONS” 部署界面。并在“Environment”下拉列表框中选择“Injected Web3”。这将使Remix IDE连接到MetaMask钱包。

输入密码登录后,会出现Remix连接MetaMask的请求,同意后从钱包中选择连接到Ropsten测试网络。
Vyper教程 编译部署合约_第5张图片

完成后,你可以在Evironment下看到“Ropsten”。另外,在Account选择框中,它显示你的钱包的地址。下面的合约选择框中选择我们的wallet.vy合约。点击"Deploy"进行部署:Vyper教程 编译部署合约_第6张图片
此时Remix IDE将构建特殊的“creation“交易,MetaMask会要求你批准它,点击“确认”。
Vyper教程 编译部署合约_第7张图片
部署需要等一小会,完成后在“Deployed Contracts”下面可以看到合约地址,在右侧控制台可以看到交易详情:
Vyper教程 编译部署合约_第8张图片

部署到主网络

上述过长将你的合约部署到了以太坊测试网络,如果你想将合约部署到以太坊正式网络上,只需要将MetaMask连接的网络切换到主网络就可以,注意在主网络上部署是需要花真金白银的,这里我们就不演示了。

与合约交互

之所以我们推荐并详细讲述了用Remix部署合约,是因为用它可以快速和已经部署的合约进行交互来测试我们合约的功能!
点开我们的合约,可以看到两个交互的接口,正好与我们的代码中的函数对应:
Vyper教程 编译部署合约_第9张图片
首先我们来测试pay函数,在value中填入2 单位ether,点击"pay":
Vyper教程 编译部署合约_第10张图片
Remix会连接MetaMask要求你确认交易,点击确认。等待交易成功后,我们钱包中的以太币就少了2个。

接下来我们再从Remix执行“取1.5 ether”,测试withdraw函数。在withdraw后面的参数中填入1500000000000000000。点击“withdraw”:

我们传入的参数单位是wei,1ether=1000000000000000000wei

Vyper教程 编译部署合约_第11张图片
在钱包中确认交易,等待交易完成后,我们钱包中的ether又增加的1.5个!

此时我们合约中还剩余0.5个ether,如果再取1个(>0.5 )ether,remix会提示交易很可能失败,强制执行后就会得到交易失败的结果!

写在最后

至此我们完成了第一个合约的部署和与合约的交互。但你会发现,如果开发一个复杂的项目,需要经常更新代码、部署、测试。如果使用上述方法就显得太麻烦了,接下来我们将介绍以太坊最主流的开发框架Truffle 来帮助我们更快速的测试我们的合约代码。
下一篇 Vyper教程 使用Truffle框架开发Vyper

你可能感兴趣的:(Vyper教程)