Skip to content

Instantly share code, notes, and snippets.

@cdamian
Created August 2, 2022 10:14
Show Gist options
  • Save cdamian/4380a519cf3ffde01583eb721bfa57aa to your computer and use it in GitHub Desktop.
Save cdamian/4380a519cf3ffde01583eb721bfa57aa to your computer and use it in GitHub Desktop.
Westend staking rewards events
package main
import (
"fmt"
"github.com/ethereum/go-ethereum/common/hexutil"
gsrpc "github.com/centrifuge/go-substrate-rpc-client/v4"
"github.com/centrifuge/go-substrate-rpc-client/v4/types"
)
func main() {
api, err := gsrpc.NewSubstrateAPI("wss://westend-rpc.polkadot.io")
if err != nil {
panic(err)
}
meta, err := api.RPC.State.GetMetadataLatest()
if err != nil {
panic(err)
}
blockHash, err := api.RPC.Chain.GetBlockHash(11974342)
if err != nil {
panic(err)
}
eventRecords, err := getEvents(api, meta, &blockHash)
if err != nil {
panic(err)
}
for _, stakingRewardedEvent := range eventRecords.Staking_Rewarded {
fmt.Println("Who -", hexutil.Encode(stakingRewardedEvent.Stash[:]))
fmt.Println("Balance -", stakingRewardedEvent.Amount.Int64())
}
}
func getEvents(
api *gsrpc.SubstrateAPI,
meta *types.Metadata,
blockHash *types.Hash,
) (*types.EventRecords, error) {
key, err := types.CreateStorageKey(meta, "System", "Events", nil)
if err != nil {
return nil, err
}
sd, err := api.RPC.State.GetStorageRaw(key, *blockHash)
if err != nil {
return nil, err
}
var events types.EventRecords
err = types.EventRecordsRaw(*sd).DecodeEventRecords(meta, &events)
return &events, err
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment