mirror of
https://github.com/alexgo-io/gaze-indexer.git
synced 2026-01-12 08:34:28 +08:00
* feat: recover nodesale module. * fix: refactored. * fix: fix table type. * fix: add entity * fix: bug UTC time. * ci: try to tidy before testing * ci: touch result file * ci: use echo to create new file * fix: try to skip test in ci * fix: remove os.Exit * fix: handle error * feat: add todo note * fix: Cannot run nodesale test because qtx is not initiated. * fix: 50% chance public key compare incorrectly. * fix: more consistent SQL * fix: sanity refactor. * fix: remove unused code. * fix: move last_block_default to config file. * fix: minor mistakes. * fix: * fix: refactor * fix: refactor * fix: delegate tx hash not record into db. * refactor: prepare for moving integration tests. * refactor: convert to unit tests. * fix: change to using input values since output values deducted fee. * feat: add extra unit test. * fix: wrong timestamp format. * fix: handle block timeout = 0 --------- Co-authored-by: Gaze <gazenw@users.noreply.github.com>
45 lines
864 B
Go
45 lines
864 B
Go
package validator
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/hex"
|
|
|
|
"github.com/btcsuite/btcd/btcec/v2"
|
|
)
|
|
|
|
type Validator struct {
|
|
Valid bool
|
|
Reason string
|
|
}
|
|
|
|
func New() *Validator {
|
|
return &Validator{
|
|
Valid: true,
|
|
}
|
|
}
|
|
|
|
func (v *Validator) EqualXonlyPublicKey(target string, expected *btcec.PublicKey) bool {
|
|
if !v.Valid {
|
|
return false
|
|
}
|
|
targetBytes, err := hex.DecodeString(target)
|
|
if err != nil {
|
|
v.Valid = false
|
|
v.Reason = INVALID_PUBKEY_FORMAT
|
|
}
|
|
|
|
targetPubKey, err := btcec.ParsePubKey(targetBytes)
|
|
if err != nil {
|
|
v.Valid = false
|
|
v.Reason = INVALID_PUBKEY_FORMAT
|
|
}
|
|
xOnlyTargetPubKey := btcec.ToSerialized(targetPubKey).SchnorrSerialized()
|
|
xOnlyExpectedPubKey := btcec.ToSerialized(expected).SchnorrSerialized()
|
|
|
|
v.Valid = bytes.Equal(xOnlyTargetPubKey[:], xOnlyExpectedPubKey[:])
|
|
if !v.Valid {
|
|
v.Reason = INVALID_PUBKEY
|
|
}
|
|
return v.Valid
|
|
}
|