主页 > imtoken钱包有几个版本 > 比特币区块链技术分析

比特币区块链技术分析

imtoken钱包有几个版本 2024-01-18 05:07:50

比特币底层区块链技术是什么?近年来,各种技术层出不穷,大数据、云计算、人工智能等相关技术异常火爆,比特币的火爆也引起了人们的关注。这也大大增加了其他人对比特币底层技术——区块链技术的兴趣。2015年被称为区块链技术元年。现在,距离比特币的流行已经过去了两年多。人们对区块链技术的热情并未消退。那么,比特币的底层区块链技术是什么??

一、区块链技术

1.什么是区块链?

区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新应用模式。所谓共识机制,就是在区块链系统中实现不同节点之间建立信任和获取权益的数学算法。区块链是比特币的一个重要概念。它本质上是一个去中心化的数据库。比特币的底层技术。区块链是一系列使用加密方法关联的数据块。每个数据块都包含比特币网络交易的信息,用于验证其信息的有效性(防伪)并生成下一个块。

2.区块链基础

如果将区块链作为状态机,每笔交易都是一次改变状态的尝试,每次共识产生的区块是参与者对区块中所有交易内容引起的状态改变结果的确认。

Transaction:导致账本状态发生变化的操作,例如添加一条记录

Block:记录一段时间内发生的交易和状态结果,是对当前账本状态的共识

链:由区块按照出现的顺序串联而成,是整个状态变化的日志记录。

3.区块链需要解决的问题

如何以去中心化的方式共享数据?如何确保账户不被盗用?如何保证账户余额充足?如何保证交易记录不被篡改?谁负责记账?积极性?

4.区块链功能

权力下放

由于采用分布式记账和存储,没有中心化的硬件或管理机构,任何节点的权利和义务都是平等的,系统中的数据块由整个系统中具有维护功能的节点共同维护。

由于区块链的去中心化特性,比特币也具有去中心化特性。

开放性

系统是开放的,除了交易双方的隐私信息被加密,区块链的数据对所有人开放,任何人都可以通过开放的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明 。

比特币 区块链技术

自治

区块链采用基于共识的规范和协议(例如一套公开透明的算法),使整个系统中的所有节点都可以在去信任的环境中自由、安全地交换数据,从而使对“人”的信任变为信任在人们”。机器的信任,任何人为干预都行不通。

信息不可篡改

一旦信息被验证并添加到区块链中,它将被永久存储。除非可以同时控制系统中超过 51% 的节点,否则单个节点上对数据库的修改是无效的,因此区块链的数据是稳定的 高可靠性和可靠性。

匿名

由于节点之间的交换遵循固定的算法,数据交互是去信任的(区块链中的程序规则会决定活动是否有效),所以交易对手不需要通过公开身份让对方信任自己,对信用的积累很有帮助。

二、P2P网络与通信技术(分布式计算网络)

1.自动发现

通过种子文件,获取初始节点(地址和端口),连接初始节点,获取初始节点已知的Peer,向各个Peer广播自己的地址和端口,接收各个Peer广播的地址信息,构建网络的全貌或片段。

2. 技术领域

分布式存储、分布式计算、分布式协作

多播

流媒体

搜索引擎

3.通信协议

比特币 区块链技术

napster、Gnutella、eDonkey、Bittorrent(文件分发协议)

XMPP、Jabber(即时消息协议)

Paxos、Gossip(分布式系统状态同步协议)

JXTA

4.使用HASH算法和非对称加密签名技术

每个节点,每个人都有一对唯一的公钥和私钥

公钥也是每个节点和个人的地址和账号

私钥是证明“我就是我”的唯一手段

HASH算法对数据进行正则化

5.算法

RSA、Elgamal、DH、ECC

SHA256、 RIMPED160

6.密钥对通常使用椭圆曲线算法生成

比特币密钥长度:256 位

公钥哈希 = RIMPED160(SHA256(公钥))

比特币 区块链技术

比特币地址=1+Base58(0+公钥哈希值+校验码)

校验码 = 前四个字节 (SHA256(SHA256(0+公钥哈希值)))

7. 加密

发送者使用接收者的公钥加密数据

接收方使用自己的私钥解密数据

通常使用这个方面来交换对称加密的Key

8.签名

发送方使用HASH算法计算数据的HASH值

发送者用自己的私钥对HASH值进行加密,得到签名

接收方使用HASH算法计算数据的HASH值

接收方使用发送方的公钥解密签名,得到发送的HASH值

比较两个 HASH 值的一致性

9.参考

ElGamal 算法是一种比较常见的加密算法,它是基于 1984 年提出的公钥密码体制和椭圆曲线加密体制。它既可以用于数据加密,也可以用于数字签名,其安全性取决于计算离散对数的问题有限域。在加密过程中,生成的密文长度是明文长度的两倍,每次加密后的密文中都会生成一个随机数K。离散对数问题的几个性质主要应用于加密:求解离散对数(可能)是困难的,而它的逆指数运算可以使用平方乘法有效地计算。也就是说,在适当的组 G 中,指数函数是单向函数。

