hi,大家好,我是鱼叔,本文是我最近看《你好啊,区块链》做的读书笔记,我把书中不错的内容加上我的理解给整理了出来,非常适合小白入门。
有条件的朋友可以买书去看(目前绝版了比较贵),没条件的朋友直接看我这篇文章就行。
类似于一串珍珠项链,只不过区块链上串的是数据块,并且数据块彼此之间是有关联性的,难以篡改。
区块链的本质就是用技术增加篡改的成本,来确保数据的可靠性,因此它不光被用于金融领域的记账,也被广泛用于重要数据的存储。
去中心化的基本思想就是“分权”,不再有一个绝对中心掌控一切。
为什么区块链是去中心化的呢?因为这个数据库是被所有人拥有,不存在绝对力量来改变整个区块链,或者说这种篡改难度太大。
在生活中,交易往往基于第三方来实现,而在链上这种交易信息是被环环相扣地记录下来,并被所有人共同见证,是一种去中心化体现。
私有链是某一家公司自己打造的区块链,仅用于内部使用,这条链也只装载该公司的信息。私有链虽然也运用了区块链技术,但是并不是去中心化的应用。
联盟链是私有链的升级,意味着多个公司共同使用某一条区块链,以达到信息共享的目的,比如说银行之间搭建的联盟链。
联盟链增大了使用者的规模,但依旧是中心化应用,并且联盟中的成员并不都具备相同的话语权。
公有链,又简称公链,是一个去中心化区块链,它不被任何机构和财阀控制,由大量匿名的公众参与者共同维护,其中比特币就是当今世界最知名的一条公链。
比特币区块链上流通的token,它不是实体的货币,而是一种链上记录的信息。如果链上记录你拥有多少BTC,那么大家就会认同这个信息,相信你确实拥有这些数字资产。
中本聪(Satoshi Nakamoto) 是BTC的缔造者。他于2008年11月发表了一篇论文《比特币:一个点对点的电子现金系统》。随后,他致力于BTC网络的开发,并在2009年1月4挖出了第一个比特币区块。
不过目前对于中本聪是谁依旧是未解之谜。
区块是区块链里的基本组成单元,里面存储着一条条数据。
区块内部分成存储信息和区块头,存储信息为具体的交易信息,而区块头则是包含了前一个区块的信息,类似于电视剧里的前景回顾。
因此区块的排布必然是按照顺序的,如果顺序错了,那么这个区块肯定是错误的。
由多个计算机共同组成的系统,不同计算机可以单独完成各自的工作,只要确保互相的通信没有打断即可。分布式系统的好处在于,如果某一个计算机出现故障后不会影响其他计算机的工作。
哈希是一个算法,它可以把大量的数据压缩到比较小的数据,但是这个过程是不可逆的。简单来讲,你无法通过哈希运算后的结果回推到运算前的数。
在区块头的设计里就是用哈希值来记录前一个区块,如果前一个区块的数据发生改变,那么后面区块的哈希值都会发生改变,这就会导致账本冲突。
因此如果黑客想要篡改区块链里的某一个数据而不被知道是很难的,这也是区块链安全的原因。
由于公有链是一条共享的链,每个人都可以看到上面的数据,那谁有权利在上面挂上新的区块呢?那就是矿工。
这里的矿工和现实里挖金块的矿工不同,区块链矿工的职责是将新的交易数据进行打包,然后以区块的方式上链。由于存在许许多多的矿工,大家就要进行竞争,争夺上链的权利,而这个竞争过程就叫挖矿。
而挖矿的具体细节其实就是解哈希函数,通过不断试错的方式看谁能最快解出预期值,则为挖矿成功,并获得奖励。
区块链账本的维护是靠许许多多的用户,因此在互相协同的前提下要有一套共同承认的规则,这个规则就叫“共识”。
目前共识机制包括:工作量证明机制(proof of work,pow),权益证明机制(proof of stake,pos)和股权授权证明机制(delegated proof of stake,Dpos)等。
pow和pos类似,都设有挖矿的过程,谁最先解出哈希值,谁就可以有权利上链。但是,两者不同的地方在于影响因素。pow破题难度在于算力,也就是谁的计算机算力越强,谁就越有可能解出难题,而pos则在于谁质押的加密货币越多越久,谁的获胜概率就越高。
至于Dpos机制则类似于民主投票,通过参与投票来选出有权添加新区块的代表团。
中本聪设计比特币的初衷只是将它定位为点对点的支付系统,而其他功能并不支持。2013年,19岁的加拿大程序员Vitalik 提出”把各种应用代码像交易记录一样存到区块链里“的方案,并把这个区块链网络称作”以太坊“。
简单来讲,以太坊是运行区块链程序的网络,并且这类app的代码和数据都部署在区块里,分布在以太坊网络参与者的计算机中。由于其分布性,这类app也称为Dapp(Decentralized app)。
dapp的特点在于一旦部署就没有人可以更改,另外部署dapp需要支付一定的费用,这类费用的使用代币就是”以太币ETH“。
智能合约的本质是已经预先写好的计算机程序,并且合约的双方不需要依赖额外的中心机构来履行各自责任。生活中比较常见的例子是自动售卖机,你把硬币扔进去然后就有货品输送出来。
区块链的出现进一步给智能合约提供了舞台,当用户和区块链中的智能合约进行交互时,一旦合约被部署那么就没法篡改,合约也会按照程序逻辑进行下去。
这样的好处是可以节省违约风险,因为智能合约的执行是没法中断的,但同样如果合约代码有问题,那产生的损失也没法挽回。
相比于通证,你可能更熟悉代币这个称呼,但其实它们都对应同一个计算机用语”token“。token对于加密世界来说就是一种凭证,大多数dapp都发行了自己的token,并且这些token的功能都有些不一样。
比如以太坊发行的ETH就作为该网络的手续费,而Uniswap发行的UNI则用作社区代币。
在挖矿的时候,矿工需要解一个哈希函数,而哈希函数的难度则是由当前竞争的矿工数量来决定的,如果当前矿工数量较多,则会增加难度,反之则调低难度。
现实存在网络延迟导致部分矿工不知道其他矿工已经挖出块的情况,简单讲就是部分矿工做了无用功,即使你也解出了这个哈希值,但是在同步状态的时候发现其他人已经上链并广播成功,这时候你的区块就是无效的,称为孤块。
在区块链世界中,永远以最长的那条链路为主,而其他的分叉链路则不被认可。
通常区块是一个数据包,由矿工决定将哪些数据打包进去,通常矿工会挑给手续费最高的交易进行打包。
但是有时候如果矿工不想打包数据,只是上传一个空的区块到链上,就会浪费一次打包机会,当空块出现较多时就会导致市面上的交易出现堵塞。
分布式结构的系统需要节点之间互相通信来保证状态同步,如果这时候有节点”作恶“,故意传播虚假信息,那么就会对信息同步产生问题,这就是”拜占庭将军问题“。
目前解决这个问题的方法是引入”容错机制“(PBFT,实用拜占庭容错机制),只要节点总数大于坏节点数量的三倍,就可以保证系统的自我纠错,维持正常运行。
区块高度指的是某一个区块到第一个区块之间的距离。通过区块高度,可以明确得到该区块在链上的坐标。
在共享账本的区块链世界里,加密是保证数字资产安全的根本手段。
加密有”对称加密“和非对称加密两种。
对称加密指的加密和解密用同一个密钥,通常你要和另一个人协商好一个密钥,这样你加密完后将信息发给对方,对方才可以解析出来。这种加密方式的风险在于如果密钥被泄露,那么所有人都可以解密。
非对称加密指的是用两把钥匙来加密一个信息,一般来讲会有公钥和私钥,公钥可以让别人知道,私钥只有自己知道,如果他人用你的公钥加密某个信息发给你,只有你能用自己的私钥来解析这个信息。因此非对称加密安全性更好。
加密资产的存放也需要钱包,虽然这个钱包使用起来和我们的银行账户很相似,但是本质上它是不同的,你保管的钱包实际上只是一个密钥,你的资产都在区块链的区块里,并且只有你能用私钥去动用区块里的资产。因此,当你忘记自己的私钥后,你就丢失了相应的数字资产。
由于私钥比较难记,因此当我们生成钱包的时候会伴随产生相应的助记词,助记词通常会是一些随机的单词组合,这是私钥的另一种表现形式,如果你的助记词被别人知道了就相当于丢失了私钥。
比特币网络会以最长的链为基准,如果有人控制了51%的算力,那么他可以凭借1%的优势不断地构建自己的链,直到成为最长的链覆盖整个账本。因此为了避免51%攻击,要让算力尽可能分散。
双花又名”双重支付“,意思是用同一笔钱进行多次交易,这种攻击一般会以两种形式出现。
第一种是掌握了51%的算力,就可以不断修改自己的账户余额,从而保证多次花费。
另一种就是利用上链时间差,在交易完成和交易上链之间存在时间差,如果在交易上链前,一个人用同一笔钱和两个人交易,那么两笔交易只有一笔可以上链,另一笔交易则会无效,而那个人则会蒙受损失。因此为了避免双花攻击,交易方会等多个区块上链后,确认交易数据无误后才会发货。
女巫攻击指的是单个节点用多个虚假身份进行网络诈骗,一般黑客会注册多个钱包来攻击链上投票,比如注水或者恶意评价等等。针对这种攻击的最佳保护方式就是让其攻击成本增加,比如投票需要缴纳手续费等。
区块链网络中存在大量如同”粉尘“般的”小额“交易,这种交易一旦变多就会造成网络拥堵,一般攻击者会用这种方式来进攻竞争对手的网络。
ddos全称叫做Distributed Denial of service ,即 分布式阻断服务。其形式通常是”一堆机器发起垃圾请求,占用服务商的服务器资源,从而导致正常用户无法使用“。
为了让有限的比特币区块装载更多有意义的信息,矿工们将部分用于验证的信息单独隔离开来,不再计入区块容量,从而可以挪出更多的空间用于填充交易信息。
闪电网络也是为了提高比特币的交易速度,通常支持闪电网络的钱包会单独为交易开设一个空间,在这个空间里的交易数据不会上链,只有你将钱从闪电网络中取出时才会将资产余额上链。其实这个闪电网络就是以太坊Layer2方案的雏形,其本质是将部分交易放到”线下“进行,从而缓解链上交易压力。
如果你想向一个人证明某件事,但是又不希望他了解过多其他的东西,这种方式就叫零知识证明。在区块链中交易是透明的,但有些人不想透露自己的交易地址和金额,就可以采用零知识证明的方式进行加密,这样矿工可以验证交易的正确性但是没法获取交易信息。
ICO 全名”initial crypto-token offering“,是一家区块链公司首次向公众出售它的token,可以类比现实里的股票IPO。
不过现实IPO会经历多重审核,而ICO就只要一个白皮书和故事,因此ICO的风险很大,存在项目方直接跑路的情况。
DAO全名为”Decentralized Autonomous Organization“,可以理解为区块链世界的公司形式,只是这个公司会采取自治的方式进行。DAO 也会发行相应的token用于治理和投票。
门头沟是中国加密爱好者对一个叫Mt.Gox的加密货币交易所的谐音。
门头沟总部位于东京,曾是全球最大的加密货币交易所,它于2013年承担了全球70%的比特币交易,但是于2014年宣告破产。
其破产原因在于它一直掩盖遭遇黑客攻击的现实,大量比特币的丢失被曝光后,人们不再信任这家公司,再加上其管理不善、内幕交易等丑闻,门头沟宣告破产。
伴随着以太坊的拥堵问题,越来越多的新公链接踵而至,如何将资产在不同链上进行转移成了一个痛点。为了解决这个问题,跨链技术由此产生,它通常会在某一条链上将资产冻结,然后在新的链上释放等量资产来实现跨链。
不过要注意的是,你的资产并不是“真”得迁移到新公链上,你在新公链上获得的是资产凭证。由于跨链技术会涉及到大量的资金流动,这块领域也成了黑客攻击的主要目标。
区块链上锚定美元的token,这类token一般可以分为中心化和去中心化两个类别。中心化稳定币一般有实体公司来支持,比如USDT。而去中心化稳定币则是由智能合约来维护,自从LUNA崩盘后可以看出”非超额抵押的去中心化稳定币“都有较大的风险。
中央银行数字货币简称CDBC,是国家央行基于区块链技术发行的数字货币,其本质依旧是国家法币,只是形式不同。