目前大多数公链都将很多密码学原语的使用场景写入了共识层,固化的密码学使用方式对于开发者而言是一个很大的限制。 原文标题:《为什么自定义密码学原语对在区块链上的开发至关重要?》 区块链是一个基于密码学、经济学和网络科学的新技术。对于一般的大众来说,其中的密码学并不是一门容易亲近的学科,甚至是上面提到的三个学科中,大家觉得最有距离感的学科。但身处区块链圈的朋友们一定会常常听到「区块链是一部 Trust Machine」这样的说法,或者有人会说在区块链的世界里是「In Math we Trust」,可见密码学对于区块链技术来说是根基一样的重要存在。 好了,那么问题来了:
区块链的哪些地方用到了密码学?首先,如果你是一个区块链用户,可能在你房间里的某个角落,会有一张纸条,上面抄着十二个不知道怎么来的单词,有的人还有很多张,甚至有些大 holder 会把这十二个英文单词刻在钢板上,然后锁进保险箱里。 是的,为什么这十二个助记词,或者像一长串乱码般的私钥能够代表你对资产的所有权呢? 这背后的原理其实就是密码学。 区块链上的密钥、地址和钱包都是通过密码学去实现,利用非对称加密技术——椭圆曲线算法(ECC)可以验证某人持有的私钥是否是吻合某个公钥,通过这个方式我们可以证明这个人是否是这笔加密资产的持有人,因为除了拥有私钥的人之外,其他没有该私钥的人是没有办法解锁这笔资产的。 我们在此用比特币举例私钥、公钥和地址生成的原理,一个比特币钱包中包含一系列的密钥对,每个密钥对包括一个私钥和一个公钥。私钥通常是一个随机选出的 256 位的数字。基于私钥,我们就可以使用 secp256k1 标准的椭圆曲线这个单向密码函数产生一个公钥。基于公钥,我们又可以使用一个单向哈希函数 SHA256 和 RIPEMD160 生成比特币地址,再通过 Base58 check 编码将比特币地址变成现在这较为简洁的形式。而像我们比较常用的助记词,则是通过基于 BIP 39 标准而生成的随机英文单词。如果没有私钥或助记词的人,是无法使用这笔加密资产的。 比特币的公钥和地址的生成过程,图取自精通比特币 当我们有了可以配对的密钥对后,可以在各种类型的钱包或者客户端上做验证,确认资产的所有权,并且通过这个客户端来进行各种资产的使用。例如最简单 BTC 转账,或者再进阶一点的用某个钱包去签署智能合约的交易:比如用 Metamask、imToken 或者 Alphawallet 等钱包里的 ETH 去购买加密猫,或者在 DeFi 的平台上面进行借贷,以及用 Uniswap 交换某些 ERC20 Token 等。 (责任编辑:admin) |