Skip to content

Instantly share code, notes, and snippets.

@phoorichet
Last active August 16, 2019 04:15
Show Gist options
  • Save phoorichet/a347bebcb2a4bfe7965ea5f0fc9e0e8a to your computer and use it in GitHub Desktop.
Save phoorichet/a347bebcb2a4bfe7965ea5f0fc9e0e8a to your computer and use it in GitHub Desktop.
List the total rewards amount delegator withdrawn from validators
const axios = require("axios")
const BN = require("bignumber.js")
let page = 1
// map[validator] => amount
const validators = new Map()
// add to url query `validator=${wantValidator}`
const wantValidator = 'default:0xa5b2C08c1DcD58d819317b79CbC9b5A8566bDF73'
const main = async () => {
try {
while (true) {
console.log("page", page)
let url = `https://api.loom.games/delegation/rewards?&state=UNBONDING&lock_time_tier=&from_block&to_block&page=${page}&sort=%2Bcreated_at`
const { status, data } = await axios.get(url)
if (status != 200 || data.data.length == 0) {
break
}
for (const delgation of data.data) {
const amount = BN.BigNumber(delgation.amount)
const sum = validators.get(delgation.validator)
if (!sum) {
validators.set(delgation.validator, amount)
} else {
validators.set(delgation.validator, sum.plus(amount))
}
}
page++
}
} catch (err) {
console.log(err.stack || err)
}
const denom = BN.BigNumber(1e18)
// print out
console.log('validator', "|", 'unbonded amount')
console.log('---------', "|", '---------------')
for (const validator of validators.entries()) {
console.log(validator[0], '|', validator[1].dividedBy(denom).toFixed(2))
}
}
main()
func ListAllDelegationsCmdV3() *cobra.Command {
var flags cli.ContractCallFlags
cmd := &cobra.Command{
Use: "list-all-delegations",
Short: "display the results of calling list_delegations for all candidates",
Example: listAllDelegationsCmdExample,
Args: cobra.MinimumNArgs(0),
RunE: func(cmd *cobra.Command, args []string) error {
var resp dposv3.ListAllDelegationsResponse
err := cli.StaticCallContractWithFlags(
&flags, DPOSV3ContractName, "ListAllDelegations",
&dposv3.ListAllDelegationsRequest{}, &resp,
)
if err != nil {
return err
}
validators := make(map[string]*loom.BigUInt)
for _, listResponse := range resp.ListResponses {
for _, delegation := range listResponse.Delegations {
if delegation.Index == 0 {
validator := "default:" + delegation.Validator.Local.Hex()
_, ok := validators[validator]
if !ok {
validators[validator] = loom.NewBigUIntFromInt(0)
}
validators[validator] = validators[validator].Add(validators[validator], &delegation.Amount.Value)
}
}
}
fmt.Println("validator", "|", "bonded amount")
fmt.Println("---------", "|", "------------:")
divider := 1000000000000000000
sum := loom.NewBigUIntFromInt(0)
zero := loom.NewBigUIntFromInt(0)
for k, v := range validators {
sum = sum.Add(sum, v)
amountInt := zero.Div(v, loom.NewBigUIntFromInt(int64(divider)))
fmt.Println(k, "|", amountInt)
}
amountInt := zero.Div(sum, loom.NewBigUIntFromInt(int64(divider)))
fmt.Println("total", "|", amountInt)
return nil
},
}
cli.AddContractStaticCallFlags(cmd.Flags(), &flags)
return cmd
}
{
"name": "dpos-rewards",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"axios": "^0.19.0",
"bignumber.js": "^9.0.0"
}
}
@phoorichet
Copy link
Author

phoorichet commented Aug 15, 2019

As of Aug 15, 2018

The amount withdrawn rewards per validator

