59

Ubuntu18.04系统下构建初(TrueChain)初链基础环境

 6 years ago
source link: https://studygolang.com/articles/15481?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

本文将基于前文 Windows操作系统用VMware 虚拟机安装Ubuntu系统 的基础上,详细描述包括GO语言配置,VSCODE的IDE安装配置,以及初币环境的环境搭建,

1.GO 语言的安装与配置

1.1.所需工具

1.Git

2.Go => version 1.7 或更高版本

3.编译工具

1.2. Git 的安装

首先,检查系统是否以经安装了git

$ git --version
NZ3aMvy.png!web

git version1

由于对Git的版本要求不高,所以直接使用包管理工具安装

$ sudo apt-get install git

最后,安装完成后,检查是否安装成功

$ git --version
UNvueaR.png!web

git version2

1.3.GO安装

1.首先,同样是检查是否已经安装了go

$ go version

2.包管理工具安装

$ sudo apt-get install golang-go

3.设置环境变量:

  1. 先创建GOPATH文件夹
$ cd ~
$ mkdir go
$ cd go
$ mkdir bin pkg src
  1. 在点击打开Files 在弹出的Files中打开 Home文件夹,然后选中Show Hidden Files 查看隐藏的文件,找到 .profile文件
eiIri2J.png!web

查找“.profile”文件

  1. 在$HOME/.profile 文件的最后添加下边的命令
export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
rINJN3M.png!web

配置.profile文件

  1. 然后运行以下命令使之生效

$ source $HOME/.profile

再使用go version即可查看是否安装成功。

$ go version
zQVree6.png!web

go version

  1. 测试是否安装成功

    a) 执行命令

    $ cd go/src
    VJzu6zA.png!web

    go安装检查1

    b) 创建hello文件夹,执行命令

    $ mkdir Hello

    c) 创建Hello.go 文件夹,执行命令

    $ touch Hello.go

    d)将如下代码写入$HOME/go/src/Hello/Hello.go

package main    
import "fmt"
func main() {
            fmt.Printf("hello, world\n")
}
6Nv2maf.png!web

Hello.go

e)然后编译运行:

$ cd $HOME/go/src/Hello
    $ go build
    $ ./Hello // 输出:hello,world
VZJf6bz.png!web

go安装检查2

1.4 安装编译环境

执行命令

$ sudo apt-get install build-essential

2.VSCODE的安装与配置

2.1.准备工作

先安装一些工具

$ sudo apt-get install cmake
$ sudo apt-get install python-dev python3-dev

2.2.VSCode 安装

1.下载安装包,下载地址 https://code.visualstudio.com/ 在Linux下打开该页面会直接显示Linux安装包的下载页面。如下图:

iQb2Env.png!web

VSCode下载

因为是Ubuntu系统,所以下载.deb文件,下载的文件名为“code_1.26.1-1534444688_amd64.deb”(不同版本可能会有不同)。下边开始安装:6.1-1534444688_amd64.deb”(不同版本可能会有不同)。下边开始安装:

$ cd path/to/deb_file // 进入deb文件所在目录
$ sudo dpkg -i code_1.26.1-1534444688_amd64.deb // 开始安装

2.安装成功如下图:

ZzyyMve.png!web

VSCode安装成功

3.按 “Win” 键,在所有程序里边搜索 “vscode” 就可以找到他了

muiy2au.png!web

查找VSCode

2.3 VSCODE 扩展安装包安装

1)在扩展栏里搜索“chinese”,第一个就是中文包,需要的可以安装。安装完成后重启软件即可。

feqYFnf.png!web

VSCode中文扩展包安装

2)搜“Go”,安装Go的扩展。

euiaEbn.png!web

VSCode的GO扩展包安装

这样VSCode的安装就完成了。

3.初币代码下载

基于笔者在最初下载安装VSCODE查看代码,遇到过的问题,发现多数文件都是存放在 github.com文件夹中的情况,

