在BCH硬分叉后防止重放攻击-2

news/2024/7/7 14:33:42 标签: 区块链

重放攻击原理和防范措施——如何安全分离BCH的分来源:巴比特018-11-18 16:49:37 热度 12390

第0章 引言

即将面临的比特币分裂,如何保证你的币在分裂后肯定留下两种币?一个重点要防范的风险就是重放攻击。

第1章 重放攻击原理

首先讲明白,重放攻击其实根本就不是攻击。目前币圈流传的各种关于重放攻击的言论有点过于危言耸听了

重放攻击,这里的“攻击”根本就不是别人对你发起的某种侵略或偷盗行为。而是因为比特币区块链分裂后的两个分支链,都有相同的地址、私钥和交易格式。你在分裂点前的币,自动会被分裂后的两条链都承认。

如果你使用分裂点前的币发起一笔交易,在两条链上这笔交易都会有效。这就是显得你发了两笔交易,这里的另外一笔,就是“重放”。

我打个比方来解释这个,在国军退守台湾后,蒋公将大陆的很多机构都照样在台湾复制了一遍。比如在台湾也建了清华大学。而在大陆的北京,也是有一个清华大学。

如果你在美国给清华大学写一封信,就是用纸,让邮递员送的那种信。但收件地址上只写了“中国清华大学XXX收”

这个收件地址即可以解读为是北京的清华大学,也可以解读为台湾的清华大学。这下邮递员麻烦了,他干脆将你的信复印一遍,送到两个大学去。

这就是重放攻击。因为本来你只想寄给台湾的清华大学,但现在却被重放到了北京的清华大学。

所谓的防范重放攻击,就是想办法让你发的交易,只在一条链上有效,在另一条链上无效。从而可以避免“重放”。

第2章 领取分裂币

BCH分裂前用户需要注意的最重要的知识点有两个,第一个是掌握私钥。第二个是做好重防保护。

不过我们还是要面对现实,比特币确实很难用,对很多用户来说,可能真的搞不清楚私钥是个啥玩意。第一推荐真的自己去搞清楚来,如果实在是搞不清楚,那就存放在讲信用的交易所吧。

分裂后,用户如何领取分裂币呢?

领取分裂币的过程其实非常简单,只要用户将私钥导入到分裂币钱包,就完成了领取。

分裂后,第一步需要做的就是确认你有多少分裂币。这个一般使用区块链浏览器就可以查询的到。一般一个区块链币诞生后,一定会有一个区块链浏览器的,你只需要将你分裂前的收币地址复制到区块链浏览器去查看一下,就可以知道自己有多少分裂币了。

现在Bitcoin abc是有区块浏览器的

https://bch.btc.com

Bitcoin sv暂时还没有找到可用的区块浏览器。

 

第二步是安装分裂后的钱包。分裂后,去下载最新的钱包。一般来说下载一个开发者做的完整节点钱包是最为安全的。但因为要下载整个区块链,所以也是最麻烦的。只要你知道如何导出和导入私钥,使用SPV轻钱包也是一样的,安全性上也是足够的。

bitcoin abc在这里下载钱包:

https://download.bitcoinabc.org/0.18.4/

bitcoin sv在这里下载钱包,目前没有windows版本的

https://github.com/bitcoin-sv/bitcoin-sv/releases

鉴于目前生态比较混乱,不建议使用轻钱包。

 

第三步就是导入私钥进钱包。

如果用户使用的是完整节点做钱包,比特币都保护在wallet.dat文件里。当分裂后,用户只需要重新下载分裂币的完整节点钱包,并且将wallet.dat文件导入进去就可以完成分裂币的领取了。

如果用户使用的是轻钱包,则需要你想办法将原来的私钥明文导出,并导入到分裂币的轻钱包中。但鉴于目前生态比较混乱,不建议使用轻钱包。

请注意,上述领取分裂币的过程根本就没有发生任何的发币过程。

第3章 用户主动设计防重放保护

1.在分裂前,请将自己的币存在自己控制私钥的地址上。

2.为了保险起见,建议一定要存一个只有小余额(比如0.01BCH)的地址,这个地址里的币就是用来测试用的。

3.分裂后,下载新的分裂后的两个BCH钱包,将私钥导入到BCH钱包。

