Skip to content

Commit

Permalink
Revert "core duplicate vote and jail" (#10815)
Browse files Browse the repository at this point in the history
  • Loading branch information
alecsavvy committed Dec 20, 2024
1 parent a8a872c commit d25af7e
Show file tree
Hide file tree
Showing 10 changed files with 8 additions and 201 deletions.
2 changes: 0 additions & 2 deletions pkg/core/db/models.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

55 changes: 5 additions & 50 deletions pkg/core/db/reads.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 0 additions & 5 deletions pkg/core/db/sql/migrations/00009_add_jailed_columns.sql

This file was deleted.

3 changes: 0 additions & 3 deletions pkg/core/db/sql/reads.sql
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,3 @@ select * from core_tx_results where block_id = $1 order by created_at desc;

-- name: GetBlock :one
select * from core_blocks where height = $1;

-- name: GetJailedNodes :many
select * from core_validators where jailed = true;
11 changes: 0 additions & 11 deletions pkg/core/db/sql/writes.sql
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,3 @@ returning id;
insert into core_tx_stats (tx_type, tx_hash, block_height, created_at)
values ($1, $2, $3, $4)
on conflict (tx_hash) do nothing;

-- name: AddJailedNode :exec
update core_validators
set jailed = true, jailed_until = $2
where comet_address = $1;

-- name: UnjailNode :exec
update core_validators
set jailed = false, jailed_until = 0
where comet_address = $1;

27 changes: 0 additions & 27 deletions pkg/core/db/writes.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

61 changes: 0 additions & 61 deletions pkg/core/server/abci.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package server

import (
"bytes"
"context"
"crypto/sha256"
"encoding/hex"
Expand All @@ -12,7 +11,6 @@ import (
"github.com/AudiusProject/audius-protocol/pkg/core/common"
"github.com/AudiusProject/audius-protocol/pkg/core/db"
"github.com/AudiusProject/audius-protocol/pkg/core/gen/core_proto"
"github.com/cometbft/cometbft/abci/types"
abcitypes "github.com/cometbft/cometbft/abci/types"
cfg "github.com/cometbft/cometbft/config"
"github.com/cometbft/cometbft/crypto/ed25519"
Expand Down Expand Up @@ -181,18 +179,6 @@ func (s *Server) FinalizeBlock(ctx context.Context, req *abcitypes.FinalizeBlock
var validatorUpdates = abcitypes.ValidatorUpdates{}
var validatorUpdatesMap = map[string]bool{}

// update jailed validators in validator updates map so they get skipped if they try to re-register
jailedValidators, err := s.handleDuplicateVoteEvidence(ctx, req)
if err != nil {
s.logger.Errorf("could not handle duplicate vote evidence: %v", err)
} else {
validatorUpdates = append(validatorUpdates, jailedValidators...)
for _, jailed := range jailedValidators {
vrPubKey := ed25519.PubKey(jailed.PubKeyBytes)
validatorUpdatesMap[vrPubKey.Address().String()] = true
}
}

// open in progres pg transaction
s.startInProgressTx(ctx)
for i, tx := range req.Txs {
Expand Down Expand Up @@ -429,53 +415,6 @@ func (s *Server) persistTxStat(ctx context.Context, tx proto.Message, txhash str
return nil
}

func (s *Server) handleDuplicateVoteEvidence(ctx context.Context, req *abcitypes.FinalizeBlockRequest) (abcitypes.ValidatorUpdates, error) {
jailedValidators := abcitypes.ValidatorUpdates{}
jailedValidatorAddrs := []string{}

page := int(1)
amountPerPage := int(500)
currentValidators, err := s.rpc.Validators(ctx, &req.Height, &page, &amountPerPage)
if err != nil {
s.logger.Errorf("could not get validators: %v", err)
return jailedValidators, err
}

// if misbehavior found, set power to 0 to remove
for _, misbehavior := range req.Misbehavior {
if misbehavior.Type == types.MISBEHAVIOR_TYPE_DUPLICATE_VOTE {
for _, validator := range currentValidators.Validators {
if bytes.Equal(misbehavior.Validator.Address, validator.Address) {
jailedValidators = append(
jailedValidators,
abcitypes.ValidatorUpdate{
Power: 0,
PubKeyBytes: validator.PubKey.Bytes(),
PubKeyType: "ed25519",
},
)
jailedValidatorAddrs = append(jailedValidatorAddrs, validator.Address.String())
}
}
}
}

qtx := s.getDb()
for _, jailedValidatorAddr := range jailedValidatorAddrs {
if err := qtx.AddJailedNode(ctx, db.AddJailedNodeParams{
CometAddress: jailedValidatorAddr,
JailedUntil: pgtype.Int8{
Int64: req.Height + 1000,
Valid: true,
},
}); err != nil {
return jailedValidators, fmt.Errorf("could not add jailed node: %v", err)
}
}

return jailedValidators, nil
}

func (s *Server) serializeAppState(prevHash []byte, txs [][]byte) []byte {
var combinedHash []byte

Expand Down
9 changes: 2 additions & 7 deletions pkg/core/server/grpc.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,7 @@ func GetProtoTypeName(msg proto.Message) string {
}

func (s *Server) SendTransaction(ctx context.Context, req *core_proto.SendTransactionRequest) (*core_proto.TransactionResponse, error) {
if err := s.validateTxGRPC(req.GetTransaction()); err != nil {
return nil, fmt.Errorf("validation error: %v", err)
}

// TODO: do validation check
txhash, err := common.ToTxHash(req.GetTransaction())
if err != nil {
return nil, fmt.Errorf("could not get tx hash of signed tx: %v", err)
Expand Down Expand Up @@ -87,9 +84,7 @@ func (s *Server) SendTransaction(ctx context.Context, req *core_proto.SendTransa
func (s *Server) ForwardTransaction(ctx context.Context, req *core_proto.ForwardTransactionRequest) (*core_proto.ForwardTransactionResponse, error) {
// TODO: check signature from known node

if err := s.validateTxGRPC(req.GetTransaction()); err != nil {
return nil, fmt.Errorf("validation error: %v", err)
}
// TODO: validate transaction in same way as send transaction

mempoolKey, err := common.ToTxHash(req.GetTransaction())
if err != nil {
Expand Down
23 changes: 1 addition & 22 deletions pkg/core/server/registry_bridge.go
Original file line number Diff line number Diff line change
Expand Up @@ -306,30 +306,9 @@ func (s *Server) registerSelfOnEth() error {
return nil
}

func (s *Server) validateNotJailed(tx *core_proto.SignedTransaction_ValidatorRegistration) error {
db := s.db

cometAddr := tx.ValidatorRegistration.CometAddress

node, err := db.GetRegisteredNodeByCometAddress(context.Background(), cometAddr)
if err != nil {
if !errors.Is(err, pgx.ErrNoRows) {
return nil
}
return fmt.Errorf("validation db fail: %v", err)
}

jailed := node.Jailed
if jailed.Bool {
return fmt.Errorf("node %s is jailed and can't be re-registered", cometAddr)
}

return nil
}

// checks if the register node tx is valid
// calls ethereum mainnet and validates signature to confirm node should be a validator
func (s *Server) isValidRegisterNodeTx(_ctx context.Context, tx *core_proto.SignedTransaction) error {
func (s *Server) isValidRegisterNodeTx(ctx context.Context, tx *core_proto.SignedTransaction) error {
sig := tx.GetSignature()
if sig == "" {
return fmt.Errorf("no signature provided for registration tx: %v", tx)
Expand Down
13 changes: 0 additions & 13 deletions pkg/core/server/validate.go

This file was deleted.

0 comments on commit d25af7e

Please sign in to comment.