86_比特币冷钱包实现思路

86_比特币冷钱包实现思路引言2015年的羊年新年假期,中国最大的竞争币交易所之一的比特儿传出冷钱包被盗的新闻,7170个比特币被黑客瞬间偷走,损失超过1000万元人民币。大家不禁要问,比特币都放进冷钱包了还会被偷走,这比特币还能玩吗?这不靠谱啊!比特儿交易所老总在之后的媒体采访中几次强调,“密码被激活成功教程”,冷钱包和密码有很大关系吗?还是这位老总根本不知道何为冷钱包。引用Okcoin创始人徐明星的一句话来…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

引言

2015年的羊年新年假期, 中国最大的竞争币交易所之一的比特儿传出冷钱包被盗的新闻, 7170个比特币被黑客瞬间偷走, 损失超过1000万元人民币。大家不禁要问, 比特币都放进冷钱包了还会被偷走, 这比特币还能玩吗?这不靠谱啊!
比特儿交易所老总在之后的媒体采访中几次强调, “密码被激活成功教程”, 冷钱包和密码有很大关系吗?还是这位老总根本不知道何为冷钱包。引用Okcoin创始人徐明星的一句话来说明一下:“(比特币冷钱包的)关键要做到永不触网。”
下面笔者就一步一步的图文并用的给大家讲一讲最基本的冷钱包方案, 如何创建一个永不触网的冷钱包, 并且离线的创建一笔比特币交易。

创建冷钱包

第一步, 找一台新电脑或硬盘低级格式化后的旧电脑,在断网的状态下安装Linux操作系统Ubuntu(下图是使用U盘安装ubuntu的示例):

Snip20150227_14

(图一)

Snip20150227_15

(图二)

Snip20150227_16

(图三)

第二步, 安装Electrum 比特币钱包。
安装完Ubuntu Linux操作系统后, 离线安装Electrum比特币钱包(笔者个人比较喜欢Electrum, 各位也可以使用Multibit等其他轻钱包), 安装的步骤请参照Electrum官网 https://electrum.org/download.html

第三步,生成新的冷钱包地址
安装完以后, 打开Electrum, 并创建新的钱包, 按照图四到图八的步骤生成新的冷钱包地址, Electrum缺省情况下是一次创建5个新地址, 注意图八, 在命令行键入 “listaddressese()”的命令, 系统会列出新创建的5个比特币地址,再用getpubkeys命令,或者从菜单 master public key拿到公钥(公钥和地址不是同一个概念哦), 请把这个公钥拷贝下来, 另存到一个文本文件里。图九是显示这5个新地址的私钥, 放着这里只是给大家说明一下,用来和图十二对比, 5个私钥是在这个永不触网的linux操作系统里的钱包里, 大家实际操作中不要做图九这个步骤。也不要把自己的私钥告诉其他任何人。

Snip20150227_17

(图四)

Snip20150227_18

(图五)

Snip20150227_19

(图六)

Snip20150227_20

(图七)

Snip20150227_21

(图八)

Snip20150227_22

(图九)

完成了第三步以后, 我们有了一台永不触网的断网电脑,断网电脑上有一个Electrum比特币钱包, 钱包里有5个比特币私钥和对应的比特币地址。这就是我们所谓的“冷钱包”了。我们现在可以往这个冷钱包里放比特币了, 笔者往这个冷钱包里放了0.0005个比特币用以下面的演示。(另有一笔0.089828比特币在演示时尚未到账)
前三步最重要的注意事项还是“永不触网”。

离线的进行一笔交易

现在我们有了一个离线的冷钱包, 冷钱包之所以“冷”, 是当它发生交易(transaction)的时候也能够做到不碰网络。下面让我们来进行一笔离线交易。

第四步, 在一部在线电脑上安装Electrum钱包
这一步相对简单一点, 只需要在另一台连接互联网的电脑上下载安装Electrum钱包。
第五步, 在这台在线电脑上建立只读地址watch only address.
完成第四步后启动Electrum, 然后不要选择创建新钱包选项, 而是选择创建Watch-only 只读钱包。然后把第三步得到的公钥输入进去(图十), 然钱包与比特币网络同步后, 就可以看到钱包的比特币余额。我们在命令行输入dumpprivkeys()时可以看到(图十二), 这个只读钱包里面没有私钥, 也就是说如果这个在线只读钱包被黑客攻击, 黑客是拿不到一丁点比特币的。

Snip20150227_23

(图十)

Snip20150227_24

(图十一)

Snip20150227_25

(图十二)

第六步, 在线电脑上创建交易, 并导出交易
那么, 没有私钥如何进行正常的交易呢? 如图十三所示, 在线只读钱包可以创建一笔交易, 但是由于没有私钥, 这笔交易没有被私钥签名, 所以无法在比特币网络里广播出去;但是如图十四,图十五所示, 只读钱包可以把这笔交易存成一个 .txn的文本文件。放到一个新的U盘(必须确保这个U盘没有木马,这个技术难度并不大)。

