努力只能及格,拼命才能优秀

前言:

编写智能合约绕不过去的一个坑就是要学一种新的编程语言,这就是号称智能合约编程语言的 Solidity  

本次学习的版本为0.8.0

Solidity官方中文学习文档

Solidity 中文文档 — Solidity中文文档 — 登链社区 (learnblockchain.cn)

Solidity学习教程

Solidity 教程 - 编程宝库 (codebaoku.com)

目录

前言:

一、Solidity概述

二、Solidity语言核心特性

三、Solidity开发工具Remix

四、以太坊是什么

五、以太坊虚拟机EVM

六、智能合约学习游戏

总结


一、Solidity概述

Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。借鉴了其他一些高级语言,例如 Javascript 和 Python,的特性。它是一门静态类型语言,支持继承,支持各种库和用户自定义的类型。非常适合用来开发类似于投票,众筹,拍卖,多重签名钱包等各种功能。简单一句话,Solidity 就是为智能合约而生的编程语言。目标是最好的适应在以太坊虚拟机evm上运行。 

二、Solidity语言核心特性

这时候我们心中最大的疑问是,为啥不直接用目前已经非常流行的语言,例如 Javascript ,来开发智能合约呢?或者说智能合约开发有哪些独特的特点,要求我们必须要开发一门新的语言来应对呢。

首先一点是安全。智能合约往往都跟真金白银挂钩,而且智能合约是部署到区块链上的,而区块链是一个大家形成共识的环境,所以说智能合约部署之后,代码虽然不能说绝对不能改,但是要改也是非常麻烦的事。这就要求智能合约的代码要非常的严禁和安全。而我们熟悉的 Javacript 是弱类型语言,恰好不太能写出安全的代码,这也就是为何给 Javascript 添加强类型之后的 Typescript 语言变得如此流行了。而 Solidity 直接就被设计为静态类型和强类型的语言,保证对于一些常见错误,让开发者能够迅速通过编译捕捉到,增强的语言的安全性。这里要插一句,虽然 Java/C++ 这些大型语言也都有对安全性的非常好的优化,但是要把这些语言移植到在区块链上,对系统造成的负荷也会很大,整个的移植工作量也是非常大的,所以 Solidity 的小巧和专用也是它的优势。

第二点是对智能合约特定业务的支持。智能合约不一定是一个现实意义的合约,即使一个只打印 Hello World 的程序,只要部署到区块链上,我们也叫它做一个智能合约。但是话说回来,智能合约的很常见的一种作用就是来实现合约,常见的编程语言对于这一点是没有特殊支持的,而 Solidity 就专门对此作了优化,甚至专门添加了一种类型,就叫 contract 。除了对于合约的支持,以太坊之所以迅速火爆,跟它的能够轻松发代币的能力是分不开的,所以 Solidity 之下有专门的数据类型叫做 address ,可以用来在发代币的时候设置铸币人地址。

所以说,Solidity 之所以能流行起来就是因为它的安全小巧,和专门的对智能合约开发所做的优化。

三、Solidity开发工具Remix

http://remix.ethereum.org 。这是以太坊官方推出的一个 Solidity 的在线集成开发环境。提供了文件浏览器,带高亮和代码提示的编辑器,调试工具,部署至本地或测试网络、执行合约等功能等。Remix 是每个 Solidity 开发者都在用的IDE。

remix编辑器关键信息查看:

    //decoded input:输入

    //decoded output:输出


remix编辑器函数的调用按钮:

    //橙色按钮一般要高消耗gas

    //蓝色则一般低消耗gas

四、以太坊是什么

以太坊(Ethereum),是一个去中心化的,能够运行智能合约的区块链平台。

以太坊,由Vitalik Buterin和合伙人共同创建,并在2014年发布,是目前世界上使用最为广泛的、可编程的去中心化应用平台。

五、以太坊虚拟机EVM

以太坊虚拟机(EVM),是以太坊中智能合约的运行时环境。

我们可以使用一些编程语言开发智能合约程序,例如 Solidity 语言。最终,将其编译成以太坊虚拟机支持的字节码(bytecode),部署到以太坊平台,然后就可以在以太坊虚拟机中执行了。

六、智能合约学习游戏

https://cryptozombies.io/ 。这是一个第三方的在线智能合约学习环境,目标是教会大家实现 DApp 游戏。这个网站的特点是自作非常精良,各种辅助学习材料丰富,并且是对 Solidity 小白友好的。

总结

Solidity 是一门诞生在以太坊之上的新语言,因为非常适合做合约开发,目前已经被很多其他区块链项目也移植到自己的平台之上。Solidity 足够小巧足够安全,让它非常适合运行在区块链上成为智能合约语言,同时 Solidity 还为智能合约和发代币等各种实际业务场景做了语言层面的优化,这个也是其他语言所不具备的,所以说人们没有使用现有的 Java/C++ 这些语言来开发智能合约,而是专门发明了 Solidity 。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