椭圆曲线密码系统是目前已知的公钥系统,它为每个比特提供最高的加密强度。求解椭圆曲线上离散对数问题的最佳算法是 Pollard rho 方法,其时间复杂度为 ,完全是指数级的。其中 n 是方程 (2) 中 m 的二进制表示的位数。当 n=234 时,大约为 2117,它需要 1.6×1023 MIPS 年。而已知 RSA 使用的是大整数因式分解的难题。目前一般来说最好的因式分解算法的时间复杂度是次指数的。当 n=2048 时,需要 2x1020MIPS 年。也就是说,当加密RSA 的密钥使用 2048 位时,使用 234 位的 ECC 密钥获得的安全强度还是要高得多。它们之间的密钥长度相差9倍,ECC密钥越大,它们之间的差异越大。大的。较短的ECC密钥的优势非常明显,随着加密强度的增加,密钥长度变化不大。

比特币 区块链技术

DH Diffie-Hellman算法(DH算法)是一种密钥协商协议,是公钥密码系统的创始人Diffie和Hellman提出的一种思想。简单地说,它允许两个用户在公共媒体上交换信息,以生成可以共享的“一致”密钥。也就是说,甲方生成一对密钥(公钥、私钥),乙方根据甲方的公钥生成乙方的密钥对(公钥、私钥)。以此为基准,作为数据传输保密性的基础,双方使用相同的对称加密算法构造本地密钥(SecretKey)对数据进行加密。这样,在交换本地密钥(SecretKey)算法后,甲乙双方公开自己的公钥,使用对方'加密数据 s 公钥和刚刚生成的私钥,可以同时使用对方的公钥和自己的私钥进行数据配对。解密。不仅是甲乙双方,还可以扩展为多方之间共享数据通信,从而完成网络交互数据的安全通信!该算法源自中国同余定理——中国剩余定理。

三、区块链数据库

1.典型特征

去中心化、分布式、块存储数据库

块(标题+正文)

随机数

时间戳

包含创建父块之后和创建此块之前的所有交易;

满足一定条件的区块HASH;

a) SHA256(SHA256(版本 + prev_hash + merkle_root + ntime + nbits + x ))

b) Target值由动态难度系数决定,Target越小难度越高;

2. 参考

Merkle 树是由一组叶节点、一组中间节点和一个根节点组成的二叉树。最底部的一组叶子节点包含基本数据,每个中间节点是它的两个孩子的哈希,根节点也是它的两个孩子的哈希,代表默克尔树的顶部。Merkle 树的目的是允许块数据零碎传输:节点可以从一个源下载块头,从另一个源下载与它们相关的树的其余部分,并且仍然能够确认所有数据都是正确的。

Merkle 树协议可以说对比特币的长期可持续性至关重要。2014 年 4 月,比特币网络上的一个完整节点——存储和处理所有区块的全部数据的节点——占用了 15GB 的内存,并且以每月超过 1GB 的速度增长。简化支付验证(SPV)协议允许存在另一种类型的节点,这样的节点称为“轻节点”,它下载块头,使用块头确认工作量证明,然后只下载“ Merkle 树的分支“与其交易相关”。这允许轻节点通过简单地下载整个区块链的一小部分来安全地确定任何比特币交易的状态和账户的当前余额。

比特币 区块链技术

四、记账权竞争与奖励制度(挖矿)

1.概览

为了防止可预测的记账节点被控制或攻击,导致错误记账行为,区块链技术采用了竞争记账权的做法:

任何节点都可以参与记账,所以记账节点不可指望比特币 区块链技术,不易被控制。

比赛的过程就是看谁先算出满足条件的HASH值

每次计算必须从最后一个有效块开始,消耗大量计算机CPU,增加了伪造会计数据的成本

计算结果必须得到大多数节点的认可(共识算法)才能成为新区块。在实际算法中,如果该区块在最长的区块链上,则为官方认可的区块比特币 区块链技术,即大部分节点认可计算结果,并愿意在该结果下继续计算。

这个过程称为挖掘或工作证明 (POW)。参与挖矿的节点称为矿工,参与协同挖矿的矿工联盟称为矿池

a) 以上一个区块为起点,计算满足条件的HASH值;

b) 将计算结果广播给其他节点;

c) 当其他节点验证计算结果正确时,对结果进行识别,并以结果为起点重新计算;

d) 当单位时间内达到共识批准要求时,该区块成为正式批准的区块。

这个过程称为系统鼓励挖矿积极性,奖励竞赛成功的记账节点

a) 给每个区块矿工一个直接的“现金”奖励。例如,比特币网络提供 25 个比特币,以太坊提供 5 个 ETH;

b) 以太坊:包含在区块中的交易费用由发起节点和记账节点分摊(发起节点占 75%,记账占 25%)。

2. 参考

比特币使用的 SHA256 算法有 2^256 个输出。如果我们做 2^256+1 个输入,必然会发生碰撞;即使从概率的角度来看,如果我们进行 2^130 次输入,碰撞的可能性也将达到 99%。但是,我们可以计算出,假设一台计算机每秒散列 10,000 次,则需要 10^27 年才能完成 2^128 次散列!此时,考虑一种情况:如果有两个矿工得到正确答案并生成一个块并广播它时会发生什么?这时,区块链上同一位置有两个区块,就发生了所谓的“分叉”。分叉是绝对不允许的,所以当矿工发现区块链分叉时,会选择最长的继续计算,较短的会被丢弃。