主页 > imtoken2.0下载官网 > cc18107498996 的博客:开始放弃:区块链-比特币应用

cc18107498996 的博客:开始放弃:区块链-比特币应用

imtoken2.0下载官网 2023-01-17 05:28:16

什么是区块链?

简单地说,区块链是一个去中心化的分布式账本数据库。去中心化不同于传统的中心化。这里没有中心,或者说每个人都是中心。分布式账本数据库是指记录方式不仅仅是将账本数据存储在每个节点中,而且每个节点都会同步共享和复制总账本的数据。

区块链技术本质上是一种数据库技术。每个块就像一个硬盘,它保存了所有信息并通过密码学对其进行加密。存储的信息不可篡改。

一个比喻让你理解区块链

之前:你家里有一本账簿,你一个人记账。爸爸妈妈把工资交给你,你记在账本上。中间如果贪心想买好吃的,账本上的记录可能少了几十块钱。

使用区块链技术后:记账相当于全家人的调动方式。你记账,爸爸记账,妈妈记账,他们都可以看到总账。改变不了,父母也改变不了。想买烟的爸爸和贪心的你都做不到。

区块链的特点

安全性:区块链不受任何人或实体控制,数据完全复制(分布)在多台计算机上,攻击者没有单一入口点,数据安全更有保障

不可变:一旦进入区块链,任何信息都无法更改,甚至管理员也无法更改。

可访问性:网络中的所有节点都可以轻松访问信息。

没有第三方:区块链的去中心化可以帮助点对点交易。因此,交易或交换资金不需要第三方的批准,区块链本身就是一个平台。

区块链是比特币?

比特币:一种P2P形式的数字货币,不是由特定的货币机构发行,而是根据特定的算法经过大量计算生成,并通过由多个节点组成的分布式数据库进行确认和记录。整个 P2P 网络。密码学旨在确保货币流通各个方面的安全。

因此,比特币是区块链的一种表现形式,区块链并不等同于比特币。区块链是比特币的底层技术和基础设施,比特币是区块链的应用,但并不代表区块链只能应用于比特币。

区块链对未来生活有什么影响?

不需要繁琐的个人证明:原来我们的出生证、房产证、结婚证等,一旦过境就可能失效。区块链的不变性从根本上改变了这种情况。出生证、房产证、结婚证都可以在区块链上公证,成为世人信赖的东西。

就诊时避免重复检查:简单来说就是利用区块链建立一个带有时间戳的通用记录存储库,这样就可以从不同的数据库中提取数据信息。比如你去看病,不需要换医院重复检查,也不需要为了报销医保而反复折腾,节省了时间和费用。

更便捷的出行消费:我们经常使用某些APP寻找酒店等服务,各种平台从中获取佣金。区块链的应用是去除中间商,为服务提供商和客户提供一种安全、去中心化的方式来直接连接和交易。

无需第三方的交易:区块链可以让交易和支付更加高效便捷。区块链平台允许用户创建智能合约,当满足某些条件时这些合约就会生效。这意味着当交易双方同意满足他们的条件时,可以释放自动付款。

产品来源可追溯:如果你买了一个苹果,在区块链技术下,你可以知道从果农生产到流通环节的全过程。其中有政府监管信息、专业检测数据、企业质检数据。

保护版权更有效:创作者将自己的作品放到区块链上,一旦有人使用他的作品,他就会立即知道。相应的版税也会自动支付给创作者。区块链技术不仅可以保护版权,还可以帮助创作者更好、更直接地向消费者销售他们的作品。

生成原理

从比特币的本质来看,比特币的本质其实是一堆复杂算法生成的特殊解。特解是方程组的一组有限解。每个特定的解决方案都解决了方程并且是唯一的。以纸币的类比,比特币是纸币的序列号。一旦您知道钞票上的序列号,您就拥有了钞票。挖掘过程就是通过巨大的计算量不断寻求这个方程组的特解。这个方程组被设计成只有 2100 万个特殊解,所以比特币的上限是 2100 万个。

矿工

比特币系统是建立在P2P(点对点)网络结构上的货币,任何人都可以选择加入网络、转账,甚至参与授权交易。比特币安全的关键是它能够抵抗攻击者以多个虚假身份加入系统。毕竟,任何人都可以下载比特币的源代码并成为比特币节点,而无需向其他任何人表明自己的身份。为了解决这个问题,该协议要求加入系统的节点展示“工作证明”:支付计算能力来解决密码难题,以获得参与比特币协议的资格。参与这种“工作量证明”的节点称为矿工。

