Skip to content

Commit

Permalink
Merge branch 'chains/cheqd/testnet' into chains/cheqd/mainnet
Browse files Browse the repository at this point in the history
  • Loading branch information
filipdjokic committed Jun 3, 2024
2 parents c87c28a + da38e2e commit 8f3a8f6
Show file tree
Hide file tree
Showing 13 changed files with 97 additions and 115 deletions.
22 changes: 0 additions & 22 deletions .github/ISSUE_TEMPLATE/bug_report.md

This file was deleted.

21 changes: 0 additions & 21 deletions .github/ISSUE_TEMPLATE/feature_request.md

This file was deleted.

10 changes: 1 addition & 9 deletions .github/linters/.golangci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,18 @@ linters:
disable-all: true
enable:
- bodyclose
- deadcode
- dogsled
- exportloopref
- gocritic
- gofmt
- goimports
- golint
- gosec
- gosimple
- govet
- ineffassign
- maligned
- misspell
- nakedret
- scopelint
- staticcheck
- structcheck
- stylecheck
- typecheck
- unconvert
Expand Down Expand Up @@ -60,12 +56,8 @@ issues:
linters-settings:
dogsled:
max-blank-identifiers: 3
maligned:
# print struct with more effective memory layout or not, false by default
suggest-new: true
nolintlint:
allow-unused: false
allow-leading-space: true
require-explanation: false
require-specific: false
misspell:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:

- uses: actions/setup-go@v4
with:
go-version: 1.18
go-version: 1.20

- uses: actions/checkout@v3
with:
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ stop-docker-test:

start-docker-test: stop-docker-test
@echo "Starting Docker container..."
@docker run --name callisto-test-db -e POSTGRES_USER=callisto -e POSTGRES_PASSWORD=password -e POSTGRES_DB=callisto -d -p 6433:5432 postgres
@docker run --name callisto-test-db -e POSTGRES_USER=callisto -e POSTGRES_PASSWORD=password -e POSTGRES_DB=callisto -d -v ./database/schema:/docker-entrypoint-initdb.d -p 6433:5432 postgres
.PHONY: start-docker-test

test-unit: start-docker-test
Expand Down
6 changes: 3 additions & 3 deletions database/schema/03-staking.sql
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,9 @@ CREATE INDEX validator_commission_height_index ON validator_commission (height);

CREATE TABLE validator_voting_power
(
validator_address TEXT NOT NULL REFERENCES validator (consensus_address) PRIMARY KEY,
voting_power TEXT NOT NULL,
height BIGINT NOT NULL REFERENCES block (height)
validator_address TEXT NOT NULL REFERENCES validator (consensus_address) PRIMARY KEY,
voting_power BIGINT NOT NULL,
height BIGINT NOT NULL REFERENCES block (height)
);
CREATE INDEX validator_voting_power_height_index ON validator_voting_power (height);

