在上一节我们已经部署好了grin服务,今天讲讲如何编译grin-wallet。

grin区块链包含自底向上分三个部分,层层依赖密不可分:

grin:grin区块链server,提供chaindata数据同步、P2P节点发现、为上层提供调用

grin-wallet:grin钱包、密钥、账号的管理等,需要连接底层grin才能操作

grin-miner:貌似是从2.0版本以后,挖矿功能从grin代码库中单独分离出来了,挖矿功能需要依赖grin-wallet

题外话

Grin委员会兼团队核心成员Gary在论坛中宣布分叉Grin代码库,成立新项目Gotts的消息(https://github.com/gottstech/gotts)。

Gotts项目logo

Gotts是一个无需质押的稳定币项目,同样使用MimbleWimble协议,Gotts的特性还未定义,但以下特性将是首选:

  • 去中心化无需抵押的稳定币,Gotts作为链上资产,具有完美的稳定性
  • 在不同稳定币资产之间进行及时的转换交易
  • 遵循MimbleWimble协议,但交易显示具体数额
  • 支持交互和非交互交易
  • 地址和交易证明
  • 具有Grin 10倍的交易吞吐量
  • PoW机制
  • 随着时间的推移固定区块奖励

目前,Gotts还是一个待开发的新生项目,Gary称在未来很长一段时间内都将投入到Gotts的开发之中,他决定向Grin委员会请辞,但将作为兼职开发人员,继续为Grin做出贡献。

编译目的

  • grin-wallet源代码库没有提供docker编译方法,我需要参考grin的Dockfile改造,后期我将提交给官方。
  • 编译出来的grin-wallet的docker镜像可以在树莓派的arm体系结构使用,方便小白们免去编译运行之苦(已上传:Docker Hub)

软件版本

docker-ce 19.03

docker使用到的镜像:debian:9.4(strech) 和 rust:1.35(rust镜像也是debian系统)

grin-wallet源码地址:https://github.com/mimblewimble/grin-wallet

编译过程

有了上次的编译经验,这次就比较快了:

# 下载grin-wallet源码,github源码难以下载,我已经同步到我的gitee里面,详见 https://gitee.com/whgreate/grin-wallet.git
$ git clone https://github.com/mimblewimble/grin-wallet$ cd grin-wallet/# 切换到2.1.0分支, 与grin版本保持一致
$ git checkout v2.1.0# 与上一节相同,保存sources.list文件放到当前目录备用
$ cp YOUR_PATH/sources.list .# 存放Dockfile文件
$ mkdir etc/# Dockfile源代码中没有的,为了方便,我做了个代码片段,大家下载下来
$ wget https://gitee.com/whgreate/codes/2yot6cqj8ianwulf053kd77/raw?blob_name=gistfile1.txt Dockerfile
$ mv Dockerfile etc/# 制作镜像,漫长的下载apt-get update和cargo build过程,请耐心等待
$ sudo docker build -t grin-wallet -f etc/Dockerfile .# 一切顺利,会产生grin-wallet:latest镜像
$ sudo docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
grin-wallet         latest              8092cfa2869d        6 days ago          138MB

docker网络选项

为了运行grin-wallet,需要保证grin服务已经启动。还记得上节课我们编译好的grin镜像么(如果编译不顺畅,可以直接使用我的镜像Docker Hub)。这里需要注意一点的是,grin暴露的端口需要供grin-wallet使用(端口3413,3414,3415),而grin和grin-wallet是两个镜像服务,默认的网络空间隔离的。为了达到此目的,我们在启动两个镜像时候,让它们的网络空间共享本地网络,这样grin可以暴露端口映射到本地,而grin-wallet容器中的网络端口也像使用本地一样。

# 如果grin服务没有启动的话,启动它,注意此处启动有别于上一节:--network host是共享主机本地网络
$ sudo docker run -it  --rm --network host -d -v $HOME/.grin:/root/.grin grin# 启动grin-wallet,注意--network host
# 我的镜像没有添加entrypoint自动启动命令,因此需要进入容器来调用
$ sudo docker run --rm --network host -v $HOME/.grin:/root/.grin -i -t grin-wallet /bin/bash# 在容器中执行grin-wallet命令
root@raspberrypi:~/.grin# grin-wallet help# 更多grin-wallet操作,参考官网 https://github.com/mimblewimble/docs/wiki/Wallet-User-Guide#init
# 主要是初始化,创建用户信息等

总结

docker镜像已经push,请君享用: Docker Hub

$ sudo docker push whgreate/grin-wallet:2.1.0
The push refers to repository [docker.io/whgreate/grin-wallet]
bbc3db18e0a0: Pushed
80c06f68a279: Pushed
c1d6f7475073: Pushed
78bf8b412517: Pushed
b43cc55c6313: Mounted from whgreate/grin
2.1.0: digest: sha256:153058a2c12474b2bb98824b3378a4e56752043f0e0b792c32fce1f329418811 size: 1369

树莓派 编译live555_树莓派raspberry4B入坑指南 part-6 docker编译古灵币钱包相关推荐

  1. 树莓派 docker homeassistant_树莓派raspberry4B入坑指南 part-4 安装docker-ce 19.03

    前言 安装教程参考的官网debian章节,有针对raspbian的讲解. 在文中有这么一句话: Raspbian users cannot use this method! For Raspbian, ...

  2. 树莓派使用PCA9685扩展(二)之驱动无刷电机(调)入坑指南

    摘要 在上一篇<树莓派使用PCA9685扩展PWM驱动舵机入坑指南>中简单介绍了树莓派使用PCA9685驱动sg90的180°舵机的应用.本身因为想做无人机,所以就研究了下如何驱动无刷电机 ...

  3. python这个软件学会能做什么工作-学会Python真的有高收入?盯,请查收这份入坑指南...

    学会Python真的有高收入?盯,请查收这份入坑指南 2018-10-10 20:51:00 567点赞 6312收藏 186评论 小编注:想获得更多专属福利吗?金币加成.尊享众测.专属勋章.达人福利 ...

  4. api 微信内置浏览器js_多端开发框架uni-app入坑指南,一套代码适用微信、头条等小程序...

    前言 hello 小伙伴们,现在我已经正式入坑 uni-app 了.uni-app 已经发布好几个月了,期间也是踩坑无数,但是官方秉承着不抛弃不放弃的精神,积极解决开发者的各种简单的.复杂的问题,在此 ...

  5. Rust 入坑指南:鳞次栉比 | CSDN 博文精选

    作者 | Jackyzhe 责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 很久没有挖Rust的坑啦,今天来挖一些排列整齐的坑.没错,就是要介绍一些集合类型的数据类型."鳞次栉 ...

  6. uniapp调用c语言方法,uni-app 入坑指南-web开发

    编辑推荐: 本文重点介绍了 uni-app 入坑指南,方便大家更好的了解 uni-app 本篇只讲述 uni-app,不与其他类似框架进行对比 本文来自于博客园,由火龙果软件Alice编辑推荐. 什么 ...

  7. 信息安全之路入坑指南

    作者:腾讯安全平台部研发安全团队 riusksk 疫情下的高考已结束,又快到填志愿的时候了,又有不少知青要加入信息安全这个圈子.为了响应组织号召,撰写此文作为信安行业的入坑指南,希望能对刚入圈的同学有 ...

  8. 开发工具篇第九讲:菜鸟入坑指南

    摘要:本文是开发工具篇第九讲:菜鸟入坑指南.针对新人上手慢的问题,写了这篇入坑指南,方便自己回顾,总结.本文分为四个部分,分别为jenkins使用技巧:常用软件操作命令:开发手册:调试手册.主要材料来 ...

  9. Rust入坑指南:朝生暮死

    今天想和大家一起把我们之前挖的坑再刨深一些.在Java中,一个对象能存活多久全靠JVM来决定,程序员并不需要去关心对象的生命周期,但是在Rust中就大不相同,一个对象从生到死我们都需要掌握的很清楚. ...

最新文章

  1. php 判断来源 微信客户端_PHP判断手机端、PC端 、微信代码实例
  2. C# 获取FormData数据
  3. oracle学习笔记一:用户管理(2)创建删除用户
  4. 边做边学小型封装--利用主流框架进行Dao层通用化,Spring3.0+Hibernate3.3.2通用Dao层整合(四)...
  5. 使用vue写扫雷游戏
  6. Android 多模块项目入门
  7. java反编译工具_移动app安全测试 - 客户端 - 反编译保护
  8. 魅族6支持html吗,魅族手机浏览器兼容性调优最佳实践_html/css_WEB-ITnose
  9. 读zac老哥《网络营销实战密码》一章有感
  10. OpenCV Show Image cvShowImage() 使用方法
  11. Haxdoors of the Kaspersky Antivirus 6/7
  12. SpringMvc date数据传递处理
  13. Windows 相关镜像及补丁下载地址
  14. k3梅林刷官改变砖_K3 op强刷回官改变砖,TTL救砖也不行,请大神分析下是不是要换内存了...
  15. C语言程序设计第五版谭浩强课后答案 第三章习题答案
  16. [每天一个知识点]25-职业生涯-核桃皮是当水果吃好还是当蔬菜吃好?
  17. tomcat jquery mysql_Docker 搭建 Tomcat + Mysql
  18. 上面两点下面一个三角形_解三角形的新视野——定角对定边~
  19. C语言函数递归调用实验报告,C语言函数的递归和调用实例分析
  20. cesium的鼠标事件

热门文章

  1. 数据库 外键 优缺点_不同数据格式的优缺点:键值与元组
  2. js求两圆交点_利用二项式通项公式求系数及综合运用(2)
  3. odac安装_ODAC安装及环境变量配置
  4. Flask框架——请求钩子与request请求对象
  5. 分布式系统架构以及 CAP 原理
  6. Linux01-学习记录
  7. Celery+Rabbitmq实现异步任务
  8. VS2013开发Android App 环境搭建
  9. LeetCode #43字符串相乘
  10. python解决列表IndexError: list index out of range