收藏
上一篇:
继比特币期货之后 世界首只比特币公募基金也来了
下一篇:
深圳海关查获比特币“挖矿机”11台
科普:BCH发错地址是如何丢币的?
 2017-11-24 18:14
来源:  简书
 21312


早上的时候看到某币圈大V的微博,他说因为Bitcoin.com把Bitcoin Cash Wallet做为默认钱包造成了用户的丢币。

我赶紧更新了bitcoin.com钱包试用了下。

 

bitcoin.com wallet 


钱包的改动很简单,就把Bitcoin Cash Wallets作为首选,这样就造成用户丢币了......

其实这事和Roger Ver真的没有啥关系,估计该大V现在还不清楚BCH是如何丢失的吧!

(该大V还宣称数百万的BTC因此而丢失)

 

第一个问题丢币的到底是什么币种?


先来看第一个问题,哪个币种的币丢失了,是BTC还是BCH。

如果连这个都搞不清楚后面的问题就更难说明白了,这里先声明,

只考虑最近出现的因为发错地址而丢币的情况,不包含用户私钥丢失,密码忘记等情况。

我们知道BCH去掉了SW交易的地址,另外还有区块大小,动态难度调整等。

在地址上和BTC是没有区别除了SW地址以外,

那么就可以得出一个结论包含了SW交易的BTC的地址集合是要大于BCH的地址集合的,

意思就是说你在BCH上生成的地址都可以在BTC上生成而可以使用。

BTC和BCH使用同一种地址编码技术,一种可能出现的情况是用户会发错地址,

本来是想构建交易发送BCH到A地址的,

最后发现A地址是BTC的,这种情况下只要有对应的私钥,

无论是BTC或者BCH上面都可以生成对应的地址找回币。

而刚刚说了BTC的地址集合是大于BCH的,也就是说如果BCH上面有私钥的地址肯定可以在BTC上生成的,

反过来却不是。BCH上面不支持SW的地址,BTC上面生成的SW地址BCH不可使用,

丢币问题也是和SW的地址有关。

错误的把BCH在发送到SW地址上才可能会出现BCH丢失的情况。

 

第二个问题什么样的地址会造成丢币?

 

上面已经说了把BCH打到SW地址上才可能会出现丢币的问题,这里还是要简单做下介绍。

可以简单的地址分为三类:普通地址(1开头),多种签名地址(3开头),另外的就是SW地址,

当前使用的SW地址都是镶嵌在P2SH中的P2WPKH地址它也是3开头的地址。

 

P2SH(bip16)是Gavin Andresen提出的一种pay to script Hash的方法,

允许发送者构建更加丰富的交易类型。

 

P2SH的锁定脚本例子:

 

OP_HASH160 86107606107baa4d1fc6711e22de7f0ef2056766 OP_EQUAL

 

而在赎回脚本里面,需要提供一段脚本(redeemScript),通过的条件需要满足该脚本可执行返回true,

且其hash值与后面的值相同,最终脚本类似于:

  

redeemScript OP_HASH160 86107606107baa4d1fc6711e22de7f0ef2056766

OP_EQUAL

 

我们常常使用的多种签名其实是P2SH的一种方式,

当前另外一种使用P2SH比较多的就是SW地址。

上面例子中的P2SH脚本其实就是一个SW地址的锁定脚本。

该地址在支持SW交易的BTC中可以发送SW交易解锁,

而在BCH链上的只会识别成一个P2SH的地址,地址是合法的

(可以简单认为在BCH就认为是一个多重签名的地址)。

当有人把BCH发送到这种SW地址上面的时候麻烦就出现了,

BCH上面不支持SW交易,无法生成对应的解锁脚本。

那么把BCH误发到SW地址上是不是就没有办法挽回了呢?答案是否定的。

 

SW交易是如何"骗"老节点的

 

想要找回发送到错误地址上的BCH,

就需要明白SW交易是如何“骗”老节点的。

SW升级是一个软分叉,也就是意味着SW交易也需要在老版本节点上验证通过,

SW交易要"骗"老节点,让老节点在不清楚SW交易具体结构的情况下还可以正确验证交易,

那如何"骗"老节点呢?

简单来说SW的地址其实是RedeemScript(赎回脚本)的一个hash,

