在是否要缩短BCH出块时间的讨论中,反对方提出的最经典的一个问题是: 有了0确认,我们为什么要还缩短时间?你再怎么缩短,能快过0确认?

  在avalanche协议没有出现之前,零确认还存在不少缺陷,安全性不足,主要有以下几点:

  1 用户使用了低于1聪/字节的手续费发出交易,可能会导致交易在非常长的一段时间内无法获得确认,毕竟绝大多数矿池的费率高于这个

  2 延展性BUG ,恶意矿工可以篡改 txid ,这会导致交易所商家的账目混乱

  3 快速双花攻击

  4 51 % 攻击

  一旦avalanche全面部署,上述的缺陷基本都可以弥补,0确认的安全性会变得非常高, 根据目前BCH 的网络状况看,基本上0确认的交易可以在几秒内就达成avalanche共识,近乎实时的速度了。所以 看上去非常完美了,似乎根本没有缩短时间的必要了。 但是0确认适用于所有场景吗?事实上是远远不够的

  0确认适用的场景

  1 小额支付 : 这是BCHer 经常 挂在嘴边的了,小额支付确实很适合,没问题。 例如 Bitpay 目前就是支持B CH 的0确认支付的。

  2 单纯存储性的二层应用: 这话比较拗口,memo就是一个经典的例子,把数据保存在 op_return 里面 ,但是这些数据仅仅只是 普通数据,不涉及到金融资产。

  0确认不适用的场景

  1 交易所充值 。

  无论0确认如何安全,交易所也不会开放0确认充值,至少会要求一个确认。曾经有一家交易所提供BCH 的0确认充值,事后被证明只是噱头,充值是0确认,提现需要审核好几天。

  不管我们是否承认 ,在现阶段,交易所充提是币圈的最大应用之一,这是一个基本事实。2017年牛市的时候,比特币 / ETH 双双 堵塞, 很多搬砖客转而使用 LTC 进行搬砖,导致 LTC 从之前没啥人用的情况下 TX (链上交易量)暴增,至今稳定保持 BCH 的2倍+。人们使用 LTC 的逻辑很简单,平均2.5分钟出块,大多数交易所一个确认就入账。毕竟速度快体验好。

  LTC 的出块时间是2.5分钟, BCH 是10分钟,看上去只差了7.5分钟。但是因为概率的原因, BCH 经常会出现1个多小时都没有出块的情况,我想几乎所有 BCH 老鸟都遇到过这种情况。在速度偏快或者正常的时候,用户会觉得理所当然,但是巨 慢的时候,用户会变得抓狂难以忍受。而 LTC 就算偶尔出块慢,也就10多分钟不出块。

  从用户的心理来说,就算10次转账有8次是正常的,但是只要有2次需要等超长的时间,就会给用户留下极差的印象,从而导致用户流失。

  2 二层智能合约。

  BCH 上的智能合约分两种,一种是运行在主链上的智能合约,矿工可以直接 进行验证,这种应该是可以0确认的。但是受限于 BCH 的 UTXO 机制,这种智能合约只能是无状态的,只能编写一些很简单的合约,要想运行类似E TH 上那种复杂的有状态智能合约是完全不可能的,从原理上就无法实现。

  而二层智能合约就可以实现所有 ETH 可以实现的合约。具体原理就是利用 op _ return 这个操作码,把智能合约数据和代码保存在里面,然后再使用专门的节点程序进行读写操作。

  这类方案目前有 WHC, KEOKEN 。 以 WHC 为例,目前已经实现了非常完善的token功能 。几大矿池之一的 viabtc 就通过W HC 发行了 viat 这个token,另外还有一家稳定币正在测试阶段,很快会上线。

  0确认之所以不适用于二层智能合约,是因为矿工是不参与解析 op_ return 的数据的。举个简单 通俗 的例子:

  A持有某token 100个,他要进行双花干坏事。他要把 token卖给B,于是他发起了一笔转账。这笔转账在 BCH 浏览器里面看起来是这样的: 地址A 给地址B转账546聪 (注:546聪是最低转账金额,目的就是为了发起 一笔B CH 交易在 链上留下数据 ) ,然后附带了一笔 op _ return 信息 0877686300000000000000c000000011057f2dbc ,这一串字符如果使用 WHC 节点程序解析出来的意思就是“A转账给B 100个token”

  如果 WHC 是支持0确认的,那么B一看,100 个 token到账了,于是就确认收货了。

  此时,A又发起了另外一笔转账,转给自己的地址C。这笔转账看起来是这样的: 地址A给地址 C 转账546聪,然后附带了一笔 op _ return 信息 0877686300000000000000c000000017530e5961 ,这一串字符如果使用W HC 节点程序解析出来的意思就是“A转账给 C 100个token”

  在所有矿工看来, 因为没有重复花费UTXO, 这两笔交易都是完全合法的 BCH 交易,他们会把这两笔交易全部打包进块。因为矿工是不会运行 WHC 节点的, 不会 知道其中一个其实是双花交易 。

  这样A就成功双花了100个token .

  所以二层智能合约必须至少一个确认才可以。

  目前智能合约是币圈最大的应用。对,就是最大,没有之一,比前面说的交易所充值提现还大。

  以 比特币 为例,目前 由运行在比特币链上的 USDT 产生的交易量比 BCH 全网交易量都多的多 , USDT 就是智能合约的一个应用。 (下图中的Omni Layer 就是 USDT ,因为 Omni Layer 协议上唯一活着的应用就是 USDT )

  

  ETH 就更多了, 上面运行着成千上万个智能合约, ETH 的 TX 大部分都是各类智能合约产生的。

  

  上图红色方框内是 BTC 和 ETH 今日(2019年1月13日) TX 总量,比特币是28万, ETH 是46万。现在是熊市,整个币圈人气非常低迷,交易所投机活动相较于牛市大幅减少,但是 BTC 和 ETH 依旧经常发生堵塞的状况,其中的功劳大部分都是智能合约带来的。

  3 稳定币

   稳定币其实是智能合约的一个应用,智能合约无法支持0确认,稳定币自然也是无法支持0确认的。为什么要单独拿出来说,实在是因为稳定币太重要了。

   我们先来看一个图

  

  第一位是大家熟知的 USDT ,因为历史悠久,目前依然霸占稳定币第一的位置。2 3 4 5 都最近几个月新出来的合法稳定币,市值正在飞速增长中,增长速度有多快,以 USDC (也就是第二位的 USDC oin)为例,请看下图

  

  USDC 在2018年10月17日的时候,发行量还是0,此后一路快速增长,目前已经达到了3.6亿美元 ,仅用时88天!

  我们再看看 USDT 从0到 3.6亿美元 花了多久?

  

  从2015年3月到2017年9月,用了足足2年6个月 !

  为什么 USDC 发展速度会比 USDT 快这么多?而且 USDT 最顶峰市值有28亿美元,现在只有19亿。原因很简单:

  U SDC 这类的稳定币是合法的,受监管的,用户在官网兑换美元没有任何阻力,非常方便。

  USDT 不是合法的,普通用户无法在他们的官网兑换到美元,只能走场外交易,谁也不知道 USDT 19亿市值的背后是否真的有对应19亿美元的准备金。

  USDT 之前在稳定币市场一家独大,市场份额占据95%以上,现在已经跌落到70% ,而且还正在不断下滑,看这个趋势,再过半年,可能第一的位置都不保了。

  那么,合法稳定币的应用场景有哪些? 非常广泛,从交易所搬 砖,国际贸易,证券市场出入金, 到 直播打赏, 线上线下购物支付,只要是传统支付手段有的场景,合法稳定币基本都可以参与进去。甚至还可以渗透到法币崩溃的国家,拯救那些穷苦百姓。毕竟这是稳定币,价格不会像加密币这样暴涨暴跌。

  以 USDC 为例,用户每次转账 USDC ,都需要支付 ETH 作为手续费,所以每个 USDC 用户,同时也会成为 ETH 用户

  毫不夸张的说,稳定币是可以给加密币带来上亿甚至 10 亿级别用户的币圈第一潜力应用!

   有心的用户看到这里,就会有疑问了: 我查了一下, USDC TUSD PAX GUSD 这些 合法 稳定币全部都是建立在 ETH 上的,你把稳定币吹的再牛逼和 BCH 有毛关系?

  没错,目前主要的合法稳定币确实都是建立在 ETH 上的, 因为 ETH 的确认时间只需要15秒,用户体验好。

  但是 BCH 也有自己的优势,那就是容量超大不会堵塞! ETH 受限于自身架构的问题,扩容问题迟迟无法解决,所以现在也会时不时像 BTC 那样发生堵塞。并且 BCH 上已经有 WHC 这个协议,功能完善,可以发行完全符合监管需求的稳定币token,非常方便。目前已经有一家基于 WHC 的合法稳定币正在测试中,很快就会正式运营了。

  但是 BCH 上的稳定币最大的缺陷也就是确认时间太长。要知道竞争是全方位的,这个最大的短板不解决, BCH 的稳定币 没有 发展的希望 。

  总结

  在币圈目前第1大应用场景--- 智能合约 ,第2大应用场景--- 交易所充提 ,以及一个目前正在超高速发展且未来会带来数亿用户的应用--- 合法稳定币 都无法支持0确认的情况下,为什么我们要为了一棵树木放弃一片森林?

  更何况,0确认和缩短时间是鱼与熊掌可以兼得的的,完全不冲突。

