由于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:智能合约编译与部署》
《Truffle: 开始测试你的智能合约》
(https://kauri.io/article/f95f956261494090be1aaa8227464773/v7/truffle:-testing-your-smart-contract)
相关链接及文档
网站:
文档:
https://truffleframework.com/docs
社区:
https://truffleframework.com/community
Embark 框架
Embark的文档是这么介绍的:
Embark 是一个快速、易于使用且功能强大的开发环境,用于构建和部署去中心化应用程序(即DApp),其集成了以太坊区块链、IPFS和Swarm等去中心化存储以及Whisper等去中心化通信平台。
Embark 的目标是通过提供开发者所需的所有工具并同时保持可扩展性,使得搭建去中心化应用程序更加容易。
Kauri 上的Embark教程:
这是由一群活跃的web3开发人员使用实际代码编写的最新教程。
《Embark: 智能合约编译及部署》
《Embark: 开始测试你的智能合约》
相关链接和文档
网站:
文档:
https://embark.status.im/docs/
本文翻译:Jacky
本文校对:Jacky/Vivian
原文作者:Wil
原文链接:
https://kauri.io/ethereum-101-part-5-the-smart-contract/e4f66c6079e74a4a9b532148d3158188/a
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!