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

* '' * '' * '' * Changes genesis block version to 0. * a * a * All tests are done. * All tests passed for changed block version from int32 to uint16 * Adds validation of rejecting blocks with unknown versions. * Changes txn version from int32 to uint16. * . * Adds comments to exported functions. * Change functions name from ConvertFromRpcScriptPubKeyToRPCScriptPubKey to ConvertFromAppMsgRPCScriptPubKeyToRPCScriptPubKey and from ConvertFromRPCScriptPubKeyToRpcScriptPubKey to ConvertFromRPCScriptPubKeyToAppMsgRPCScriptPubKey * change comment to "ScriptPublicKey represents a Kaspad ScriptPublicKey" * delete part (tx.Version < 0) that cannot be exist on the if statement. * Revert protobuf version. * Fix a comment. * Fix a comment. * Rename a variable. * Rename a variable. * Remove a const. * Rename a type. * Rename a field. * Rename a field. * Remove commented-out code. * Remove dangerous nil case in DomainTransactionOutput.Clone(). * Remove a constant. * Fix a string. * Fix wrong totalScriptPubKeySize in transactionMassStandalonePart. * Remove a constant. * Remove an unused error. * Fix a serialization error. * Specify version types to be uint16 explicitly. * Use constants.ScriptPublicKeyVersion. * Fix a bad test. * Remove some whitespace. * Add a case to utxoEntry.Equal(). * Rename scriptPubKey to scriptPublicKey. * Remove a TODO. * Rename constants. * Rename a variable. * Add version to parseShortForm. Co-authored-by: tal <tal@daglabs.com> Co-authored-by: stasatdaglabs <stas@daglabs.com>
91 lines
3.8 KiB
Go
91 lines
3.8 KiB
Go
package serialization
|
|
|
|
import (
|
|
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
|
)
|
|
|
|
// DomainAcceptanceDataToDbAcceptanceData converts model.AcceptanceData to DbAcceptanceData
|
|
func DomainAcceptanceDataToDbAcceptanceData(domainAcceptanceData externalapi.AcceptanceData) *DbAcceptanceData {
|
|
dbBlockAcceptanceData := make([]*DbBlockAcceptanceData, len(domainAcceptanceData))
|
|
for i, blockAcceptanceData := range domainAcceptanceData {
|
|
dbTransactionAcceptanceData := make([]*DbTransactionAcceptanceData,
|
|
len(blockAcceptanceData.TransactionAcceptanceData))
|
|
|
|
for j, transactionAcceptanceData := range blockAcceptanceData.TransactionAcceptanceData {
|
|
dbTransaction := DomainTransactionToDbTransaction(transactionAcceptanceData.Transaction)
|
|
|
|
dbTransactionInputUTXOEntries := make([]*DbUtxoEntry, len(transactionAcceptanceData.TransactionInputUTXOEntries))
|
|
for k, transactionInputUTXOEntry := range transactionAcceptanceData.TransactionInputUTXOEntries {
|
|
dbTransactionInputUTXOEntries[k] = UTXOEntryToDBUTXOEntry(transactionInputUTXOEntry)
|
|
}
|
|
|
|
dbTransactionAcceptanceData[j] = &DbTransactionAcceptanceData{
|
|
Transaction: dbTransaction,
|
|
Fee: transactionAcceptanceData.Fee,
|
|
IsAccepted: transactionAcceptanceData.IsAccepted,
|
|
TransactionInputUtxoEntries: dbTransactionInputUTXOEntries,
|
|
}
|
|
}
|
|
|
|
blockHash := DomainHashToDbHash(blockAcceptanceData.BlockHash)
|
|
|
|
dbBlockAcceptanceData[i] = &DbBlockAcceptanceData{
|
|
BlockHash: blockHash,
|
|
TransactionAcceptanceData: dbTransactionAcceptanceData,
|
|
}
|
|
}
|
|
|
|
return &DbAcceptanceData{
|
|
BlockAcceptanceData: dbBlockAcceptanceData,
|
|
}
|
|
}
|
|
|
|
// DbAcceptanceDataToDomainAcceptanceData converts DbAcceptanceData to model.AcceptanceData
|
|
func DbAcceptanceDataToDomainAcceptanceData(dbAcceptanceData *DbAcceptanceData) (externalapi.AcceptanceData, error) {
|
|
domainAcceptanceData := make(externalapi.AcceptanceData, len(dbAcceptanceData.BlockAcceptanceData))
|
|
for i, dbBlockAcceptanceData := range dbAcceptanceData.BlockAcceptanceData {
|
|
domainTransactionAcceptanceData := make([]*externalapi.TransactionAcceptanceData,
|
|
len(dbBlockAcceptanceData.TransactionAcceptanceData))
|
|
|
|
for j, dbTransactionAcceptanceData := range dbBlockAcceptanceData.TransactionAcceptanceData {
|
|
domainTransaction, err := DbTransactionToDomainTransaction(dbTransactionAcceptanceData.Transaction)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
domainTransactionInputUTXOEntries := make([]externalapi.UTXOEntry, len(dbTransactionAcceptanceData.TransactionInputUtxoEntries))
|
|
for k, transactionInputUTXOEntry := range dbTransactionAcceptanceData.TransactionInputUtxoEntries {
|
|
domainTransactionInputUTXOEntry, err := DBUTXOEntryToUTXOEntry(transactionInputUTXOEntry)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
domainTransactionInputUTXOEntries[k] = domainTransactionInputUTXOEntry
|
|
|
|
// For consistency's sake, we fill up the transaction input's
|
|
// UTXOEntry field as well, since that's how the acceptanceData
|
|
// must have arrived when it was originally serialized
|
|
domainTransaction.Inputs[k].UTXOEntry = domainTransactionInputUTXOEntry
|
|
}
|
|
|
|
domainTransactionAcceptanceData[j] = &externalapi.TransactionAcceptanceData{
|
|
Transaction: domainTransaction,
|
|
Fee: dbTransactionAcceptanceData.Fee,
|
|
IsAccepted: dbTransactionAcceptanceData.IsAccepted,
|
|
TransactionInputUTXOEntries: domainTransactionInputUTXOEntries,
|
|
}
|
|
}
|
|
|
|
blockHash, err := DbHashToDomainHash(dbBlockAcceptanceData.BlockHash)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
domainAcceptanceData[i] = &externalapi.BlockAcceptanceData{
|
|
BlockHash: blockHash,
|
|
TransactionAcceptanceData: domainTransactionAcceptanceData,
|
|
}
|
|
}
|
|
|
|
return domainAcceptanceData, nil
|
|
}
|