「教程」用Solidity开始编写你的第一个智能合约

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

本文翻译自: Gerald Nash《Build Your First Smart Contract》

原文地址:https://medium.com/crypto-currently/build-your-first-smart-contract-fc36a8ff50ca

由微信公众号“Wancloud万云”翻译并发布于公众号上。

 

这篇文章,我们将用使用编程语言Solidity教大家编写一个简单的counter智能合约。Solidity这种语言与JavaScript相似。

 

开始之前,您需要安装的工具:

1. Ganache:这将是我们用来创建仅在我们的计算机上运行的私有区块链的工具。链接:http://truffleframework.com/ganache/

2.MyEtherWallet副本,在这种情况下,URL托管的网站将不起作用。链接:https://github.com/kvhnuke/etherwallet/releases 注意:下载的版本是etherwallet-v3.xx.x.x.zip。

 

安装完成后,我们开始访问https://remix.ethereum.org/,打开这个网址后显示如下:

「教程」用Solidity开始编写你的第一个智能合约_第1张图片

这是Remix,一个Solidity语言的在线编译器,我们将用此编译器来编写智能合约代码。

 

第一次访问该页面时,我们需要将本文编辑器预加载的代码删除,并替换为如下内容:

「教程」用Solidity开始编写你的第一个智能合约_第2张图片

 

这是我们counter的代码。正如你所看到的,它有一个变量和三个函数。变量count是一个私有整数,这意味着它不能被合约以外的任何人访问。第一个函数incrementCounter()通过递增其值来改变或改变count的值。 第二个函数decrementCounter()通过递减其值来改变count的值。第三个函数getCount()访问count并将其值返回给任何函数。

 

当把counter的代码粘贴到Remix时,它应该如下所示并自动编译:

「教程」用Solidity开始编写你的第一个智能合约_第3张图片

 

我们将保留该选项卡,以便稍后返回。 现在,打开Ganache,会显示如下所示:

「教程」用Solidity开始编写你的第一个智能合约_第4张图片

屏幕最上方所显示“RPC” 服务器,我们一会儿需要用到它的信息。

「教程」用Solidity开始编写你的第一个智能合约_第5张图片

现在,解压MyEtherWallet,并打开文件夹。 然后,在浏览器中打开index.html文件便可看到如下图所示。

「教程」用Solidity开始编写你的第一个智能合约_第6张图片

 

在右上角,您可以看到一个关于以太坊网络连接的下拉列表,默认情况下,它会连接到以太坊(ETH)主网。我们需要点击下拉框选择我们需要的网络。

「教程」用Solidity开始编写你的第一个智能合约_第7张图片

 

现在您可以输入Ganache早些时候给我们提供的RPC服务器信息。 注意:您可以随意命名节点。

「教程」用Solidity开始编写你的第一个智能合约_第8张图片

 

MyEtherWallet现在通过Ganache连接到您的自托管区块链。让我们使用MyEtherWallet将Counter智能合约上传到我们的区块链。为此,我们在MyEtherWallet的顶部导航栏中点击“Contracts”并选择“Deploy Contract”。

「教程」用Solidity开始编写你的第一个智能合约_第9张图片

「教程」用Solidity开始编写你的第一个智能合约_第10张图片

 

正如您所看到的,MyEtherWallet向我们请求合约的字节码。 要找到这个,我们将回到我们的Remix IDE并点击“Details”按钮。

「教程」用Solidity开始编写你的第一个智能合约_第11张图片

 

您现在应该看到一个对话,其中包含有关我们的Counter合约的大量信息。

「教程」用Solidity开始编写你的第一个智能合约_第12张图片

 

要复制字节码,我们将点击“BYTECODE”旁边的剪贴板图标。

「教程」用Solidity开始编写你的第一个智能合约_第13张图片

 

然后,我们将回到MyEtherWallet并将字节码粘贴到对话框中。

「教程」用Solidity开始编写你的第一个智能合约_第14张图片

 

现在我们可以向下滚动并导入一个帐户以上传合约。幸运的是,Ganache给了我们5个地址,我们可以使用它与我们的私有区块链进行交互。要使用其中一个上传此合约,我们可以返回到Ganache并单击任何地址的钥匙图标。

「教程」用Solidity开始编写你的第一个智能合约_第15张图片

   点击钥匙之后,它会向我们显示与此帐户关联的私钥。

「教程」用Solidity开始编写你的第一个智能合约_第16张图片

 

