除了炒币之外,比较有深度的介入区块链行业的一种办法是开发Dapp,即去中心化的应用。钱包就是一种非常重要的Dapp,可以说是币圈用户的刚需,如果说微信是移动互联网的一种流量入口,那么一款好用的钱包可以说是区块链世界的流量入口。
现在市面上可用的钱包软件已经非常多了,支持比特币的钱包最多,最经典的是Bitcoin Core,它是最早由中本聪开发的全节点比特币钱包软件,经过了9年的发展,一直集中于接收和发送BTC,以及查看交易记录等核心功能。
我虽然研究了一段时间的区块链技术,但并没有亲自动手做过一款钱包软件,发现这个领域的进入门槛还是挺高的,网上可以查到的一篇相关文章的链接是:https://www.blockchainappfactory.com/blog/category/wallet-development/ 。
在开发数字货币钱包之前,首先得知道什么是数字货币钱包。
普通用户对钱包有一个常见的认识误区,他们以为数字货币的那一串数字保存在钱包里,实际上,钱包里主要保存着私钥,用户所持有的数字货币全部记录在区块链里,钱包软件扫描区块链上的所有交易记录来更新账户的余额等信息,当区块链的节点数据未完成同步时,用户余额可能显示得并不正确。
以BTC为例,钱包软件记录着私钥信息,接收BTC时,钱包将私钥转换成公钥,也就是BTC地址,这样可以让别人向这个地址转账。发送BTC时,钱包根据交易记录,从里面找到未花费过的BTC(准确来讲是UTXO),生成一笔交易,并用私钥进行签名,再广播到区块链网络中。
所以,接收BTC、发送BTC、查询余额是钱包的主要功能,当然内部还要完成节点同步、区块链记录的缓存、私钥生成、公钥转换、数据签名等各种操作。
根据钱包是否接触网络,钱包可以分为冷钱包(或离线钱包)和热钱包(在线钱包),根据钱包所在的操作系统或媒介,还可以分为硬件钱包、桌面钱包、手机钱包、纸钱包等等。
开发一款钱包软件,要把安全特性放在第一位:把私钥加密保存在系统内部,不被第三方轻易窃取;时刻提醒用户私钥的重要性;提供keystore、助记词等多种私钥备份方案;提供助记词等恢复私钥的功能等等。
当钱包软件的主要功能完成之后,还可以给钱包增加许多特性:
而开发这样一款钱包软件,需要根据钱包软件运行的操作系统、开发团队掌握的编程语言,选择合适的开发类库,先学习开源的类似软件,然后一步一步完成自己的钱包软件,绝对是一个比较漫长的积累过程。
大家看到了国内钱包软件imtoken的光鲜一面,但从创始人的采访记录来看,该产品在很长的时期内一直在烧投资人的钱,并没有找到合适的赢利模式。由于钱包软件管理着私钥,如果开发团队没有信用背书,普通用户并不会使用你的产品,不会轻易地把手里的上万资产交给你来管理。所以说,不仅仅要考虑技术细节,如何在这个市场中建立信任,扩大用户规模,是创始团队需要提前考虑的主要问题。