导读
数字货币本质上是一串特殊的字符串,可以无限复制。如果一名矿工短暂控制了超过50%的算力,向交易所发起转账,同时把同一笔数字货币转账给自己。因为手头有足够的算力,所以两笔交易都被写进区块,成为合法交易,这就是“双花攻击”。
比特币网络自诞生以来并稳健运行至今,已证明:在没有结算中心的对等网络,点对点交易也能拒绝双花攻击。所有的比特币交易记录都被保存在区块链上,2008年在中本聪描述比特币原型的论文里提到,他使用了一种名为梅克尔树(Merkle Tree,缩写MT)的数据结构对每一个区块里的所有交易做一次简略记录,梅克尔树能够用较少的字节去表达极大量的信息。
梅克尔树的结构是个满二叉树,因此要求交易数量必须是2n。中本聪通过引入“无效却必要的”多余信息来解决这个问题,所付出代价是此多余信息可能会被攻击者利用,实施双花攻击。
本文先介绍梅克尔树的基本结构,生成节点的规则,然后用一个例子来说明如何为比特币交易构造梅克尔树,最后解释了比特币如何通过UTXO的唯一编号来避免因梅克尔树可能引起的双花威胁。
知识点1:
哈希函数是由数学家或者密码学家精心设计的一种数学运算规则,它可以输入任意长度的数据,而输出结果(即哈希值)的长度保持不变,并且满足:
1)单向运算:只能计算输入得到输出,不能逆向计算输出得到输入;
2)冲突避免:无法找到两个不一样的输入,而它们的哈希值却相同。
哈希函数可以说是区块链最最核心的技术之一,另外一个是非对称加密。正是这二个性质确保了比特币像黄金一样难以获得,经过大量的运算才能得到某个正确的哈希值,使得该哈希值比其它字符串更加珍贵,从而获得价值属性。这是哈希函数在比特币挖矿中的应用,但这并不是本文的重点。
知识点2:
梅克尔树又被称作哈希树,因为在这种树状数据结构中,每个节点的标签(或称作值)都是一串哈希值。按照从左向右的顺序,将所有子节点的哈希串联成一个新的长字符串,结果作为哈希函数的输入,经计算得到父节点的标签。
哈希树的概念得名于 Ralph Merkle,他在1979年9月5号提交文件申请注册了该项专利。当然,等到中本聪使用梅克尔树作为比特币的底层数据结构时,此专利保护期已经结束了。不然的话,中本聪得向梅克尔先生支付专利授权费,这样做也许他的身份就被曝光,而整个区块链行业都需要缴纳一笔不菲的费用。
另外多说一句,比特币并没有凭空创造任何新型技术,而是巧妙地使用了若干个已有的密码学工具,组合之后便是区块链这种从未见过的系统。这种创新需要极强的系统性思维,往往独自一人很难拥有这般思考的深度和广度,也就有人推测中本聪其人背后其实并不是某一个人,有可能是一群密码学专家。
梅克尔树的基本结构
言归正传,梅克尔树是一棵满二叉树,其结构如图所示。
每个叶子节点的标签都是其所记录内容的哈希值,而将两个兄弟节点的标签串联起来,作为哈希函数的输入,经过计算得到父节点的哈希,如此重复直到最后只剩下一个节点,即根节点,又称作梅克尔树根。
中本聪设计了一种区块结构,其区块头的某个字段就是梅克尔树根。梅克尔树根源自区块里记录的每一笔交易,交易可以理解成转账,例如类似「A转给B某某数额的比特币」的格式。将有着固定格式的一笔转账记录做序列化之后,就能作为输入tx,交由哈希函数运算,得到的结果就是叶子节点的标签 L。
L = Hash(tx)
而每二个叶子节点的哈希,便可以串联起来作为输入,得到父节点的哈希P。
P = Hash(L0+L1) // '+' means concatenation
区块可以记录的交易内容长度有限,在中本聪的设计里,严格限制了一个区块内所有交易的总长不超过1MB。而交易的长度又随交易的复杂度而变化,可以简单理解成越复杂的交易,其内容越长。为了有效利用区块,挣更多的手续费,矿工们总是希望尽可能往区块里面记录更多的交易。
观察梅克尔树的结构,可以发现其总是一棵满二叉树,这意味着叶子节点的数量总为2n 。当待记录的交易数量不足 2n,又或者等于2n 时所有交易的总长度超过1MB限制,此时区块能够记录的交易数量不能恰好等于一棵满二叉树的叶子数量。这种情况出现时,该怎么计算梅克尔树根呢?
中本聪如何为比特币交易构造梅克尔树?
以一个简单的例子来说明这个问题。
假设某区块里面记录了一共5笔交易,那么其初始叶子节点仅有5个。每2个叶子节点生成1个父节点,在产生父节点的过程中,却遇到了最后1个叶子节点没有兄弟节点的情况,这时候需要构造出来另外一个节点与其匹配。中本聪的做法是:直接重复该节点本身作为其兄弟节点,然后再按照前述方法得到父节点。这个重复的节点,就是原始交易记录里没有但是梅克尔树上却存在的多余信息。
此时,在梅克尔树结构里面出现了3个父节点,然后再依据这3个节点继续往上构造父节点。同样的问题又出现了,这一层仅有3个节点,最后1个节点必须重复自身以满足兄弟节点成对出现的要求,这样又出现了新的多余信息。最后,再高一层又出现了2个父节点,继续合并,得到最后唯一的节点,即根节点。
在交易数量为5的情况下,由此构造出来的梅克尔树的结构如下图所示。
比特币如何避免
因梅克尔树可能引起的双花威胁?
中本聪的这种做法也许会让读者产生疑惑:既然最后一个叶子节点会被重复,从其父节点的角度看,它有两个具有相同哈希的叶子节点。根据哈希函数的冲突避免性质可以判断,此二个叶子节点所代表的内容完全相同。也就意味着,假设区块里面还能再添加一笔完全相同的交易记录,计算得到的梅克尔树根的值保持不变。这种做法岂不是会导致双花攻击的问题?
比特币网络是如何避免不诚实节点故意在同一区块内记录完全相同的二笔交易?这个疑惑需要借助比特币交易的基本单位UTXO来解释。
在比特币网络里面,并没有「账户」这种东西,也就没有所谓「余额」等衍生概念,因此无法像传统银行系统一样,通过检查账户余额来判断用户有没有可继续花费的资产。所有的比特币都是以UTXO (Unspend Transaction Output)的形式存在,交易消耗已经存在的UTXO(称作输入,Input),产生新的UTXO (称作输出,Output),被消耗的UTXO便不再有效。
每一个UTXO都拥有一个锁定脚本 (ScriptPubKey),用来保护该UTXO不会被除了其拥有者以外的其它人使用,目前还没有人可以解锁不属于自己的UTXO。UTXO能被花费的前提条件是,其锁定脚本被正确地解锁。通常某UTXO的锁定脚本会指定其拥有者的公钥信息,当该UTXO被花费的时候,只有出示与该公钥匹配的私钥所生成的数字签名,即解锁脚本(ScriptSig),才能成功解锁UTXO。
在比特币的设计中,使用交易ID和UTXO在该交易的输出序号来作为UTXO的唯一标识,所有可用的UTXO都保存在一个名为UTXO set的数据集合里面。
这意味着,可以实现:将每一个还未被花费的UTXO都存储在数据库里并向全网公开,将已经被消耗的UTXO销毁并从数据库中删去。那么当攻击者故意构造第二笔交易并试图再一次花费相同的UTXO时,会发现无法在数据库中找到拥有相同ID的那个UTXO。这就相当于,某人花掉了手中真实存在的物理货币以后,便没法再使用一遍。
因为每个UTXO都拥有独一无二的标示,所以在一个区块内,节点很容易判断每笔交易所消耗的UTXO是否相同:如果存在两笔交易的输入为具有相同ID的UTXO,即能判断第二笔交易无效,此区块无法被诚实节点验证通过。
因此,虽然梅克尔树在交易数量不等于2n的情况下,理论上会出现重复哈希值的问题,但实际中在真实区块里面无法再伪造具有相同内容的交易,双花问题得到避免。
注:以上图片来自于Onchain
参考资料:
比特币原始论文 Bitcoin: A Peer-to-Peer Electronic Cash System
梅克尔树原始专利文件
本文由 Poly Enterprise 团队出品
导读
P = Hash(L0+L1) // \'+\' means concatenation
注:以上图片来自于Onchain
参考资料:
比特币原始论文 Bitcoin: A Peer-to-Peer Electronic Cash System
梅克尔树原始专利文件
本文由 Poly Enterprise 团队出品
分析:美联储“无限QE”政策下,比特币和黄金表现远超标普500指数:据LongHash文章,在美联储宣布实行“无限期量化宽松”政策后的几分钟内,从股票、黄金到比特币、原油齐齐应声而涨,投资者似乎将其理解为当前疲弱经济的救命稻草。然而,自这个措施宣布以来,只有两种价值数十亿美元的资产保住了收益并且还在继续上涨:比特币和黄金。根据来自TradingView的图表,在美联储发布声明之后,比特币回弹了9.5%,黄金也上涨了4%,然而标普500指数期货—反应了大多数美股证券价值—已经下跌了0.25%。这些统计数据尤其重要的原因在于,这是比特币和黄金在2020年表现最好的日子,突出了美联储刺激政策对这两项资产的重要性。我们可能正处于两类资产的分裂的边缘:在历史性的货币刺激政策作用下提振表现的资产,以及即使中央银行加印数万亿美元也依旧表现不佳的资产。[2020/3/24]
声音 | 360:与“网红云商”无股权关系,已起诉其侵权行为:据TechWeb消息,近日,360公司在其官方微博发表声明称,有用户举报“网红云商”未经许可大肆使用360公司及董事长周鸿祎的名义进行虚假宣传,并声称“网红云商”获得360公司、周鸿祎投资。360公司郑重声明,公司及周鸿祎先生与“网红云商”不存在股权关系。同时,360公司还提醒投资者谨慎投资。 360公司在收到用户提醒后,已致电“网红云商”,并进行了发函警告,但“网红云商”仍未停止侵权行为。目前,360公司已通过工商举报、法院诉讼等手段,维护合法权利。 据了解,“网红云商”自称为新型零售社交共享平台,以“网红+直播+社交电商+新零售+区块链”为主营业务。目前,已有用户质疑其存在“以区块链为由的”、“非法融资”等行为。[2019/4/20]
声音 | Craig Wright:BCH不该用于 BTC不是“无政府主义的货币”:据Ambcrypto消息,nChain首席科学家Craig Wright最近出现在Tone Vays主持的一个视频中谈论即将到来的硬分叉。他指责比特币耶稣Roger Ver将BCH用于。他认为比特币的设计是“在法律范围内工作”,而不是“无政府主义的货币”。比特币扮演的是金钱的角色,金钱不会破坏法律或做任何其他事情。对于Roger Ver关于货币的想法,Craig Wright表示“能够让事情变得非法”的想法使得比特币本身成为非法。[2018/11/12]
标签:
2017年,一个比特币的价格大约为一万九千五百多美金,而近期已涨到两万四美金。今年,比特币价格突破历史新高,因此也使得它成为投资类资产升值最高的类别之一并逐渐成为大家认可的数字资产。 本期《CBC100》邀请到亚洲数字经济促进会会长、浙江大学客席教授、腾讯(上海)创业基地导师蔡志川博士为大家分享“比特币为什么能再创新高”。 为何比特币近期上涨如此强劲。
1/8/2021 2:30:10 PM"天价矿机订单,就像是北美矿场与美国华尔街的一次「跨界」配合。有观点认为,这也是关于比特币定价权转移的一部分。" 这是一份价值 1.7 亿美元的矿机购买合同。
1/8/2021 2:24:36 PM文章系金色财经专栏作者牛七的区块链分析记供稿,发表言论仅代表其个人观点,仅供学习交流!金色盘面不会主动提供任何交易指导,亦不会收取任何费用指导交易,请读者仔细甄别,谨防上当。 比特币凌晨冲高到40340美金后遇阻回落,最低到了36540美金,随后反弹不过高又来了个二次回踩,两回合下来爆仓达到了12亿美金。
1/8/2021 1:20:35 PM导读 数字货币本质上是一串特殊的字符串,可以无限复制。如果一名矿工短暂控制了超过50%的算力,向交易所发起转账,同时把同一笔数字货币转账给自己。因为手头有足够的算力,所以两笔交易都被写进区块,成为合法交易,这就是“双花攻击”。 比特币网络自诞生以来并稳健运行至今,已证明:在没有结算中心的对等网络,点对点交易也能拒绝双花攻击。
1/8/2021 1:15:02 PM一个创建于去年 8 月的以太坊地址在半年间内每天收获 20 万至 40 万美元挖矿收益,净资产总额已经增长到 3 亿美元! Twitter ID 为 @n2ckchong 的交易员 Nick Chong 此前通过链上数据扒出了一众顶级投资机构在 DeFi 世界中的动向而一炮走红,这次他又盯上了一条真正意义上的「DeFi 巨鲸」。
1/8/2021 1:14:57 PM1月7日,在星球日报主办的“价值时代”行业高峰论坛暨2020FAT颁奖盛典上,BiKi因庞大的社区生态系统和超高用户人气值,获得了“FAT年度人气交易平台”奖项。 BiKi如何捕捉市场趋势 引流用户? 比特币的价格在突破3,7000美元后,以6963亿美元的市值体量超越了全球第8的阿里集团,加密货币市场总市值超过一万亿美元,整个行业的发展迎来了巅峰。
1/8/2021 12:58:43 PM本文由金色财经记者 Maxwel2020年4月22日于金色首发。近期比特币多次创新高,推荐大家阅读。 本期金色硬核(Hardcore)从另一个独特角度来认识比特币,即比特币如何防止经济周期,实现可持续的经济增长。
1/8/2021 12:37:14 PM