Take you through Blockchain

start blockchain

Posted by     "SLY" on Sunday, September 3, 2023

Intro—BTC

1.def

比特币是一种基于分布式网络的数字货币,其价值由广泛的共识来决定。

2.共识机制

比特币网络中的所有节点都会接收到一组交易记录(该记录作为一个区块保存),然后把这个区块更新到本地的账本记录中。节点无法随意增加记录,否则整个比特币网络中的记录就无法保持一致。为了保持记录一致,那么必须确认哪个区块被优先写入,也就是需要以某一个节点的操作为准。但如果人为规定以某个节点为准,就意味着这个节点比其他节点更权威,相当于变成了一个中心节点,那么去中心化的优势就荡然无存。

那么在比特币系统中,需要如何保持各个节点的账本数据记录一致呢,即按照一个统一的规则行动,以便最终形成一个所有人都认可的公共账本?

比特币使用的共识算法叫做PoW共识机制,即Proof of Work(工作量证明),率先完成工作量证明的节点,拥有区块写入权,其他的节点在此区块的基础上(最长链的基础上)进行后续交易记录的工作量证明。

挖矿:

工作量证明中最重要的是计算一个数学难题,解此难题唯一的方式是不断的尝试,直到试出“答案”,率先完成解答的节点可以获取一笔奖励,最初奖励是每个区块50个比特币,之后每大约4年减半,当前为每区块 6.25 比特币。由于完成工作量证明有一定的随机性,通常这个过程也称为“挖矿”,参与挖矿的节点,则称为“矿工”。

矿工的收益不仅仅包含出块奖励,同时还有交易手续费收益,根据中本聪的设想,当出块奖励越来越小后,矿工的收益将主要来自于交易手续费。

3.attribution

去中心化decentralization:比特币的账本数据存储在区块链中,而区块链本身存储在千千万万的节点中,没有一个中心化的存储设备。 比特币账本数据面向所有人公开,任何人都可以把它存储到自己的机器中。

4.Payment method

btc的账户用地址来表示,当需要转账时,可以理解为:

"from":"1ABzp1eP5QGefi2DMPTf..."
"to":"3FRdnTq18LyNveWa1gQJcgp..."
"amount":"1 btc"

eg:

1)btc常见的地址类型:

  1. P2PKH 地址,也叫 “传统地址(Legacy address)”,以数字 “1” 开头,长度为 26 个到 36 个字符, 如:1ABzp1eP5QGefi2DMPTfTL5SLmv7DivfNa
  2. P2SH 地址,以数字 “3” 开头, 如:3FRdnTq18LyNveWa1gQJcgp8qEnzijv5vR .
  3. P2WPKH 地址,也叫 “Bech32 地址”,是一种高级的地址,以 “bc1” 开头.

2)private key&public key

当某地址发起交易时,要求发起人对交易信息进行签名,签名是用该地址对应的私钥进行的

当我们创建一个比特币地址(账户时),会首先生成一个随机数作为私钥,然后根据**椭圆曲线算法(ECDSA)**计算出公钥,然后在根据哈希运算及校验编码得到比特币地址

即得到地址的过程为:

(由此可见当持有某地址的private key 就是持有该地址的btc,并且无法通过地址反推key)

3)UTXO 模型(Unspent Transaction Output)

比特币基于UTXO的结构存储有关用户余额的数据,系统中用户的余额是用户具有私钥的UTXO的总值。

一个 UTXO 代表 “一整块” 的可以使用比特币,每个UTXO都有一个所有者和一个面值。比特币的交易是不断消费老 UTXO 产生新的 UTXO 的过程,当我们要使用一个 UTXO 时,就是对用私钥 UTXO 进行解锁(签名),以便使用其中的比特币。

优点:

拥有更高程度的隐私,用户为收到的每笔交易使用新的地址,这就很难将账户相互链接,很大程度上适用于货币;

更符合可扩展性的要求,只需要依赖拥有UTXO的那些人去维护基于merkle树的所有权证明就可

4)Wallet

钱包本身不保存资产,仅用来显示btc的余额

钱包软件在比特币区块链上查询所有由你的私钥控制的 UTXO,然后将这些 UTXO 的值相加,并显示最终余额,因此也可将钱包看成一个管理私钥(生成、存储、签名)的工具

