• 从0开始搭建基于以太坊的区块链开发环境


    区块链】从0开始搭建基于以太坊的区块链开发环境

    引言

    Ethereum(以太坊)是一个使开发人员能够建立和发布下一代分布式应用的公共区块链平台。 通过其专用加密货币以太币(Ether)提供去中心化的虚拟机(称为“以太虚拟机”Ethereum Virtual Machine)来处理点对点合约。

    本文从0开始搭建了以太坊的开发环境,犹如当年初学其他语言一样,这是我们的第一个hellowork程序,在完成搭建后又进行了账户创建、挖矿、转账等测试。

    图片名称

    环境搭建

    本次的以太坊环境是用go语言开发,虚拟机内部运行的是javascript. 可能有人不太理解,举个例子,java虚拟机本身就是用c开发的(windows平台上),但是运行在虚拟机之上运行的是java语言。

    环境准备

    一台能联网的Ubuntu64位机器(已经安装git),如果是其他机器类型,请参考其他安装教程,点我

    开始安装

    两种安装方式,任意选择一种(建议使用第一种):

    第一种使用 Personal Package Archives 直接安装,命令如下:

    1
    2
    3
    4
    sudo apt-get install software-properties-common
    sudo add-apt-repository -y ppa:ethereum/ethereum
    sudo apt-get update
    sudo apt-get install ethereum

    第二种安装方式,使用源码安装,自己用go语言进行编译,命令如下:

    1.下载源码

    1
    git clone https://github.com/ethereum/go-ethereum

    2.安装go的运行环境,参考本文
    3.绑定运行环境到go

    1
    sudo apt-get install -y build-essential golang

    4.进入到源码目录中,开始编译源码

    1
    2
    cd go-ethereum
    make geth

    5.运行

    1
    build/bin/geth

    初步探索

    进入虚拟机并输出日志

    1
    get --dev console 2>> geth-log

    主界面:
    图片名称

    日志界面:
    图片名称

    全局变量

    其中有一些是全局变量,你可以认为是javascript的全局变量,全局变量拥有自己的方法和函数。
    如下eth变量:

    图片名称

    如下的的personal变量:

    图片名称

    下面对用户操作,对矿机的操作,转账操作,挖矿操作,实际都在运用这些全局变量中的参数,然后穿上适当的方法。

    账户操作

    1.创建新账户

    1
    personal.newAccount('123456')

    创建成功后,会展示创建成功的地址,其中上面的表达式中,中间传入的123456为密码

    2.查看一下系统有的用户

    1
    eth.accounts

    图片名称

    因为我之前有个用户,所以在有两个用户

    3.为用户取一个别名,很显然如果操作上面的字符串地址是很不方面的,所以下面对字符串用户进行取别名,因为是js语言,所以可以直接使用,如下:

    1
    2
    user1 = eth.accounts[0]
    user2 = eth.accounts[1]

    如果你在查看user1.则如下,已经成功赋值
    图片名称

    4.对账户进行解锁,为了安全起见,一般一个用户在创建的时候都是出于锁定的状态,有日志状态可以看到,如下

    ehcoo

    对账户进行解锁的命令

    1
    personal.unlockAccount(user2,'123456')

    开始挖矿

    挖矿的过程,主要是对miner这个全局变量进行操作
    ehcoo

    开始之前我们检查一下账户user1和user2的金额,你会发现两者的金额都为0

    1
    2
    eth.getBalcance(user1)
    eth.getBalcance(user2)

    开始挖矿,命令如下:

    1
    miner.start()

    停止挖矿命令:

    1
    miner.stop()

    开始挖矿后台输出挖矿日志:
    ehcoo

    运行一会后你去查看用户的账户金额

    ehcoo

    发现第一个账户中已经含有金额。也就是说默认是挖到了第一个账户中。

    转账测试

    现在我们模拟从第一个账户像第二个账户转账的命令

    1
    eth.sendTransaction({from:user1,to:user2,value:8})

    ehcoo

    需要说明的是转账后,账户2并没有立即收到钱,而在是挖矿之后才收到的,主要原因是当前的交易还没有并入到区块链中,我们从日志中可以获取相关信息

    ehcoo

    像地址0x0b52…写的的交易0xab24..,在区块8中才写入,我们可以查看区块8进行验证

    ehcoo

    总结

    本文快速搭建了一个以太坊的环境,并进一步探索了账户操作,转账,挖矿等操作,其中主要参考了汪晓明老师的教程。

    声明

    本文20%为翻译组合,80%为原创

    引用

    https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Ubuntu
    http://ethcast.com/v1
    http://www.8btc.com/ethereum
    https://zh.wikipedia.org/wiki/%E4%BB%A5%E5%A4%AA%E5%9D%8A

  • 相关阅读:
    css div position to parent
    linux 解压缩/压缩命令大全
    button with backgroundimage programmaticaly
    使用数组初始化vector 对象
    AudioServicesPlaySystemSound
    objective-c 中随机数的用法 (3种:arc4random() 、random()、CCRANDOM_0_1() )
    指针和多维数组(例子需要好好消化理解)
    很经典的赋值算法之一:动态为数组有序赋值
    string 类的c_str 的成员函数
    自由存储区的空间 C++和C
  • 原文地址:https://www.cnblogs.com/zafu/p/7921024.html
Copyright © 2020-2023  润新知