福源币交易平台-区块链技术|虚拟货币交易|数字货币|比特币交易网 网站地图
网站首页 公告 新闻 价格行情 区块链 挖矿 技术 交易教程 加密货币 视频

为何自概念密码学原语对在区块链上的开发至关要紧?

区块链 www.51gumixiang.com
>

区块链是一个基于密码学、经济学和互联网科学的新技术。对于普通的大众来讲,其中的密码学并非一门容易亲近的学科,甚至是上面提到的三个学科中,大伙感觉最有距离感的学科。但身处区块链圈的朋友们必然会常常听到「区块链是一部 Trust Machine」如此的说法,或者有人会说在区块链的世界里是「In Math we Trust」,可见密码学对于区块链技术来讲是根基一样的要紧存在。

好了,那样问题来了:

· 区块链到底在哪些地方用到密码学呢?
· 密码学为何对区块链技术至关要紧?

区块链的哪些地方用到了密码学?

第一,假如你是一个区块链用户,可能在你房间里的某个角落,会有一张纸条,上面抄着十二个不知晓如何来的单词,有些人还有不少张,甚至有的大 holder 会把这十二个英文单词刻在钢板上,然后锁进保险箱里。

是的,为何这十二个助记词,或者像一长串乱码般的私钥可以代表你对资产的所有权呢?

这背后的原理其实就是密码学。

区块链上的密钥、地址和钱包都是通过密码学去达成,借助非对称加密技术——椭圆曲线算法(ECC)可以验证某人持有些私钥是不是是吻合某个公钥,通过这个方法大家可以证明这个人是不是是这笔加密货币的持有人,由于除去拥有私钥的人以外,其他没该私钥的人是没方法解锁这笔资产的。

大家在此用BTC举例私钥、公钥和地址生成的原理,一个BTC钱包中包含一系列的密钥对,每一个密钥对包括一个私钥和一个公钥。私钥一般是一个随机选出的 256 位的数字。基于私钥,大家就可以用 secp256k1 标准的椭圆曲线这个单向密码函数产生一个公钥。基于公钥,大家又可以用一个单向哈希函数 SHA256 和 RIPEMD160 生成BTC地址,再通过 Base58 check 编码将BTC地址变成目前这较为简单的形式。而像大家比较常见的助记词,则是通过基于 BIP 39 标准而生成的随机英文单词。假如没私钥或助记词的人,是没办法用这笔加密货币的。

当大家有了可以配对的密钥对后,可以在各类型型的钱包或者推广客户端上做验证,确认资产的所有权,并且通过这个推广客户端来进行各种资产的用。比如最容易 比特币 转账,或者再进阶一点的用某个钱包去签署智能合约的买卖:譬如用 Metamask、imToken 或者 Alphawallet 等钱包里的 以太币 去购买加密猫,或者在 去中心化的金融 的平台上面进行借贷,与用 Uniswap 交换某些 ERC20 Token 等。

除去转账等基本的验证外,目前甚至某些平台的身份验证都可以用公私钥来做登录验证,或者通过验证你是某笔资产的所有人来进行各种权益的证明。容易来讲,公私钥验证系统背后的密码学就是用户想畅游区块链世界的通行证。

在区块链中,还有另外一个不可忽略的密码学用场景,就是区块中的买卖排序,与 Merkle Tree 等决定区块排序的过程。BTC就是将每笔买卖用 SHA256 算法进行加密,在这里加密算法确保了区块链的安全性,与几乎不可能被篡改的特质。光是在这两个BTC的基础用场景中就都用到了密码学,于是乎甚至还有很多人在猜测,中本聪可能是个密码学大佬,才可以把密码学在这个P2P的现金系统中用的淋漓尽致。

当然,除去在区块的生成和公私钥验证这两大区块链的核心功能上可以发挥作用与功效以外,密码学在隐私保护甚至扩容等方面都可以派上用场。

目前的公链怎么用密码学?

· Wow,这是一条新的公链吗?
· 那它有没钱包啊 ?
· 又要多一组新地址和抄一组新的助记词了。。。

假如一个用户真的想自己好好地保管我们的资产,也勤于资金投入不一样的公链,我相信他们肯定也会有类似的经验和好几组不一样的助记词或私钥。但到最后,他们可以保存好的,可能只剩下那些最主要的持仓资产,有的人甚至忘记备份某些资产的助记词。

长期下来,区块链资产管理的问题也致使区块链的门槛愈加高。所以一些钱包为知道决这个问题,已经提出了不少的优化策略。有的钱包甚至可以做到一个身份钱包的单一助记词,可以管理多种资产等功能,但仍然有很多组不一样的地址需要要由用户来做管理。如此的问题对于不少新公链而言可能更为紧急,由于假如用户要去通过他们的网页或手机钱包,去尝试链上的应用,用户就会增加很多管理公私钥的本钱,更何况他们不像邮箱的密码一样可以任由用户自己概念,既不滑顺也不香。