F3m2amq.png!web

初币代码包结构

为少走弯路在下载代码时需要也要相应下载到对应的github.com的目录下。

1.创建相关路径的文件夹,执行命令

$ cd $GOPATH/src/
$ mkdir github.com
uyYZZ3j.png!web

创建下载初币代码的文件夹

2.进入相应文件夹路径,下载代码

$ cd $GOPATH/src/github.com
$ git clone https://github.com/truechain/truechain-engineering-code.git

3.使用VSCode打开truechain-engineering-code所在文件夹。

nq6nYf7.png!web

打开文件夹

Zfm26jR.png!web

查找初币代码

fIn2meA.png!web

成功加载初币代码

4.VSCODE的依赖包安装与配置

VSCODE中需要安装GO的依赖包,因这些依赖包不是初币项目的实际项目需要的依赖包。所以不安装也不会影响运行源码。这些包应该是装Go扩展的时候统一装的,并不是项目需要。

因为国内的网络屏蔽,在GO官网的golang.org无法连接上,安装依赖包不能成功,如下图:

为解决此问题,可到github下载go tools 和 golint 的源码到本地目录,用go install 命令安装即可

Aj22mqv.png!web

GO依赖包安装

1、在%GOPATH%\src\ 目录下,建立golang.org 文件夹,并再新建x文件夹。 目录为 "%GOPATH\src\golang.org\x"

jeuuU3m.png!web

创建文件夹

2、完成目录切换后,开始下载插件包:git clone https://github.com/golang/tools.git tools

3、执行完以后,会多一个tools文件夹。

3qauA3a.png!web

下载插件包

4、打开VSCode终端,切换到 终端,进入“%GOPATH”目录,执行

go install github.com/ramya-rao-a/go-outline
    go install github.com/acroca/go-symbols
    go install golang.org/x/tools/cmd/guru
    go install golang.org/x/tools/cmd/gorename
    go install github.com/josharian/impl
    go install github.com/rogpeppe/godef
    go install github.com/sqs/goreturns
    go install github.com/golang/lint/golint
    go install github.com/cweill/gotests/gotests
    go install github.com/ramya-rao-a/go-outline
    go install github.com/acroca/go-symbols
    go install golang.org/x/tools/cmd/guru
    go install golang.org/x/tools/cmd/gorename
    go install github.com/josharian/impl
    go install github.com/rogpeppe/godef
    go install github.com/sqs/goreturns
    go install github.com/cweill/gotests/gotests

5.编译TrueChain。

1.在VSCODE中打开“调试->打开配置”就打开了“lanuch.json”文件 修改参数:

{
    // 使用 IntelliSense 了解相关属性。
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "remotePath": "",
            "port": 2345,
            "host": "127.0.0.1",
            "program": "${fileDirname}",
            "env": {},
            "args": ["init", "./genesis.json"], // 主要修改这里
            "showLog": false
        }
    ]
}

2.按照README里的,写一个genesis.json文件,然后第二个参数把路径指向这个文件也可以:

{
  "config": {
    "chainId": 10,
    "homesteadBlock": 0,
    "eip155Block": 0,
    "eip158Block": 0
  },
  "alloc":{
    "0xbd54a6c8298a70e9636d0555a77ffa412abdd71a" : { "balance" : 90000000000000000000000},
    "0x3c2e0a65a023465090aaedaa6ed2975aec9ef7f9" : { "balance" : 10000000000000000000000}
  },
  "committee":[
    {
      "address": "0x76ea2f3a002431fede1141b660dbb75c26ba6d97",
      "publickey": "0x04044308742b61976de7344edb8662d6d10be1c477dd46e8e4c433c1288442a79183480894107299ff7b0706490f1fb9c9b7c9e62ae62d57bd84a1e469460d8ac1"
    }
  ]
,
  "coinbase"  : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x100",
  "extraData"  : "",
  "gasLimit"  : "0x2fefd8",
  "nonce"      : "0x0000000000000042",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00"
}

