主页 > imtoken官网下载2.0 > 区块链技术个人笔记

区块链技术个人笔记

imtoken官网下载2.0 2023-09-27 05:08:39

比特币 - 原则

将区块链视为比特币网络的数据库

• 这个数据库以文件的形式存储在互联网上的每个比特币节点上,每个节点都有完整的备份。

• 该数据库记录了自比特币诞生以来所有的比特币转账交易。

• 数据库是逐块存储的,每个块包含一部分交易记录。

• 当要发起比特币交易时,只需要将交易信息广播到网络,矿工将交易信息记录为一个新的区块并连接到原区块链上,交易就完成了。

比特币在经济中不能作为货币使用:因为比特币总量只有2100万枚,螺旋式通货紧缩最终会导致经济逐渐停滞

比特币特点

• 独立性:密码安全

• 不可重复的支出

• 匿名

• 不可伪造性

• 可转移性

• 可分离性

比特币≠区块链

区块链技术是比特币诞生后从比特币中提炼出的技术架构(去中心化),称为“区块链技术”,此后不断发展完善。

块内容

区块头:区块号、前区块HASH值、当前区块HASH值、挖矿随机数、挖矿难度、时间戳

区块内部数据:交易信息 1, 2, ..., n

区块链技术的特点

• 去中心化:没有中央服务器,所有节点权限平等,数据公开透明,数据分布式,存储冗余度高

• 用户匿名:基于非对称加密技术,公钥作为用户名,私钥作为密码,数字签名技术为用户交易提供密码学证据,无需实名认证

• 数据透明:系统公开,区块链数据对所有人公开。 任何人都可以通过开放的接口查询区块链数据并开发相关应用,整个系统信息高度透明

• 不可变:信息一旦被验证加入区块链,将永久保存,对区块链在单个节点上的修改无效,因此区块链的数据稳定性和可靠性极高。

• 集体维护:所有当前参与的节点共同维护交易和区块链。 交易基于密码学而非信任,任何达成协议的双方都可以直接进行支付交易,无需第三方参与

区块链分类(准入机制)

公有链:全球任何人都可以读取的区块链,任何人都可以发送交易,交易可以得到有效确认,任何人都可以参与共识过程。

联盟链:其共识机制由预选节点控制的区块链。 例如,一个由 30 个金融机构组成的社区,每个金融机构都运行一个节点,需要得到其中 20 个金融机构的确认才能使每个区块生效。

私有链:写权限由一个组织控制,读权限的开放程度完全由组织控制。

联盟链和公有链属于两种不同特性的区块链,它们的特性也服从蒙代尔三角,即去中心化和高效不能结合。

区块链基础技术架构

• 应用层(智能合约层):实现转账记账、EVM、代码执行等功能

主要由客户完成账户的记账和转账功能

• 激励层:发行机制、分配机制

发行机制和激励机制:以比特币为例,所有比特币都是通过奖励创建新区块的矿工产生的,大约每四年奖励减半。 一开始,比特币系统每 10 分钟产生一个新区块,每个区块奖励矿工 25 个比特币。 这是商品的发行方式。

另一个激励来源是交易费。 所有的交易都需要支付给记录区块的矿工。 如果某笔交易的手续费不足,矿工将拒绝执行。

• 共识层:PoW(挖矿、算力证明)、PoS(权益证明)、DPOS(授权权益证明)、PBFT等。

拜占庭将军问题:区块链在发送信息时增加了成本。 常见的方法是使用挖矿操作的“工作量证明”来确保一次只有解决算法答案的将军才有权执行 Broadcasting 来解决这个问题。

“双花”问题:区块链为每笔交易加上时间戳,精确到毫秒打仗对比特币的影响,矿工每隔一定的时间只产生一个区块,这段时间内的所有交易都按时间排序验证,验证后才能写入区块通过。

• 网络层:P2P网络、传播机制、验证机制

P2P网络又称点对点技术(point to point),其特点是没有中央服务器,依靠用户群来交换信息的网络架构系统。 基于所有节点都是平等的,即使部分节点的网络状态不好或损坏,对整个网络的影响也很小。

