当前位置: 首页 > 软件库 > Web3 > 开源货币/比特币 >

gocoin

Full bitcoin solution written in Go (golang)
授权协议 View license
开发语言 Python
所属分类 Web3、 开源货币/比特币
软件类型 开源软件
地区 不详
投 递 者 雍志新
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

About Gocoin

Gocoin is a full Bitcoin solution written in Go language (golang).

The software architecture is focused on maximum performance of the nodeand cold storage security of the wallet.

The wallet is designed to be used offline.It is deterministic and password seeded.As long as you remember the password, you do not need any backups ever.Wallet can be used without the client, but with the provided balio tool instead.

The client (p2p node) is an application independent from the wallet.It keeps the entire UTXO set in RAM, providing an instant access to all its records.

System memory and time needed to sync BTC block chain up to the given block number:

The data above is from Gocoin 1.9.6 running on Google Cloud Platform VPS with 32 vCPUs and SSD persistent storage.
For more performance results see gocoin.pl website.

Requirements

Hardware

client:

  • 64-bit architecture OS and Go compiler.
  • File system supporting files larger than 4GB.
  • At least 15GB of system RAM.

wallet:

  • Any platform that you can make your Go (cross)compiler to build for (Raspberry Pi works).
  • For security reasons make sure to use encrypted swap file (if there is a swap file).
  • If you decide to store your password in a file, have the disk encrypted (in case it gets stolen).

Operating System

Having hardware requirements met, any target OS supported by your Go compiler will do.Currently that can be at least one of the following:

  • Windows
  • Linux
  • OS X
  • Free BSD

Build environment

In order to build Gocoin yourself, you will need the following tools installed in your system:

If the tools mentioned above are all properly installed, you should be able to execute go and gitfrom your OS's command prompt without a need to specify full path to the executables.

Getting sources

Download the source code from github to a local folder of your choice, e.g. by executing:

git clone https://github.com/piotrnar/gocoin.git

Building

Client node

Go to the client/ folder and execute go build there.

Wallet

Go to the wallet/ folder and execute go build there.

Tools

Go to the tools/ folder and execute:

go build btcversig.go

Repeat the go build for each source file of the tool you want to build.

Binaries

Windows or Linux (amd64) binaries can be downloaded from

Please note that the binaries are usually not up to date.I strongly encourage everyone to build the binaries himself.

Development

Although it is an open source project, I am sorry to inform you that I will not merge in any pull requests.The reason is that I want to stay an explicit author of this software, to keep a full control over itslicensing. If you are missing some functionality, just describe me your needs and I will see what I can dofor you. But if you want your specific code in, please fork and develop your own repo.

Support

The official web page of the project is served at gocoin.plwhere you can find extended documentation, including User Manual.

Please do not log github issues when you only have questions concerning this software.Instead see Contact page at gocoin.pl websitefor possible ways of contacting me.

 相关资料
  • 问题内容: 我无法理解如何正确确保在这种情况下不存在某些问题: 我发现检查该值是否实际的唯一方法是使用反射。 这真的是想要的行为吗?还是在代码中看不到一些重大错误? 在此处播放链接 问题答案: 这里的问题是那是一种类型。Go中的接口类型保存实际值及其 动态 类型。关于此的更多详细信息:反射定律#接口的表示。 您返回的切片包含2个非值。第二个值是一个接口值,一个保存指针值的(值;类型)对和一个具体类

  • 问题内容: 在Golang中,我试图为我的旅行推销员问题创建一个加扰切片函数。在执行此操作时,我注意到当我开始编辑切片时,每次传递时,我赋予的加密功能都是不同的。 经过一些调试后,我发现这是由于我在函数内部编辑了切片。但是既然Golang被认为是一种“价值传递”的语言,那怎么可能呢? https://play.golang.org/p/mMivoH0TuV 我提供了一个游乐场链接来显示我的意思。通

  • 问题内容: 括号用于什么用途?我不确定此分配操作中发生了什么。 您是否需要更多详细信息来回答这个问题? 问题答案: 这是一个类型断言。类型断言可用于: 从 接口 类型的值中获取 具体 类型的值 __ 或获得与初始接口类型 不同的 接口值(具有不同方法集的接口,实际上不是原始接口的子集,因为可以使用简单的类型转换就可以简单地获得它)。 引用规范: 对于接口类型和类型的表达式,主要表达式 断言不是,并

  • 问题内容: 在Go中,以下工作(请注意,地图的一种用法有一个收益,另一种有两个收益) 但是,我不知道如何使用自己的功能执行相同的操作。是否可能具有类似的行为以及可选的return ? 例如: 无法编译(由于错误)…有没有办法使该语法对该函数起作用? 问题答案: 有所不同,因为它是内置 类型 而不是函数。Go语言规范:索引表达式指定了访问a元素的2种形式。 使用函数,您将无法做到这一点。如果一个函数

  • 问题内容: 我正在编写自己的logginMiddleware。基本上,我需要记录请求和响应的正文。我面临的问题是,当我阅读正文时,它变成空的,无法两次阅读。我知道发生这种情况是因为它属于ReadCloser类型。有没有一种方法可以将身体重绕到开始? 问题答案: 检查和嘲笑请求正文 初次阅读主体时,必须对其进行存储,以便在处理完该主体之后,可以将新的主体设置为根据原始数据构造的请求主体。因此,当您在

  • 问题内容: 在Golang中,我们可以将GitHub上的开源库指定为依赖项。例如: 如果我理解正确,这将尝试根据您的Go版本查找分支,默认为master。 因此,无法导入依赖的特定版本,例如: 那么,在Go中管理依赖项的最佳实践是什么? 我可以看到两种方法。 I.版本模块 是否为具有重大变更的主要版本创建新模块? 例如,我的Go库可以定义模块v1和v2,因此您可以执行以下操作: 要么: 根据您的需

  • 问题内容: 来自Python,我不习惯看到超过80列的代码行。所以当我遇到这个: 我试图打破它 但是我明白了 我还尝试过按回车键并在末尾加分号来打破界限: 但是我再次得到: 所以我想知道用什么语言来做到这一点? 问题答案: 首先介绍一些背景。Go的正式语法在许多产品中都使用分号作为终止符,但是Go程序可能会省略大多数(它们应该有一个更清晰易读的源;也可以删除不必要的分号)。 该规范列出了确切的规则

  • 问题内容: Golang的“ fmt ”包有一个转储方法,叫做。我 也在 寻找转储结构 及其方法的 任何方法。 例如: 我想检查类型(不仅是属性)的初始化实例中方法是否存在。 有什么好办法吗? 问题答案: 您可以使用包列出类型的方法。例如: 您可以在此处进行操作:http : //play.golang.org/p/wNuwVJM6vr 考虑到这一点,如果您想检查类型是否实现了某个方法集,则可能会