Py学习  »  区块链

一招教你速成区块链硬核技术“老司机” | 喵懂区块链27期

巴比特资讯 • 4 年前 • 317 次点击  

܇


对称加密&非对称加密


首先我们为什么要对数据进行加密?

比如,特工A想要写一封信给特工B,如果不加密的话,直接用明文传输,很可能在传输的过程中被恶意的第三方拦截到,轻则是B方接收不到数据,重则恶意的第三方篡改数据,让B方接收到错误的数据,使得特工A,B双双阵亡。


于是对称加密就诞生了,特工A就打算把信函加密,但是特工B需要解密的话就需要加密解密的规则,这个规则被我们称为“密钥”,所以特工A把加密信函连带着密钥一起发送过去了,但这也有一个问题,就是在发送的途中,密钥和信函一起被坏人窃取了,也可能会造成同样的恶果。


针对传统加密方式的弊端,我们想出了新的对策,就是非对称加密,非对称加密是一种使用不同密钥加密解密的方法,还是在原有的场景下,特工A要给B发送一份密函,但是特工B作为接受方生成了一对密钥,包含公钥和私钥,他把私钥自己好好保存好,把公钥公开出去,大家都可见,特工A用B的公钥给密函加密,加密好了发送给B,B用自己的私钥解密,就可以还原密函内容了,这样就避免了私钥的传输和暴露,保障了信息安全。


数字签名


数字签名千万不要想象成手写签名的电子化,我们抽象的来理解,签名是一个什么过程?是一个自证身份的过程,那么在数字化的世界 我们如何自证身份呢?

首先还是小A写了一封信给小B,那怎么证明这封信是小A写的呢?


小A将信的摘要信息用自己的私钥加密,和信一起传送给小B,这个用私钥加密的过程就是数字签名的过程,就好像我们以前用盖章的形式自证身份一样。小B接受到之后,就用小A的公开的公钥解密,如果发现解密内容符合信的内容,就代表信没有被篡改,的确出自小A之手,这个解密的过程就是验证数字签名的过程。


多重签名/ Multi-Signatures


多重签名意味着在交易发生之前需要多人签名,多人私钥加密的过程。多重签名会增加加密货币的安全 性,这样一个人就不能在未经他人同意的情况下把所有的数字货币都拿走。


哈希&哈希值


哈希函数是一个非常神奇的函数,无论是什么内容,什么大小,只要通过哈希运算,就会生成一个固定大小且独一无二的哈希值。


关于这个我看到过一个非常非常接地气的例子

你把哈希函数看作一台屠宰机器:这台机器把任何猪都能剁成等长的香肠,但是花纹各不一样,这样最终的产物——带有不同花纹的长短相同的香肠就是哈希值。


那你可能会为什么会用哈希?这个要从他的特质上来探讨:

第一、不可逆:你可以通过哈希值来验证原文是否遭受了篡改,但不可以通过哈希值倒推出原文,就好像你不可能通过观察香肠的纹理推测出猪原来的样子。


第二、计算极快:哈希一部20G高清电影和一个5K文本文件复杂度相同,计算量都极小,可以在0.1秒内得出结果。也就是说,不管猪有多肥,骨头多硬,做成香肠都只需要一眨眼的功夫。

这就是哈希算法的意义。


未花费的交易输出/ Unspent Transaction Output / UTXO


这一点 很多新人用户都会混淆,比特币不是我们常见的账户模型,常见的账户模型场景下,我今天收进来的100块和20块不会有算区分,而是直接累计成120块。但是UTXO模型,每一笔收入和支出都是独立的,比如我的钱包里放了一张100元的现金和20元的现金,虽然总额都是120,但是我如果话费30的话,我需要把100元的现金给对方,对方给我退回70元,我们可以简单理解成每一张纸币,就类似于一条UTXO,UTXO就是你可以花费,但是还没有花费的资金。


共识&共识机制


在传统的记账体系当中,是由一个人或者一个主体来控制的,那么记账就不会出现分歧。区块链最大的不同就是让中心化的管理机构成为历史,这带来最大的问题就是群龙无首,区块链网络的参与者可能会对交易的有效性产生分歧。


当区块链网络中的所有参与者就交易的有效性达成共识时,所有参与者本地的区块链状态都是一致的,这就是达成了共识。


那么什么是共识机制呢?简单用一句话来理解的话,共识机制就是筛选记账人的方式和规则,就是记账人的规则明确了,整个系统才有可能达成有效共识。我们常见的共识机制包括PoW,PoS等等,这些我们在往期的喵懂视频当中都已经详细科普过了哦。


节点


节点是区块链分布式系统中的网络节点,是通过网络连接的服务器、计算机、电话等, 针对不同性质的区块链,成为节点的方式也会有所不同。以比特币为例,参与交易或挖 矿即构成一个节点。

全节点其实就是同步所有区块链数据的节点,包括区块头,区块体等信息。

所谓轻节点就是只需要存储区块链头,而不存储全量的交易列表等信息。