4.分裂后,等一天,到矿池(如果交易所提供提现,就从交易所买)买0.011BCH-abc,和0.012BCH-sv,都往你的地址上发,发就对了。注意一定要带不一样的小数尾数。

这一步需要强调一下,为什么要等一天?因为比特币的区块奖励成熟度是100个区块,即比特币挖矿的Coinbase奖励在100个区块后才能花。这里说的从交易所里买币,最根本有效的应该是从矿池买分裂后100个区块的发出来的coinbase币。因为分裂后的coinbase币绝对是只可能在一条链上有效,在另一条链上是无效的。但为什么我们觉得从交易所买币也可能有用呢?是因为绝大多数交易所都会做好币的防重放保护,否则他们不敢打开提现功能。

5.然后你将你的钱包同步区块,你就会发现,在BCH-abc钱包只能收到0.011BCH,而BCH-sv钱包只能收到0.012BCH。这两笔交易是不能被重放的,因为它们是来自分裂后的区块。这样你的币就被污染了,就不可能被重放了。

6.将你污染的币,全部(注意一定是全部)发到另一个你自己控制私钥的地址上。这样操作,哪怕是这笔交易被重放了,因为目标地址的私钥是你自己控制的,所以哪怕是被重放也是重放到你自己的地址上。

7.记得先使用你分裂前做好的0.01BCH的那个钱包来完成测试。然后再将你的大额钱包做分离。

最后,放轻松。重放不是攻击,没多大事,只要小心一点,就OK。

转载于:https://www.cnblogs.com/x-poior/p/10142396.html


http://www.niftyadmin.cn/n/1852610.html

相关文章

Chain训练准则的计算

第1000轮迭代时验证集的日志: log/compute_prob_valid.1000.log: LOG (nnet3-chain-compute-prob[5.5.100-d66be]:PrintTotalStats():nnet-chain-diagnostics.cc:194) Overall log-probability for output-xent is -2.14993 per frame, over 18230 frame…

性能调优攻略:完整地讲述了一些代码级别的技术和方法

关于性能优化这是一个比较大的话题,在《由12306.cn谈谈网站性能技术》中我从业务和设计上说过一些可用的技术以及那些技术的优缺点,今天,想从一些技术细节上谈谈性能优化,主要是一些代码级别的技术和方法。本文的东西是我的一些经…

APICloud之封装webApp

注册用户 https://www.apicloud.com/ 使用步骤 进入开发控制台 创建应用 选择webApp 根据自己的情况填写信息,然后创建即可 应用创建后的界面 端设置 app界面设置 证书 这个是必须要有的.安卓的可以一键生成,苹果的自己可以注册,个人的是一年99美刀,信息大部分都是自动生成的,只…

windows 最大支持线程数

WINDOWS操作系统中可以允许最大的线程数默认情况下,一个线程的栈要预留1M的内存空间 而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程 但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小。 你也…

Redis数据结构及应用

1,Redis丰富的数据结构(Data Structures)字符串(String)Redis字符串能包含任意类型的数据一个字符串类型的值最多能存储512M字节的内容利用INCR命令簇(INCR, DECR, INCRBY)来把字符串当作原子计…

JavaScript 第一章总结

A quick dip into javascipt The way JavaScript works HTML 用一系列的 markup 来呈现整个 content 的 structure.CSS 用一系列的 rules 来设置网页的 style.JavaScript 通过statement 达到 let you create behaviors 的目的。总结起来,就是 HTML/CSS 用来 create …

Spring原理剖析

Spring模块Spring DAOSpring事务概述事务首先是一系列操作组成的工作单元,该工作单元内的操作是不可分割的,即要么所有操作都做,要么所有操作都不做ACID原子性(Atomicity)即事务是不可分割的最小工作单元,事…

Amazon EC2 免费实例超额扣钱退款指南

免费一年的EC2怎么会扣费呢?https://www.v2ex.com/t/81510Amazon EC2免费VPS防止超额被扣钱三大方法:流量 硬盘读写 运行时长https://www.freehao123.com/amazon-ec2/免费使用一年,但不是一年内无限使用(流量 硬盘读写 运行时长),楼主就是被坑…