主页 > imtoken钱包app安卓版 > 从入门到放弃:区块链-比特币应用

从入门到放弃:区块链-比特币应用

imtoken钱包app安卓版 2023-02-23 06:47:29

2021-11-03

没事收集整理

目录

什么是区块链?

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

区块链技术本质上是一种数据库技术。 每个区块就像一个硬盘,存储着所有的信息,并通过密码学进行加密。 这些存储的信息不能被篡改。

一个比喻,帮你理解区块链

之前:你家里有一个账本,你一个人保管。 爸爸妈妈给你发工资,你记在账本上。 中间如果嘴馋,想买点好吃的,账本上的记录可能少了几十块钱。

使用区块链技术后:相当于以家庭总动员的方式记账。 你记账,爸爸记账,妈妈记账,他们都能看到账本。 你改变不了,父母也改变不了。 这样一来,想买烟的爸爸和眼馋的你就没办法了。

区块链的特点

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

不可变的:一旦进入区块链,任何信息都无法更改,即使是管理员也无法修改这些信息。

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

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

区块链是比特币?

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

因此,比特币是区块链的一种呈现,区块链不等于比特币。 区块链是比特币的底层技术和基础设施,比特币是区块链的应用,但并不意味着区块链只能应用于比特币。

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

不需要繁琐的个人证件:原来我们的出生证、房产证、结婚证等一过境就可能作废了。 区块链的不可篡改特性从根本上改变了这种情况。 出生证明、房产证、结婚证都可以在区块链上进行公证,成为全球信任的东西。

看病时避免重复核对:简单来说,就是利用区块链建立一个带有时间戳的通用记录库,从而可以从不同的数据库中提取数据信息。 比如看病时,不用再去别的医院反复检查,也不用担心医保报销,省时省钱。

旅游消费更便捷:我们经常使用某些应用程序来查找酒店和其他服务,每个平台都从中获得佣金。 区块链的应用就是去掉中间商,为服务商和客户提供一种安全、去中心化的直接连接和交易方式。

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

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

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

制作原理

从比特币的本质说起,比特币的本质其实就是一堆复杂算法生成的特殊解。 特解是一组可以从方程组中获得的有限解。 并且每一个特解都可以求解方程并且是唯一的。 用纸币来比喻,比特币就是纸币的编号。 如果您知道某张钞票上的序列号,您就拥有这张钞票。 挖矿的过程就是通过大量的计算不断求出这个方程组的特解。 这个方程组被设计成只有2100万个特解,所以比特币的上限是2100万个。

矿工

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

矿业

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

激励措施

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

加密

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

交易方式

比特币算法源代码_比特币用的什么加密算法_比特币算法

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

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

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

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

比特币系统架构

入门到放弃:区块链-比特币应用

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

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

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

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

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

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

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

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

比特币数据结构

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

数据项

字节

场地

阐明

魔术号

4个

幻数

常量 0xD9B4BEF9

块大小

4个

块大小

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

大头

80

块头

组成区块头的几个字段

交易柜台

1-9

比特币算法_比特币算法源代码_比特币用的什么加密算法

交易柜台

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

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

交易

不定

交易数据

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

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

字节

场地

阐明

4个

版本

区块版本号比特币用的什么加密算法,表示该区块遵守的验证规则

32

父区块头HASH

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

32

默克尔根

该区块中交易的默克尔树根的哈希值也是使用SHA256计算的(SHA256())

4个

时间戳

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

4个

难度目标

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

4个

随机数

为了找到满足难度目标的随机数,解决32位随机数在算力飙升的情况下不够用的问题,规定可以更改timestamp和coinbase交易信息来扩容随机数位数

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

字节

场地

子领域

子领域

比特币用的什么加密算法_比特币算法源代码_比特币算法

阐明

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树根的哈希值),那么我们只需要Node的哈希值B 和节点 G 形成的 Merkle 路径可以证明,过程如下:

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

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

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

默克尔树结构图:

入门到放弃:区块链-比特币应用

P2P网络

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

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

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

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

1、节点会记住最近连接成功的网络节点,重启后可以快速重新建立与之前对端节点网络的连接。

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

3. 当一个或多个连接建立时,该节点向其相邻节点发送一条包含自己IP地址的消息。 相邻节点再将此消息依次转发给各自的相邻节点,以保证节点信息被多个节点接收到,连接更稳定。

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

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

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

分布式共识和共识算法

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

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

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

具体处理逻辑如下:

1. 生成一个造币交易,然后和所有其他准备打包进区块的交易组成一个交易列表。 然后根据交易列表中的数据生成Merkle树,计算Merkle树根节点的哈希值。

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

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

4. 一定时间内最先完成PoW算法的区块广播到全网,由其他节点验证是否符合规则。 如果验证有效,其他节点会收到这个区块,并将其追加到已有的区块链上,然后开始下一轮挖矿。

块存储

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

分类:

技术要点:

相关文章: