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

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

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

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

 

这篇文章,咱们将用使用编程语言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/,打开这个网址后显示以下:网络

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

 

第一次访问该页面时,咱们须要将本文编辑器预加载的代码删除,并替换为以下内容:编程语言

 

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

 

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

 

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

屏幕最上方所显示“RPC” 服务器,咱们一下子须要用到它的信息。

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

 

在右上角,您能够看到一个关于以太坊网络链接的下拉列表,默认状况下,它会链接到以太坊(ETH)主网。咱们须要点击下拉框选择咱们须要的网络。

 

如今您能够输入Ganache早些时候给咱们提供的RPC服务器信息。 注意:您能够随意命名节点。

 

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

 

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

 

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

 

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

 

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

 

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

   点击钥匙以后,它会向咱们显示与此账户关联的私钥。

 

咱们复制此私钥到MyEtherWallet。

 

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

 

若是交易成功,那么Ganache将增长其“Current Block”值,而且咱们用于部署合约的帐户的交易计数也增长。

咱们的合约如今已上传到咱们的区块链! 要经过递增和递减counter与其交互,咱们能够返回MyEtherWallet并选择“Interact With Contract”。

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

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

 

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

 

如今咱们能够回到MyEtherWallet,将ABI粘贴到文本框中,而后单击“Access”按钮。

 

真棒! 如今咱们能够经过点击“Select a function”下拉菜单与咱们的合约进行交互。

 

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

 

这只是增长了计数值。如今咱们能够再次调用getCount()来确认值是否真的改变了。

 

正如你所看到的,count如今等于1! 因此,咱们的incrementCount()函数成功运行。你能够尝试调用decrementCount()函数,而且探索更多!

 

在整篇文章中,咱们在本身的机器上发布了区块链,并为其部署了一个智能合约,并与合约进行了交互。这与专业以太坊智能合约开发人员的工做流程很是类似,只是略有不一样。在智能合约的早期开发过程当中,这个过程很是有效,但若是您但愿经过将其部署到mainnet来使得其余人与您的智能合约进行交互而不使用真实货币的话,会发生什么呢?在这种状况下,您能够将您的合约上传到以太坊测试网络或testnet,以便将合约复制到以太坊全球网络中的每台机器上,但用户仍然可使用虚拟货币与其进行交互。

 

本文教程到此结束。

相关文章
相关标签/搜索