Skip to content

Commit

Permalink
Unmarshalling perf
Browse files Browse the repository at this point in the history
  • Loading branch information
KonradStaniec committed Feb 9, 2024
1 parent a5421bd commit f765f1e
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 16 deletions.
10 changes: 0 additions & 10 deletions types/btc_schnorr_sig.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package types

import (
"encoding/hex"
"errors"

"github.com/btcsuite/btcd/btcec/v2/schnorr"
)
Expand Down Expand Up @@ -69,15 +68,6 @@ func (sig BIP340Signature) MarshalTo(data []byte) (int, error) {
}

func (sig *BIP340Signature) Unmarshal(data []byte) error {
newSig := BIP340Signature(data)

// ensure that the bytes can be transformed to a *schnorr.Signature object
// this includes all format checks
_, err := newSig.ToBTCSig()
if err != nil {
return errors.New("bytes cannot be converted to a *schnorr.Signature object")
}

*sig = data
return nil
}
Expand Down
6 changes: 0 additions & 6 deletions x/btcstaking/types/btc_slashing_tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,12 +63,6 @@ func (tx BTCSlashingTx) MarshalTo(data []byte) (int, error) {

func (tx *BTCSlashingTx) Unmarshal(data []byte) error {
*tx = data

// ensure data can be decoded to a tx
if _, err := tx.ToMsgTx(); err != nil {
return err
}

return nil
}

Expand Down
36 changes: 36 additions & 0 deletions x/btcstaking/types/msg.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,21 @@ func (m *MsgCreateBTCDelegation) ValidateBasic() error {
if m.SlashingTx == nil {
return fmt.Errorf("empty slashing tx")
}

if _, err := m.SlashingTx.ToMsgTx(); err != nil {
return fmt.Errorf("invalid slashing tx: %w", err)
}

if m.DelegatorSlashingSig == nil {
return fmt.Errorf("empty delegator signature")
}

_, err := m.DelegatorSlashingSig.ToBTCSig()

if err != nil {
return fmt.Errorf("invalid delegator slashing signature: %w", err)
}

if _, err := sdk.AccAddressFromBech32(m.Signer); err != nil {
return err
}
Expand Down Expand Up @@ -111,6 +123,17 @@ func (m *MsgCreateBTCDelegation) ValidateBasic() error {
if m.DelegatorUnbondingSlashingSig == nil {
return fmt.Errorf("empty delegator signature")
}

if _, err := m.UnbondingSlashingTx.ToMsgTx(); err != nil {
return fmt.Errorf("invalid unbonding slashing tx: %w", err)
}

_, err = m.DelegatorUnbondingSlashingSig.ToBTCSig()

if err != nil {
return fmt.Errorf("invalid delegator unbonding slashing signature: %w", err)
}

unbondingTxMsg, err := bbn.NewBTCTxFromBytes(m.UnbondingTx)
if err != nil {
return err
Expand Down Expand Up @@ -145,6 +168,13 @@ func (m *MsgAddCovenantSigs) ValidateBasic() error {
if m.UnbondingTxSig == nil {
return fmt.Errorf("empty covenant signature")
}

_, err := m.UnbondingTxSig.ToBTCSig()

if err != nil {
return fmt.Errorf("invalid covenant unbonding signature: %w", err)
}

if m.SlashingUnbondingTxSigs == nil {
return fmt.Errorf("empty covenant signature")
}
Expand All @@ -161,5 +191,11 @@ func (m *MsgBTCUndelegate) ValidateBasic() error {
return fmt.Errorf("empty signature from the delegator")
}

_, err := m.UnbondingTxSig.ToBTCSig()

if err != nil {
return fmt.Errorf("invalid delegator unbonding signature: %w", err)
}

return nil
}

0 comments on commit f765f1e

Please sign in to comment.