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

  • 相关阅读:
    KKT条件原理
    拉格朗日乘子法
    Java volatile详解
    Java重排序
    Java Socket NIO入门
    Java Socket入门
    TCP三次握手,四次挥手
    Java NIO详解
    cobbler批量安装系统
    nginx详解反向代理,负载均衡,LNMP架构上线动态网站
  • 原文地址:https://www.cnblogs.com/zuolun2017/p/14086654.html
Copyright © 2020-2023  润新知