之前熊熊@mylord1992说steemcn的钱包页面载入不了,试了一下的确是有这个问题。
尝试在本地运行网站,没有这个问题。想了一下,可能是节点的问题,因为steemcn.org用的是anyx.io而我在本地运行的则是api.steemit.com. 就记录了一下这个问题,想着有时间解决一下。
昨天有时间就仔细看了一下,发现steemit的全节点真是财大气粗啊!
只用一个api就可以获取所有数据(比如订阅,热门,新帖,钱包,作者帖子等等)
1 | const raw = await api.getStateAsync(path); |
有用的,没用的数据都读取进来,反正每个月的管理费砸点STEEM就有了~
steemit有钱大家都知道,但是其他节点可没有steemit那么有钱,所以哪些api比较费钱或者重复,他们就会选择不支持。
其中transfers API他们就选择不支持。钱包页面需要transfers API来获得钱包数据,由于anyx.io或者minnowsupportproject 节点都不支持这个API,导致steemcn的钱包页面载入不了。
支持不了transfers api也不是世界末日,看看transfers API返回什么数据,用其他的API读取相关的数据就好了。
上图里面,主要需要的是accounts。accounts保存关于钱包的记录(比如steem/SBD数量,sp数量,转账记录等)
既然不让用transfers API,可以改用getAccountsAsync。这个API会返回steem/SBD数量,sp数量等信息。但是又缺少了转账记录。要获得转账记录,可以使用getAccountHistoryAsync来获得。但是getAccountHistoryAsync会返回所有的账号历史,比如点赞记录,审查收益记录,文章收益记录,转账记录等等,而我们只需转账记录,所以还要把除了转账记录以外的数据过滤掉。
按照上面的方法,就可以取代transfers api了。
修改后的steemcn。除了账号估值没去修复(修复了也没啥用,那个价值也不准),其他都正常显示了
虽然麻烦了点,但是经过折腾,倒是对代码有了更多的了解。下面就要去加上Steem-engine的钱包了。
This page is synchronized from the post: ‘财大气粗的steemit全节点’