validator unbonded amount
default:0x0cA3d6bf201cE53c7DDC3CB397AE33A68eD4a328 12132.48
default:0x9F1581A14f1194AB4913745301B55fE8d20595Fe 1210789.71
default:0xa38c27e8Cf4a443E805065065Aefb250b1E1cef2 4392148.65
default:0xb7b1A2Ed7c47287Ba4da1Fd17F626fAf2134e9d0 56776.97
default:0x911aC334f7014f0635b95a4A2225b45C5292C6c6 220846.97
default:0x9C6259c5B2A71C8642C2C84CcFb8F734e6bC6b87 27215.48
default:0xa5b2C08c1DcD58d819317b79CbC9b5A8566bDF73 60104.04
default:0x7bc38ff819B75f85275d2fd83080ec337B4e0AFE 152840.83
default:0x59Dd7302BF628156f948A9101169135324058d60 49647.99
default:0x5ba928aCE46672f15e6D8364084F1D6AE302543e 46370.80
default:0x6B3Dd380eB365603182617d698fdBBE52befa801 18642.13
default:0x1985871eD65B80e09ecA382c3e3c2d6831e092eC 35271.38
default:0x8Ec7faF77Cc27eEe73AE25B077Fe5d05277CD8Cc 119315.46
default:0xA2e56E6253407242674C34Ae7aEB7aE11883BCDB 169268.41
default:0x319E459F5D0DDC5DdF3e3610398A8b6E6772dAA3 2460.15
default:0xb6b0F012149fBaAAb596F762434De54C6c27D16c 477.81
default:0xE3bEb36ae8EdB5dBb5c2cfBa9960F0819Dd8E13a 71095.12
default:0xeB5d1FA6E421485C7ae2fbA8E3199588eD931dAf 13579.31
default:0xD58d72B3BEf93fCBF13466Cb2d83Bcc145843510 1135.91
default:0x0E99fC16e32E568971908f2Ce54B967a42663a26 77.16
default:0xe6fBaAFC34F746ac2280fa8Bd1787A8292f13148 111445.56

The amount of current rewards stored on validators

validator bonded amount
default:59Dd7302BF628156f948A9101169135324058d60 344261
default:911aC334f7014f0635b95a4A2225b45C5292C6c6 52032
default:9F1581A14f1194AB4913745301B55fE8d20595Fe 459850
default:a5b2C08c1DcD58d819317b79CbC9b5A8566bDF73 153384
default:D58d72B3BEf93fCBF13466Cb2d83Bcc145843510 114865
default:e6fBaAFC34F746ac2280fa8Bd1787A8292f13148 29700
default:0cA3d6bf201cE53c7DDC3CB397AE33A68eD4a328 87697
default:4A1b8b15E50ce63cc6F65603eA79bE09206cAe70 1522068
default:b6b0F012149fBaAAb596F762434De54C6c27D16c 62889
default:E3bEb36ae8EdB5dBb5c2cfBa9960F0819Dd8E13a 34478
default:319E459F5D0DDC5DdF3e3610398A8b6E6772dAA3 76526
default:5ba928aCE46672f15e6D8364084F1D6AE302543e 126328
default:7bc38ff819B75f85275d2fd83080ec337B4e0AFE 72153
default:8Ec7faF77Cc27eEe73AE25B077Fe5d05277CD8Cc 314739
default:9C6259c5B2A71C8642C2C84CcFb8F734e6bC6b87 490787
default:a38c27e8Cf4a443E805065065Aefb250b1E1cef2 828204
default:0E99fC16e32E568971908f2Ce54B967a42663a26 0
default:6B3Dd380eB365603182617d698fdBBE52befa801 78420
default:A2e56E6253407242674C34Ae7aEB7aE11883BCDB 33363
default:b7b1A2Ed7c47287Ba4da1Fd17F626fAf2134e9d0 150301
default:eB5d1FA6E421485C7ae2fbA8E3199588eD931dAf 102780
default:0CE7B61c97A6d5083356F115288f9266553e191E 3551494
default:1985871eD65B80e09ecA382c3e3c2d6831e092eC 114874
total 8801206

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment