区块链技术个人笔记

比特币-原理
可以把区块链想象成比特币网络的数据库
• 这个数据库以文件形式存放在互联网的各个比特币节点上,每个节点都有一份完整的备份。
• 这个数据库记录着自比特币诞生以来的所有比特币转账交易。
• 这个数据库是一块一块存储的,每一块包含一部分交易记录。
• 当要发起一笔比特币交易的时候只需要把交易信息广播到网络中,矿工把交易信息记录成一个新的区块连接到原来区块链上,交易就完成了。

比特币不能作为货币应用于经济:因为比特币总量只有2100万,螺旋式通缩最后会导致经济逐步停滞

比特币特性
• 独立性:密码学安全
• 不可重复花费
• 匿名性
• 不可伪造性
• 可传递性
• 可分性

比特币 ≠ 区块链
区块链技术是比特币诞生之后,从比特币中提取出其中的技术体系架构(去中心化),称之为“区块链技术”,并且在这之后不断的发展完善

区块内容
区块头:区块编号、上一区块HASH值、本区块HASH值、挖矿随机数、挖矿难度、时间戳
区块内部数据:交易信息1、2、…、n

区块链技术特征
去中心化:没有中心服务器,所有结点权限对等、数据公开透明,数据分布式,高冗余存储

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

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

不可篡改:一旦信息经过验证并添加至区块链,就会永久存储起来,单个节点上对区块链的修改是无效的,因此区块链的数据稳定性和可靠性极高。

集体维护:所有当前参与的节点共同维护交易及区块链,交易基于密码学原理而不基于信任,使得任何达成一致的双方,能够直接进行支付交易,不需第三方的参与

区块链分类(准入机制)
公有链:全世界任何人都可读取的、任何人都能发送交易且交易能获得有效确认的、任何人都能参与其中共识过程的区块链。
联盟链:共识机制受到预选节点控制的区块链。如30个金融机构组成的共同体,每个机构都运行着一个节点,而且为了使每个区块生效需要获得其中20个机构的确认。
私有链:写入权限仪控制在一个组织手里,而读取权限对外开放的程度完全由该组织控制的区块链。

联盟链和公有链属于不同特色的两种区块链,他们的特点也受制于蒙代尔三角,即去中心化和高效不可兼得。

区块链基础技术架构
应用层(智能合约层):实现转账和记账,EVM,执行代码等功能
主要由客户端完成对账户的记账和转账功能

激励层:发行机制、分配机制
发行机制、激励机制:以比特币为例,所有的比特币均通过奖励给那些创建新区块的矿工的方式产生,该奖励大约每四年减半。刚开始比特币系统每10分钟产生一个新区块,每个区块奖励25个比特币给矿工,这是货而发行的方式。
另一个激励的来源则是交易费,所有交易都需要支付手续费给记录区块的矿工,如果某笔交易的交易费不足,那么矿工将拒绝执行。

共识层:PoW(挖矿,算力证明)、PoS(权益证明)、DPOS(授权股权证明)、PBFT等
拜占庭将军问题:区块链通过发送信息时加入成本,常用的方法是通过挖矿运算的“工作量证明(Proof of Work)” ,保证在一个时间只有解出算法答案的那个将军有权利可以进行广播,从而解决了这个问题。
“双花”问题:区块链为每一笔交易加入了时间戳,精确到毫秒,矿工每隔一定时间才生成一个区块,在这个时间内的所有交易都按照时间进行排序并验证,验证通过后才能写入区块。

• 网络层:P2P网络、传播机制、验证机制
P2P网络又称点对点技术(point to point),其特点是没有中心服务器,依赖用户群体交换信息的一种网络架构体系。基于所有节点都是对等的,那么即使部分节点网络状态不好或者遭到破坏,对于整个网络影响不大。

• 数据层:区块数据、链式结构、数字签名、哈希函数、Merkle tree、非对称加密
钱包地址:通过大随机数生成私钥,然后私钥通过加密算法生成对应的公钥,接着公钥通过BASE可逆算法生成钱包地址。(钱包地址也可以算出公钥)

区块链矿工的工作内容
比特币miner 为例:
1、不断接收来自全网广播的交易信息,验证这些交易信息,排除掉不合理的交易。
2、PoW过程:通过不断计算挖矿的随机数nonce,一直得到符合难度的随机数。
3、将交易信息打包成区块,并广播给全网。
4、全网中所有节点验证该区块。
5、对分叉进行判断,如果没有问题,选择“最长有效链”,最后打包上链,完成挖矿。

区块链技术发展史
• 区块链1.0:电子货币、去中心化交易(代表:比特币系统)
• 区块链2.0:智能合约、数字资产、去中心化在各行业应用(代表:以太坊)
• 区块链3.0:~~

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

智能合约的优势是利用程序算法替代人仲裁和执行合同。

“智能合约的工作理论迟迟没有实现,一个重要原因是因为缺乏能够支持可编程合约的数字系统和技术。区块链技术的出现解决了该问题,不仅可以支持可编程合约,而且具有去中心化、不可篡改、过程透明可追踪等优点,天然适合于智能合约。因此,也可以说,智能合约是区块链技术的特性之一”
摘录来自: “区块链:从数字货币到信用社会”。

智能合约特点
• 数据透明
• 不可篡改
• 永久运行

智能合约工作流程

  1. 开发者完成智能合约编写;
  2. 开发者将智能合约发布到区块链上:开发者向地址为0x0的收款人发一笔转账交易,转账金额为0,然后将智能合约的代码放到data域里面;(注意,gas费用要给的)
  3. 然后矿工将智能合约发布到区块链上后,会返回一个智能合约的地址;
  4. 此时智能合约就存在区块链上面了,所有人都可以调用这个智能合约。

分叉:硬分叉、软分叉
比特币之所以会产生分叉这个行为,是因为比特币的 底层技术区块链,而区块链是具有去中心化特性的,这便导致比特币是由一群人来维护的。随着比特币被更多的人所了解和使用,人们对比特币的想法和要求也多了起来。

一些人开始觉得比特币的区块容量太小,低TPS总出现拥堵,于是这些人要求比特币升级扩容;一些人又觉得比特币的功能太单一,今后的发展不容乐观,于是这些人又要求比特币能够有搭建DApp(Decentralization App,去中心化应用)的功能;有人支持就有人反对,这种对比特币发展的分歧便可以理解为比特币的分叉。

硬分叉

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

硬分叉其实是把比特币这条链直接分成了两条完全不同的链,一条是旧链,一条是新链。

  • 旧链即是不愿意让比特币分叉的社区成员所坚持的原有的链;
  • 新链即是社区成员希望在现有区块链上进行技术优化改进所生成的链,这两条链此后将不再有交集,完全按各自的道路发展。

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

但是,没有升级的节点就会不接受新的规则,会导致未更新的节点不接受采取新规则的区块;所以硬分叉是一种向后兼容的分叉。
所以,硬分叉必须要求所有旧节点进行升级,否则旧节点就无法识别新节点生产的交易和区块,导致区块链分成两条链。

优势:硬分叉的升级空间则要大很多,因为硬分叉只要考虑能够接受以前旧节点生产的交易和区块就可以了,硬分叉不需要考虑旧节点是否会接受新节点生产的交易和区块,所以硬分叉就可以对交易数据结构和区块数据结构更大胆的修改。

软分叉
软分叉就是当新共识规则发布后,没有升级的节点会因为不知道新共识规则下,而生产不合法的区块,就会产生临时性分叉

软分叉之后不会像硬分叉一样产生两条链,而是还会保持在一条链上,软分叉会进行一些升级,但是不会影响整个系统的稳定性和有效性,旧节点会兼容新节点,只是新节点不兼容旧节点而已,二者依然可以共存在一条链上。
所以软分叉是一种向前兼容的分叉。

优势:软分叉可以保证不想升级的人不去升级,这种情况很普遍存在。

拜占庭将军问题

答案基于:《The Byzantine Generals Problem》

目前有这么个问题:
11位拜占庭将军去打仗,他们各自有权力观测敌情并作出判断,进攻或撤退,那么怎么让他们只用传令兵达成一致呢?
一种很符合直觉的方法就是投票,每位将军作出决定后都将结果“广播”给其余所有将军,这样所有将军都能获得同样的11份(包括自己)结果,取多数,即可得到全军都同意的行为。

但如果这11位将军中有间谍呢?假设有9位忠诚的将军,5位判断进攻,4位判断撤退,还有2个间谍恶意判断撤退。虽然结果是错误的撤退,但这种情况完全是允许的。因为这11位将军依然保持着状态一致性。

而区块链系统也是一种分布式数据库,分布式数据库最糟糕的问题绝不是写入或者读取失败,而是状态不同步,还感受不到这种不同步。 从而导致后果就是数据正确性不能保证,那系统将没有任何意义了。

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

答案是:信息同步,达成共识

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

  1. 每个将军都有一份实时与其他将军同步的消息账本。

  2. 账本里有每个将军的签名都是可以验证身份的。如果有哪些消息不一致,可以知道消息不一致的是哪些将军。

  3. 尽管有消息不一致的,只要超过半数同意进攻,少数服从多数,共识达成。

由此,在一个分布式的系统中,尽管有坏人,坏人可以做任意事情(不受协议限制),比如不响应、发送错误信息、对不同节点发送不同决定、不同错误节点联合起来干坏事等。但是,只要大多数人是好人,就完全有可能去中心化地实现共识。

区块链共识机制

什么是共识机制:共识可简单理解为,不同群体所寻求的共同的认识、价值、想法等,在某一方面达成的一致意见。共识机制就是确定达成某种共识和维护共识的方式。

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

  1. 维护系统的运作顺序与公平性
  2. 通过奖惩维护系统的稳定运行

在区块链这样的去中心化系统中,在进行传输信息、价值转移时,共识机制解决并保证每一笔交易在所有记帐节点上的 一致性正确性 问题。

区块链的这种新的共识机制使其在不依靠中心化组织的情况下,依然大规模高效协作完成运转。

PoW(工作量证明)共识
共识机制的核心是:每发一条消息,你需要证明你付出了一定代价(或者你拥有一些东西),然后诚实人会收到奖励,于是相当于不诚实的人会受到惩罚

而PoW的方法是。每发一条消息(上传一个区块)的时候,你要证明你付出了一定的算力。而哈希函数是密码学上计算难度经过反复验证的东西,所以用它来做证明是最有效不过的了,即通过计算哈希函数来满足某个条件,以此证明你付出了算力,进而得到奖励。

PoW共识下,节点如何确定所发区块/事务已经在网络中达成共识?
基本原则是,看这个区块/事务在区块链浏览器上能否查到,是否已经经过了若干个区块的确定。以比特币系统为例,比特币设定是经过6个区块的确认,所以假如事务/区块之后已经链接6个区块以上了,就不需要在意回滚了,因为这种情况下回滚的概率非常非常低(除非这笔事务/区块的交易价值非常之高)。而除了从区块链浏览器查询事务/区块,也可以从若干个节点来查询。

所以本质上来说,就看该区块/事务能不能在全节点上查到。一般如果是价值低的区块/事务,查询一个全节点就可以了。如果该区块/事务承载的价值较高,那么查询若干个节点,对比结果即可。

区块链浏览器实际上是一个节点吗?
区块链浏览器所连接的是一个 全节点。一般在项目中,区块链浏览器的背后会连接几个全节点,以免某个节点出现问题所导致的单点故障。

后续待补充…

  • 16
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值