打字猴:1.703867195e+09
1703867195 如果所有的节点都遵循这个协议,那么这个系统就会正常工作。任何一个节点都可以组装交易,并且任何一个节点都可以将这个交易广播到网络中,甚至这些节点中的两个可以独立广播,当然,这个交易只会在区块链网络中被公布一次。但是,如果一个或多个节点想要进行破坏,那么启动一个拒绝服务攻击并阻止这个协议完成,是很简单的事情。
1703867196
1703867197 特别地,一个节点可以参与协议的第一阶段,提供输入和输出地址,但拒绝在第二阶段进行签名。或者,也可能是,在对交易进行签名确认之后,一个想要破坏交易的节点可以尝试使用它所提供给其他节点的输入地址到其他的交易中去,如果另一交易在网络中被抢先确认,那么合币交易就会被当作双重支付交易而被拒绝。
1703867198
1703867199 在合币交易中,有多种方案可以防止拒绝服务式攻击。其中一个就是对协议中参与交易的节点施加成本,不管是通过一种工作证明机制(类似于挖矿),或者是通过一种销毁证明机制(一种可证实能销毁你所拥有的微量比特币的技术,这一点我们在第3章探讨过)。另外的办法包括,使用一些密码学手段鉴别不符合规定的参与者,并且可以把它们从节点组里剔除。在本章结尾处,我们会看到一些相关细节。
1703867200
1703867201 高风险交易流(high-level flows)
1703867202
1703867203 我们之前谈到过旁路攻击。现在我们来仔细看一下产生旁路的玄机。我们假设,通过一个特定的地址,爱丽丝每周都固定地收到一定数量的比特币,比如43.12312个比特币,有可能这是她的薪水。进一步假设她有一个习惯,每当收到这笔资金的时候就把其中的5%立刻自动存入另外一个比特币地址,那是她的退休基金账号。我们将这种转账模式称为高风险交易流。在这种情况下,没有一种混币模式可以隐藏这两个地址之间的关系,考虑到这种行为模式会在区块链网络中是透明可见的——这样特定了金额和时间的行为,几乎不可能是偶然发生的。
1703867204
1703867205 有一种技术,可以帮助用户在高风险交易流的情形下重获无关联性,这种技术叫作合并规避(merge avoidance),是由比特币创始人迈克·赫恩(Mike Hearn)提出的。一般来说,为了完成一笔支付,用户会尽可能地组合所拥有的比特币,以便有足够多的数额可以支付到单一接收地址来完成交易。他们是否可以规避会导致所有输入地址被关联在一起的合并行为呢?这种合并规避协议通过允许接收方提供多个输出地址的方式(尽可能多的),使得无关联性成为可能。发送方和接收方可以达成一致,通过把一个数额较大的支付分拆为一组小面值的支付方式,使得这个支付使用多个交易来完成,如图6.10所示。
1703867206
1703867207
1703867208
1703867209
1703867210 图6.10 合并规避
1703867211
1703867212 注:爱丽丝想要用8个比特币去购买一只茶壶,店铺提供了两个地址给她,她可以支付5个比特币到其中一个地址而支付3个比特币到另外一个地址,与她的可用输入资金匹配了,这样就可以避免暴露两个地址都是属于爱丽丝的事实。
1703867213
1703867214 假设,店铺最终将这两笔支付和收到的其他支付合并在了一起,这两个地址就不再是很明显互相关联的了。店铺应该避免在收款的同时,马上重新把这两个输入合并在一起,否则这两个输入来自同一个个体的事实还是会很明显。当然,爱丽丝也要避免在同一时间发送这两笔支付交易,这也有可能类似地暴露信息。
1703867215
1703867216 总的来说,合并规避可以帮助缓解高风险交易流的问题:如果某一个交易流水被拆分成许多互相无法关联的小额流水,攻击者可能就不会辨别这个交易。这样做也可以使依赖于识别单一交易中共时花费的多个比特币的地址簇技术失效。
1703867217
1703867218 [1]这个比喻来自非洲草原上的饮水坑,需要饮水的动物都会到坑边去。掠食动物也常常在坑边埋伏捕猎。在网络安全上,这种类似“饮水坑”的网站也往往是黑客选择攻击目标的场所,此类攻击也被称作“水坑攻击”。
1703867219
1703867220
1703867221
1703867222
1703867223 区块链技术驱动金融:数字货币与智能合约技术 [:1703863944]
1703867224 区块链技术驱动金融:数字货币与智能合约技术 6.5 零币和零钞
1703867225
1703867226 在零币和零钞陆续出现之前,还没有哪个加密数字货币的匿名化方案可以让人如此兴奋,不光是因为它们所实施的密码学原理非常高妙,也因为它们承诺可以达到的匿名性非常强大有效。到目前为止,所有我们看到过的匿名加强技术,都是在原来的核心技术协议之上加载匿名化处理,零币和零钞则是在协议层就融合了匿名化处理。我们将在这里以比较大的轮廓阐述一下这个协议,并对某些细节进行了必要的简化,但读者可以在本章结尾的延伸阅读部分找到原始论文作为参考。
1703867227
1703867228 兼容性(compatibility)。零币和零钞为保证很强的匿名性,是有代价的:不同于中心化的混币服务和合币交易,这些协议和现在的比特币不兼容。通过软分叉(soft fork)[1]比特币协议的方式去实施零币在技术上是可行的,但实际操作的难度会对此造成很大的障碍。零钞甚至不能通过软分叉比特币协议的方式去实现,而只能以一种另类币(altcoin)的方式存在。
1703867229
1703867230 加密学保证(cryptographic guarantees)。零币和零钞在协议层已经融入了混币功能,其匿名属性来自加密学的保证,从性质上说,这些保证比我们之前讨论的其他混币技术更好。在隐私保护方面,你不需要信赖任何人,比如,混币服务提供商、混币节点,或其他任何形式的中介,甚至是矿工和共识机制协议。和大多数密码学保证一样,这种匿名性的保证仅仅依赖于攻击者的计算能力上限。
1703867231
1703867232 零币
1703867233
1703867234 为了解释零币,我们首先要介绍一下基础币(Basecoin)的概念,基础币是一种类似于比特币的另类币,而零币是这种数字货币的一种延伸,其所提供的匿名性的核心特点在于,你可以将基础币和零币进行来回转换,并且当你这么做的时候,就打破了旧的基础币和新的基础币之间的关联。在系统里,基础币是你需要进行交易的货币,零币只是提供了一种交易基础币的机制,这种机制可以确保新币和旧币之间毫无关联。
1703867235
1703867236 你可以把你所拥有的每一个零币当作一个令牌,用来证明你拥有这么一个零币并且使其不能再被消费。这种证明机制并不会显示你所拥有的是哪一个零币,而仅仅是证明你确实拥有一个零币,稍后你可以将这个证明给矿工看,以赎回这个证明并取得一个新的基础币。用一个比喻来说,就好比你去赌场用现金换了一些扑克筹码,这些筹码就是一种证明,证明你存了多少现金,等你离开赌场时,就可以拿着这些证明去换相同数量的但并不一样的现金。当然,不像扑克筹码,除了你可以稍后用来赎回一个基础币,你并不能拿零币做任何事情。
1703867237
1703867238 为了在加密数字货币中让这样的机制正常运转,我们要用密码学的方式来执行这些证明,我们需要确保每一个证明只能赎回一个基础币,否则你就可以通过把一个基础币转换成一个零币,然后多次赎回获取更多的免费基础币。
1703867239
1703867240 零知识验证
1703867241
1703867242 我们使用的核心加密学工具是零知识验证,这种方式可以证明一个声明(数学上的)是正确的,而不需要展示可推导该声明正确性的任何其他信息。例如,假设你已经做了很多工作解决了一个哈希谜题,并且你想要向其他人证明你做到了。换而言之,你想要证明“我做到了”这个声明。
1703867243
1703867244 I know x such that H(x‖〈other known inputs〉)<〈target〉
[ 上一页 ]  [ :1.703867195e+09 ]  [ 下一页 ]