3.然后,在“cmd/getrue/main.go”上F5就可以初始化了。初始化成功如下图:

ANJN736.png!web

初始化

4.继续修改“lanuch.json”的“args”参数为

"args": ["--nodiscover", "--singlenode", "--mine", "--etherbase", "0x8a45d70f096d3581866ed27a5017a4eeec0db2a1", "--bftkeyhex", "c1581e25937d9ab91421a3e1a2667c85b0397c75a195e643109938e987acecfc", "--bftip", "192.168.68.43", "--bftport", "10080"],

5.再F5就可以挖矿了。运行成功如下图,有时候可能不太一样:

zimmMbA.png!web

挖矿

常见问题

报错:

Fatal: Failed to write fast genesis block: database already contains an incompatible genesis block (have 1acaa8c23f22e0ae, new bc72c21faf0bc5b9)
J7J3ue2.png!web

常见问题

你肯定是在配置“lanuch.json”的“args”参数之前,按下了F5,执行以下命令即可:

$ rm -rf ~/.truechain/


Recommend

  • 66

    README.md PBFT-Core === These codes have not gone through reviews. Please use them with cautions This code base is an ongoing implementation of Practical Byzantine Fault...

  • 52

    README.md truechain-engineering-code init

  • 51

    README.md Docker Compose Files Some typical docker compose examples. If you're not familiar with Docker, can have a look at these books (in CN):

  • 55
    • studygolang.com 6 years ago
    • Cache

    TrueChain测试网络搭建

    安装系统环境 注:本文操作在MAC环境下。 1.安装go环境(go需要1.7及以上版本) mac 执行命令 brew install go 即可。 遇到被墙问题,可以浏览器打开 https://studygolang.com/dl/gola...

  • 93
    • www.cocoachina.com 6 years ago
    • Cache

    水果链打破比特币桎梏,TrueChain篇

    我们对区块链的理解,很多都是“盲人摸象” 说起区块链,很多人都知道区块链是一个分布式账本,是一种去中心化、去信任的集体自治的分布式数据库技术方案。 从数据的角度来看,区块链是一种几乎不可能被篡改分布式数据库...

  • 61
    • www.cocoachina.com 6 years ago
    • Cache

    TrueChain搭建开发环境我趟过的坑

    本环境为:Go + VS Code 此篇为Windows环境篇,跨语言学习转GO语言开发,由于刚刚接触,在环境搭建的过程中就遇到了很多问题。网上有很多资料,大体思路能看明白,但是很多都没有很非常完整且详细的描述其中细节,导致过程中踩了...

  • 37

    从2017年11月启动至今,经过历时近一年的研究、开发与测试,初链主网Beta版于新加坡时间2018年09月28日08:00正式上线,在此之前,07:56分PBFT委员会第一次共识出块和TrueChain fPOW创世区块被挖出。在阅读了一些大神对初链技术的解读之后...

  • 65

    Truechain主网Beta版交易流程解析 初链主网Beta版于新加坡时间2018年09月28日08:00正式上线,在此之前,07:56分PBFT委员会第一次共识出块和TrueChain fPOW创世区块被挖出 今天我们主要看看初链主网Beta版的交易部分,...

  • 33
    • www.cocoachina.com 6 years ago
    • Cache

    初链主网上线解读之——抗ASIC

    一. ASIC如何规避冯诺依曼瓶颈 在介绍初链的Truehash算法之前,首先介绍一下什么是ASIC。 回首这些年矿机的发展脉络,会发现一条清晰的路径: CPU->GPU->FPGA->ASIC 那么,ASIC为何战胜...

  • 4

    幻悠尘的小窝The quieter you become,the more you are able to hear.ubuntu18.04系统下将MySQL版本从5.7升级到8.0我的系统:Ubuntu 18.04我的原来的MySQL版本...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK