您现在的位置是:首页 >技术教程 >Solidity基础一网站首页技术教程
Solidity基础一
努力只能及格,拼命才能优秀
前言:
编写智能合约绕不过去的一个坑就是要学一种新的编程语言,这就是号称智能合约编程语言的 Solidity
本次学习的版本为0.8.0
智能合约学习文档
目录
一、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。
四、智能合约学习游戏
https://cryptozombies.io/ 。这是一个第三方的在线智能合约学习环境,目标是教会大家实现 DApp 游戏。这个网站的特点是自作非常精良,各种辅助学习材料丰富,并且是对 Solidity 小白友好的。
总结
Solidity 是一门诞生在以太坊之上的新语言,因为非常适合做合约开发,目前已经被很多其他区块链项目也移植到自己的平台之上。Solidity 足够小巧足够安全,让它非常适合运行在区块链上成为智能合约语言,同时 Solidity 还为智能合约和发代币等各种实际业务场景做了语言层面的优化,这个也是其他语言所不具备的,所以说人们没有使用现有的 Java/C++ 这些语言来开发智能合约,而是专门发明了 Solidity 。