Snip20150227_26

(图十三)

Snip20150227_27

(图十四)

Snip20150227_28

(图十五)

第七步, 离线linux电脑上用私钥对交易签名, 并导出签名后的交易。
将这个代表未签名交易的文本文件拿到离线的电脑上,离线电脑上有私钥, 可以对这笔交易进行签名操作。签名完毕后, 由于电脑处于离线状态, 还是无法在比特币网络中广播这笔交易。只能将这笔交易再次保存为.txn文本文件。

Snip20150227_29

(图十六)

Snip20150227_30

(图十七)

Snip20150227_31

(图十八)

第八步, 在线电脑广播签名后的交易
用U盘把签名完成后的.txn文件拿回在线只读钱包, load transaction后, 点击Broadcast按钮。至此, 一笔比特币交易在有私钥的电脑没有触网的情况下顺利完成, 除了交易签名的时候, 整个过程也没有“密码”出现, 不知道比特儿的老总所谓的“密码丢失”是什么理由?

Snip20150227_32

(图十九)

有人也许会说, “好复杂”, 但是,首先在比特币的世界里安全性比便利性更重要, 其次,冷钱包本来就不应该经常有交易的, 经常交易的钱包就不是冷钱包了, 象比特儿的所谓“冷钱包”有着上千次的交易记录实在是不能够称之为冷钱包了。比特儿的认错赔偿的态度很好, 但是在技术安全上没有改进, 在制度安全上没有保障, 我们怎么能相信没有下一次呢?

申明:

以上所述的仅是个人大额比特币冷存储方案, 并不是比特币交易所,比特币银行等企业级冷钱包解决方案。企业级冷钱包是需要有多层级冷热钱包, 多重签名技术, 以及人事行政等管理制度相辅助的复杂体系。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179755.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CAS单点登录原理分析(一)

    CAS单点登录原理分析(一)一,业务分析在分布式系统架构中,假设把上述的三个子系统部署在三个不同的服务器上。前提是用户登录之后才能访问这些子系统。那么使用传统方式,可能会存在这样的问题:1.当访问用户中心,需要用户登录帐号2.当访问购物车,还需要用户登录帐号3.当访问商品结算,又一次需要用户登录帐号访问每一个子系统都需要用户登录帐号,这样的体验对于用户来说是极差。而使用单点登录就可以很好地解决上述的问题。二,单…

    2022年6月8日
    28
  • 安卓系统usb调试在哪_安卓手机的usb调试

    安卓系统usb调试在哪_安卓手机的usb调试Android手机USB调试在哪?安卓手机如何打开USB调试模式?如果我们要将安卓手机连接到电脑上,从而传输文件、下载应用或ROOT等,都需要打开手机的USB调试模式。安卓系统的版本有很多,它们的打开方法也各不相同,下面给大家介绍各版本安卓手机打开USB调试模式的方法。步骤方法:一、2.1—2.3.7系统打开方法1、点击手机-Menu键(菜单键),在弹出的菜单中选择设置(Setting),或在应…

    2022年9月13日
    0
  • java如何输入字符串_JAVA中怎样输入字符串「建议收藏」

    java如何输入字符串_JAVA中怎样输入字符串「建议收藏」https://zhidao.baidu.com/question/344967589.htmljava.lang.String.charAt()方法返回指定索引处的char值。http://www.yiibai.com/javalang/string_charat.html(toLowerCase)toUpperCase的意思是将所有的英文字符转换为大写字母,如:Stringcc=“a…

    2022年7月16日
    13
  • Java设计模式之命令模式

    继续23种设计模式系列,本文介绍命令模式。

    2022年3月11日
    36
  • centos6.8系统radius认证服务器的搭建流程

    centos6.8系统radius认证服务器的搭建流程Freeradius 服务器的搭建流程一 服务器方面的配置 1 安装 radius 服务器 数据库扩展插件预先安装 mysql 数据库 然后安装 freeradius 以及 freeradius 的数据库扩展插件 freeradius mysql yuminstall yfreeradiusf mysqlfreerad utils2 配置 freeradiu

    2025年7月7日
    0
  • 数组转换成list集合_字符串转数组js

    数组转换成list集合_字符串转数组js==================类型转换==================  在项目中经常会遇到数组转集合、集合转数组、数组之间类型转换等操作1.数组转集合为了实现把一个数组转换成一个ArrayList,很多Java程序员会使用如下的代码:Stringstr[]={“1″,”2″,”3”};List<String>strings=Arrays.asList(str);  Arrays.asList确实会返回一个Arr.

    2022年9月15日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号