Commit 65d77751 authored by 张振华's avatar 张振华

add files

parent 5fb0c863
#1.需求描述
遍历某个地址在合约中的所有余额,并列出有币合约的合约地址和frozen和active的值。
存储格式mavl-coins-bty-exec-exec_addr-addr,例如:mavl-coins-bty-exec-16htvcBNSEA7fZhAdLJphDwQRQJaHpyHTp:1JmFaA6unrCFYEWPGRi7uuXY1KthTJxJEP,16htvcBNSEA7fZhAdLJphDwQRQJaHpyHTp为合约地址,1JmFaA6unrCFYEWPGRi7uuXY1KthTJxJEP为具体账户地址。
#2.输入参数
![输入参数](./resource/exec-balance-param.png)
样例:
cli exec_balance -symbol bty -exec coins -addr 1JmFaA6unrCFYEWPGRi7uuXY1KthTJxJEP -exec_addr 16htvcBNSEA7fZhAdLJphDwQRQJaHpyHTp -height -1
#3.输出结果
{
"totalAmount":10,
"frozenAmount":3,
"activeAmount":7,
"execBalances":[
{
"execAddr":"xxxx",
"frozen":1,
"active":2
},
...
]
}
#4.调用过程及处理逻辑
![输入参数](./resource/exec-balance-query.png)
ReplyGetExecBalance.IterateExecBalanceByStateHash中的处理逻辑如下:
合法的key例子:mavl-coins-bty-exec-16htvcBNSEA7fZhAdLJphDwQRQJaHpyHTp:1JmFaA6unrCFYEWPGRi7uuXY1KthTJxJEP
对于遍历时遇到的key和value进行如下处理:
1.如果查询请求中的前缀以:结尾,说明携带了具体合约地址,则一个用户地址对应该合约有一条记录,处理完成即可返回结果。
2.如果查询请求中未以:结尾,说明未携带具体合约地址,需要遍历所有合约地址,对于用户地址相符的记录进行解码处理,并统计余额及记录合约地址和该合约上的余额信息,直到遍历完成。
<font color=#FF0000>
注意:
由于存储合约余额的格式中,用户地址在后,变化的合约地址在前,导致处理上不是很直接,避免不了遍历所有合约及用户地址,在性能上需要注意。
</font>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment