以太坊钱包之余额该咋整?

    自从做了钱包,余额就一直是个不大不小的问题,说问题大吧,那是因为用户看到自己的不对了,立刻爆炸;说其小是因为,其实钱包里余额是水中月亮,月亮还是那个月亮,你的钱还是你的钱,只是偶尔有点水波荡漾,影子有点模糊。

   由于eth的性能不像eos这么屌,你刚转账立刻就到账了;eth是需要一段时间的,就是这一段时间造孽啊。为了提供更人性化的服务,要求余额也人性化起来,用户转钱了,余额就要变,玩过以太坊的都明白,这会儿交易肯定还是pending状态呢,余额肯定不会变啊。如果要求余额更加人性化,只能自己去维护这个值;然后就会有很多坑,我们一一来说一下这些坑。

    交易失败了怎么办?不用说余额回滚。

    一笔交易在你自己的txpool里没有了,却一直留在别的节点咋办?说实话,真是不知道咋办,首先你自己发现交易没有了,你肯定认为交易被丢弃了吧,所以咋办余额回滚;过了一段时间,可能是几个小时,也可能是几天,你发现交易成功了,咋办,更新余额,然后余额就有问题了。比较好的方法,扩大一下自己的txpool,检测txpool的时候,多检测几个节点的,不要只抱着一个不放。

    token交易怎么办?这个也很有意思,如果你对erc20的交易检测的不够完善,也许你会漏掉一些erc20的交易,比如那些通过合约调用token合约的,或者使用的转账函数比较奇怪的。然后你的余额就不对了。

    目前最后一个问题,如果你用户三心二意的,使用了多个钱包,今天用这个,明天用那个,你要是想做到精确的维护余额,就比较困难了。

    所以,我比较建议的余额模式是,和https://etherscan.io/保持一致,什么意思呢,就是余额不需要什么人性化,这就是区块链的特性,不要认为这是退步,恰恰相反,当你身处中国给欧洲的一个朋友转了10eth,而只需要等几分钟,这TMD已经是个了不起的进步了。

ETH:0x639ebca1538e8a4b10fe57c2d6e199fd907e197a

猜你喜欢

转载自blog.csdn.net/xq723310/article/details/81506465