• 数据层:区块数据、链式结构、数字签名、哈希函数、默克尔树、非对称加密

钱包地址:私钥由一个很大的随机数生成,然后私钥通过加密算法生成对应的公钥,公钥再通过BASE可逆算法生成钱包地址。 (钱包地址也可以算出公钥)

区块链矿工的工作内容

以比特币矿机为例:

1、持续接收全网广播的交易信息,验证这些交易信息,杜绝不合理交易。

2. PoW过程:通过不断计算挖矿的随机数nonce,总能得到满足难度的随机数。

3. 将交易信息打包成块,向全网广播。

4. 全网所有节点对区块进行验证。

5、判断分叉,如果没有问题,选择“最长有效链”,最后打包上链完成挖矿。

区块链技术发展史

• 区块链1.0:电子货币、去中心化交易所(代表:比特币系统)

• 区块链2.0:智能合约、数字资产、去中心化各行业应用(代表:以太坊)

• 区块链3.0:~~

智能合约

区块链智能合约是一个事件驱动的、有状态的、多方认可的程序,运行在一个可信共享的区块链账本上,可以根据预设条件自动处理账本上的资产。 说白了,就是一个可以运行在分布式账本上的程序,当满足合约上的条件时,自动触发一个动作。

智能合约的优势在于它们使用程序算法来代替人类仲裁和执行合约。

“智能合约的工作原理很久没有被实现,一个重要的原因是缺乏可以支持可编程合约的数字系统和技术,区块链技术的出现解决了这个问题,它不仅可以支持可编程合约,又具有去中心化的自动化、不可篡改、过程透明可追溯等优点,天然适用于智能合约。因此,也可以说,智能合约是区块链技术的特征之一。”

摘录自:《区块链:从数字货币到信用社会》。

智能合约功能

• 数据透明度

• 不可变的

• 永远运行

智能合约工作流程

开发者完成智能合约的编写; 开发者将智能合约发布到区块链上:开发者向地址为0x0、转账金额为0的收款人发送一笔转账交易,然后将智能合约的代码放在数据字段里面; (注意,必须支付gas费)矿工在区块链上发布智能合约后,会返回一个智能合约的地址; 这时,智能合约存在于区块链上,每个人都可以调用这个智能合约。

分叉:硬分叉、软分叉

比特币之所以有分叉,是因为比特币的底层技术是区块链,而区块链是去中心化的,这就导致了比特币是由一群人维护的。 随着比特币被更多人了解和使用,人们对比特币的想法和需求也随之增加。

一些人开始认为比特币的区块容量太小,TPS低总是会出现拥堵,所以这些人要求比特币升级扩容; 比特币可以具有构建DApp(Decentralization App,去中心化应用)的功能; 有人支持,有人反对。 这种对比特币发展的分歧,可以理解为比特币的分叉。

硬分叉

硬分叉必须要求所有旧节点都升级,否则旧节点将无法识别新节点产生的交易和区块,导致区块链分裂成两条链。

硬分叉实际上将比特币链分成两条完全不同的链,一条是旧链,一条是新链。

可见,所谓硬分叉需要修改的“共识”,是指修改区块数据结构格式,或者说修改交易数据结构格式。

但是,未升级的节点不会接受新规则,这会导致未更新的节点不接受采用新规则的区块; 所以硬分叉是向后兼容的分叉。

因此,硬分叉必须要求所有旧节点都升级,否则旧节点将无法识别新节点产生的交易和区块,导致区块链分裂成两条链。

优势:硬分叉的升级空间要大很多,因为硬分叉只需要考虑老节点产生的交易和区块,硬分叉不需要考虑老节点是否会接受老节点产生的交易新的节点和区块,因此硬分叉可以对交易数据结构和区块数据结构进行更大胆的改变。

软分叉

软分叉是指当新的共识规则发布时,没有升级的节点会因为不知道新的共识规则而产生非法区块,从而产生临时分叉。

