区块是一种被包含在公开账簿(区块链)里的聚合了交易信息的容器数据结构。它由一个包含元数据的区块头和紧跟其后的构成区块主体的一长串交易列表组成。区块头是80字节,而平均每个交易至少是250字节,而且平均...
精通比特币(60):区块链简介
数据结构 区块链的数据结构是由包含交易信息的区块按照从远及近的顺序有序链接起来的。它可以被存储为平面文件(flat file),或是存储在一个简单数据库中。 存储介质 比特币核心客户端使...
精通比特币(59):交易池和UTXO池
比特币网络中几乎每个节点都会维护一份未确认交易的临时列表,被称为内存池或交易池。节点们利用这个池来追踪记录那些被网络所知晓、但还未被区块链所包含的交易。 例如,保存用户钱包的节点会利用这个交易池来记录...
精通比特币(58):比特币P2P网络如何保护隐私?
作为增加比特币P2P网络隐私和安全性的一种方法,有两种解决方案可以通过BIP-150/151提供通信加密:Tor传输和P2P认证和加密。 Tor运输 Tor代表洋葱路由网络,是一个软件项...
精通比特币(57):SPV节点的隐私
实现SPV的节点的隐私比整个节点更弱。完整节点接收所有交易,因此不会显示关于它的钱包中是否使用某个地址的信息。 SPV节点接收与其钱包中的地址相关的经过过滤的列表。结果,它减少了所有者的隐私。 &nb...
精通比特币(56):SPV节点如何使用Bloom过滤器?
Bloom过滤器用于过滤SPV节点从其对等体接收的交易(和包含它们的块),仅选择SPV节点感兴趣的交易,而不会泄露其感兴趣的地址或密钥。 SPV节点将初始化“过滤器”为“空”;在该状态下...
精通比特币(55):Bloom过滤器如何工作?
Bloom过滤器的实现是由一个可变长度(N)的二进制数组(N位二进制数构成一个位域)和数量可变(M)的一组哈希函数组成。这些哈希函数的输出值始终在1和N之间,该数值与二进制数组相对应。并且该函数为确定...
精通比特币(54):通俗讲解Bloom过滤器原理
Bloom过滤器是一个允许用户描述特定的关键词组合而不必精确表述的基于概率的过滤方法。它能让用户在有效搜索关键词的同时保护他们的隐私。在SPV节点里,这一方法被用来向对等节点发送交易信息查询请求,同时...
精通比特币(53):简易支付验证(Simplified Payment Verification) SPV节点简介
并非所有的节点都有能力储存完整的区块链。许多比特币客户端被设计成运行在空间和功率受限的设备上,如智能电话、平板电脑、嵌入式系统等。对于这样的设备,通过简化的支付验证(SPV)的方式可以使它们在不必存储...
精通比特币(52):全节点如何同步区块链?
一个全节点连接到对等节点之后,第一件要做的事情就是构建完整的区块链。 如果该节点是一个全新节点,那么它就不包含任何区块链信息,它只知道一个区块——静态植入在客户端软件中的创世区块。新节点需要下载从0号...