Expand Down
2 changes: 1 addition & 1 deletion database/top_accounts.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (

// SaveTopAccounts saves top accounts inside the database
func (db *Db) SaveTopAccounts(accounts []types.TopAccount, height int64) error {
paramsNumber := 4
paramsNumber := 3
slices := dbutils.SplitTopAccounts(accounts, paramsNumber)

for _, accounts := range slices {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,5 +100,5 @@ select_permissions:
- consensus_address
- consensus_pubkey
filter: {}
limit: 100
limit: 1000
role: anonymous
53 changes: 53 additions & 0 deletions modules/top_accounts/handle_block.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package top_accounts

import (
"fmt"

tmctypes "github.com/cometbft/cometbft/rpc/core/types"
sdk "github.com/cosmos/cosmos-sdk/types"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"

"github.com/forbole/juno/v5/types"

eventsutil "github.com/forbole/callisto/v4/utils/events"
)

// HandleMsg implements BlockModule
func (m *Module) HandleBlock(block *tmctypes.ResultBlock, results *tmctypes.ResultBlockResults, txs []*types.Tx, vals *tmctypes.ResultValidators) error {
// handle complete unbonding event
events := sdk.StringifyEvents(results.EndBlockEvents)
height := block.Block.Height

completeUnbondingEvents := eventsutil.FilterEvents(events, stakingtypes.EventTypeCompleteUnbonding)

for _, event := range completeUnbondingEvents {
// get the delegator address
delAttr, found := eventsutil.FindAttributeByKey(event, stakingtypes.AttributeKeyDelegator)
if !found {
continue
}

address := delAttr.Value
err := m.stakingModule.RefreshDelegations(address, height)
if err != nil {
return fmt.Errorf("error while refreshing delegations of account %s, error: %s", address, err)
}

err = m.stakingModule.RefreshUnbondings(address, height)
if err != nil {
return fmt.Errorf("error while refreshing unbonding delegations of account %s, error: %s", address, err)
}

err = m.bankModule.UpdateBalances([]string{address}, height)
if err != nil {
return fmt.Errorf("error while refreshing balance of account %s, error: %s", address, err)
}

err = m.refreshTopAccountsSum([]string{address}, height)
if err != nil {
return fmt.Errorf("error while refreshing top accounts sum %s, error: %s", address, err)
}
}

return nil
}
37 changes: 22 additions & 15 deletions modules/top_accounts/handle_msg.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package top_accounts

import (
"fmt"
"time"

sdk "github.com/cosmos/cosmos-sdk/types"
distritypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
Expand Down Expand Up @@ -42,7 +41,10 @@ func (m *Module) HandleMsg(index int, msg sdk.Msg, tx *juno.Tx) error {
return m.handleMsgDelegate(cosmosMsg.DelegatorAddress, tx.Height)

case *stakingtypes.MsgUndelegate:
return m.handleMsgUndelegate(tx, index, cosmosMsg.DelegatorAddress)
return m.handleMsgUndelegate(cosmosMsg.DelegatorAddress, tx.Height)

case *stakingtypes.MsgCancelUnbondingDelegation:
return m.handleMsgCancelUnbondingDelegation(cosmosMsg.DelegatorAddress, tx.Height)

// Handle x/distribution delegator rewards
case *distritypes.MsgWithdrawDelegatorReward:
Expand All @@ -68,36 +70,41 @@ func (m *Module) handleMsgDelegate(delAddr string, height int64) error {
}

// handleMsgUndelegate handles a MsgUndelegate storing the data inside the database
func (m *Module) handleMsgUndelegate(tx *juno.Tx, index int, delAddr string) error {
err := m.stakingModule.RefreshUnbondings(delAddr, tx.Height)
func (m *Module) handleMsgUndelegate(delAddr string, height int64) error {
err := m.stakingModule.RefreshUnbondings(delAddr, height)
if err != nil {
return fmt.Errorf("error while refreshing undelegations while handling MsgUndelegate: %s", err)
}

err = m.refreshTopAccountsSum([]string{delAddr}, tx.Height)
err = m.refreshTopAccountsSum([]string{delAddr}, height)
if err != nil {
return fmt.Errorf("error while refreshing top accounts sum while handling MsgUndelegate: %s", err)
}

event, err := tx.FindEventByType(index, stakingtypes.EventTypeUnbond)
return nil
}

// handleMsgCancelUnbondingDelegation handles a MsgCancelUnbondingDelegation storing the data inside the database
func (m *Module) handleMsgCancelUnbondingDelegation(delAddr string, height int64) error {
err := m.stakingModule.RefreshDelegations(delAddr, height)
if err != nil {
return err
return fmt.Errorf("error while refreshing delegations of account %s, error: %s", delAddr, err)
}

completionTimeStr, err := tx.FindAttributeByKey(event, stakingtypes.AttributeKeyCompletionTime)
err = m.stakingModule.RefreshUnbondings(delAddr, height)
if err != nil {
return err
return fmt.Errorf("error while refreshing unbonding delegations of account %s, error: %s", delAddr, err)
}

completionTime, err := time.Parse(time.RFC3339, completionTimeStr)
err = m.bankModule.UpdateBalances([]string{delAddr}, height)
if err != nil {
return err
return fmt.Errorf("error while refreshing balance of account %s, error: %s", delAddr, err)
}

// When the time expires, refresh the delegations & unbondings & available balance
time.AfterFunc(time.Until(completionTime), m.refreshDelegations(delAddr, tx.Height))
time.AfterFunc(time.Until(completionTime), m.refreshUnbondings(delAddr, tx.Height))
time.AfterFunc(time.Until(completionTime), m.refreshBalance(delAddr, tx.Height))
err = m.refreshTopAccountsSum([]string{delAddr}, height)
if err != nil {
return fmt.Errorf("error while refreshing top accounts sum %s, error: %s", delAddr, err)
}

return nil
}
Expand Down
6 changes: 3 additions & 3 deletions modules/top_accounts/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ import (
)

var (
_ modules.Module = &Module{}
_ modules.MessageModule = &Module{}
_ modules.PeriodicOperationsModule = &Module{}
_ modules.Module = &Module{}
_ modules.BlockModule = &Module{}
_ modules.MessageModule = &Module{}
)

// Module represent x/top_accounts module
Expand Down
38 changes: 0 additions & 38 deletions modules/top_accounts/utils_refresh.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ package top_accounts

import (
"fmt"

"github.com/rs/zerolog/log"
)

func (m *Module) refreshTopAccountsSum(addresses []string, height int64) error {
Expand All @@ -20,39 +18,3 @@ func (m *Module) refreshTopAccountsSum(addresses []string, height int64) error {
}
return nil
}

func (m *Module) refreshDelegations(delegator string, height int64) func() {
return func() {
err := m.stakingModule.RefreshDelegations(delegator, height)
if err != nil {
log.Error().Str("module", "top_accounts").Err(err).
Str("operation", "refresh delegations").Msg("error while refreshing delegations")
}
}
}

func (m *Module) refreshUnbondings(delegatorAddr string, height int64) func() {
return func() {
err := m.stakingModule.RefreshUnbondings(delegatorAddr, height)
if err != nil {
log.Error().Str("module", "top_accounts").Err(err).
Str("operation", "refresh unbondings").Msg("error while refreshing unbonding delegations")
}
}
}

func (m *Module) refreshBalance(address string, height int64) func() {
return func() {
err := m.bankModule.UpdateBalances([]string{address}, height)
if err != nil {
log.Error().Str("module", "top_accounts").Err(err).
Str("operation", "update balance").Msg("error while updating account available balances")
}

err = m.refreshTopAccountsSum([]string{address}, height)
if err != nil {
log.Error().Str("module", "top_accounts").Err(err).
Str("operation", "update top accounts sum").Msg("error while refreshing top accounts sum while refreshing balance")
}
}
}
11 changes: 11 additions & 0 deletions utils/events/events.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,17 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
)

// FilterEvents returns the events with the given types
func FilterEvents(events sdk.StringEvents, eventTypes string) sdk.StringEvents {
var filteredEvents sdk.StringEvents
for _, event := range events {
if event.Type == eventTypes {
filteredEvents = append(filteredEvents, event)
}
}
return filteredEvents
}

// FindEventByType returns the event with the given type
func FindEventByType(events sdk.StringEvents, eventType string) (sdk.StringEvent, bool) {
for _, event := range events {
Expand Down

0 comments on commit 8f3a8f6

Please sign in to comment.