记录web3学习的过程,从小白开始
所有的web3相关的学习内容都会更新在github,github地址
这篇文章主要说明区块链的一些概念
为什么要了解区块链?
Web3 是以区块链技术为核心,构建新一代的去中心化互联网组件,再基于它们来构建我们想要提供的服务、应用。
虽然在实际开发中不太可能写区块链,但是了解区块链对我们的Web3开发有一定的帮助
区块
定义:一种数据块,它采用密码学的方法将电子数据永远的记录下来,每个“区块”就是一本账本。
从上面的图可以看到,每个区块记录了position、nonce、data,然后将3个合并生成 hash。
Tips:hash存在碰撞(即不同的输入得到一样的结果),但这种概率非常的低
注意:nonce的值,是根据生成的hash是否落在指定区域来得出;只要hash值的前4位是0,即可满足。
区块链
定义:就是一个又一个区块组成的链条;是共享的、不可篡改的账本;用于记录交易、跟踪资产和建立信任。
特性:分布式存储,点对点传输、共识机制、加密算法等。
区块链1.0技术 -> 比特币
区块链2.0技术 -> 以太坊2.0
在区块链中,第一个区块叫:创世区块
区块链的运行机制
到了区块链这里,可以看到每一个区块都有一个前指针,这个是记录前一个区块的hash。
如上图,对于第一个区块,即创世区块的上一个hash是000000….00000000。
为什么要记录上一个区块的hash值,因为这样基本能做到防篡改。如果某一个区块的hash值的被更改,那么其对应的下一个区块算的hash会不满足0000开头的条件,需要重新计算nonce,然后得出最新的hash。这样子后面所有的区块都需要重新计算nonce。
签名交易
在区块链中,如何验证一笔交易是真实的?
区块链中,用的是非对称加密(加密和解密的密钥不一样),生成签名的时候,用个人私钥生成,验证的时候是用个人的公钥验证
Gas手续费
在区块链中,区块能存储交易的空间有限。为了能让交易被写在某个区块中,需要支付手续费。手续费会根据需求变化。比如以太坊的费用会上下调节,调节的依据是有正在交易人数的量。
链的类型
公有链(Public Blockchain):公有的区块链,读写权限对所有人开放。
真正的完全去中心的区块链,代表:比特币块链、以太坊智能合约
用户不用注册就能匿名参与的链,无需授权就能访问网络的区块链。公链的任何区块对外公开,任何人都可以发送价值。比特币以太坊是著名公链,公链适合虚拟货币,电子商务互联网金融等领域。
公有链能够稳定运行,得益于特定的共识机制,例如比特币块链依赖工作量证明(PoW)、以太坊目前依赖权益证明(PoS)等,其中Token(代币,也有人称“通证”)能够激励所有参与节点“愿意主动合作”,共同维护链上数据的安全性。因此,公有链的运行离不开代币。
优点:
1:所有交易数据公开、透明。
虽然公有链上所有节点是匿名(更确切一点,“非实名”)加入网络,但任何节点都可以查看其他节点的账户余额以及交易活动。
2:无法篡改。
公有链是高度去中心化的分布式账本,篡改交易数据几乎不可能实现,除非篡改者控制了全网51%的算力,以及超过5亿RMB的运作资金。
缺点:
1:低吞吐量(TPS)。
高度去中心化和低吞吐量是公有链不得不面对的两难境地,例如最成熟的公有链——比特币块链——每秒只能处理7笔交易信息(按照每笔交易大小为250字节),高峰期能处理的交易笔数就更低了。
2:交易速度缓慢。
低吞吐量的必然带来缓慢的交易速度。比特币网络极度拥堵,有时一笔交易需要几天才能处理完毕,还需要缴纳几百块转账费。
私有链(Private Blockchain):私有的区块链,读写权限对某个节点控制。
机构内私有定制区块链,代表:蚂蚁金服
私有链的读写权限掌握在某个组织或机构手里,由该组织根据自身需求决定区块链链的公开程度;适用于数据管理、审计等金融场景,私有链的价值主要是提供安全可追溯不可篡改自动执行的运算平台,必须先注册取得许可才可以访问和使用。央行发行的数字货币就是私有链。
优点:
1:更快的交易速度、更低的交易成本链上只有少量的节点也都具有很高的信任度,并不需要每个节点来验证一个交易。因此,相比需要通过大多数节点验证的公有链,私有链的交易速度更快,交易成本也更低。
2:不容易被恶意攻击相比中心化数据库,私有链能够防止内部某个节点篡改数据。故意隐瞒或篡改数据的情况很容易被发现,发生错误时也能追踪错误来源。
3:更好地保护组织自身的隐私,交易数据不会对全网公开。
缺点:
区块链是构建社会信任的最佳解决方案,“去中心化”是区块链的核心价值。而由某个组织或机构控制的私有链与“去中心化”理念有所出入。如果过于中心化,那就跟其他中心化数据库没有太大区别。
联盟链(Consortium Blockchain):联盟区块链,读写权限对加入联盟的节点开放。
行业内的可监管区块链,代表:超级账本(Hyperledger)
联盟链仅限于联盟成员参与,成员参与区块链运行需要按照规则获取读写记账的权限。成员需要注册才可使用。联盟链由机构成员共同维护,提供成员管理,认证,授权,监控,审计功能。由40多家银行参与的R3区块链联盟和Linux基金会成立的超级账本项目属于联盟链构架。
联盟链适合机构间交易清算结算B2B场景,用于节省对账和清算成本,减少人为错误的发生。联盟链对安全性能要求比公链高。
联盟链是私有链的一种,只是私有程度不同,而且其权限设计要求比私有链更复杂;但联盟链比纯粹的私有链更具可信度。
在对可信度、安全性有很高要求,而对交易速度不苛求的落地场景,公有链更有发展潜力。
从本质上讲,公有、私有和联盟链并不矛盾,它们只是使用了不同的技术:
精心设计的公有链在防审计性方面往往更具优势,但代价是速度和吞吐量较低。这些是对交易结算(或智能合约)提供安全性保证的最佳选择。
私有链可以优先考虑系统的速度,因为它无需像公共区块链那样担心核心故障。理想情况下,将私有链部署在个人或组织可控且信息保密的情况下。
联盟链可减轻私有链中交易对手的风险(通过消除集中控制),并且较少的节点数通常可使它们能够比公共链更有效率的运行。联盟链适合于彼此之间需要相互沟通的单位组织。