比如我们拿一个最简单的sw的交易举例:

c586389e5e4b3acb9d6c8be1c19ae8ab2795397633176f5a6442a261bbdefc3a

 

· 该交易的输入地址:35SegwitPieWKVHieXd97mnurNi8o6CM73


· 输入的脚本: OP_HASH160 2928f43af18d2d60e8a843540d8086b305341339 OP_EQUAL


· WitnessScript:160014a4b4ca48de0b3fffc15404a1acdc8dbaae226955


· Witness: 30450221008604ef8f6d8afa892dee0f31259b6ce02dd70c545cfcfed81481799

71876c54a022076d771d6e91bed212783c9b06e0de600fab2d

518fad6f15a2b191d7fbd262a3e01


· 039d25ab79f41f75ceaf882411fd41fa670a4c672c23ffaf0e361a969cde0692e8

 

只需要分析WitnessScript即可,这部分是用来让老版本验证该交易是合法的,

这个脚本可以分为两部分

 

16  0014a4b4ca48de0b3fffc15404a1acdc8dbaae226955

 

其中16是用来压栈的操作符,后面的数据(0014a4b4ca48de0b3fffc15404a1acdc8dbaae226955)

的hash就是锁定脚本的hash值2928f43af18d2d60e8a843540d8086b305341339,

这样把该脚本给老版本,

老版本验证该脚本肯定是可以通过的。老版本的客户端运行的时候,

该解锁脚本可以正确运行,

老版本的客户端是不用关心公钥和签名数据的。这样就成功的"骗"了老版本的节点。

 

上面介绍的是SW交易如何"骗"老版本客户端的,

这和BCH用户错误地发币到SW地址又有什么关系呢?

因为BCH客户端和BTC老版本客户端的验证方式是一样的,

可以这么说SW交易有办法合法地在老版本客户端上验证通过

,当然它也可以在BCH客户端上验证通过的。

这是一个btc.com帮忙找回的BCH例子

https://www.blocktrail.com/BCC/address/3DutBysquuSbQxYA6EEq3m8VBQDBqa55mw/transactions

其交易详情为:

 

{

  ...

      {

      "txid": "ac3db4411e1ce8cc76e3ebe2f7d0a538c6033fcf80484a97902eef7d6a5e34e6",

      "vout": 0,

      "scriptSig": {

        "asm": "00205c4b9ef7c8896cef0d2a8fd3693d3877e0f4d1d3904fbcaf9cac1bcfb324d9b2",

        "hex": "2200205c4b9ef7c8896cef0d2a8fd3693d3877e0f4d1d3904fbcaf9cac1bcfb324d9b2"

      },

      "sequence": 4294967295

    },

 ...

}

 

它在BCH上的解锁脚本(用来让老版本客户端通过验证的)是:

2200205c4b9ef7c8896cef0d2a8fd3693d3877e0f4d1d3904fbcaf9cac1bcfb324d9b2,

该交易在BTC链上也会动用过:

https://btc.com/b25ae18255104fa8e871f5b7bcca5e30b11b67a1720555e710f36dfe6ab85397 

可以找到该解锁脚本:


 

 WitnessScript

 

总结

 

如果你使用的是普通地址的交易,或者多重签名的交易都是安全的,不会出现发送错误地址丢币的情况,

无论是在BCH链上还是BTC链上,即使你本来想发BTC的发到了BCH地址上也是可以找回的,反之亦然。

这里的前提是你有办法找到接受地址的私钥。

当你把BCH发送到SW地址上时,就没有办法使用对应的私钥找回币了,

如果该SW地址上的币在BTC链上面动用过,发送的BCH有可能会直接被黑客盗走,

