以太坊101:学习智能合约

由于EVM的极简性和局限性,从零开始构建专用语言要比让通用语言去满足EVM的复杂需求更加容易。

快速概览

“智能合约”这个术语在区块链中应用得很广泛,其在更大的不同的区块链生态系统中通常具有不同的定义。

智能合约只是计算机程序。在以太坊中,智能合约指的是EVM专用的特殊编程语言(如Solidity,Vyper,LLL,Bamboo和Serpent)的源代码。

使用专用语言来编写智能合约的好处和理由有很多,在本文中不再赘述。总而言之,由于EVM的极简性和局限性,从零开始构建专用语言要比让通用语言去满足EVM的复杂需求更加容易。

高级语言

智能合约开发人员拥有多种高级语言选项。在前面的文章中,我们重点介绍了各种以太坊客户端,同时指出有两类客户端,即Geth和Parity(现已变为OpenEthereum)是最突出和使用最广泛的客户端。以太坊高级语言的状态有点类似。从目前来看,Solidity是使用最广泛的语言,而Vyper正在迎头赶上。

高级语言对照表

Solidity**快速示例**

Solidity是一种以太坊智能合约语言,因此在接下来的几段阐述中,我们将仅使用Solidity源代码。

以下是一段Solidity合约源代码:

这个合约使用Solidity编译器0.5.3版进行编译。你可以在remix.ethereum.org上尝试一下。重现这个合约,将其部署到JavaScript测试区块链(Javascript VM)中,并与以下功能进行交互:

1. 将上述源代码复制并粘贴到remix.ethereum.org

2. 在“编译”选项中,将编译器版本设置为“0.5.3 + commit.10d17f24 ...”以匹配我们的合约版本0.5.3。

3. 切换到“运行”选项,然后将“环境”下拉到“JavaScript VM”。

4. 在正下方的框框中,找到“Hello World”合约,然后点击浅红色按钮将合约部署到JavaScript测试区块链。

5. 在正下方的两个方框中,找到“已部署合约”部分。在那里,你会看到两个按钮:“printGreeting”将打印当前问候语;“setGreeting”可以将当前问候语更改为你想要的任意字符串,你只需要确保这些字符用引号“”包括起来就行。

整个过程我们只需要使用Remix来编写、部署和与“ HelloWorld”智能合约进行交互。Remix是一款强大的用于智能合约开发的工具。

Vyper 快速示例

在这个Vyper示例中,我们将用到MyEtherWallet:

1. 打开两个选项卡:

https://vyper.online和https://www.myetherwallet.com/#contracts

2. 将上面的源代码复制并粘贴到Vyper在线编译器,然后进行编译。

3. 在MyEtherWallet上,导航到“部署合约”,并使用Vyper在线编译器上的“字节码”和“ ABI”选项的输出来填充字段。

4. 使用MetaMask连接到Rinkeby网络并签署交易。你可以通过以下网址来获得测试网ETH:https://faucet.rinkeby.io/

6. 使用MyEtherWallet来查看状态变量,并使用使用MetaMask和我们的“setGreeting(bytes [32])”来进行状态更改。

7. 虽然gas成本很高,但这其实只是一个演示。

8.使用十六进制到ASCII文本转换器来转换函数输入:

https://www.rapidtables.com/convert/number/hex-to-ascii.html

入门工具

Kauri 上的Solidity教程:

这是由一群活跃的web3开发人员使用实际代码编写的最新教程《Solidity实践工具》

https://beta.kauri.io/article/7a27a1c1fbdc428b8058f14db1a227aa/v1/tools-for-working-with-solidity)。

Remix Solidity

Remix的文档是这么介绍的:

Remix 是一款功能强大的开源工具,它可帮助你直接在浏览器编写Solidity合约。Remix用JavaScript编写,支持在浏览器和本地使用。

与此同时,Remix还支持智能合约测试、调试以及部署等操作。

Kauri 上的Remix教程:

这是由一群活跃的web3开发人员使用实际代码编写的最新教程 《Remix IDE:开发你的第一个智能合约》

https://kauri.io/tools-for-dapp-development/9a7d8927c9484f879d761981d70a42df/a

其他相关链接及内容

网站: https://remix.ethereum.org/

文档: https://remix.readthedocs.io/en/latest/

Truffle**开发框架**


Truffle的文档是这么介绍的:

一个为使用以太坊虚拟机(EVM)的区块链打造的顶级开发环境、测试框架和资源管理,旨在简化开发人员的工作复杂度。

Kauri 上的Truffle教程

这是由一群活跃的web3开发人员使用实际代码编写的最新教程。

《Truffle:智能合约编译与部署》

https://beta.kauri.io/article/cbc38bf09088426fbefcbe7d42ac679f/v5/truffle:-smart-contract-compilation-and-deployment

《Truffle: 开始测试你的智能合约》

https://kauri.io/article/f95f956261494090be1aaa8227464773/v7/truffle:-testing-your-smart-contract

相关链接及文档

网站:

https://truffleframework.com/

文档:

https://truffleframework.com/docs

社区:

https://truffleframework.com/community

Embark 框架

Embark的文档是这么介绍的:

Embark 是一个快速、易于使用且功能强大的开发环境,用于构建和部署去中心化应用程序(即DApp),其集成了以太坊区块链、IPFS和Swarm等去中心化存储以及Whisper等去中心化通信平台。

Embark 的目标是通过提供开发者所需的所有工具并同时保持可扩展性,使得搭建去中心化应用程序更加容易。

Kauri 上的Embark教程:

这是由一群活跃的web3开发人员使用实际代码编写的最新教程。

《Embark: 智能合约编译及部署》

https://kauri.io/article/13758d60f21648a1897fad1fa5b78237/v1/embark:-smart-contract-compilation-and-deployment

《Embark: 开始测试你的智能合约》

https://kauri.io/article/13758d60f21648a1897fad1fa5b78237/v1/embark:-smart-contract-compilation-and-deployment

相关链接和文档

网站:

https://embark.status.im/

文档:

https://embark.status.im/docs/

本文翻译:Jacky

本文校对:Jacky/Vivian

原文作者:Wil

原文链接:

https://kauri.io/ethereum-101-part-5-the-smart-contract/e4f66c6079e74a4a9b532148d3158188/a

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 2020-06-29 10:46
  • 阅读 ( 889 )
  • 学分 ( 3 )
  • 分类:以太坊

0 条评论

请先 登录 后评论
以太行星
以太行星

28 篇文章, 380 学分