矿业

持有比特币并希望转账的用户可以将交易信息(通过他们安装在计算机或智能手机上的软件)发送到比特币网络上的一个节点。比特币网络中的活动节点从用户那里收集这些交易并将它们分发给网络中的对等点——以这样一种方式分发,即每个节点只通知与请求的传输相关的那些节点。交易信息被批量聚合,称为区块,区块链接在一起形成区块链,形成所有已接受比特币交易的记录。区块链中的每个块都通过前驱块的哈希值(实际上是前驱块的唯一标识符)引用其前驱块。比特币网络中的每个节点都维护着区块链的完整副本。

激励措施

比特币的协议规则使得区块的创建变得非常困难:只有包含密码谜题答案的区块才被认为是合法的。作为回报,矿工每次成功创建区块时都会获得比特币奖励。奖励由两部分组成:一是新铸造的比特币,二是从区块中包含的交易中提取的挖矿费。当前的铸造率为每块 12.5 个比特币,这个数量大约每四年减半。随着这个数量的减少,比特币开始越来越依赖采矿费来支付矿工。

加密

比特币使用数字签名来确保只有比特币的所有者才能使用它们。比特币地址的所有者拥有与该地址关联的私钥。为了花费比特币,他们用这个私钥签署交易,证明他们是所有者。公钥与每个比特币地址相关联,任何人都可以使用它来验证数字签名

交易手段

比特币是类似电子邮件的电子现金,交易双方需要一个类似电子邮件地址的“比特币钱包”和一个类似电子邮件地址的“比特币地址”。与发送和接收电子邮件一样,发件人通过计算机或智能手机将比特币直接发送到收件人的地址。

比特币地址是一串大约 33 位长的字母和数字,总是以 1 或 3 开头,例如“1GyQZPCGYMTmqY7NFhdWUrScyadRdz8WJD”。比特币软件可以自动生成地址,生成地址时无需在线交换信息,离线即可。有很多可用的比特币地址。

比特币地址和私钥成对出现,它们的关系就像银行卡号和密码。比特币地址就像一个银行卡号,用于跟踪您在该地址存入了多少比特币。您可以随意生成比特币地址来存储比特币。当生成每个比特币地址时,会生成该地址对应的私钥。此私钥证明您拥有该地址上的比特币。我们可以简单地将比特币地址理解为银行卡号,地址的私钥就是对应银行卡号的密码。只有知道银行 PIN 码,才能使用银行卡号上的钱。所以,在使用比特币钱包时,请保存好您的地址和私钥。

比特币的应用特征

比特币交易数据被打包成“数据块”或“块”后,交易被初步确认。区块链接到前一个区块后,交易被进一步确认。连续6次区块确认后,交易基本不可逆确认。比特币点对点网络将所有交易历史存储在“区块链”中。区块链继续加长,一旦新区块添加到区块链中,就无法移除。区块链实际上是一组去中心化的用户端节点和一个由所有参与者组成的分布式数据库,是所有比特币交易历史的记录。

比特币系统架构

比特币系统从下到上分为6层,存储层、数据层、网络层、共识层、RPC层、应用层。

其中,存储层主要用于存储比特币系统运行中的日志数据和区块链元数据,存储技术主要使用文件系统和LevelDB。

数据层主要用于处理比特币交易中的各类数据,如将数据打包成区块、将区块维护为链式结构、对区块内容进行加密和哈希处理、对区块内容进行数字签名和哈希处理。添加时间戳,将交易数据构建成 Merkle 树,计算 Merkle 树根节点的哈希值等。

区块链可能会分叉,而在比特币系统中,节点总是将最长的链视为正确的链,并在其后不断添加新的区块。

网络层用于构建比特币底层P2P网络,支持多个节点的动态加入和退出,有效管理网络连接,为比特币数据传输和共识提供基础网络支撑服务。

共识层主要采用PoW(Proof Of Work)共识算法。在比特币系统中,每个节点不断地计算一个随机数(Nonce),直到找到一个满足要求的随机数。在一定时间内,最先找到符合条件的随机数将获得打包区块的权利,从而构建了工作量证明机制。

RPC 层实现 RPC 服务,并提供 JSON API 供客户端访问区块链底层服务。

应用层主要承载各种比特币应用,如比特币开源代码中提供的比特币客户端。该层主要用作RPC客户端,通过JSON API与比特币底层进行交互。此外,比特币钱包和衍生应用都建立在应用层之上。

