数据结构 区块链的数据结构是由包含交易信息的区块按照从远及近的顺序有序链接起来的。它可以被存储为平面文件(flat file),或是存储在一个简单数据库中。 存储介质 比特币核心客户端使...
精通比特币(58):比特币P2P网络如何保护隐私?
作为增加比特币P2P网络隐私和安全性的一种方法,有两种解决方案可以通过BIP-150/151提供通信加密:Tor传输和P2P认证和加密。 Tor运输 Tor代表洋葱路由网络,是一个软件项...
精通比特币(57):SPV节点的隐私
实现SPV的节点的隐私比整个节点更弱。完整节点接收所有交易,因此不会显示关于它的钱包中是否使用某个地址的信息。 SPV节点接收与其钱包中的地址相关的经过过滤的列表。结果,它减少了所有者的隐私。 &nb...
精通比特币(55):Bloom过滤器如何工作?
Bloom过滤器的实现是由一个可变长度(N)的二进制数组(N位二进制数构成一个位域)和数量可变(M)的一组哈希函数组成。这些哈希函数的输出值始终在1和N之间,该数值与二进制数组相对应。并且该函数为确定...
精通比特币(54):通俗讲解Bloom过滤器原理
Bloom过滤器是一个允许用户描述特定的关键词组合而不必精确表述的基于概率的过滤方法。它能让用户在有效搜索关键词的同时保护他们的隐私。在SPV节点里,这一方法被用来向对等节点发送交易信息查询请求,同时...
精通比特币(53):简易支付验证(Simplified Payment Verification) SPV节点简介
并非所有的节点都有能力储存完整的区块链。许多比特币客户端被设计成运行在空间和功率受限的设备上,如智能电话、平板电脑、嵌入式系统等。对于这样的设备,通过简化的支付验证(SPV)的方式可以使它们在不必存储...
精通比特币(52):全节点如何同步区块链?
一个全节点连接到对等节点之后,第一件要做的事情就是构建完整的区块链。 如果该节点是一个全新节点,那么它就不包含任何区块链信息,它只知道一个区块——静态植入在客户端软件中的创世区块。新节点需要下载从0号...
精通比特币(45):具有流量控制的脚本
比特币脚本的一个更强大的功能是流量控制,也称为条件条款。您可能熟悉使用构造IF ... THEN ... ELSE的各种编程语言中的流控制。比特币条件条款看起来有点不同,但是基本上是相同的结构。 &n...
精通比特币(44):针对费用狙击(Fee Sniping)的时间锁定
费用狙击是一种理论攻击情形,矿工试图从将来的块(挑选手续费较高的交易)重写过去的块,实现“狙击”更高费用的交易,以最大限度地提高盈利能力。 例如,假设存在的最高块是块#100,000。如...
精通比特币(43):中位时间过去Median-Time-Past
作为激活相对时间锁定的一部分,时间锁定(绝对和相对)的“时间”方式也发生了变化。在比特币中,墙上时间(wall time)和共识时间之间存在微妙但非常显著的差异。 比特币是一个分散的网络...