比特币和区块链笔记

Bitcoin

第一个完全分布式的p2p的数字加密货币
 

完全分布式

没有中心的访问节点,没有任何信用系统

P2p

点对点,网络发行

比特币价值

由挖矿难度决定

原理

怎么工作的

钱包

软件—记录着目为止所有比特币的交易—能管理私钥,生成比特币地址—发送、接受、存储比特币

私钥

独有
一般256位的随机数
可以类比为银行卡密码

公钥

由私钥生成的
公钥私钥并非一一对应
类似银行卡账号
可以看到余额

比特币地址

由公钥产生
第一位是1
由于接收比特币

比特币和区块链笔记_第1张图片

比特币和区块链笔记_第2张图片

加密复杂,验证简单

交易过程

只有jack能收到btc

因为bob用jack的公钥加密信息以及bob自己的数字签名

生成交易后会全网广播

每个人都能收到这个信息但是只有jack能解密,因为是用他的公钥加密的

其他人记录这笔交易

生成区块

区块

记录网络的交易信息

每个区块就是一个账本

大小<=1MB

产生大概在10min

每个区块大概记录4000条交易

区块链

记录比特币交易信息,就是一个账本

区块头

保证区块加密性

比特币和区块链笔记_第3张图片

trans就是交易记录

区块难度

保证区块生成;决定挖矿难度

Nonce

Merkle root的关键参数

Merkel root

根据区块的所有交易记录生成的哈希值,保证区块的难度在一定区间内,

Merkel tree

比特币和区块链笔记_第4张图片

最底层子节点是交易信息

每一个交易的信息都不允许被篡改

哈希函数:输入可以是0~无限位,输出都是一个256位的数——原始文件中任何改动会导致生成值的巨大差别

Pros of Merkel tree

比特币和区块链笔记_第5张图片

只保存头部,因为头部有哈希值
分布式账本,大家都保留了账本,防止篡改——如果一个人想篡改,需要改变所有人的账本

节点

在分布式账本中,节点是网络中参与维护账本的设备或计算机。每个节点都运行着账本的一个副本,并通过共识算法与其他节点进行通信和协作。节点可以是个人计算机、服务器或其他网络设备。它们相互之间通过网络进行连接,并共同构成了分布式账本的网络。

区块

区块是分布式账本中的数据结构,用于存储一系列交易和相关的元数据。每个区块包含一个头部和一组交易记录。头部通常包含区块的哈希值、时间戳、前一个区块的哈希值以及其他元数据。

每年发布比特币恒定,保证了信用

怎么产生一个区块

实际就是在不断记录交易

一个交易产生会向全网进行广播,当所有的矿工收到这条广播后会把所有的交易存入自己当前区块中,当存入交易信息足够多,会为当前交易信息生成一个Merkel root,若难度系数也已满足目标,将该区块向全网进行广播,大家验证难度系数,若认可工作量,大家会把矿工产生的该区块加入到自己本地的区块中去,所有人接着该区块完成下一个区块。一条交易若被六个区块都确认就很难被篡改。【后续有六个区块】

广播交易

区块生成和验证

矿工节点会将收集到的交易信息打包成一个区块,并为该区块生成一个 Merkle Root。此外,矿工还需要通过解决一个复杂的数学难题,即工作量证明(Proof-of-Work)来满足难度系数要求。这个过程被称为挖矿。一旦矿工找到了符合难度系数的解,他们会将该区块广播到比特币网络中。

区块验证和认可

当其他节点收到新的区块广播时,它们会验证区块的有效性和符合规则。这个过程包括验证区块中的交易、验证工作量证明和检查区块的结构。如果区块通过验证,其他节点会接受该区块,并将其添加到自己的本地区块链中。这样,区块链将会延长,形成共识。

在比特币网络中,当其他节点接收到新的交易时,它们会验证交易的有效性,并将其加入到自己的内存池(也称为交易池)中。内存池是一个存储待处理交易的临时区域,其中包含其他节点广播的交易。

交易池的作用是为矿工节点提供交易选择的范围。当矿工准备挖掘新的区块时,它们从内存池中选择一些交易进行打包,形成新的区块。然后,这个新的区块被广播到网络中的其他节点。

在广播区块时,矿工节点通常只广播区块的头部信息和交易的摘要(例如,默克尔树的根)。其他节点接收到区块后,会验证区块的完整性,包括验证区块中的所有交易。如果验证通过,那么它们会将这个区块存储在本地的区块链中,并从内存池中移除相应的交易。
 

交易池

 

验证

 

区块链和挖矿怎么联系起来?

挖矿

 生成区块的过程【产生哈希值的过程】

难度系数

区块上记录账本信息,记录完账本信息要为每个区块生成哈希值,计算哈希值就是在不断付出算力,如果算出的Merkel root满足difficulty target也就是难度系数,大家就认为这个区块是有效的,产生有效区块会得到一定的奖励。
 

难度系数

控制大概每10min生成6个区块

工作量证明

为了生成一个有效的区块,矿工节点需要进行工作量证明,即通过解决一个复杂的数学难题来找到符合难度目标(difficulty target)的区块头部的哈希值。这个数学难题通常是计算区块头部哈希的哈希值(也称为区块哈希),并将其与难度目标进行比较。

难度目标是一个固定的数值,它决定了挖矿的难度。矿工需要使用大量的计算能力来尝试不同的哈希值,直到找到一个满足难度目标的哈希值。这需要不断地尝试不同的随机数(称为Nonce),直到找到一个合适的哈希值。

btc供应恒定

比特币和区块链笔记_第6张图片

每四年减半

比特币和区块链笔记_第7张图片

难度

哈系数的本质是一个穷举算法,产生一个随机数

本质上难度系数不断变小,增加穷举次数,

信用

 

分布式系统

独立的验证机制

 

所有的交易信息被记录在全网

 

Proof of work

nonce是算哈希值的依据,可以不断修改

分叉

 

同时多个符合要求的区块

如何选择

选择较长的链,认为付出越多的算力的链越可靠

区块链

智能合约

公有链

私有链

一般有一个中心节点,

你可能感兴趣的:(区块链)