比特币数据结构

一个完整的比特币区块结构主要由以下几部分组成:

数据项

字节

场地

阐明

魔法NO

4

幻数

常数 0xD9B4BEF9

块大小

4

块大小

此字段后的块大小(以字节为单位)

区块头

80

块头

组成块头的几个字段

交易柜台

1-9

交易柜台

此区块中包含的交易数量,包括 coinbase 交易

比特币的应用特征

(一个区块的第一笔交易定义为coinbase交易,即挖矿产生的比特币奖励)

交易

不定

交易数据

区块中记录的交易信息采用原生交易信息格式,交易在数据流中的位置必须与默克尔树的叶子节点顺序一致

区块头的结构由以下部分组成:

字节

场地

阐明

4

版本

区块版本号,表示该区块遵守的验证规则

32

父区块头 HASH

上一个区块的哈希值,使用 SHA256 (SHA256(parent block header)) 计算

32

默克尔根

该区块中交易的 Merkle 树根的哈希值也是通过 SHA256 计算得到的(SHA256())

4

时间戳

区块产生的大概时间,精确到秒的UNIX时间戳,必须严格大于前11个区块的中位时间,全节点也会拒绝那些超过自己2小时时间戳的区块

4

难度目标

该区块的工作量证明算法的难度目标,已使用特定算法进行编码

4

随机数

为了找到满足难度目标的随机数集,为了解决在算力飙升的情况下32位随机数不够的问题,规定可以更改时间戳和coinbase交易信息, 从而扩大 nonce 位数

区块中的交易数据结构由以下部分组成:

字节

场地

子字段

子字段

阐明

比特币的应用特征

4

版本

本次交易规则

1-9

输入计数器

包含的交易输入数量

不定

进入

32

哈希

参考交易哈希

4

指数

参考交易输出指标

不定

解锁脚本(coinbase)

1-9

签名长度

数字签名长度

72

签名值

私钥签名

不定

解锁脚本(普通)

1-9

签名长度

数字签名长度

72

签名值

私钥签名

1-9

公钥长度

65

比特币的应用特征

公钥数据

4

序列号

默认值:0xFFFFFFFF

8

输出

比特币数量

1-9

锁定脚本长度

锁定脚本 (P2PK)

1-9

公钥长度

65

公钥

1

运营商 0

锁定脚本 (P2PKH)

1

操作员 1

1

操作员 2

1-9

地址长度

20

公钥地址

1

操作员 3

1

操作员 4

密码学

区块链技术与密码学密不可分。可以说,密码学是区块链系统的基石之一。

加密和解密

加解密技术是对信息进行编码和解码的技术。编码过程就是加密过程,加密模块将可读信息(即明文)处理成编码形式(即密文)。解码过程就是解密过程,解密模块将代码形式(即密文)转换回可读信息(即明文)。在加解密过程中,密钥是一个非常关键的角色。

比特币的应用特征

目前,加密技术主要分为三种:对称加密、非对称加密和不可逆加密。

对称加密算法:在对称加密算法中,加密和解密的密钥是相同的。对称加密技术有两种基本类型:分组密码和序列密码。对称加密算法的特点是算法开放、计算量小、加密速度快。缺点是交易双方使用相同的密钥。

非对称加密算法:使用两对完全不同但完全匹配的密钥,称为公钥和私钥,公钥和私钥成对使用。数字签名技术基于非对称加密算法。

不可逆加密算法:加密过程中不需要密钥。明文输入后,通过加密算法处理成密文。加密数据无法解密。只有明文被重新输入并再次通过相同的不可逆加密算法处理以获得相同的加密密文。

散列:散列函数,也称为散列函数,是可以将任意大小的数据映射到固定大小的数据的任意函数。作为一种加密算法,哈希函数是一种单向密码系统,即从明文到密文的不可逆映射,只有加密过程,没有解密过程。散列函数的返回值变成散列值、散列码和摘要。哈希函数的主要特点是:压缩性强、计算简单、计算结果单向。

默克尔树

在密码学中,哈希树或默克尔树是一棵树,其中每个叶节点都用数据块的哈希标记,每个非叶节点都用其子节点标签的密码哈希标记。Merkle 树允许对大型数据结构的内容进行有效和安全的验证,并且是哈希列表和哈希链的概括。如果我们需要证明一个区块上是否存在交易Data3(如上面的区块结构,可以得到Merkle树的根的hash值),那么我们只需要Node B和Node的hash值即可G 可以证明形成的 Merkle 路径,过程如下:

