交易管理
交易管理可以被认为是应用和签名解决方案之间的实际接口。这是一些操作的请求被解析成可以被私钥签名的格式的步骤。它包括与应用的通信以及与私钥管理的通信。在这两者之间,需要签署的数据应该被解析,并以一种用户可以理解他们正在签署的内容和原因的方式显示给用户。此外,这些签名请求的历史和状态应该被记录下来并提供给用户。
私钥管理
你可能认为这是钱包唯一的真正责任是保证你的私钥安全。事实上这往往是钱包建设者最不具备的能力。密码学和安全专 家应该负责开发行业标准的解决方案,并实施私钥存储的最佳实践。这应该是他们的全部业务,然而相反,我们看到现在的钱包在安全性方面做的不错--但当涉及到密码学时,这并不够好。
如果将私钥存储的责任从钱包中移除,可能会导致更多种类的安全解决方案,这些解决方案依赖于不同的假设并提供不同的功能。目前已经有很多超越传统软件存储的私钥解决方案:像Ledger中的硬件安全模块,或者其他加密技术,比如Torus使用的shamir秘密共享,像ZenGo使用的阈值方案,多方计算,或者新颖的零知识技术。
钱包设计
私钥一般太难记忆了,使用也不方便,所以从钱包设计的角度,就为简化操作同时不丢失安全性,就出现了助记词的方法。一般情况下,助记词由一些单词组成,只要你记住这些单词,按照顺序在钱包中输入,也能打开钱包。
种子生成密钥
用户最好的体验仍然会是密码方式,所以钱包还提供了keystore让用户导出保存,这个Keystore也是私钥经过加密过后的一个文件,需要你自己设置的密码才能打开文件。这样的好处是就算keystore文件被盗,只要你额外设置的密码够长够随机,那么短时间内私钥也不会泄露,有充足的时间转移地址里面的加密货币到其他地址。Keystore会存储在使用的设备里,这样每次登陆只用输入相应密码即可。
总结
区块链钱包实现的技术原理用一句话表示就是:钱包助记词生成了种子,种子生成了私钥,私钥推导出公钥,公钥节选部分成了钱包地址。同时钱包提供了keystore,它也是私钥加密后的文件,可以配合正常的密码使用,便捷了用户的钱包使用。