Tendermint阅读VI
文章目录
看了两个复杂的,我们来看一个简单的模块,crypto模块。这个模块封装了很多常用的加密所用的包。我们就大体介绍一下。
这个包最重要的是两个接口定义PubKey
和PrivKey
的定义,分别如下
|
|
后续的就是这个的实现及应用。我们一个包一个包的看。
armor
包是一个对数据封装和解析的模块,把数据按照要求来封装和解析,没有难点。
ed25519
是一种加密方式,实现了我们之前说到的这两个接口。
encoding
是对公钥和私钥进行序列化的处理,是使用了amino提供的接口来处理的。
merkle
就是常说的默克尔树了,这里面提供了常见的建立数,验证树的操作。想到我很久之前还写过一次生成默克尔树的源码呢!
multisig
就是对信息的多人签名,这个在比特币中有过应用,在这由于还没看完源码,不清楚如何使用的。
secp256k1
是两一种加密方式,这个地方是调用的btcsuite的库。看来btcd已经成为go常用的包之一了。
tmhash
这个是对sha256hash的封装,挺简单的。
xchacha20poly1305对称加密aead算法的一种实现,这个chacha20在ssr中目前应用的比较广泛,因为资源占用少,速度快。
xsalsa20symmetric`也是一个对称加密。
看起来这个的实现实际比较少,也比较简单,如果需要调用库的话还不如直接去使用btcd的库了。