挖矿难度


比特币的挖矿难度是一个动态调整的值。很多新人会以为比特币算力越高,那么出块速度就越快,这可以说对也可以说不对,很tricky。比特币出块速度10分钟/每个区块,一旦算力上涨或下跌,确实会直接影响到出块的时间,但是每挖完2016个区块(大约14天左右),挖矿的难度会自动的根据这2016个区块的实际挖出时间,动态地做出调整。


具体公式长这样:

新的难度值(TARGET)=旧的难度值*(2016*10分钟/之前2016个区块总出块时间)


所以之前2016个区块总出块时间越长,新的难度值就会下降,总出块时间越短,新的难度值就会上升,从而保持差不多10分钟的动态平衡。


区块高度/ Block Height


一个区块的高度是指在区块链中它和创世区块之间的块数。

51% 攻击


比特币的挖矿概率是和算力成正比的,所以如果有人掌握了 50% 以上的算力,他能够比其他人更快地找到随机数,更快地创建区块,从而可以修改过往账本记录,甚至控制整条链。


双花/ Double Spending


双花就是指一笔钱被花了两次及两次以上。比如小A跟小B买了一个包,并且付了费用,拿到包之后,小A又把同一笔支出,同一个UTXO发送了给自己。小A把发送给小B的交易排除在外进行挖矿(记账过程),如果小A拥有50%以上的算力,那么小A所挖的那条链就会是最长链,被大家认可的链,但是原先小A给小B的转账记录是排除在这个版本的账本里的,于是小A成功实现了双花。


零知识证明/ Zero-Knowledge Proof


它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。

这就很有意思了。

那要怎么做到呢?

比如A要向B证明自己拥有某个房间的钥匙,如果运用零知识证明的思维方的话,那就可以怎么解决:


B确定该房间内有某一物体,A用自己拥有的钥匙打开该房间的门,然后把物体拿出来出示给B,从而证明自己确实拥有该房间的钥匙。


它的好处在于,在整个证明的过程中,B始终不能看到钥匙的样子,从而避免了钥匙的泄露。


那这个可以应用在什么场景中呢?区块链比如比特币,所有的交易记录是公开可见的,如果根据某些关系网,可以追溯出个人的资产情况等等,这显然与隐私保护的刚性需求相违背。


零知识证明就可以增强隐私保护,既不告诉你交易的具体情况,又可证明交易的合法性。更多零知识证明,匿名币话题,我们之后再细聊。


以太坊区块链 vs 以太坊虚拟机 vs 智能合约 


我用一个例子连续解释一下这三个概念。

比如小A看上了小B的海量的美剧资源库,对小B说我给你10个以太,你把资源卖给我,于是小A给小B的以太坊地址转了10个以太,这是以太坊区块链转账,和比特币转账之类的没有太大差别。


但是小B不差钱,觉得买卖没意思,他对小A说,我给你出100道在线问答,如果你能全部答对,我就免费把资源分享给你。这就是一个智能合约,当一个预先编好的条件(答对100道测试题)被触发时,智能合约会立即执行相应的合同条款(免费发送资源库),工作原理类似于计算机程 序的 if-then 语句。


你会发现这个智能合约的执行不是直接在以太坊区块链上的,因为每个细分场景都可以建立非常多不一样智能合约,于是大家把这种执行规则,代码放在了以太坊虚拟机里。


每次账户想要执行智能合约,发生转账,网络中的节点就会通过以太坊虚拟机来运行特定的代码,从而执行特定规则。虚拟机既保证了网络的智能,又能与主网的其余部分隔离,运行时不影响主区块链的操作。


图灵完备


图灵完备(Turing Complete),是指可以解决所有的可计算问题。比特币的脚本系统是图灵不完备的,而以太坊的智能合约系统是图灵完备的。图灵完备和图灵不完备各有其优势,图灵不完备会更安全些,图灵完备会更智能些。


去中心化应用/ Decentralized Application / DApp


DApp 是一种在网络上公开运行的软件应用程序,这项技术是由许多人维护的,而不是由一个组织维护控制的。


还有一些常见专业术语“拜占庭将军问题/分片/ 闪电网络/ 隔离见证/侧链/跨链/不可能三角”,你们如果还有疑问的话,可以查看喵懂区块链往期视频,我们都已经做了一一单独的详细介绍了



* 申请转载请联系原作者,优秀稿件发布请联系微信btczs001(课代表)


今日话题


一个成熟韭菜还有哪些装X语录?欢迎分享。


推荐阅读


比特币到底有没有庄家?

比特币就是一种赌博么?

从时间上算,我和李笑来是同一批人

巴比特成立商学院,打造全球首个数字经济领袖班!



更多关键词矿工 | 51%攻击 | 奥本聪 | 李笑来

燃点 | 孟岩 | 白硕 | 肖风

长铗 | 李国权 | 蚂蚁金服 | 来学嘉


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/34329
 
317 次点击