Step1:获取交易Data3的哈希值,节点F=Hash(Data3)

Step2:通过节点F和节点G的哈希值得到父节点的哈希值:节点A=Hash(B+C)

Step3:然后将上一步得到的根哈希值与区块头中MerkleTree的根哈希值进行比较。如果相同,则证明区块中有交易Data3,否则表示不存在

默克尔树结构图:

P2P网络

比特币的网络采用基于互联网(Internet)的P2P网络架构。英文是peer to peer,所以也叫peer-to-peer network。顾名思义,网络中的每台计算机都是点对点的,每个节点共同提供网络服务,没有“特殊”的节点。P2P 网络中没有服务器、集中式服务和层次结构。这也是比特币网络或区块链的一个重要特征——去中心化。这样,网络中任何一台机器的故障都不会影响到其他节点,保证了网络的正常运行。

由于每个网络节点都是平等的(即网络层面的节点是平等的,但每个节点在功能上可以有不同的分工,比如钱包节点、挖矿节点等),因此没有“特殊” 中心节点,那么当一个新的网络节点启动时,它如何与其他节点建立连接加入比特币网络呢?

在中心化网络中,新添加的节点只要连接到一个“特殊”的中心节点,就可以加入网络。

为了能够加入比特币网络,比特币客户端将做几件事:

1. 节点会记住它最近成功连接的网络节点,并且当重新启动时,它可以快速重新连接到以前的对等网络。

2.节点将在失去现有连接时尝试发现新节点。

3.当一个或多个连接建立时,一个节点会向它的邻居发送一条包含它自己的 IP 地址的消息。然后相邻节点依次将消息转发给各自的相邻节点,从而保证节点信息被多个节点接收,保证连接更稳定。

4.一个新连接的节点可以向它的邻居发送一个 get-address getaddr 消息,要求他们返回一个已知对等点的 IP 地址列表。节点可以找到要连接的对等点。

5.节点启动时,可以为节点指定一个活动节点IP。如果没有,客户端还会维护一个长期稳定运行的节点列表。这样的节点也称为种子节点(其实和BT下载的种子文件一样),可以通过种子节点快速发现网络中的其他节点。

比特币节点通常使用 TCP 协议,使用 8333 端口与相邻节点建立连接。在建立连接时比特币的应用特征,还会有一个认证“握手”的通信过程,用于确定协议版本、软件版本、节点IP、区块高度等。

分布式一致性和共识算法

区块链系统本质上是一个分布式网络系统,而在分布式系统中,核心问题是“一致性问题”,即如何在分布式网络的各个节点中保持节点数据的一致性。如果在分布式系统中,无法保证一致性,那么分布式系统就变成了一个不可用的系统,所以保证一致性是分布式系统中最重要的内容。目前在各种分布式系统中使用的分布式共识算法有很多,但基本上都是从Paxos分布式共识算法衍生而来的。

在区块链中,实现各个节点数据一致性的算法称为共识算法。比特币系统基于 PoW(工作量证明)算法实现其共识机制。

在比特币系统中,PoW算法的过程可以理解为不断调整Nonce值。调整 Nonce 值是对块头进行双重 SHA-256 哈希运算的过程,使得结果满足给定数量的前导 0 的哈希值。前导 0 的数量取决于挖掘难度。前导 0 越多,挖矿难度越大。

具体处理逻辑如下:

1.生成铸币交易,然后将其与要包含在区块中的所有其他交易组合形成交易列表。然后根据交易列表中的数据生成一棵 Merkle 树比特币的应用特征,并计算 Merkle 树根节点的哈希值。

2.Merkle树根节点的hash值和其他字段(如区块高度、时间戳等)组成区块头,80字节的区块头作为PoW的输入算法。

3.不断改变区块头中的随机数Nonce,对改变的区块头进行双重SHA-256哈希运算。将得到的结果与当前的目标值进行比较。如果小于目标难度,则PoW算法完成。

4.在一定时间内完成PoW算法的第一个区块广播到全网,其他节点验证是否符合规则。如果验证有效,其他节点将收到该区块并将其附加到现有区块链中,然后开始下一轮挖矿。

块的存储

比特币存储是一个由普通文件和 LevelDB 数据库组成的系统。普通文件用于存储块数据,LevelDB 数据库用于存储块元数据。每个块数据文件的大小为 128MB。每个区块的数据(区块头和区块中的所有交易)都会被序列化并以字节码的形式写入到dat文件中。

CS