但为何区块链会有如此的限制?

如此的限制是由于现在很多的公链,都将不少密码学原语的用场景写入了共识层,因此在这部分公链中,像公私钥签名、推广客户端验证,与区块生成的哈希和常见的加密算法,基本上都是镶嵌在共识层中的。比如地址所用的验证、买卖用的签名等,其实都写在底层协议中,因此会变得很难以改动。另外,很多公链的虚拟机性能都不足以支持灵活的密码学原语部署,因此对于如此的公链而言,假如底层的虚拟机不预先支持某个密码学原语,那样基于该密码学原语的场景可能非常难直接被开发者用。

假如要更动,唯一的方法就是硬分叉!

拿ETH为例,ETH的共识层写入了哪些密码学的场景呢?

除去区块的加密签名和 Merkle Tree 的哈希外,还有买卖签名和推广客户端的验证。假如有其他人想要在这部分点上做改动,比如将ETH公私钥的哈希算法 keccak-256 换成其他签名算法,那样唯一的方法就是提一个 EIP (以太坊 Improvement Proposal),然后等待、祈祷这个提案被排入硬分叉之中。由于写在协议层的内容,就是全网的所有用户都需要遵从的规则。

然而硬分叉总是需要很长的时间,以 EIP 152 为例,这是一个 2021 年就提出的提案,期望将签名算法 BLAKE2 加入ETH中,但直到 2021 年底的伊斯坦布尔提案中才被加入到升级的内容当中,整整历时 3 年之久。

从刚刚 EIP 152 的例子中大家还会发现另一个限制,那就是在ETH上假如要用虚拟机不支持的密码学原语,几乎是不可能的。由于对于ETH虚拟机而言性能是一大限制,光是容易的运算,就可以消耗很多的 gas。

因此大家假如回顾ETH上历次的分叉,就可以发现从家园(HomeStead)的硬分叉升级开始,ETH就不断地把所大概常用到的密码学原语,比如 sha256 hash、ripenmd160hash 等持续的通过预编译(precompiled)的方法,加入到底层的虚拟机中。这点在拜占庭(Byzantium)或者伊斯坦布尔(Istanbul)的升级中也可以看到。ETH通过硬分叉的形式,来预编译密码学原语与这部分密码学原语运算的 gas 定价。

假如不通过预编译合约在节点先进行达成,那样很多签名算法的智能合约部署将花费很特别高的 gas 费,致使其根本没办法部署。比如 EIP 196、 EIP 197 之所以被采纳,就是预见了 zkSNARK 需要很多的 gas 进行链上的运算。因此预先将这部分加密算法,如椭圆曲线加法、乘法和配对验证等编译进了底层的 EVM 中,好让这部分计算本钱可以节省下来。所以,大家可以说在ETH上除去已经做了预编译的签名算法外,其余的加密算法基本上是无法用的。

上述这部分固化的密码学用方法,对于开发者而言是一个非常大的限制。

因为买卖和推广客户端的签名验证都被写入共识层,因此验证工具和步骤都需要根据规定的加密算法进行。比如在BTC或ETH中,假如大家要创建一个竞价推广账户,那样大家依然需要管理一组新的密钥对。

对于想要带来好客户体验的开发者而言,如此会产生不少的限制,并且需要通过其他方法,去弥补固化的底层设施带来的不友善的客户体验。譬如在创建助记词之后,大家可以在某些钱包中用 FaceID(如 imToken),譬如在 ABC Wallet 中,用户起初仅需靠像手机里的六字验证码就可以登入,等你真的感觉你需要把私钥或助记词导出了,再进行导出和备份。

这部分都是开发者试图提高客户体验所想出来的好方法,但对于每一条新的公链,密钥对管理的本质都是需要有一组新地址和密钥,这个问题是一直存在的。

上述的公私钥验证方法不够灵活的问题,在BTC、ETH等较为先发的公链上可能还不明显,由于他们已经有既有些用户,这部分用户也被折磨习惯了。但对于最近兴起的公链而言,假如还存在和先前公链同样的进入摩擦本钱,那样就是给用户设置了障碍,也会干扰开发者是不是想要在这个公链上开发的意愿。

一个对用户有学习本钱的公链,在获得用户上就存在着先天的壁垒,即便这部分公链有其他的闪光点,可能对于开发者而言,也不会那样有吸引力,由于他们知晓不少的用户可能都被这部分不友善的客户体验给吓走了。

另外,密码学原语不可以够灵活用的问题,影响的层面还不止于公私钥的保存。对于开发者而言,假如将来他们想用更一流的密码学原语来保证隐私及安全,一样会面临到底层的虚拟机能否部署,与支持签名验证的挑战。当然还会干扰现在大伙讨论的非常热的话题:跨链,由于不一样的链用的密码学原语也会有所不同,在虚拟机验证买卖时就会遇见这个难点,这也是为何现在很多同构跨链的解决方法(cosplaymos / DOT波卡 )可行,但对于异构跨链的策略却停滞不前是什么原因。

