在我之前的几个月里的空余时间,我一直在为创建一个价格不高的用来存储各种各样的加密数字货币比如比特币的硬件钱包(hardware wallet)做努力。现在许多加密数字货币使用者都在用Ledger Nano S 硬件钱包,但是那些太贵了而且供应不足。

 

我拥有几个Raspberry Pi Zero,觉得这可能会是一个绝好的机会用我所知道关于Raspberry Pi Zero和Golang语言的知识来创建一个钱包,它的价格只有行业领军钱包的一小半。

 

我们会看到怎么创建一个硬件钱包,这个钱包我把它命名叫做Open Ledger Micro, 这个钱包运用了Raspberry Pi Zero和Golang语言。

 

免责声明:

我是一个开发人员和比特币爱好者但不是一个加密电子货币或者密码系统的专家,在我的逻辑和代码里可能存在bug,我建议如果使用这个教程的话您要承担自己的风险。如果您发现了一个bug或者您觉得您能改善提高代码,请在评论里分享。

 

项目目标

在我们进入代码之前,我们可能应该弄清楚我们将要构建什么。 我们将使用Go和Angular构建一个应用程序,将其安装在Raspberry Pi Zero上。它将看起来像下面的动画图像。

 

 

使用Raspberry Pi Zero和Golang制作硬件比特币钱包

 

硬件钱包的重点在于它们拥有加密的私钥,绝不暴露私钥,并在不联网环境中运行。我们使用Raspberry Pi Zero,因为它既没有WiFi也没有蓝牙,这使得它更难以被**。

 

使用USB电缆和SSH连接到Raspberry Pi Zero,我在之前授课的适合演示了如何通过USB模拟以太网。 我们将这样做,通过USB提供RESTful API,以便只有主机可以访问数据。 Go应用程序将提供API(serve an API),Angular应用程序将成为一个不错的前端。 在这个例子中,我们永远不需要连接到Linux操作系统。

 

 

 

使用Go和多路复用器创建RESTful API

 

 

Go 语言这边的事情可以做所有繁重的工作,我们将管理**,加密数据,签署处理事务(transaction),并完全通过RESTful API完成此操作。

定义这个项目的文件,下载Dependencies

 

我们需要在我们的$ GOPATH中创建一个新的Go项目。 我将在我的$ GOPATH中引用open-ledger-micro作为一个项目。

该项目应该具有以下结构:使用Raspberry Pi Zero和Golang制作硬件比特币钱包

您可以创建tests, 但是在这个特别的教程里我们会跳过他们。我们需要获得一些 Dependencies程序包来使工作稍微轻松一点。

在命令行,执行下面的命令:

 

使用Raspberry Pi Zero和Golang制作硬件比特币钱包

 

gorilla/handlers 程序包并不是绝对必要的,但它在本地测试时会有所帮助,因为我们可以管理跨源资源共享(CORS)它。

 

GeertJohan / go.rice包将允许我们捆绑我们的Angular应用程序,并且gorilla/handlers 程序包将作为我们的多路复用器来服务我们的API。 btcsuite / btcutil和btcsuite / btcd包将用于所有比特币和加密货币。

 

本篇论文篇幅长于5w字,为了便于大家观看,便将文章拆分为8个部分。每晚8:24更新推送,每篇内容都由我们精心设计,望大家喜欢。

 

目录:

《开发比特币的私钥和公约思路逻辑、使用AES密码加密和解密电子钱包数据》

《以安全的方式管理电子钱包和钱币信息、在区块链上创建并签署广播交易》

《使用Gorilla Mux开发和服务API端点》

《用Angular,TypeScript和Bootstrap创建一个有吸引力的前端、在应用程序中的组件之间创建和导航》

《在应用程序中的组件之间创建和导航》

《使用角度依赖性配置Angular模块》

《使用USB配置用于仿真以太网的Raspberry Pi Zero》