Web3.0的底层-区块链技术
Web3.0时代货币的特征
存在一套机制进行‘信用“背书,让人门对这种货币交易层面达成共识
满足数字交易的需求
去中心化,存储的数据应该属于所有创造它的人
安全,可以被验证,交易体系需要持续平稳运行,任何人都不能随意改变自己手上的货币量
电子签名与分布式账本
电子签名
目的:保障交易记录是准确的(电子账本是公共的,任何人都可以在上边增加记录,要防止账本上出现未经授权而伪造的交易记录,所以每一笔交易都需要这个人不可伪造的电子签名以确认本人授权了这笔交易)
公钥和私钥
背景知识:每个人的账户都存在一对字符串,一个叫做公钥,一个叫做私钥
公钥:公钥是公开的账户地址,所有人都可查看(可以理解为账号)
私钥:相当于账户密码,只有自己知道(可以理解为密码)
如何实现不可伪造的电子签名(这里电子签名的实质是经过你本人验证认可的授权信息)
需求:
确保两点:电子签名是用户自己签发的
对应的交易记录,链上所有的用户可查可验证
实现方式:
签名函数(只有用户自己可以签名,确保交易的唯一性,理论上不可逆,确保不可伪造性):
签名函数(交易记录,私钥)-针对该交易的电子签名
验证函数(系统中的用户都可以验证):
验证函数(交易记录,签名,公钥)-True/False
电子账本
核心问题(交易有效性的判断):验证用户钱包是否有足够的钱做交易(实现信用背书)
账本上记录的是每次交易的流水,需读取账本上的所有历史记录,才能计算出用户账户上还剩多少钱
历史交易信息的总和就是货币
分布式账本(电子账本的升级)
为什么产生:web3.0时代用户创造,用户拥有,用户控制,是去中心化的,所以需要把账本做成分布式的,存储在网络中的每一个用户那里
核心:保证每个人手中的账本都是一样的(加密货币系统自己完成的)
共识机制与区块链
共识机制
出现原因:设计分布式账本的时候,可能会因为网络原因导致部分用户的数据丢失(广播时没收到消息),和完整数据不一致,该用户就无法达成交易共识
解决效果:保证每个人以相同顺序接收了相同的消息记录(共识机制)
共识机制分类
工作量证明
权益证明(ProofofStake)-POS
委托权益证明(DelegatedProofofStake)-DPOS
实用拜占庭容错算法(PracticalByzabtineFaultTorlerance)-PBFT
参与度证明(ProofofParticipation)-POP
工作量证明(选择算力最强的那台机器的账本,信任的前提是付出对应的工作量)
核心:需要得到大家认可的共识,对应用户需要付出足够的工作量(计算所消耗的算力与时间资源就是大家信任的基础)
具体工具:哈希函数
检验过程:所有人都可以给想要证明自己工作量的那个人出一道题,给一个字符串,让答题者枚举去找一个输入值,出题人检验结果时只需要把答案输入哈希函数里,看前20位是不是和出的题一样,一致即可证明答题者大约付出了这个量级的工作量(一个问题,浪费算力资源,另一个问题,如果所有人都懈怠呢,成死锁了)
区块链的设计与挖矿
流程
包含一定交易记录的站本会被打包成一整个区块
区块包含
一定量的交易信息
一道工作量证明的题目
一条额外的交易信息(打包完成后才有,奖励主动建立区块的人)
区块认可机制
解答了题目
获得了工作量证明
防篡改机制(保证区块是按既定顺序串联,不可改变或变更顺序)
修改任意区块的内容和顺序时,下个区块的头部信息悔改百年,进而影响后边所有的区块(设计时前一块的哈希值存在于后一块的头部中)
如果要保证一致,就要去重新计算后边每个区块所包含的工作量证明
社区规则
任何人都可以参与区块工作量证明的竞争(先算出来的先打包)
证明了一个区块后,广播给所有人,并添加到现在公共的区块链上(在哪里存储,已被证明的主链?),同时发送了两个不一样的区块,选择付出最多工作量的那个
在打包的区块中额外增加一条额外的信息(奖励主动建立区块的人,同时也达到了发币的过程,同时会激励社区的人)
信任能组成最长的区块链的区块,所有人就能达成一个去中心化的共识
比特币
概念:最初发行万枚,每过四年减少一半奖励,被挖空了,奖励交易的手续费
特点
去中心化
透明性
不可篡改性
去中心化
用户拥有数据,不再存在于某个中心化的机构,用户正真掌握了数据的所有权
透明性
所有用户知道自己得数据存储在哪里,知道它们是怎么发生变化的
不可篡改性
任何写入的数据在密码学体系的保证下难以被篡改,保证数据可靠,真实,安全
以太坊和智能合约
基于比特币区块链的体系缺点
图灵完备性缺失(不能实现所有的计算操作)
价值盲点(不能为用户取款提供精细的控制)
状态缺失(仅有已花费和未花费状态,只能创建简单的一次性合约)
区块链盲点(看不到当前链块中的数据)
以太坊(解决上述问题,进一步发展)
包含部分
去中心化程序(DApp,一旦创造,没人可以干预程序运行)
编程语言Solidity
以太虚拟机
去中心化的网络里,每个节点在使用以太坊客户端时,**都会同步安装一个以太坊虚拟机,被写入以太坊区块链的程序可以通过交易触发在以太坊虚拟机上运行。**这种方式相当于把程序部署在了以太坊全球用户的电脑上,从而实现了去中心化程序的部署和调用
以太币(没有发售总额,提交手续费用)
以太坊的运行生态
以太币与Gas
任何一个在以太坊上部署DApp的人,都需要为以太坊网络提供算力和存储空间的节点支付以太币
Gas作用
会根据程序的带宽大小,空间占用,计算难度等因素综合计算需要支付的费用
将以太币本身的价值和执行交易的成本相分离(以太币价格发生波动时,并不需要更新所有客户端上与计算价格相关的代码)
代币与公开发行
提案机制(ERC-20)
功能:可以让人们参与以太坊网络更新与修改的过程
实现:用户通过Token(代币准则,区别于我们现在的token概念),将用于价值存储的原生代币和用于决定社区发展方向且具有投票权治理代币相分离
案例
泰达币(USDT)
始终保持和美元1:1的比例(每发一枚币,就存1美元的保证金),这样可以防止汇率出现巨大波动(成为加密货币交易的常用价值尺度)
REP
用户可以在Augar平台上创建对一事件的预测,一旦正确就可以获得REP代币的奖励(以众包的形式搜集全球的观点和信息)
智能合约
WEB2.0时代
以中心化机构作媒介,以其信用作背书,运行前期约定的合约
WEB3.0时代
去除中心化结构,以加密技术作信用背书
规则
任何人都可以开发智能合约,开发后智能合约的代码会存储在以太坊的账户中(合约账户),只有外部账户向合约账户发起交易后,智能合约代码才能被执行(发起交易需要向合约转入一定数量的以太币),一旦合约被执行,将不能被修改(合约即法律)
以太坊2.0与Layer2
出现背景:带宽有限,应用增多的情况下,需要扩容
解决方案
以太坊2.0
修改工作量证明机制为权益证明机制(Pos),更加环保高效
引入分片链(将主链拆分为多个拥有单独共识机制和验证者的分片,为了安全引入一条并行的独立区块链,信标链把验证者随机分配给各个分片,这样增加了以太坊交易吞吐量)
升级2.0的三个阶段
年底启动,推出信标链(为验证者注册并协调每个人抵押的以太币)
年开始,信标链和以太坊合并完成后,开始开发分片链(预计64片),这个阶段仅支持验证,不支持账户,智能合约等,然后,过渡到POS(挖矿会停止)
这个阶段,系统功能全面融合,支持账户,智能合约,开发工具的创建和新的生态应用
Layer2
出现背景:以太坊2.0开发速度缓慢,Layer2方案可在短期内解决以太坊的拥堵问题
含义:开发以太坊的第二层网络,包括合约层和应用层。向链下扩容,通过链下计算或存储减少主链的数据处理,从而扩展主链的性能
下一代区块链
蓝图:除货币和金融外,在其它领域上做区块链
文化活动:通过区块链的形式保障了真伪鉴定和知识产权
社会活动:逐渐促成了DAO社区(Discord)