Nervos 的设计有什么不同?

在 Nervos CKB 中,除去买卖排序外,没其他硬编码的密码学原语,资产所有权的验证是通过 cell 中的 lock script 来做验证,其中的验证规则和用的密码学原语都是可以自概念的,因此几乎所有些密码学原语都可以被开发者灵活的用。

套用一句 Nervos 研究员 Cipher 老师的话来讲,就是:「在 CKB 上除去最基础的买卖排序以外,其余都是应用层的内容。」这让开发者拥有了很大的开发弹性,去进行各式各样的开发,比如更自由的竞价推广账户验证办法等。

由于在基于 RISC-V 的 CKB-VM 中,需要的就是一套可以符合 RISC-V 编码的验证规则而已,开发者有不少可以自由挥洒的空间。下图可以看出 Nervos 和其他可以支持智能合约的公链在灵活度上的差异,应用层的内容表示的是可以去做自概念的,协议层代表的是需要经过「分叉」才能改动的内容。

以现在 Nervos 的 Grnats 团队 Lay2 为例,为何他们开发的 pw-sdk 可以用ETH的地址,甚至是 以太坊域名服务 来接收 CKB?是由于在 CKB 上,地址是开发者可以任意把玩的应用层内容。理论上只须链上有已经有验证规则的 cell 和非对称加密的加密算法库,这种地址生成规则就可以被验证。比如大家可以把ETH的 Keccak-256 (SHA-3)的签名算法和验证规则和BTC的 SHA-256 都部署在链上,那样将来的其他开发者就可以用 cell deps 进行调用。

也因此,任何的开发者将来假如想在 CKB 上 ,为他的资产添加更一流的加密算法做为解锁的规则,是完全可行的。由于其他人都可以部署各种密码学原语库在 CKB 上,并且可以通过优化去节省存储空间与降低验证所需的 cycle 去减少部署的本钱,让任何一流的密码学原语不需要等到硬分叉也可以被用。

在 CKB 上可能看见的区块链将来:直逼网络的客户体验

基于灵活的密码学原语,大家可以说在将来,不少网络上用户很习惯的验证规则,也完全可能被写成 RISC-V 可以读取的形式,并且被部署到链上,比如 PGP Key 验证或者指纹解锁等功能。假如在链上有一个可以对应他们所用的验证标准的脚本,并且有可以支援这种验证的可信环境,那样这样便捷的用方法在将来是真的可能达成的。

再更深入一点地看,将来的应用层,会有更多的场景会用到密码学的各种算法。

近两年在分层扩容的范围(Layer 2),除去原先的闪电互联网、状况通道与其他的侧链解决方法以外,又出现了一种新兴的密码学扩容应用:Rollup,也就是借助签名算法来压缩买卖。

现在在 Rollup 上最主流的压缩买卖的方法是零常识证明 (zkp),也就是所谓的 zkRollup。将来假如在 Rollup 上有其他更一流的零常识证明解决方法,或者借助其他去签名算法(如 BLS 等),对于 CKB 而言,只须开发者可以想到低本钱的达成办法,都可以直接让 CKB-VM 验证,而无需通过硬分叉。由于这并不涉共识层的内容,而且 CKB-VM 相较于 EVM 而言也愈加地高效。现在安比实验室也在开发在 CKB 上可用的零常识证明库,将来可供开发者任意用。

另外,CKB 由于可以支持灵活的密码学原语,也在区块链跨链资产转移方面,比其它的公链有更大的先天优势进行来自不同链的买卖验证,让 CKB 更有机会完成异构跨链的资产流通与转移。

打从中本聪的BTC白皮书问世开始,区块链就是一个可以在中心化的环境下用密码学去证明共识的新技术,这是在网络上没办法完成的事情。但要大规模的用区块链,大家要做的不是让用户在体验上委曲求全,而是像 Lay2 团队的 Frank 说的那样:「大家需要一个可以有能力去支持开发者‘开门迎客’的基础设施」,让区块链不会由于底层设施的不灵活,而成为少数极客或圈内人的玩物。

公链假如可以灵活的支持各种密码学原语,让开发者可以有更高的弹性,那样就更可以跳过「教育用户」的这个缓慢的过程。由于就和网络一样,虽然目前大伙都是无网不欢的人,但对于纯粹的 C 端用户而言,他们依然无需知晓网络到底分了几层,或者 点对点 互联网是什么问题。

同样的,区块链的纯 C 端用户在用区块链技术时也无需知晓区块链的底层常识,大家要做的是塑造一个可以拥有网络体验,又有区块链的凭证,与安全和去中心化等加效果果的基础设施,而具备高度编程灵活性的 Nervos CKB 正在这条道路上奋勇向前!

出处: Nervos 中文社区 作者:Williams

>

关注我们