以太坊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 !!!

 

posted on 2020-12-04 16:49  左侧码工  阅读(589)  评论(0编辑  收藏  举报