虾说区块链-52-《精通比特币》笔记七

一直在说区块链是一系列技术结合后的新的技术架构,那么这里分别介绍下这些相关技术,也涉及到一些扩展开去的相关内容。

区块链-《精通比特币》笔记七:

《精通比特币》第二版网络在线阅读地址:

http://book.8btc.com/books/6/masterbitcoin2cn/_book/ch08.html

加密和认证连接:在BIP150/151中提供了比特币通讯加密:tor传输和P2P认证和加密。

Tor传输:Tor洋葱路由网络,提供匿名、不可追踪和隐私的随机网络路径提供数据的加密和封装。在bitcoincore中有多种配置,允许运行通过Tor网络传输节点之间的流量,也提供Tor的隐藏服务,允许各个节点通过Tor直接连接到bitcoin节点。在0.12版本,连接本地的Tor服务,节点自动提供隐藏服务,且Tor和bitcoin core进程作为有足够权限的用户访问Tor认证cookie的用户运行,则自动运行,命令如下:bitcoind --deamon –debug=tor。在日志中看到:ADD_ONION success表示已添加隐藏服务。

对等认证和加密:bitc改进方案BIP150-151中在bitcoin网络P2P传输中增加了对P2P的认证和加密的支持,支持两个节点之间的所有通信的协商加密。具体如下:

BIP-150提供可选的对等认证,允许节点使用ECDSA和私钥对对方的身份进行身份验证。

BIP-151要求在认证之前,节点之间按照BIP-151建立加密通信。

以上两种改进方案允许节点连接到受信任的完整节点的SPV客户端,使用加密和身份验证来保护SPV客户端的隐私。使用身份验证来创建可信的bitcoin网络,防止攻击,P2P加密加强bitcoin对流量分析和隐私侵权监控的阻力。

交易池:在bitcoin中每个节点都会维护一份未确认交易的临时列表,称为内存池和交易池。节点利用这个临时的列表来追踪记录那些在网络上知晓,但为被打包进区块的交易。随着交易的接收,这些内容添加上交易池,并传播到网络中。当然有些节点还维护一个独立的交易池,一个交易的输入和一些未知交易相关,那么这个交易理解为孤立交易,暂时存储在孤立的交易池中,直到相关交易信息接收到。过程如下:一个交易添加到交易池,同时检查孤立交易池,查看是否有孤立交易引用了该交易的输出,任何相关交易进行验证,验证通过,那么孤立交易池中删除该交易,添加上交易池中,使得交易记录相关联,对于加入到交易池中的交易,不再是孤立交易,这个过程重复迭代,使得整个交易链连接起来,触发整个交易链重构。交易池和孤立交易池存储在本地内存中,注意是内存中不是存储在硬盘中,这些交易通过网络传入的消息动态填充,启动时候,交易池和孤立池都是空的,睡着新交易的接收慢慢填充。当然一般bitcoin客户端还会有一个UTXO数据库,这个之前文章有写到过,这称为UTXO池,这和交易池是两个不同的数据集合,UTXO池初始化不能为空,里面包含了数以百万级的未支付交易输出记录,这个永久性存储。最大一个区别点:UTXO池代表包含之前已确认的交易,交易池和孤立池是只包含为确认的交易。

区块链数据结构:区块链的数据结构一般包含交易信息的区块通过顺序有序的链接起来,可以想象一条很长的链,串联每一个有序生成的区块,区块中包含各种交易记录和相关信息。在bitcoin客户端使用LevelDB数据库存储区块链的元数据,每一个区块通过hash指向链接前一个区块。第一个区块称为创始区块,高度表示区块和首区块之间的距离,相隔多少个区块就是高度,顶部是指最新添加或者说是生成的区块。

区块头:每一个区块的区块头会进行SHA-256加密,生成一个hash值,通过这个hash值识别区块链中的区块,区块头中还有一个最重要的作用,通过该区块头的父区块hash值引用前一个区块,每个区块头都包含了父区块的hash值,用于链接,通过这个链接,区块串联成区块链。

区块分叉:这里简单说下,一个区块只有一个父区块,但是会出现有多个子区块,那么这种情况称为分叉,分叉有硬分叉和软分叉之分,之后专门会对分叉作说明,有兴趣可以参考之前写的分叉内容。

父区块hash值:在区块链中保障区块一致性,父区块hash值尤为关键,一旦一个区块的父区块hash值被恶意改变,那么父区块的hash值也必将变化,一次类推,一旦想要改变整个区块链,必须改变每个父区块的hash值,直到初始区块,那么这将是一个巨大的工程。这也保证了区块链的不可改变的一个特性。

本文由币乎社区(bihu.com)内容支持计划赞助。

之前写了点东西,随着对区块链的理解,发现有些理解的并不透彻,重新整理。如有理解不正确的地方,请及时指正,同时有兴趣一块交流的可以加笔者微信:

本文来自企鹅号 - 投河自尽的虾媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏华仔的技术笔记

如何在Spectrum公链上开发Dapp?

Spectrum光谱链是由Ethereum以太坊的链发展而来,所以是完全兼容以太坊。 但是又有不同,主要是共识机制不同,二级架构layer2不同,更加兼容移动...

1182
来自专栏祥云无界

imtoken钱包的使用教程

为了方便大家使用imtoken钱包,在这里将imtoken钱包使用教程详细的给大家展示出来。钱包使用很简单,但是需要大家多熟悉。还有文章中有红色字体提示的内容为...

3K31
来自专栏jouypub

以太坊客户端介绍

首先我们要弄清楚,Geth,Mist,Ethereum Wallet这几个客户端的区别

1827
来自专栏极客编程

如何实现以太坊支付

在这篇文章中,我将实现一个简单但完整的以太坊支付通道。支付通道使用密码签名,以安全、即时、无交易费用重复地传送Ether。

2942
来自专栏华仔的技术笔记

一个真实区块链项目的演练:以太坊Voting Dapp

4977
来自专栏极客编程

java工程师用spring boot和web3j构建以太坊区块链应用

区块链最近IT世界的流行语之一。这项有关数字加密货币的技术,并与比特币一起构成了这个热门的流行趋势。它是去中心化的,不可变的分块数据结构,这是可以安全连接和使用...

1721
来自专栏区块链

从"什么是区块链"到一个小时内构建区块链

区块链是记录的数字账本, 以称作区块的块状数据排列. 这些区块随后通过称为哈希函数的加密验证相互链接.这些区块连在一起形成一个连续的链 - 区块链.

48510
来自专栏智能计算时代

Ethereum - 以太坊项目

以太坊项目进一步扩展了区块链网络的能力,从交易延伸为智能合约(Smart Contract)。 其官网首页为 ethereum.org。 简介 根据以太坊官方的...

2857
来自专栏地方网络工作室的专栏

打造黑苹果(四)安装MACOS系统

打造黑苹果(四)安装MACOS系统前情回顾打造黑苹果(一)组装硬件的选择与组装打造黑苹果(二)制作黑mac系统安装U盘打造黑苹果(三)COMS(BIOS)设置前...

1K0
来自专栏以太坊开发

android和java程序员使用web3j进行区块链以太坊开发详解

如何使用web3j为Java应用或Android App增加以太坊区块链支持,教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,...

3407

扫码关注云+社区