该项目目标是实现一个最小的可运行版本的类似bitcoin的blockchain。
目的:
1. 阐述bitcoin的机制
2. 熟悉相关知识点
github地址:bitcoinlitelite
椭圆加密算法 crypto/key.go
贴上一篇介绍:椭圆加密算法
在blockchain中,该算法主要用于公钥和私钥。当各个节点接受到数据的时候,需要拿出该transaction的owner的公钥,对交易内容进行验证,验证成功则说明的的确确是该owner发起的交易。
所以目前程序里面的逻辑是:
1. 用户初始化的时候,分配给该用户一个公钥和私钥。bitcoin里面一个私钥对应着多个公钥,并且是base58编码,golang原生并不是(或者我没看到,谁给解答下),所以暂时就一个公钥一个私钥。后期会考虑用上 secp256k1 方案。
2. 用户签名的时候,用私钥签名,验证的时候,用的是公钥验证。因为不同的用户是不会拥有对方的私钥的。