主页 > imtoken浏览器 > 比特币与区块链原理分析

比特币与区块链原理分析

imtoken浏览器 2023-01-17 09:08:21

一、什么是区块链?

块:信息数据的集合。区块中包含一些特殊的信息,它们前后相互连接,称为“区块链”

块和区块链

官方定义:区块链本质上是一种特殊的分布式数据存储系统。因此,区块链技术也被称为分布式账本技术,是一种互联网数据存储技术。

从数据上看:这里体现的分布式不仅仅是数据的分布式存储,还有数据的分布式记录(即:整个系统由参与者共同维护)

从技术角度看:区块链不是单一的技术,它是多种技术融合的结果,以一种新的结构组合在一起,形成了一种新的数据操作、记录、存储和表达方式。

3.区块链分类

公链:任何人都可以自由参与和退出

比特币算法原理

私有链:权限完全控制在一个组织中

联盟链:加入和退出需要联盟授权

4.区块链的特点

开放共识:任何人都可以参与区块链网络,每个设备都可以充当一个节点,每个节点都可以获取数据的完整副本。基于共识机制,节点通过竞争计算共同维护整个区块链。任一节点发生故障后,其余节点仍可正常工作。

去中心化和去信任化:区块链由许多节点组成一个P2P网络,没有中心化的设备和管理机构。节点之间的数据交换通过数字签名技术进行验证比特币算法原理,无需相互信任。只要按照系统既定的规则进行,节点就不能也不能欺骗其他节点。

交易透明、双方匿名:区块链的运行规则公开透明,所有数据信息也是公开的,因此每一笔交易对节点都是可见的。由于节点之间没有信任,每个参与节点都是匿名的,因为节点之间不需要公开身份。

不可变、可追溯:单个甚至多个节点对数据的修改不能影响其他节点的数据信息,除非可以控制全网51%以上的节点同时修改,难度很大. 区块链中的每笔交易都通过密码学方法与相邻的区块连接起来,因此可以追溯这些信息。

二、区块链的由来

比特币算法原理

1. 背景:区块链技术起源于中本聪2008年的《比特币:一种点对点的电子现金系统》。区块链技术与金融有着内在的紧密联系。

我们先来看看传统支付系统和区块链支付系统的区别:

传统支付系统

区块链支付系统

2.区块链与比特币:区块链技术是比特币的底层技术,抽象比特币技术,我们称之为“区块链技术”。从某种角度来说,比特币是区块链技术的顶级应用。

比特币区块每十分钟打包一次,矿工是打包游戏中争夺区块记账权的人。谁能最快解出SHA256的数学计算,谁先得到一定十分钟内的交易记录。帐户权利。

比特币算法原理

我们来看看区块链支付系统的交易流程:

3.区块链解决的问题:区块链解决的最重要的就是中介信用问题。过去,两个互不相识、互不信任的人,很难达成合作。他们不得不依靠第三方权威,通过区块链技术实现互信传递行为是可能的。

怀疑?

分叉问题

即使区块链是可靠的,但仍然有一个问题没有解决:如果两个人同时向区块链写入数据,也就是同时添加两个区块,因为它们都连接到区块链上。上一个区块,形成了一个分叉。此时应该采用哪个区块?

目前的规则是新节点总是最长的链。如果区块链有分叉,则取决于分叉后面是哪个分叉,并首先到达 6 个新区块(称为“六次确认”)。按10分钟一个区块计算,1小时即可确认。

由于新区块的生成速度是由算力决定的比特币算法原理,所以这条规则意味着算力最大的分支就是正常的比特链。

比特币算法原理

区块链基础技术架构

技术架构分析

应用层:主要完成客户端记账、转账等功能

激励层:以比特币为例,所有比特币都是通过奖励获得出块权的矿工产生的。另一种奖励方式是所有交易都需要向记录区块的矿工支付费用。

共识层:使用某种共识算法处理事物。由于点对点网络中的高网络延迟,每个节点观察到的交易顺序不可能完全一致。因此,区块链系统需要设计一种机制,就相似时间段内发生的交易顺序达成共识。这种在时间窗口内对交易顺序达成共识的算法称为“共识机制”。(常用共识算法:PoW、PoS)

网络层:P2P网络,也称为点对点技术,没有中央服务器。由于服务器分布在各个节点之间,一个节点的损坏对其他部分影响不大。

数据层:P2P网络中的每个节点都以区块链的形式保存所有的交易记录,每个节点都有唯一的私钥。

三、区块链的未来应用

比特币算法原理

区块链1.0————数字货币和去中心化交易(如比特币等)

区块链2.0————数字资产和智能合约(例如:以太坊、Hyperledger)

区块链3.0————DAO,DAC(区块链自治组织,区块链自治公司)---->区块链社会(科学、医疗、教育等,区块链)链+人工智能,区块链+物联网)

四、区块链的缺点

参考源代码

github.com/dvf/blockchain(来源)

hacknoon.com/learn-blockchains-by-building-one-117428612f46(教程)

github.com/anders94/blockchain-demo/(来源)