如果要深入了解go-ethereum项目的实现与机制,看源代码是必不可少的。今天这篇博客就简单介绍一下如何在本地搭建项目的开发环境。

GO语言环境搭建

以win8为例,访问地址https://golang.org/dl/,下载windows版本。直接执行安装,默认会安装到C:\Go目录下,将 c:\Go\bin 目录添加到 PATH 环境变量中。 
执行命令,验证安装配置成功:

C:\Users\Administrator>go version
go version go1.7.4 windows/amd64
  • 1
  • 2

开发ide

本篇博客以intellij idea 15为例。 
首先安装go语言插件(地址https://github.com/go-lang-plugin-org)。进入idea的settings,选择plugins, Browse repositories,搜索go lang。具体操作如下图: 

点击install,安装Go Lang Plugin。上图仅为参考,因为截图中的idea已经安装过插件了。如果无法直接下载,可在Manager repositories中配置一下地址:https://plugins.jetbrains.com/plugins/alpha/5047 
然后再尝试下载。如果因网路原因无法下载,可考虑在https://plugins.jetbrains.com搜索go lang 找到插件(注意版本与插件中的一致)直接下载文件到本地,然后导入idea中,安装完成插件重启即可。

创建go项目

安装完成插件,在idea中创建项目,即会显示Go语言的项目。选择项目,配置SDK到Go安装的根目录。

导入项目

下载项目

通过git客户端,下载github上的go-ethereum项目(https://github.com/ethereum/go-ethereum.git)。

目录结构

此时,如果直接将项目导入到idea中,你会发现有很多错误。这是因为go-ethereum对项目的目录有一定的要求。 
基础的目录结构需要按照以下路径:

-bin(可省略)

-pkg(可省略)

-src

   -github.com

      -ethereum

       -go-ethereum

       -project2(其他项目)
-golang.org
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

因此,把下载之后的go-ethereum按照目录要求,放到指定的层级位置。然后再导入项目。

导入项目和配置

导入项目后,打开一个go文件时idea会提示配置SDK和Configure Go Libraries。SDK配置直接找到go语言的根路径或之前的配置即可。

Configure Go Libraries,点击此提示,进入配置选项,在下面的Project Libraries中添加当前项目根路径(此处需注意是上面目录结构src的上层目录),点击OK,即完成了GOPATH的配置。项目的external libraries中会显示GOPATH的相关文件。

引入依赖

当完成以上步骤之后,比如打开interface.go 你会发现import中"golang.org/x/net/context"为红色。 
使用快捷键alt+enter,会提示执行go get命令。点击回车之后,idea会帮忙把相关的依赖添加到项目中。 
此时,再回头看上面的目录结构中与github.com同级会出现一个golang.org的目录,此目录的内容即为刚刚下载的依赖内容。

总结

此篇博客只是作为一个简单的入门介绍,其中有很多坑需要自己去踩。本人踩过的坑也已经分享出来,有问题共同讨论。

go-ethereum的更多相关文章

  1. 02-windows 安装以太坊 ethereum 客户端 (win7-64)-大叔思维

    以太坊(Ethereum)是一个运行智能合约的去中心化平台(Platform for Smart Contract),平台上的应用按程序设定运行,不存在停机.审查.欺诈.第三方人为干预的可能.以太坊平 ...

  2. 关于centos版本安装ethereum钱包

    安装go wget https://studygolang.com/dl/golang/go1.9.linux-amd64.tar.gz --no-check-certificatetar -zxvf ...

  3. The Ethereum devp2p and discv4 protocol Part II

    描述 本文章主上下两篇 上篇:讲述以太坊devp2p与disc4节点发现协议 下篇:实践篇,实现如何获取以太坊所有节点信息(ip,port,nodeId,client) 正文 本片为下篇:实践篇,主要 ...

  4. The Ethereum devp2p and discv4 protocol Part I

    描述 本文章分上下两篇 上篇:讲述以太坊devp2p与disc4节点发现协议 下篇:实践篇,实现如何获取以太坊所有节点信息(ip,port,nodeId,client,type,os) 正文 devp ...

  5. Ethereum(1)—— 基本介绍

    1 环境安装 安装Ethereum 协议的Go语言的最新实现. git clone https://github.com/ethereum/go-ethereum.git make all cd bu ...

  6. go ethereum源码分析 PartIV Transaction相关

    核心数据结构: core.types.transaction.go type Transaction struct { data txdata // caches hash atomic.Value ...

  7. [转]How to Send Ethereum with Web3.js and Node

    原文:https://davekiss.com/ethereum-web3-node-tutorial/   Ethereum took the web and cryptocurrency worl ...

  8. 【转】干货 | 【虚拟货币钱包】从 BIP32、BIP39、BIP44 到 Ethereum HD Wallet

    虚拟货币钱包 钱包顾名思义是存放$$$.但在虚拟货币世界有点不一样,我的帐户资讯(像是我有多少钱)是储存在区块链上,实际存在钱包中的是我的帐户对应的 key.有了这把 key 我就可以在虚拟货币世界证 ...

  9. 区块链使用Java,以太坊 Ethereum, web3j, Spring Boot

    Blockchain is one of the buzzwords in IT world during some last months. This term is related to cryp ...

  10. ethereum/EIPs-1271 smart contract

    https://github.com/PhABC/EIPs/blob/is-valid-signature/EIPS/eip-1271.md Standard Signature Validation ...

随机推荐

  1. Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors

    Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors The goal of the pro ...

  2. DMA/TIM capture

    This is a more free standing example measuring the LSI (TIM5_CH4 internally) and demonstrating DMA/T ...

  3. chrome浏览器调试报错:Failed to load resource: the server responsed width a status of 404 (Not Found)…http://127.0.0.1:5099/favicon.ico

    chrome浏览器在调试的时候默认会查找根目录下的favicon.ico文件,如果不存在就会报错. 解决办法:F12,点击<top frame>左侧漏斗形状的filter,勾选上" ...

  4. lufylegend:图形变形1

    HTML5中的几种变形 HTML5中的变形,共有以下几种方法 scale() 缩放 rotate() 旋转 translate() 平移 transform() 矩阵变形 setTransform() ...

  5. Java编解码分析

    一.为什么要编解码? 网络或磁盘传输的单位都是字节,平常我们使用的单位都是字符,所以数据需要在字节和字符之间进行转换. 二.编解码概念 1.编码:字符转换成字节 2.解码:字节转换成字符 三.常用字符 ...

  6. PetaPoco:SkipTake 和 Page 中的 OrderBy 子句不支持 “[]” 的解决办法

    PetaPoco 的 SkipTake 和 Page 方法内部采用了内联视图,而内联视图是不支持 OrderBy 的,因此 PetaPoco 对传入的 SQL 进行分析,对 OrderBy 子句进行分 ...

  7. Unity5中新的Shader体系简析

    一.Unity5中新的Shader体系简析 Unity5和之前的书写模式有了一定的改变.Unity5时代的Shader Reference官方文档也进一步地变得丰满. 主要需要了解到的是,在原来的Un ...

  8. 禁止tomcat生成catalina.out、localhost_access_log、host-manager.log、localhost.log、manager.log这些文件

    1.找到tomcat目录conf,logging.properties把这个文件重命名(推荐:也可以根据自己的需要更改里面的配置文件) 其实删掉也可以但是不建义 这样就不会生成host-manager ...

  9. 我们的生活第二季/全集This Is Us迅雷下载

    NBC剧集<我们这一天>宣布一次性续订2.3季,这部Dan Fogelman打造的大热剧是这个秋季档收视人数第二的广播网剧情剧.新续订的两季还是每季18集. NBC的叫好叫座剧<我们 ...

  10. spring源代码分析

    预初始化beanDefaultListableBeanFactory preInstantiateSingletons