jackone ? 2019年11月18日 am10:15 ? BSV百科 ? 阅读 52 0.前言 Bitcoin的第二个版本已经上线,运行正常。 重要的改变包括: 1.加入数字签名。 2.公钥替代用户名。 3.将签名加入交易模型。 4.删除了账号模型。 本篇在讲如何重新定义交易。 交易是经济学理论的核心,交易是一切。 交易即承载着每个个体的起心动念,交易也承载着整个世界的斑驳陆离。 对交易这个概念的认知高度,决定了Bitcoin系统的高度。 如何认知交易,就表现在如何定义交易。 1.Bug出现! 新版本上线后, 系统看起来一切正常。 不过,只要是人写的程序就会有Bug。 这一天Alice找到中本聪,说自己的余额忽然归零了,怀疑自己的私钥泄漏了。 中本聪赶紧登陆到服务器上,查看账本中的交易记录,发现了Alice的交易记录有异常。 怎么会有重复的交易记录呢?(见下图) 《重新创造比特币》第7章:UTXO 账本 中本聪问:“Alice,你最近做了几次转账?” Alice说:“就一次,昨天给Carol转账20个Bitcoin” 中本聪说:“可是,在账本里我查到了3笔给Carol的转账(公钥C代表Carol的公钥)” 中本聪找来Gilfoyle,两人一起分析,很快找到了问题所在。 原来是Carol搞的鬼,Carol截获了Alice的交易请求,并重复的将其发送给服务端,服务端错误的认为是Alice在多次请求转账,结果就是将Alice的余额全部转给了Carol。(见下图) 《重新创造比特币》第7章:UTXO Carol在搞鬼 2.分析Bug 问题的根源是什么呢? 原来问题出在签名上,在现在的设计中,同一用户在不同交易中,签名没有变化。 服务端只会验证签名真伪,只要签名是真的,交易就成立。 黑客会重复发送伪造的交易请求,直到用户的余额小于交易金额。 那么签名为什么没有变化呢? 这是因为签名是将公钥加密,公钥不变,所以签名就不变。 签名不变,就意味着,签名的权利空间为用户的所有余额。 分析到了这里,中本聪对Gilfoyle说:”我们得让每笔交易中的签名都不同,最好是每笔交易的签名是系统唯一的” 如何做到让签名在每笔交易都是变化,且唯一的呢? Gilfoyle说:“加密整个交易数据,因为交易数据每笔都不同”。 这个方案,乍看上去不错,但是仔细一想还是有漏洞。 中本聪说:”如果用户的正常需求就是,同一时刻发出两笔相同的交易请求,难道服务端还要拒绝吗?如果服务端不拒绝,万一是黑客在重复请求呢,就像前面Alice遇到的那个bug。” Gilfoyle说:“那我们改造一下交易模型,加一个随机数的字段,约定好浏览器在创造交易数据的时候,需要填写一个随机数。这样每笔交易就不会重复了”。 中本聪说:“这个思路还是太传统了,不够优雅。况且,随机数也可能碰巧相同啊,虽然概率很小”。 中本聪闭上了眼睛,倾听着内心的声音,现在需要启动直觉,一个颠覆传统思路的方案,隐隐约约闪烁着身影。 3.颠覆传统的优雅方案 最初的问题,是由于签名锁定到余额。 变更之后,签名锁定到交易。 但是新的问题来了,交易数据可能重复。 现在问题卡在了这里:如何让交易成为唯一? 交易的本质究竟是什么? 交易的本质是描述Bitcoin的所有权的变更,即,n个Bitcoin的所有权,由付款者变成了收款者。 例如Alice给Bob转账3个Bitcoin,本质就是:“3个Bitcoin的所有权,由Alice变成了Bob。”,这句话如何变成唯一呢? Alice不会变,Bob不会变。3个Bitcoin也不会变。 等等!3个Bitcoin是可以变的!如果给每个Bitcoin都加上编号, 那么每个Bitcoin都不同,都是唯一的。 假设Alice的余额中有6枚Bitcoin,编号为:Bitcoin001~Bitcoin006。 那么这笔交易的描述就变成了:“编号分别是Bitcoin001、Bitcoin002、Bitcoin003的Bitcoin的所有权,由Alice变成了Bob” 下一笔,Alice如果还想再给Bob转3个Bitcoin,描述就变成了:“编号分别是Bitcoin004、Bitcoin005、Bitcoin006的所有权,由Alice变成了Bob” 看到了吗,只要给Bitcoin加上编号,之前无法区分的交易,就可以区分开了,交易的描述,在语义上实现了唯一。 4.每笔交易都要先融化再铸造 交易是经济学理论的核心,交易是一切。 交易即承载着每个个体的起心动念,交易也承载着整个世界的斑驳陆离。 对交易这个概念的认知高度,决定了Bitcoin系统的高度。 如何认知交易,就表现在如何定义交易。 中本聪感觉找对了方向,不过现在的方案太粗糙,还需要进一步打磨。 给Bitcoin以编号,每一枚Bitcoin就可以看成一枚硬币。Bitcoin的最小单位就是整数1,不可再分割。 每笔交易都要明确的写出,自己引用的具体Bitcoin的编号。 这样虽然能实现交易的语义唯一,但是同时会带来两个问题: 第一个问题:如果不支持Bitcoin的小数分割,就太不灵活了。就像美元没有了美分。 第二个问题:如果交易金额很大,例如10万枚Bitcoin,就需要引用太多的Bitcoin编码,交易数据会过于庞大。这就像美元中只有1美元的面额。 突然,中本聪来了灵感: 如果我们每一次交易都等于是一次铸币呢,就是将多枚硬币融化成一个大块的硬币。 这样,每一笔交易产生的大硬币,就可以被下一笔交易所引用,且仅可以被引用一次。(如果被不同的交易引用,就是传说中的”双花”,这个概念留给后面讨论) 当然,当前交易也要引用之前的一笔(或者多笔)交易的铸币。(见下图) 《重新创造比特币》第7章:UTXO UXTO 被交易引用后的一个(或者多个)大硬币就等同于被融化了(IN),然后再铸造新的大硬币(OUT)。 我们就称账本中,未被引用的大硬币:未花费的交易输出。 对应的英文:Unspent Transaction Output,我们用TX代表transaction,所以最终简写为:UTXO。 一个人的余额,本质上就是他能够引用的UTXO的总和。 Gilfolye说:“精彩!那么如何处理找零呢?Alice引用了一个金额为5的大硬币,但是只想给Bob,3.5Bitcoin” 中本聪说:“铸造成2个OUT(大硬币)就可以啦。在这里就是生成两个OUT(大硬币),分别是3.5和1.5,其中3.5给Bob,1.5给自己,这就是我们日常生活中的破零钱嘛。”(见下图) 《重新创造比特币》第7章:UTXO UTXO中的找零给自己 每一笔交易都引用过去交易生成的UTXO,同时创造出新的UTXO,等着未来交易来引用。 所有交易首尾相连,成为了一条连绵不绝的河流,从唯一的源头开始,中途经过分分合合的支流,永远朝着东方的大海前进,这就是所谓的,万折必东。 从这个角度来看,Bitcoin系统就是,一个条由交易组成的时间长河。 描述这类数据结构的专业名词称为:有向无环图。英文全称: Directed Acyclic Graph(简写为:DAG)。(见下图) 《重新创造比特币》第7章:UTXO 有向无环图 中本聪在脑子里,模拟运行着新的设计:“现在的设计应该没有大的缺陷了,可以进入交易模型的设计啦”。 GIlfoyle:“UTXO的确优雅,交易模型的改动会很大” 所谓交易模型的设计,就是说,通过重构交易模型来承载UTXO机制。 5.后记 UXTO的设计部分就写完了,下一篇开始写,交易数据模型的重构,还会引入锁定和解锁脚本的机制。 (下面是之前写的删了的一段,感觉有点复杂,如果有需要可以读一下) “语义唯一”与“语法唯一” 语义的意思是,一句话想表达的意义是什么。 语法的意思是,以什么形式来组织语言。 语义是本质,语法是外表。 语义唯一,即,一句话表达的意义是确定性不变的。就拿这句话:“编号分别是Bitcoin001、Bitcoin002、Bitcoin003的Bitcoin的所有权,由Alice变成了Bob”,不论谁来说,重复说多少次,什么时候说,谁来解释,都不会有歧义,即便服务端多次执行这句话,多次将这句话写入账本,Alice的余额也只会减少3枚Bitcoin,不会丢币。 而之前描述方式,是语义模糊的:“3个Bitcoin的所有权,由Alice变成了Bob”。如果服务端收到重复请求,无法确定其精确意义:究竟是Alice真的想付款多笔,还是客户端出了毛病(一笔交易发出了多次请求),还是黑客截获消息后的攻击。 传统的解决思路是,用语法上的唯一,来代替语义唯一。 什么是语法唯一,就是变着花的说话同一个意思,这样看上去就是不同的句子。 加随机数就是实现方法之一,像这样: “随机数001, 3个Bitcoin的所有权,由Alice变成了Bob” “随机数002, 3个Bitcoin的所有权,由Alice变成了Bob” “随机数003, 3个Bitcoin的所有权,由Alice变成了Bob” 这样,服务端就就可以认为,重复的请求是异常数据,可以抛弃不理。 所以当前系统的漏洞,在本质上是交易的定义上存在漏洞,即,不是语义唯一。 【免责声明】本文仅代表作者本人观点,与本站无关。比特币元网站对文中关于比特币,BSV,比特币SV,bitcoinsv等观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何保证。请读者仅作参考,特此声明!转载请注明出处:http://www.bsvers.com/1710.html —- 编译者/作者:正東 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
《重新创造比特币》第7章:UTXO
2020-01-12 正東 来源:区块链网络
LOADING...
相关阅读:
- 重磅!笼罩在YAS链上的三大疑云!种种不良,招招致命!2020-08-06
- dex杠杆/永续,期权,保险,比特币锚定币,自动移仓,投资组合2020-08-05
- 张麻子侃币:以太坊2.0即将上线,利好兑现即利空?2020-08-04
- 傲天玩币:8.4以太坊市值逼近440亿美元2020-08-04
- Stegos首次AMA直播回顾2020-08-04