x
x
查看: 725|回复: 0

[供应] 以太坊去中心化钱包开发

[复制链接]
发表于 2020-9-7 10:27:47 | 显示全部楼层 |阅读模式
其实无论 Geth 节点或 Ethereum Wallet 都可以称作钱包,因为它们都可以存储以太币、都可以发送交易指令等。但这里讲的钱包分类是另外一个维度,基于 Geth 节点上层再次开发出来的移动端 App 钱包。根据私钥存储的位置可分为两类:
去中心化钱包不是本次要讲的重点,这里只给大家简单介绍一下。无论是中心化的钱包或去中心化的钱包,在 App 层面都是很轻量级的,App 内是不会内置一个 Geth 节点,交易的查询或发送都是通过服务器来进行操作,不同点是交易签名的私钥由谁来保管和负责。
去中心化的钱包有个关键词:助记词。可以用下面的表达式来形容助记词的作用:
通过上面的公式可以看出助记词的重要作用,也是去中心钱包功能的一个亮点。当在这类钱包中创建一个账户之后,钱包会根据生成的私钥文件,生成一套助记词,可为英文可为中文,通过助记词可以反向计算出 keystore + 密码。助记词由用户手抄存放在安全的地方,当进行交易时,输入助记词对交易进行签名,发送交易。当助记词丢失,也就意味着失去了私钥,而钱包一般不会保存用户的私钥信息,资产将永久丢失。
去中心化钱包的好处是不用担心平台从中作梗,不用担心平台被黑客攻击而导致资产损失,但要求个人有一定的私钥保存能力。
所谓中心化钱包就是将所有的私钥文件存储在钱包服务商的服务器内,由服务商来保管这些私钥文件,也就是说资产属于你,但私钥不由你保管。这样做的好处是用户根本不用记住私钥,只用记住在平台所开设的账户、登录密码和支付密码即可。即使忘记了密码,还是可以通过平台提供的忘记密码进行找回,当然,这样就不具有去中心化钱包的优点了。
下面就带大家了解一下开发这样一个去中心化钱包的幕后技术工作和思路,后面所提到的钱包如果未做特殊说明,均指中心化钱包。
钱包对外呈现可能有不同的功能,充值、提现、转账等,但从本质上来说只有一个功能,那就是转账。区块链本质上就是一个账本,记录着一笔笔交易,钱包当然离不开这个本质。
在这个过程当中也对应着钱包账户资金的增加与减少。
用户在使用钱包的时候肯定需要有一个属于当前账户对应在区块链上的地址,这个地址如何生成呢?在技术交流群中,不少开发人员是这样实现的:每次当用户注册时就调用 Geth 节点的personal_newAccount方法生成一个地址,并将地址存放在 Geth 节点默认的位置。这种方式可以实现,但从技术上和安全上来讲是不可取的。
优化之后的做法是事先批量生成地址,当用户注册时只用把地址分配给用户即可。这样做的好处是:
此种方法生成 Web3j 提供了相应的创建方法,可在无 Geth 节点的情况下通过代码直接生成符合私钥规则的公私钥。当然,如果有开发能力也可以通过 Geth 的源代码中的私钥生成方法抽离出一个单独的与网络无关的生产私钥程序。
在比特币的钱包中,有子账户的概念,只需要在一个总账户下创建 N 多子账号,用户充值到此子账号的比特币同样的会显示在钱包上,同时又提供了查询一个地址所有交易的方法。遗憾的是以太币并没有提供此类接口,只能通过遍历区块交易的方法来判断是否有对应账户的充值交易。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表