软分叉后,不会像硬分叉那样产生两条链,而是留在一条链上。 软分叉会进行一些升级,但不会影响整个系统的稳定性和有效性。 旧节点会兼容新节点,但新节点不会兼容旧节点,两者仍然可以在同一条链上共存。

所以软分叉是向前兼容的分叉。

优点:软分叉可以保证不想升级的人不会升级,这个很常见。

拜占庭将军问题

答案基于:“拜占庭将军问题”

目前存在这样的问题:

11位拜占庭将军出战,各自都有观察敌情和判断的权利,进攻或撤退,怎么可能只靠使者达成协议呢?

一个非常直观的方法是投票。 每个将军做出决定后,将结果“广播”给所有其他将军,让所有将军得到相同的11个(包括他自己)结果,并取多数,得到军方同意的所有Action。

可万一这11位将军中有奸细呢? 假设有9名忠将,5名判官进攻,4名判官撤退,2名密探判官恶意撤退。 虽然结果是错误的撤退,但这种情况是完全可以允许的。 因为这11位将军仍然保持状态一致性。

区块链系统也是一个分布式数据库。 分布式数据库最糟糕的问题肯定不是写入失败或读取失败,而是状态不同步,你感受不到这种不同步。 这样一来,数据的正确性得不到保证,系统也就没有意义了。

如何解决拜占庭将军问题?

答案是:信息同步,共识

11位将军组成了这样一个分布式网络:

每个将军都有一个与其他将军实时同步的消息分类账。

可以验证分类账中每个将军的签名。 如果有任何不一致的消息,你可以知道这些消息与哪些将军不一致。

虽然有不一致的消息,但只要过半同意攻击,少数服从多数,就达成了共识。

因此,在分布式系统中,虽然有坏人,但坏人可以为所欲为(不受协议限制),比如不响应、发送错误信息、向不同节点发送不同的决策、不同的错误节点联合起来做坏事等等。 但是,只要大多数人都是好人,完全可以通过去中心化的方式达成共识。

区块链共识机制

什么是共识机制:共识可以简单理解为在某一方面就不同群体所寻求的共同理解、价值、理念等达成的共识。 共识机制是确定达成某种共识和维持共识的方式。

综上所述,共识机制解决了以下问题:

维护系统的运行秩序和公平性 通过奖惩机制维护系统的稳定运行

在区块链这样的去中心化系统中,在传递信息和传递价值时,共识机制解决并保证了每笔交易在所有记账节点上的一致性和正确性。

区块链这种全新的共识机制,可以在不依赖中心化组织的情况下,实现大规模、高效的协作来完成运行。

PoW(工作量证明)共识

共识机制的核心是:每发送一条消息,都需要证明自己付出了一定的代价(或者你有东西),然后诚实的人会得到奖励,不诚实的人就会受到惩罚

而 PoW 方法是。 每次发送一条消息(上传一个区块),你都要证明你付出了一定的算力。 哈希函数是密码学中在计算难度方面经过反复验证的东西,所以用它作为证明是最有效的,即通过计算哈希函数来满足一定的条件,从而证明:你付出了算力,并获得了回报。

在PoW共识下,节点如何判断发布的区块/交易是否在网络中达成共识?

基本原理就是看区块/交易在区块链浏览器上是否能查到,是否经过了几个区块的确认。 以比特币系统为例打仗对比特币的影响,比特币设置在6个区块后确认,所以如果交易/区块已经链接超过6个区块,则不需要关心回滚,因为在这种情况下返回的滚动的概率非常非常低(除非这个交易/区块的交易价值非常高)。 除了从区块链浏览器查询交易/区块,还可以从多个节点查询。

所以本质上,还是要看能否在全节点上找到区块/交易。 一般来说,如果是价值不高的区块/交易,查询一个全节点就够了。 如果区块/交易携带的价值很高,则查询几个节点并比较结果。

区块链浏览器实际上是一个节点吗?

区块链浏览器连接到一个完整的节点。 一般在一个项目中,区块链浏览器后面会连接几个全节点,以避免某个节点出现问题导致单点故障。

稍后添加...