为什么BCH有了0确认还要缩短时间相关推荐

  1. 双花证明已实现,BCH安全的0确认交易还远吗?

    "用户至上"始终是BCH所尊崇的理念.BCH作为点对点的电子现金,为了能够给用户提供良好的使用体验,一直在不断的优化,尤其在交易费用和交易速度方面.目前通过扩大区块容量,已经将BC ...

  2. 为什么说基于比特币现金的0确认是必要的?

    关于0确认的讨论总会时不时的出现,问题总是围绕着:0确认真的安全吗?开发人员是否应该做些事情让它们变得更安全?这些0确认交易会不会造成双花从而骗取商家等等? 0确认是什么? 对于BCE和BCH来说,0 ...

  3. 华为鸿蒙系统搭载手机,鸿蒙系统2.0确认9月11日发布:华为手机历史性一刻要来了!...

    原标题:鸿蒙系统2.0确认9月11日发布:华为手机历史性一刻要来了! 前天小智跟大家说,华为的鸿蒙操作系统发布距今已经有一年时间了,而根据华为官方的说法,鸿蒙系统也将在8月份正式开源.开源的意义就代表 ...

  4. vc++6.0 同步本机时间到Internet NTP服务器 编译通过

    vc++6.0 同步本机时间到Internet NTP服务器 编译通过 2009-07-24 23:50 #include <windows.h> #include <winsock ...

  5. VC6.0 C++ 得到系统时间

    VC6.0获取当前系统时间: 方式1(精确到毫秒级别): double d_currenttime = GetTickCount(); 方式2: 首先包含头文件 #include <time.h ...

  6. Java如何获得从1970年1月1日0时0分0秒到当前时间毫秒数

    想通过1970年1月1日0时0分0秒到当前时间的毫秒数来生成一个随机的ID,以下两种方法可以实现 1.Calendar包下的getTimeInMillis()方法 getTimeInMillis()方 ...

  7. 比特币(包括BTC和BCH)的零确认到底安不安全?

    第0章 引言 比特币的零确认可以让支付秒到,如果能实现安全的零确认,那对BTC和BCH的用户体验都是质的飞跃.相对来说BTC的粉丝绝大多数是拒绝零确认,而BCH的支持者则热衷于发展零确认的安全性. 本 ...

  8. android wear2.9新功能,Android Wear 2.0确认2月9日正式登场

    [TechWeb报道]谷歌Android Wear一直是智能穿戴式设备尤其是智能手表系统的首选,不过现在很多手表厂商没打算让Andiord一家独大,腾讯TOS.阿里YunOS还有三星Tizen等等都有 ...

  9. php中 hint,已经定义hint=0为啥还要if(hint=0)

    代码如下: load("links.xml");$x=$xmlDoc->getElementsByTagName('link');//get the q parameter ...

