mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-05-22 14:56:44 +00:00

* Replace 0xffff with math.MaxUint16 on version checks * Add script version to the signature hash Co-authored-by: Ori Newman <orinewman1@gmail.com>
42 lines
1.7 KiB
Go
42 lines
1.7 KiB
Go
package serialization
|
|
|
|
import (
|
|
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
|
"github.com/kaspanet/kaspad/domain/consensus/utils/utxo"
|
|
"github.com/pkg/errors"
|
|
"math"
|
|
)
|
|
|
|
// ScriptPublicKeyToDBScriptPublicKey converts ScriptPublicKey to DBScriptPublicKey
|
|
func ScriptPublicKeyToDBScriptPublicKey(scriptPublicKey *externalapi.ScriptPublicKey) *DbScriptPublicKey {
|
|
return &DbScriptPublicKey{Script: scriptPublicKey.Script, Version: uint32(scriptPublicKey.Version)}
|
|
}
|
|
|
|
// DBScriptPublicKeyToScriptPublicKey convert DbScriptPublicKey ro ScriptPublicKey
|
|
func DBScriptPublicKeyToScriptPublicKey(dbScriptPublicKey *DbScriptPublicKey) (*externalapi.ScriptPublicKey, error) {
|
|
if dbScriptPublicKey.Version > math.MaxUint16 {
|
|
return nil, errors.Errorf("The version on ScriptPublicKey is bigger then uint16.")
|
|
}
|
|
return &externalapi.ScriptPublicKey{Script: dbScriptPublicKey.Script, Version: uint16(dbScriptPublicKey.Version)}, nil
|
|
}
|
|
|
|
// UTXOEntryToDBUTXOEntry converts UTXOEntry to DbUtxoEntry
|
|
func UTXOEntryToDBUTXOEntry(utxoEntry externalapi.UTXOEntry) *DbUtxoEntry {
|
|
dbScriptPublicKey := ScriptPublicKeyToDBScriptPublicKey(utxoEntry.ScriptPublicKey())
|
|
return &DbUtxoEntry{
|
|
Amount: utxoEntry.Amount(),
|
|
ScriptPublicKey: dbScriptPublicKey,
|
|
BlockBlueScore: utxoEntry.BlockBlueScore(),
|
|
IsCoinbase: utxoEntry.IsCoinbase(),
|
|
}
|
|
}
|
|
|
|
// DBUTXOEntryToUTXOEntry convert DbUtxoEntry ro UTXOEntry
|
|
func DBUTXOEntryToUTXOEntry(dbUtxoEntry *DbUtxoEntry) (externalapi.UTXOEntry, error) {
|
|
scriptPublicKey, err := DBScriptPublicKeyToScriptPublicKey(dbUtxoEntry.ScriptPublicKey)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return utxo.NewUTXOEntry(dbUtxoEntry.Amount, scriptPublicKey, dbUtxoEntry.IsCoinbase, dbUtxoEntry.BlockBlueScore), nil
|
|
}
|