【比特币的交易是在钱包内完成的,而不是在节点上,因此离线的情况下也可创建交易,交易创建后再通过比特币节点发送到比特币网络中】

5.payment process

1)创建交易及交易签名

交易输入➡️交易输出➡️签名

2)节点验证交易有效性

矿工对交易的有效性进行检查,如:

  • 交易输出是否 小于 0 或者大于 2100 万 BTC
  • 交易不是一笔 coinbase 交易 ,因为区块之外无法存在任何 coinbase 交易
  • 签名验证确定 UTXO 的有效性

交易池:未确认交易的缓存,无论交易来自哪里,交易就得先被节点的交易池(mempool)接受,以便矿工从中挑选出手续费率最高的交易、打包到区块中

3)使用工作量证明挖掘新区块

矿工从从交易池中找出最优的一组交易(在一个区块限制下,手续费收益最大),给这组交易创建merkle树, 然后不断的执行暴力哈希运算,以求解出满足一下 Hash 目标值的nonce值

比特币使用的SHA256算法为(SHA256(version + prev_hash + merkle_root + ntime + nbits + nonce )) < HASH 目标值

(version: block的版本 prev_hash: 上一个block的hash值 merkle_root: 需要写入的交易记录的hash树的值 ntime: 更新时间 nbits: 当前难度)

只有当一笔交易被包含进一个带有有效工作量证明的区块,并且该区块被整个网络接受之后,我们就说这笔交易 “被确认了”,此时才可以认为资金的转移已经完成了

No.1 Overview of Blockchain

比特币诞生的几年后,人们开始意识到区块链技术本身的潜力,慢慢走出了自己的发展路线。 通常区块链被定义为一种去中心化的分布式账本技术,最初用来记录信息,使记录具备不可篡改性,随着以太坊的出现,还可以去中心化的方式运行程序(智能合约),确保程序的运行不被干预、篡改,使区块链成为一个公共的计算平台。

1.def

区块链是一种区块通过 Hash 方式形成的链式结构,因为链的环环相扣,任一个区块上的修改,都会破坏链结构

区块:区块链中的数据存储单元,由参与网络的节点独立生成,每一个区块中存储了一组交易信息,这些交易信息的哈希数据为作为默克尔树节点存储,每个区块同时存储前一个区块的哈希信息,因此区块就通过哈希信息链接起来,形成区块链

2.smart contract

以太坊中创新的引入smart contract,它是区块链可执行的代码,用户可以根据自己的业务需要上传自己的代码到以太坊上,由以太坊的节点来进行执行

在以太坊提出之前,比特币这样的加密货币的交易脚本可实现的功能非常有限,以太坊对此进行了改进,它让交易发生的同时可以执行一段代码。让交易本身具备了逻辑执行能力(并且是图灵完备的),让我们可以在链上完成任意复杂的运算。如有的交易要分期付款,或者多方参与的借贷。像保险合同的执行也是有事前约定的条件,这些合约条件的执行使用智能合约可以轻松实现。

“samrt”强调不受干预的可自动执行;

“contract”取材自现实中的合约,是想强调链上的程序可以按协议规则执行,就像法律条款一样

3.Consensus mechanism

区块链是一个分布式网络,网络中的节点都是独立运行,因此需要有一个公共规则来知道节点的运行,即共识机制。常见的共识机制有:工作量证明(POW)、权益证明(POS)、权威证明(POA)

1)Proof-of-Work POW

类比:玩游戏积累经验升级(计算的工作量=经验;验证工作量=升级按钮;区块链会为哈希的计算增添难度,将平均计算出一个哈希值的时间进行控制)

POW 要求节点进行大量的计算(查找最优解)来证明其贡献,首先解决计算问题的节点获得报酬,这个过程也称为“挖矿”。

advantage:the most security;reliable

disadvantage:消耗大量计算能力和电能,从而带来了较高的物理成本

算力攻击:当一个节点的算力占全网算力的51%以上时,将获得记账权的绝对优势,可以更快地生成区块,某种程度上拥有了修改区块链数据的权利,从而对链发起攻击,最典型是双花攻击

攻击者在实施攻击前,会进行隐身挖矿(如下图橙色链),出块不进行广播, 攻击者矿工在橙色链上修改他自己的交易,当橙色链比主链更长了,攻击者矿工便会立即向全网广播这条橙色链,而其他的矿工发现了这条橙色链后,按照协议,他们必须丢掉原本的主链,替换成这条橙色链,就完成了一次双花攻击。随着比特币网络算力越来越大,这种攻击可能性也就越来越小。

2)Proof of Stake POS

节点(验证者)此时争夺记账权依靠的不是算力而是权益(占比),权益通常通过质押数字货币计算而来。

PoS同样需要计算哈希值,当拥有的权益越多,满足Hash目标的机会越大,获得记账权的机会越大。同时质押的货币也作为抵押品防止作恶,如果节点有恶意行为,其抵押品可以被罚没(Slashing)。

目前,各个不同的区块链有自己不同的实现方式,如引入持币时间来计算权益、引入委托质押(DPOS )用更少的共识成本换取更大的吞吐量 (TPS)、或使用投票方式,如BTF 类算法多区块投票

advantage:不需要消耗大量能量,POS 出块时间稳定,有根号的“快速最终性”, 通常吞吐量(TPS每秒链上交易 ) 表现都更加优异。

disadvantage:不够成熟;质押货币需要当前的验证者确认,这相当于需要获得网络认可,当网络被恶意大的验证者控制时(其拥有超51% 的权益), 它可以对某些交易进行审查,阻碍新参与者进入,从而对网络产生永久性的损害。

3)Proof-of-authority POA

基于声誉(reputation)的共识算法,选出中央权威来统一状态。 所有的交易,节点间不用相互同步,而是统一发送到权威节点(可能多个),由它来验证交易。在验证并签署交易之后,普通节点都从权威节点同步数据,主要用于联盟内共识。

ad&disad: 性能非常好,但过于中心化,对权威节点的攻击,将造成网络瘫痪

【注】:区块链不能三角化,即去中心化(Decentralization)、可扩展性(Scalability)、安全性(Security),三者不可兼得,三者只能得其二。

4.blockchain fork

当区块链需要升级加入新功能,或是升级解决出现的漏洞,通常会表现为链的分叉。

1)硬分叉

区块链是分布式系统,每次升级,需要所有的节点客户端软件共同升级,有时一些节点因为利益或理念的不一致,拒绝升级到新的客户端,此时网络中将出现两个版本的客户端,运行新软件的节点就会用新的协议去构建新的区块,原有的客户端节点会继续用旧的协议来继续构建区块,各节点不认可对方的区块,此时就是会分叉出两条完全不同的链,这种情况是硬分叉。

2)软分叉

软分叉向后兼容,没有更新的节点仍然会认可新版本生成的区块,当升级后的区块链将无法识别尚未更新的节点的区块。

No.2 Blockchain classification

根据区块链采用不同的共识机制,区块链分为三类:公链、私链、联盟链。

1.public blockchain

公链公开、透明的,信息对任何人都可见;任何人都可以在链上发起交易,任何人都可以按共识接入区块链。没有人可以修改链上数据、也没有机构或组织能够关闭一条公链,公链只会因为失去共识而凋零

2.private blockchain

私链是不公开、只有被授权的节点才可以参与并查看数据的私有区块链,也称为permissioned blockchain。 私有链通常用于组织内部,链的读写权限掌握在某个组织手里,私链是中心化的区块链,省去了共识的过程,可以具备很快的交易速度及交易“0”成本。

作为用户,必须得到私链拥有者的许可才能够发起转账和查询操作;

作为节点,也需要许可才能加入私链网络;

私链的代码也可能是开源的,开源不表示是公链。 私链对很多企业来说是首选。因为对于企业来说,企业内部的各种信息并不能公开,这和公链的透明性正好互相冲突。 私链的拥有者对私链有最高的权限,拥有者能随时关停私链,也可以在需要的时候进行分叉以此实现记录回滚等操作。

【注】:私链可以不用对出块节点进行代币奖励。因此,代币在私链中并不是必需项。当区块链中没有代币也就成为了无币区块链。

3.consortium blockchain

联盟链由多个组织共同拥有,由联盟内成员节点共同维护,节点通过授权后才能加入联盟网络。

联盟链可以让不同的组织之间共享数据,能很好地提升商业行为的效率。十分适合应用于在行业内多个企业、或企业的上下游一起使用。同时,因为有多个参与方,各参与方之间互相博弈,因此联盟链可以兼顾到私链的高效率和公链透明和不可篡改优势。

No.3 blockchain layer

引子:你可能已经听过 Layer1 Layer2 这样的术语,这是区块链在不可能三角限制下进行垂直方向上的扩展。

以比特币及以太坊为例,去中心化及安全性是比特币,以太坊的基石,正是这些才保证中立、抗审查、开放性等特性,但这在某种程度上牺牲一些可扩展性来换取而来,比如:比特币网络每秒可处理的交易不足 7 笔,以太坊每秒可处理的交易通常也只有几十笔。而Visa这样的电子支付网络每秒可以处理超过 20,000 笔交易。

开发人员试图以各种方式对区块链网络扩容,一个广泛被采用的方案是把一些计算放到链下进行(即链上叠加一层),链上只进行计算的校验和存储。

以下是一个分层架构图:

1.layer0

第0层的定义目前行业还没有完全一致的理解。多数人认为第0层是 加密数据连接层及其硬件,对应上图下半部分。 也有一些人把跨链或可以创建链的基础设施为作为第0层,他们的代表有: LayerZeroSubstrate / PolkadotCosmos

2.layer1

layer1是我们常说的区块链,如比特币、以太坊、BSC 、Solana 等。 这些区块链在自己的区块链上根据共识处理并最终完成交易,第 1 层区块链网络为开发dApps提供了基础架构,开发者可以在第1层网络上其他协议,比如我们看到MAKER DAO 稳定币协议、加密朋克 NFT 及 Uniswap DEX 协议等。

随着链上应用不断增长,网络“吞吐量”无法满足快速增加的需求导致网络拥堵。增加区块链网络自身处理能力的方法:

1)扩大区块大小,以便在单个区块里可以容纳更多的交易,以太坊社区也确实多次提高过区块大小限制,但提高更快意味着更慢网络传播速度,以及更大数据意味着节点需要更大的存储容量,这会提高节点参与网络的门槛,使得网络更中心化;

2)以太坊在尝试的分片(Sharding)扩容方案,将区块链数据分成不同的片,每个分片负责网络活动中的不同交易子集。

3.layer2

Layer2 是针对底层区块链(Layer1)扩容的一种链下解决方案,Layer2 是一个独立的区块链,但使用第一层的安全性保证。

扩容:主要思想是将原本 Layer1 的交易放在链下(Layer2)执行,减轻 Layer1 的负担,并且 Layer2 定期与Layer1通信,将Layer2的交易批量提交到 Layer1 。

1)**闪电网络(Lightning Network)**扩容

比特币上一个主要的 Layer2 扩容方案是闪电网络(Lightning Network),为小额支付场景进行优化。

支付的双方在链下建立一个"通道",双方可以在这个“通道”多次进行支付交易,在需要结算时,关闭通道即可。

当支付的双方没有直接的"通道"可以借助第三方节点进行中转,如A 要向 F 交易时,可借助 节点C 形成"通道"链路。所有节点一起就形成了一个支付网络。

advantage:

1⃣️更低的交易费用,对小额交易非常友好,由于比特币链上交易需要用户之间相互竞价,比特币上一笔交易手续费通常在几美金,巅峰时期这需要几十美金,对于小额的交易,手续费往往比转移的金额还要多,闪电网络上通道费用是动态的,通常按转移的BTC数量的万分之几收取。

2⃣️在闪电网络协议下每秒可以发生的支付数量没有基本限制,仅受每个节点的容量和速度限制。

3⃣️更好的隐私,闪电网络支付的细节不会公开记录在区块链上。闪电网络支付可以通过许多连续的通道进行路由,每个节点运营商都可以通过他们的通道看到支付,但如果不相邻,他们将无法看到这些资金的来源或目的地。

2)Rollup扩容

以太坊上主要的 Layer2 扩容方案是 Rollup,Rollup的核心思想是把由Rollup层负责执行交易,然后许多笔交易压缩成一笔交易提交给以太坊

1⃣️Optimistic Rollup(乐观 Rollup): Optimistic Rollup 是乐观假设从 Layer2 上执行的交易都是可信的,并批量提交到以太坊上,乐观 Rollup设置有一个挑战期(通常为一周左右),任何人发起挑战来验证交易的真实性,若挑战成功,原有交易被拒绝,并惩罚Layer2出块人。

2⃣️ZK Rollup(零知识证明 Rollup):主要区别是如何将交易数据发布到第一层, ZK Rollup 是通过生成一个零知识证明来证明所有交易的有效性,相比Optimistic Rollup而言没有乐观假设,且有更高的数据压缩率,但为通用的计算生成零知识证明是一个难点,开发难度很大

)

3)其他

和 Layer2 类似的二层扩容方案是侧链, 侧链和以太坊L2解决方案的主要区别是,Layer2继承以太坊主网络的安全性,而侧链依赖于自己的安全性。一个流行的侧链是Polygon ,他使用自己的PoS共识,有自己的验证者。但是 Polygon 会定期把交易的状态提交到以太坊。

以太坊联链下扩容技术方案:

4.layer3

Layer3目前行业还没有一致认可的定义,有一些人,将 Layer2 上的应用层,称为第 3 层,例如 Uniswap 、AAVE 、MarkerDAO 等。

No.4 blockchain application

1.Financial Services

2.DAO 组织

3.数字存证/防伪

4.NFT

5.游戏

No.5 web3

Web3 于 2014 年由Gavin Wood 提出,更加强调了去中心化概念与使用区块链技术创建用户可拥有的应用。

Web 3.0 与 Web3 概念上稍有区别,Web 3.0 强调互联网演进代际,Web3 表示使用区块链技术栈创建的应用。

1.技术架构

在前端部分,通过用户钱包来确保用户持有自己的数据(资产),在后端,核心应用逻辑通过链上智能合约处理,前端的交易发送给区块链节点,有区块链节点广播到区块链网络里。

还有一个很重重要的部分是文件存储,在 Web2 里,所有的数据(包括大文件)都保存在中心化数据库中,但作为一个去中心化的 web3 应用,如果把文件保存在中心化服务器中,就面临配篡改及删除的分享。这就要引出一个新的角色:去中心化存储

2.去中心化存储

比特币、以太坊、Polygon 等区块链,主要用于执行逻辑,是一个去中心化的计算平台,并不是为存储大量数据而设计的。当我们需要保存图片、音频、视频等内容时,则需要适合大数据的存储方案。

有很多项目在探索解决去中心化存储问题,其中两个最流行的项目是 IPFSArweave

1)IPFS 协议

现有的HTTP网络服务,基于IP寻址的,就是IP找到内容所在的服务器,然后再与服务器交互。而在IPFS的网络里是根据内容寻址的,我们上传到IPFS的文件都会产生哈希值,无需知道文件存储在哪里,通过哈希值就能够找到这个文件。IPFS目标是取代HTTP去构建一个更好的去中心化的Web。

用户通过指向文件的内容(CID)而不是文件所处的位置(url)来访问文件,这种模式被称为基于内容的寻址,在 IPFS 网络中,使用ipfs://file_cid 形式访问文件。

当用户在 IPFS 网络上上传文件时,IPFS 协议会为文件分配了一个唯一的标识符(使用 Hash 算法),称为内容标识符 (CID)。 当用户想访问这个文件时,可以使用这个CID并询问网络上哪个节点拥有它对应的文件。任何拥有该文件的节点会将文件发送给请求的用户。一旦用户收到文件,用户的计算机就会存储该文件的副本,同时该用户将成为文件的另一个提供者。

2)Arweave

Arweave 是一个区块链网络,数据保存在网络中的区块里。并 引入了一个称为 blockweave 的结构,每个区块都与之前的两个区块相连,矿工需要在本地随机储存一个之前的区块(回忆块),才能生成新区块,而且存储保存之前的稀有区块的矿工有更大的概率去竞争到出块奖励,在 blockweave 上, 数据反复被储存在不同区块上,即便有矿工离开,也不会丢失数据,保护了数据的安全,同时由于鼓励保存稀缺块,也会促使所有的数据被“平等”保存。

「如果这篇文章对你有用,请随意打赏」

THIS IS SLY

如果这篇文章对你有用,请随意打赏

使用微信扫描二维码完成支付