我们复制此私钥到MyEtherWallet。

「教程」用Solidity开始编写你的第一个智能合约_第17张图片

 

现在,如果我们点击“Unlock”,MyEtherWallet会询问我们是否签署这笔交易并部署我们的合约。我们执行它。

「教程」用Solidity开始编写你的第一个智能合约_第18张图片

「教程」用Solidity开始编写你的第一个智能合约_第19张图片

「教程」用Solidity开始编写你的第一个智能合约_第20张图片

 

如果交易成功,那么Ganache将增加其“Current Block”值,并且我们用于部署合约的账户的交易计数也增加。

「教程」用Solidity开始编写你的第一个智能合约_第21张图片

我们的合约现在已上传到我们的区块链! 要通过递增和递减counter与其交互,我们可以返回MyEtherWallet并选择“Interact With Contract”。

「教程」用Solidity开始编写你的第一个智能合约_第22张图片

「教程」用Solidity开始编写你的第一个智能合约_第23张图片

MyEtherWallet现在要求我们新部署的合约所在的地址和我们合约的应用程序二进制接口(ABI)。要找到地址,我们可以回到Ganache并查看我们的交易记录。

「教程」用Solidity开始编写你的第一个智能合约_第24张图片

「教程」用Solidity开始编写你的第一个智能合约_第25张图片

此页面显示我们之前在部署合约时创建的交易。正如你所看到的,Ganache告诉我们用来部署合约的地址,我们区块链上的合约地址以及有关交易的更多信息。让我们单击事务,复制创建的合约地址,并将其粘贴到MyEtherWallet中。

「教程」用Solidity开始编写你的第一个智能合约_第26张图片

「教程」用Solidity开始编写你的第一个智能合约_第27张图片

「教程」用Solidity开始编写你的第一个智能合约_第28张图片

「教程」用Solidity开始编写你的第一个智能合约_第29张图片

 

剩下的就是我们需要的ABI。这是告诉MyEtherWallet如何与我们的合约进行交互。为了得到它,我们将回到Remix并点击“INTERFACE - ABI”旁边的剪贴板图标将其复制。

「教程」用Solidity开始编写你的第一个智能合约_第30张图片

 

现在我们可以回到MyEtherWallet,将ABI粘贴到文本框中,然后单击“Access”按钮。

「教程」用Solidity开始编写你的第一个智能合约_第31张图片

 

真棒! 现在我们可以通过点击“Select a function”下拉菜单与我们的合约进行交互。

「教程」用Solidity开始编写你的第一个智能合约_第32张图片

「教程」用Solidity开始编写你的第一个智能合约_第33张图片

 

成功运行!在更改计数值之前,我们的合约返回0。但是,我们还有另外两个函数,incrementCounter()和decrementCounter()。我们来调用incrementCounter()来测试一下。我们将通过再次选择函数下拉菜单,选择incrementCounter并创建一个新的交易。

「教程」用Solidity开始编写你的第一个智能合约_第34张图片

「教程」用Solidity开始编写你的第一个智能合约_第35张图片

「教程」用Solidity开始编写你的第一个智能合约_第36张图片

「教程」用Solidity开始编写你的第一个智能合约_第37张图片

 

这只是增加了计数值。现在我们可以再次调用getCount()来确认值是否真的改变了。

「教程」用Solidity开始编写你的第一个智能合约_第38张图片

「教程」用Solidity开始编写你的第一个智能合约_第39张图片

 

正如你所看到的,count现在等于1! 所以,我们的incrementCount()函数成功运行。你可以尝试调用decrementCount()函数,并且探索更多!

 

在整篇文章中,我们在自己的机器上发布了区块链,并为其部署了一个智能合约,并与合约进行了交互。这与专业以太坊智能合约开发人员的工作流程非常相似,只是略有不同。在智能合约的早期开发过程中,这个过程非常有效,但如果您希望通过将其部署到mainnet来使得其他人与您的智能合约进行交互而不使用真实货币的话,会发生什么呢?在这种情况下,您可以将您的合约上传到以太坊测试网络或testnet,以便将合约复制到以太坊全球网络中的每台机器上,但用户仍然可以使用虚拟货币与其进行交互。

 

本文教程到此结束。

转载于:https://my.oschina.net/u/3620978/blog/1814729

你可能感兴趣的:(「教程」用Solidity开始编写你的第一个智能合约)