「这是我参与2022首次更文挑战的第4天,活动详情查看:2022首次更文挑战」。
以太坊中Solidity行 · 真金刚境
众所周知,以太坊开发拥有四种境界:金刚境,指玄境,天象境以及陆地神仙。
昨天晚上,博主紧赶慢赶终于在十一点多完成了以太坊环境的搭建以及搭建了一条私链,算是达到了伪金刚的境界,是不是感觉很有趣?今天我们就来达到真金刚境界,初步入门Solidity。
一、Solidity介绍
以太坊是用于编写以太坊的智能合约的,是一种面向对象的高级语言。它和Java一样也是运行在虚拟机之上,不过它是运行在EVM上面,而不是Java的JVM上面。个人认为它的语法和JavaScript比较相似。
它与传统语言的区别:
-
拥有Address类型,存在这个类型是主要由于以太坊是基于账户的,这个类型有两种形式,不过它们基本上是相同的:
address:保存大小为20字节的数据。address payable:这个直译是可支付的地址,大致作用与address差不多,只不过多了成员函数transfer和send。payable是一个关键字,加上该关键字,就能支持支付了。
-
也存在权限控制支持,例如public、private这些传统语言存在的,但是还存在external, internal。
-
它的变量分类与其他传统语言不太一样,Solidity分为状态变量和内存变量,状态变量是进行持久化的,它已久保存在合约的存储空间中。
-
与其他传统语言最大的不同就是异常机制了。在Solidity中,只要发现了异常,所有的执行都将被回滚。这样是为了保证合约执行的原子性,即一个行为或多个行为,要么都执行且在执行中不会被任何东西打断,不然这些行为就全部都不执行。
二、Solidity IDE介绍
官方具有在线的IDE:remix.ethereum.org/
打开,里面有一个智能合约实例,下面我们来演示如何编译使用。
先激活Solidity Unit Testing插件。
然后进行编译,这里我们最好勾选自动编译和忽略警告。
然后选择Web3的环境运行,记得安装MetaMask插件,这里就可以连接了。
其实,用VS Code、Goland、IDEA安装插件都可以进行Solidity开发。
三、Solidity开发环境搭建
- 先是安装Node.js
wget https://nodejs.org/dist/v16.13.1/node-v16.13.1-linux-x64.tar.xz
tar xf node-v16.13.1-linux-x64.tar.xz
sudo tar xf node-v16.13.1-linux-x64.tar.xz
sudo ln -s /opt/node-v16.13.1-linux-x64/bin/node /usr/local/bin/node
sudo ln -s /opt/node-v16.13.1-linux-x64/bin/npm /usr/local/bin/npm
然后就配置成功了!
- 安装truffle和testrpc
sudo apt-get install g++
sudo apt-get install libssl-dev
sudo apt-get install nodejs
sudo apt-get install solc
npm install -g ethereumjs-testrpc
npm install -g truffle