最新文章

  1. 自己不清醒,却要拉更多人陪葬的人!
  2. 偷盖茨、奥巴马 Twitter 的黑客被抓了,年轻到你想不到!
  3. 深入redis内部之redis启动过程之一
  4. SpringBoot+Swagger2.7.0实现汉化(2.8.0不行)
  5. Kotlin学习笔记(2)- 空安全
  6. 零基础学java web开发pdf_新手学Java Web开发.pdf
  7. Win下的port forwarding
  8. Script标签解决跨域
  9. html标签的引号嵌套,使用YQL多查询&amp; XPath解析HTML,如何转义嵌套引号?
  10. Topaz DeNoise AI for Mac(图片降噪软件)
  11. 4月升级鸿蒙,华为鸿蒙系统4月升级适配名单一览
  12. excel随机数_Excel小技巧之随机数表
  13. centos文件锁定解锁_解锁后轻松替换锁定的文件
  14. (亲测)使用cmd结束进程的3种方法
  15. 用C/C++自己写一个宋词生成器,气质一下子就上来了呀
  16. noob之MySQL基本查询
  17. 局部加权回归LOESS(locally weighted regression)
  18. Codeforces707C
  19. spring(@RequestPart)同时上传表单数据和文件
  20. 聚焦爬虫与通用爬虫详解

热门文章

  1. Fetch -- http请求的另一种姿势
  2. 简单定制自己的Centos系统(第三版)
  3. 代码实现UISlider 和 UISwitch
  4. JavaScript常见集合操作
  5. 使用代码配置 NHibernate
  6. 如何让Linux禁止Ctrl+Alt+Del重启(防止被强行关闭)     erikxue 薛忠权
  7. Web Office 常见问题解决方法
  8. springboot集合jpa使用
  9. Centos7单端口单配置文件多IP
  10. oracle 用mybatis生成主键