收藏
微信
微博
相关新闻
编辑
总篇数
681
粉丝
1565
2018.01.08
10:02:47
20:01
币管家bgj.io今日起提升了自愿锁仓BC的投资者奖励额度:除周一至周六每日享受平台手续费利润80%的分红及每周日手续费利润75%的分红外,每单次锁仓资产每月增值5%,一个周期90天增值15%。管家币BC现价$0.133,涨幅4.53%.自愿增值锁仓期截止6.30日,限额3000万枚,目前已锁1278.44万。官网地址:https://bgj.io
18:04
今日,易得(Expread.io)宣布领先OKEX落地开放式交易所新模式,已落地持牌交易所三家,下月于马耳他、直布罗陀、南非、印度、英国等地上线20家交易所。 易得免费向所有合作伙伴提供交易所云技术服务,现向全球招募易得伙伴,合作伙伴只需准备域名和公司实体,即可三天内获得独立自主的云架构交易所产品。易得体系内的交易所均共享交易深度和流动池。
09:59
HLWchain合作影视项目受邀参加,HLWChain采用了影片中的人物形象研发了区块链游戏HLW.GO,该游戏集合了诞生、成长、比赛、拍卖和赠送等玩法,游戏中主要的交易货币为ETH。 据官方消息,6月22日特推出注册送币活动,前100名注册玩家随机赠送游戏角色,前300名注册玩家赠送50HLW币。游戏最高奖励玛莎拉蒂总裁一台。6月27日到28日期间,将开放游戏交易系统,游戏正式运营。 官网链接:go.hlwchain.com
21:12
据NULS团队消息,NULS项目将于7月12日在北京召开发布会,宣布主网正式上线以及新的全球战略计划。据了解NULS主网在今年4月27日开始公测,在经历了近三个月的打磨测试后,终于将正式上线,这标志着NULS这个可定制的区块链基础设施的主体架构正式形成;据消息称,NULS还将在发布会公布全新的项目发展规划、全球社区招募计划以及更细致的Roadmap。
17:29
陈敏涛作为万向区块链股份国内投资的首批区块链企业魔橙网络的创始人兼CEO,JRRCrypto的全球合伙人,行业级应用公链 Dimension的孵化者和生态技术顾问,在保险、公益、信托、公证等领域拥有多个区块链项目落地实施经验。建立了分布式流量及运营平台-星柚。现正为JRR下一代区块链基础新公链担任技术顾问。 JRR Crypto总部位于瑞士,是全球领先的布局于区块链产业生态及加密数字货币的区块链产业集团,集团业务覆盖八大板块:区块链孵化器与产业园、商业咨询、区块链媒体、投资银行、区块链产业基金、数字货币交易平台、数字货币二级市场交易和数字资产管理。在每一块都有独特的投资策略及发展规划。
15:19
今晚19:00,在BiYong社群“币管家bgj.io官方交流群”中,币管家将进行连续六场的第五场红包雨活动。此外,19日的每日交易费的80%分红资金已于今日10:00发放,而被邀请人可每日分享手续费的30%。据币管家行情显示,BC现价每枚0.165USDT(约1.07CNY),今日涨幅20%。官网地址:https://bgj.io
15:38
据NULS团队消息,NULS将在新加坡时间2018年6月19日17:00推出NULS测试网(v0.9.10)版本 ,此版本将会上线区块浏览器、红牌惩罚机制、钱包在线升级等重要功能。据悉,在NULS主网发布前,预计将陆续更新2-3个测试版本,以测试主网的一些重要功能,保证NULS网络的运行稳定性和良好的用户体验。值得注意的是,v0.9.10之后的版本均可在线升级。
14:11
行情软件金塔Quintar继GBLS峰会成功举办后再次发力,联合新加坡知名海外基金共同孵化数字资产交易平台ExNow。ExNow交易平台将致力于服务更多的优质项目,为更多的技术型新项目提供市值流通和投融资服务。
16:14
据币管家bgj.io官方消息,其平台全功能分红积分管家币BC距离每日分红仅剩4天,受普遍投资者看好,现价为0.185USDT(约1.245CNY)今日大涨21.49%。官网地址:https://bgj.io
17:42
Coni将于6月18日正式上线,上线后,根据Coni持有情况,平台将每日100%交易手续费进行分红。此外,“交易即挖矿”也包含在新方案内,具体规则为将用户所产生的交易手续费再次100%折算成Coni以交易挖矿机制分红,一期挖矿Coni总量为5000万。此外,平台后期还将建立福利金机制,参与更多分红。另据CoinBene满币场外交易群了解到,目前Coni场外价格为3元人民币。
17:46
刚刚,NULS团队发布公告,公布了NULS主网映射的流程及注意事项。在NULS主网上线后,即可进行映射操作,映射周期为3个月,Binance、Bit-Z、Chaoex、coinbene、coinspot等交易平台将支持NULS自动映射。ETH钱包用户可以尽早将ERC20代币转到支持自动映射的交易平台,也可以根据操作流程自行完成映射操作。NULS主网发布在即,值得期待。
09:02
全球创业者的首席增长官Merculet正式对外公布,获得知名投资机构JRR Crypto投资。JRR Crypto是全球领先的区块链产业生态及加密数字货币产业集团,投资案例超过40余家,如Binance(币安)、 Quarkchain、柑趣网络、TokenGazer等。本次投资意味着Merculet将成为JRR Crypto区块链生态布局的重要一环,而JRR Crypto的支持也将加速Merculet实现整个互联网流量结构的重构,传送数百万互联网企业、数十亿互联网用户以及其数千亿美元预算,进入基于区块链技术所构建的价值互联网时代,真正把区块链的高效互信和价值流通“复制”到全球每一位创业者的增长之上。
17:29
据NULS官方Twitter消息,NULS与来自新加坡的金融科技公司MC Payment达成战略合作,NULS联合发起人冉小波与MC Payment首席运营官Joseph Christopher Koh 在2018年6月8日共同签署了合作协议。MC Payment计划在NULS主网上搭建子链,NULS将在区块链技术应用落地、项目投资与孵化等领域与MC Payment展开合作。
09:04
币快报BKBT项目(已上线火币Hadax(https://www.hadax.com/))正式宣布获2000万美金的A轮融资,本轮估值2亿美金,此次融资为全球区块链媒体史上最大单笔金额A轮融资。投资方为JRR Crypto旗下的产业基金JRR Capital。JRR Crypto是全球领先的布局于区块链产业生态及加密数字货币的区块链产业集团,投资案例包括但不限于Binance(币安)、QuarkChain(夸克链)、TokenGazer、大师钱包、柑趣网络、WAX、PCHAIN、DxChain、ORS、MSC、Merculet等。
18:05
分布式数字资产金融服务平台LendChain宣布完成数千万人民币融资。参与本次投资的机构包括公信宝、PreAngel、裂变资本、边界资本、比特派和公信资本。值得注意的是,公信宝不仅是项目投资机构,更与LendChain达成了深度的战略合作:坐拥160万数字居民的公信宝布洛克城,将会为LendChain导流,让更多垂直用户能够方便地了解和使用LendChain平台。作为全球化的基于区块链技术的分布式数字资产金融服务平台,LendChain能够为数字资产的持有者提供融资、投资、保险、理财等各类金融服务。目前LendChain开发平台已顺利内测,并即将开展公测。
11:06
据NULS 团队消息,NULS测试网(V0.9.9)Win+Linux版已于新加坡时间2018年6月11日上午11点推出,该版本进一步提高了NULS钱包的运行稳定性和用户体验。现在到NULS官网(nuls.io)下载新版钱包,并在新版钱包内导入私钥即可体验。注:MAC版本将尽快上线
23:01
scaneos.io于6月10日21点与主网同期上线,致力于成为EOS生态专业的数据服务平台。scaneos.io由中国最大的安卓开发者社区eoe创始人、中国最大IT在线教育平台极客学院创始人靳岩发起,靳岩认为,用户只需要一款EOS浏览器,scanEOS则会全面向全球用户做最好用的区块链浏览器。
17:33
据币管家bgj.io官网数据显示,其平台分红积分BC目前时价0.1579 USDT(约1.02CNY)随着6月20日的分红日临近,用户量激增,备受投资者看好,BC总发行量2亿枚且永不增发,平台锁仓1亿枚持续1至3年,目前市场流通量为6750万枚。官网地址:https://bgj.io
16:18
数字货币交易所UEX(www.uex.com)2018年6月7号上线MANA,支持 MANA/ETH交易对,并于6月9日正式开启MANA百万交易大赛、EXIM幸运大放送交易赛。交易费打折活动同步进行中,低至一折,最低万分之一交易费率。 UEX核心团队拥有广泛的互金行业国际化背景,其交易所主要定位就是锁定全球优质项目。
11:48
分红币标杆平台FXB今天开盘挖矿2小时不到就熔断了,可喜可贺。 FXB是目前市场上唯一一个双分红模式平台,发行量少,价值很高。明天早上八点正式交易!