区块链学习(09)比特币钱包模型设计

钱包模型设计

前面几篇内容讨论了常用的Java加密解密的算法,大部分在简单比特币的系统实现中会用到。下面讲一下比特币的钱包模型设计。

注意:钱包的模型只包含用户名密码(公钥和私钥),余额等内容都在交易账本中记录,后面会详细讲交易模型!!!

前面用支付宝类比过比特币,支付宝账号有用户名密码,比特币账号也有用户名密码。可以简单理解为,比特币的账号密码就是公钥私钥。关于钱包有以下几种业务:

1、对于正常创建钱包时,需要包含公钥私钥

2、对于老用户需要向其转账时,其它用户只需要获取其只包含公钥的钱包对象

3、钱包的地址不能使用公钥原文,长度不合适,可以使用前面介绍过的哈希算法哈希成固定的长度




代码实现

首先建立一个钱包实体类:

实体类里面只有两个属性,公钥和私钥:

获取钱包,正常定义包含公钥私钥的钱包的情况:

获取钱包的另一种情况,只包含公钥的钱包:


再来看获取钱包地址的方法:

通过上面的方法,所有的钱包都能获取一个比较短的长度一致的钱包地址,而且从地址看不出用户的任何信息,这一点与支付宝有本质的区别。



测试

这样一个简单的钱包模型就设计完成了,写一个测试方法,检查生成的钱包和地址:

测试结果如下:

可以看到,成功生成了一个钱包,成功获取了钱包的地址。钱包地址本身经过编码,没有任何个人明显的信息,也很难记忆,所以很安全。在实际的比特币软件中,钱包地址的生成比上面的逻辑复杂得多,但是道理上类似,此处为了简单,只用了sha256对地址进行编码。



项目代码:https://gitee.com/blueses/btc-demo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容