今天先不讲代码,我们学习一项学科的时候,总是有目的性的。今天先讲下概念性的东西,不然就算学会了之后,也不知道用这个技术去做什么,以及这个技术是不是会带来风险(众所周知,爬虫爬的好,监狱进的早)
每个编程语言,都有他独特的特点,学习PHP可以让你快速开发web站,学习pyhon可以使用大量的库去做爬虫,大数据处理,学习go可以编写高并发的应用不需要考虑锁机制,以及由此带来的各种问题。那么我们为什么要学习Solidity?
先从智能合约说起吧,什么是智能合约?这个网上都有很详细的描述了,我放个链接在这边:
https://academy.binance.com/z...
智能合约的优势
作为可编程代码,智能合约具有高度的可定制化,可以通过多种不同方式进行设计,提供不同的服务和解决方案。
作为去中心化和自动执行的程序,智能合约可以提高透明度并降低运营成本。根据不同的实施情况,他们还可以提高执行效率并减少商业运营费用。
智能合约在两方或多方间进行转账或资金交易时尤为实用。
换句话说,智能合约可以针对各种应用案例进行设计。包括创建代币化资产、投票系统、加密钱包、分布式交易所、游戏和移动应用程序。它们还可以与其他区块链解决方案一起部署,这些解决方案涉及医疗保健、慈善、供应链、政府管理和分布式融资(DeFi)等领域。
这里插句题外话,我推荐一本书《结构化改革》
,这本书中有个章节对区块链技术的应用也做了比较详细的说明。
ps:这是未来的大趋势啊,兄弟们!赶紧学起来,不要被时代抛弃了。还没意识到的话,去看看招聘市场也该发现了。大厂进军元宇宙,都是棒槌当针用,缺心眼吗?
为什么是Solidity
首先一点是安全。智能合约往往都跟真金白银挂钩,而且智能合约是部署到区块链上的,而区块链是一个大家形成共识的环境,所以说智能合约部署之后,代码虽然不能说绝对不能改,但是要改也是非常麻烦的事。这就要求智能合约的代码要非常的严禁和安全。而我们熟悉的 Javacript 是弱类型语言,恰好不太能写出安全的代码,这也就是为何给 Javascript 添加强类型之后的 Typescript 语言变得如此流行了。而 Solidity 直接就被设计为静态类型和强类型的语言,保证对于一些常见错误,让开发者能够迅速通过编译捕捉到,增强的语言的安全性。这里要插一句,虽然 Java/C++ 这些大型语言也都有对安全性的非常好的优化,但是要把这些语言移植到在区块链上,对系统造成的负荷也会很大,整个的移植工作量也是非常大的,所以 Solidity 的小巧和专用也是它的优势。
第二点是对智能合约特定业务的支持。智能合约不一定是一个现实意义的合约,即使一个只打印 Hello World 的程序,只要部署到区块链上,我们也叫它做一个智能合约。但是话说回来,智能合约的很常见的一种作用就是来实现合约,常见的编程语言对于这一点是没有特殊支持的,而 Solidity 就专门对此作了优化,甚至专门添加了一种类型,就叫 contract 。除了对于合约的支持,以太坊之所以迅速火爆,跟它的能够轻松发代币的能力是分不开的,所以 Solidity 之下有专门的数据类型叫做 address ,可以用来在发代币的时候设置铸币人地址。
所以说,Solidity 之所以能流行起来就是因为它的安全小巧,和专门的对智能合约开发所做的优化。
Soldity运行过程
文章图片
从图片我们可以看出,整个的运行流程。我用文字再描述一遍。
【Solidity编程 概念】xxx.sol文件通过solidity编译器编译的时候,会生成一份接口声明ABI(这个在remix编译器中可以看到),为我们将做DApp开发的时候,调用只能合约的时候,做好接口准备。字节码文件,将在下一步,通过部署,部署到以太网中,可以部署到测试网或者主网。主要的作用是,要通过虚拟网络中的虚拟机EVM去解析运行,完成智能合约的工作任务。最后,通过web3.js的外部接口的js库去访问,获得到我们所需要的智能合约的使用,这就是基础流程。