美文网首页
基于以太坊的电子钱包开发  学习笔记

基于以太坊的电子钱包开发  学习笔记

作者: 92b0f2b9b6f8 | 来源:发表于2018-07-14 23:47 被阅读797次

本篇文章为聆听朱智胜老师分享会的笔记整理所得,图片来自朱老师博客。
朱老师主要讲解基于以太坊的钱包开发,钱包作为币圈的入口,是各家必争之地,基于以太坊的钱包和基于其他公链的钱包开发具有相似之处,所以本篇文章钱包开发的思路可供开发者借鉴参考。

钱包核心功能

钱包的核心功能是什么?

答:转账
下图为钱包中转账的示意图,此处的转账是区块链上的真实转账,而不是交易中的中心化转账,如imtoken钱包


钱包之简单模型:

钱包核心之充值

对于充值主要需考虑一下四个部分:

  • 用户地址如何分配?
  • 如何发现用户充值?
  • 如何确保充值到账?
  • 如何发一笔意外之财?

用户地址如何分配

分配地址存在两种方案。
一般的做法是当有用户下载客户端注册时,进行地址的创建,调用的接口为personal_newAccount,此时创建的私钥位于节点的服务器上。了解密码学的同学知道,这时操作主要有生成私钥,通过椭圆曲线算法由私钥生成公钥,在经过哈希及编码等操作生成地址。对于这一过程所用到的加解密算法强度越高,需要的时间也就越多,所以若同时有几十万的用户注册,那可能会挂掉,同时由于私钥文件存在于节点处,在传输给用户的过程中存在安全性传输问题,这也是很多人忽视的问题。

第二种方案对第一种方案进行了优化,方法为批量生成地址,在用户注册时为用户进行分配,在安全上对未分配的地址进行加密保护及物理隔离以保证其不备泄露,这种做法避免了同时注册用户过多带来的压力问题,同时也保证了安全性。

如何发现用户充值交易?

一般发现用户充值的办法是遍历区块。当有一个新区块被发布之后,系统对区块中交易进行遍历,对所有交易进行解析,将交易中的地址余系统中的地址进行匹配,若有系统中地址交易则更新钱包信息,如余额等。

如何确保充值到账?

这个问题也就是交易确认次数的问题,当用户刚充值的时候,系统会在最新的区块查询到充值的这笔交易,并将金额增加到余额中,但在区块链中我们一般认为6次确认才可保证交易基本不会被篡改,所以要对交易进行确认次数的计算,公式为:当前区块高度-交易所在区块高度+1

如何发一笔意外之财

答:守株待兔。。。
由于之前预先生成了很多地址,所以守株待兔就是当给用户分配的时候检测一下有没有人充错充到这些地址上。。。

钱包核心之提现

  • 交易前的检查
  • 如何发起交易
  • 如何计算手续费

交易前的检查

  • 地址合法性的检查===>利用源代码中的规则进行检查
    为用户友好,如检查地址时检查是测试地址还是生产地址,若为测试地址,则不进行转账
  • 交易和nonce检查
    此处的nonce为以太坊中每个账户的一个参数(而不是区块中挖矿的nonce),该参数为从此地址发出的交易数,若在节点中,该参数由节点自动累加,在钱包客户端中则需钱包进行累加,nonce获取:eth_getTransactionCount。

如何发起交易

在普通节点中,发起交易可直接调用函数:eth_sendTransaction/personal_sendTransaction,在钱包中,首先需对交易进行签名(eth_sign),然后广播交易(eth_sendRawTransaction)

如何计算手续费

由于手续费的大小会影响到这笔交易被打包的速度,所以首先用户要可以自己指定手续费金额。其次,为对用户友好,可通过节点对手续费进行预估(eth_estimateGas),同时当用户全部提现的时候要保证gas+提现金额不大于现有金额,否则要抛出异常。

以太坊节点之孤立

  • 什么是孤立
  • 如何处理孤立交易

什么是孤立

如图所示,绿色链条为最终的最长链,但当挖矿到区块3和区块3’时,并不能确定哪个块为最终区块链上的区块,所以当绿色链条成为最长链后,区块3’和区块4’就被孤立了,这两个区块中的交易也就无效了,所以我们要检测我们所扫描的块是否一直是主链上的块而不是孤块中的数据。

如何处理孤立交易

在孤块中的交易则为孤立交易,处理的方式则是在每扫描一个新区块,也要看一下这个区块所记录的前一区块哈希,是否是上一区块的哈希值,如上图中,当扫描第5个区块的时候,发现其中记录的前一区块哈希为区块4’的哈希而不是区块4的哈希,则说明我们前边的区块记录的是错的,需要在向前找区块3是否是对的,直到区块2,然后记录区块3,4,5,完成主链的扫描。

架构&安全策略

节点热备

通过写一个探活程序,实时监测节点是否正常运行,一旦挂掉,立即切到另一个节点上。

节点安全之私钥管理

私钥要单独存放并加密,必要时可多层加密,并进行权限层级管理

整体系统架构

参考资料:https://blog.csdn.net/wo541075754/article/details/79984295

相关文章

网友评论

      本文标题:基于以太坊的电子钱包开发  学习笔记

      本文链接:https://www.haomeiwen.com/subject/nypdpftx.html