地址管理工具

地址模块是区块链的基础,区块链的账户是通过地址标识的,一个地址就是一个账户。那地址怎么生成呢?前面的课程已经讲到啦,主流的地址算法有RSA、ECC、ECDSA、SM2、Curve25519、Ed25519等。使用地址算法,会生成一对公私钥,公钥可以计算出地址,用户只需持有私钥,就持有了区块链地址账户的所有资产。因为私钥到公钥或地址是单向的,私钥可以计算出公钥或地址,但是公钥或地址不能计算出私钥。那么,地址管理工具的必要性是不是就体现出来了呢?

地址管理工具,主要三方面功能吧。首先是公私钥及地址的生成;其次是离线或在线签名;最后是同时托管多个地址。

地址管理工具可以嵌入到业务层,也可以抽离出来作为一个小工具配套使用。如果想对用户透明开源的话,必须做成小工具独立使用,而且这个小工具还得有开源版本,支持离线部署使用。同时部署一套在线版本,支持用户快速便捷使用。

地址管理工具从业务解耦的话,主要实现公私钥及地址的生成和离线或在线签名功能即可。同时托管多个地址与业务账户是强关联的,所以不建议抽离,而是在业务层实现。

这样的话,大致的使用流程就是这样的啦。

用户到业务平台注册账户,注册完成后引导用户到地址管理工具,使用在线版本或安装离线版本,生成自己的公私钥及地址。数据会以txt格式下载下来,其中的数据结构类JSON,包含三个键:私钥、公钥、地址。接着复制公钥,导入到业务平台,生成自己的区块链账户,业务账户与区块链账户是一对多的关系。当区块链下账户发生交易时,需要签名的时候,业务平台会返回需要签名的数据,用户复制这个待签名数据到地址管理工具,再复制当前区块链账户对应的私钥,完成签名,获取到签名后的数据。复制签名后的数据,再到业务平台提交,交易真正完成。

以上是用户完全自己保存私钥的情况,这种对用户的要求也更高一些。不过一些用户可能会出现丢失私钥,或者根本不会操作签名流程。

考虑到这些问题,业务平台也需要实现托管用户私钥的功能。这种可以屏蔽用户关于区块链的操作。那就还是原来的配方,还是熟悉的味道,还是原来的传统Web2平台形式,用户使用起来也方便。

平台托管私钥的话,签名过程肯定是在后台用程序执行的,签名过程对用户不可见。也就是用户必须把私钥给到平台存储,这样才能实现用户的无感签名。公私钥及地址的生成,也可以整合进业务平台。这种的话,用户注册平台账户的同时,就同步生成区块链账户,标记为平台地址。用户增加区块链地址的话,也可以直接在业务平台增加,标记为用户托管地址,业务平台直接拿到新地址私钥并托管。还有就是用户自己在地址管理工具生成的地址,导入到区块链地址,这种标记为用户自有地址。针对用户自有地址,看用户是否愿意导入私钥,如果不愿意的话,签名动作就需要用户额外完成。如果用户愿意导入私钥的话,标记则改为用户托管地址,签名过程于用户而言无感。

综上,地址管理工具的独立版需要有,整合到业务平台的也需要有,兼顾不同的用户群体,让用户群体自主选择自己保管私钥还是平台托管私钥。自己保管私钥的话,数据自有,但是操作过程会麻烦一些。平台托管私钥的话,平台会有数据权限,但麻烦的操作可以全部由平台处理,使用上会比较简单。

但不论如何,地址管理工具一定需要开源,而且支持离线部署使用,这样才能真正实现用户自己保管私钥,平台完全不知道用户私钥。一旦涉及到不透明程序,至于平台有没有偷偷保存用户私钥,用户是完全不知的。所以,要做独立地址管理工具的话,就开源它吧。