以太坊DApp开发(2):以太坊智能合约开发环境搭建以及第一个Dapp
1. 开发环境搭建
包括安装IDE和Geth。
1.1 安装Solidity
初学者建议直接使用 Remix -Solidity IDE(http://remix.ethereum.org/ )进行开发,可快速入门。
在线版本使用教程:传送门: https://blog.csdn.net/weixin_45067603/article/details/105726491
Remix 是一个基于浏览器的Solidity IDE,这样就可以不用安装Solidity。
自己安装可参考:https://solidity.readthedocs.io/en/develop/installing-solidity.html
1.2 安装Geth
Geth是以太坊客户端。
1.2.1 Mac下Geth安装
> brew tap ethereum/ethereum > brew install ethereum
1.2.2 Windows下Geth安装
1. 在 https://geth.ethereum.org/downloads/ 下载安装包
2. 解压缩,执行geth.exe
更多平台安装方法请参考:https://github.com/ethereum/go-ethereum/wiki/Building-Ethereum
1.3 环境准备
1. 启动环境
我的安装目录:C:\Geth 进入安装目录启动命令行
geth --dev --datadir devNet console 2>> dev.log
参数说明(更多命令:http://www.zgljl2012.com/yi-tai-fang-ke-hu-duan-gethming-ling-xiang-jie-zhong-wen/):
–dev 启用开发者模式,开发者模式会使用POA共识,默认预分配一个开发者账户并且会自动开启挖矿。 –datadir 后面的参数是区块数据及秘钥存放目录。第一次输入命令后,它会放在当前目录下新建一个testNet目录来存放数据。 console 进入控制台 2>> dev.log 表示把控制台日志输出到test.log文件
可新开一个命令行终端(最好使用可分屏的终端),实时显示日志:
> tail -f dev.log
2. 开发环境的账户
2.1 查询账户
我们使用的是开发环境,启动环境后会默认分配一个开发者账户,下面我们看看这个账户。在console中输入:
eth.accounts
输出结果如下:
这就是我们的账户。下面我们看看这个账户里还有多少钱,输入命令:
eth.getBalance(eth.accounts[0])
结果如下:
可以看到末尾的e+77
,表明这是一个很大的数,为了方便开发调试,我们需要新建一个账户,给它一个整数好算的初始余额。
2.2 创建账户
personal.newAccount("zuolun0001")
就这样,我们给小明(为了方便表述,我们给新账户取个熟悉的名字)创建了一个账户。请注意,zuolun0001
不是账户名,是账户的密码(等一下还有用)。0x2e7c6e60152b65cb771cf6da00c090ed484f7dd8,这一串才是账户名。
接下来,看看新账户的余额:
因为之前创建过账号,刚小明的账号就是第三方账号 余额为0的是小明的账号。
2.3 转账
好了,接下来该给小明充钱了,我们的初始账户有很多钱,就从它的里面给小明转账。命令如下:
eth.sendTransaction({from: eth.accounts[0], to: eth.accounts[2], value: web3.toWei(99999, "Kwei")})
说明: 因为之前测试的创建过了一个账号, 所以小明的新账号对应的是 :eth.accounts[2],为了更指直观的看效果所以选择2账号,如第一次测试默认就是1账号。后面的都一样。
以太币单位说明:
如果对数据这么大不了解,我这边附录一份以太币单位: |Unit|Wei Value|Wei| |---| |wei|1|1 wei| |Kwei (babbage)|1e3 wei|1,000| |Mwei (lovelace)|1e6 wei|1,000,000| |Gwei (shannon) |1e9 wei|1,000,000,000| |microether (szabo)|1e12 wei|1,000,000,000,000| |milliether (finney)|1e15 wei|1,000,000,000,000,000| |ether|1e18 wei|1,000,000,000,000,000,000| 我们转账时用的单位是ether,所以100后面会带这么多 0。
2.4 解锁账户
为了给账户部署合约,首先我们需要给账户解锁,就像你需要往保险柜里放一份合约,首先要打开保险柜一样。
> personal.unlockAccount(eth.accounts[1], "xiaoming")
如前所述,zuolun0001是账户密码。输出true
,表示解锁成功。
3. 编写智能合约
3.1 第一个智能合约代码
pragma solidity ^0.4.0; contract helloworld { string myword = "helloworld"; function show() public view returns(string){ return myword; } }
在这段代码中,我们定义了一份名为HelloWorld
的合约.
3.2 在线编译部署合约
以下是新版在线remix编译器的使用(2020.12.04)
浏览器输入:https://remix.ethereum.org/ 加载会有点慢,耐心等待或者多刷新几次。
安装必需插件
1.点击插件管理器,页面中为这个图标 加载查件界面。
2.搜索关键字compiler,和关键字run 如下界面点击Activate
3.现在编译上面编写好的合约文件。选择刚才的测试文件如test1.sol 进行Compile
4.点击左侧切换到部署界面
5.编辑完成了 界面如下图的话就是成功,点击 showTest 点击运行之后返回了string类型的数值 helloworld this is my seconds test demo !!!