mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-09-13 21:10:12 +00:00

* Replace blue score with DAA score in UTXO entries * Use DAA score for coinbase maturity * Use DAA score for sequence lock * Fix calcBlockSubsidy to use DAA score * Don't pay to blocks that are not included in the DAA added blocks, and bestow red blocks reward to the merging block * Fix TestGetPruningPointUTXOs * Fix TestTransactionAcceptance * Fix TestChainedTransactions * Fix TestVirtualDiff * Fix TestBlockWindow * Fix TestPruning * Use NewFromSlice instead of manually creating the hash set * Add assert * Add comment * Remove redundant call to UpdateDAADataAndReturnDifficultyBits * Add RequiredDifficulty, rename UpdateDAADataAndReturnDifficultyBits to StageDAADataAndReturnRequiredDifficulty and add comments * Make buildUTXOInvalidHeader get bits as an argument * Fix comments
74 lines
2.9 KiB
Go
74 lines
2.9 KiB
Go
package rpccontext
|
|
|
|
import (
|
|
"encoding/hex"
|
|
"github.com/kaspanet/kaspad/domain/consensus/utils/txscript"
|
|
"github.com/kaspanet/kaspad/util"
|
|
"github.com/pkg/errors"
|
|
|
|
"github.com/kaspanet/kaspad/app/appmessage"
|
|
"github.com/kaspanet/kaspad/domain/utxoindex"
|
|
)
|
|
|
|
// ConvertUTXOOutpointEntryPairsToUTXOsByAddressesEntries converts
|
|
// UTXOOutpointEntryPairs to a slice of UTXOsByAddressesEntry
|
|
func ConvertUTXOOutpointEntryPairsToUTXOsByAddressesEntries(address string, pairs utxoindex.UTXOOutpointEntryPairs) []*appmessage.UTXOsByAddressesEntry {
|
|
utxosByAddressesEntries := make([]*appmessage.UTXOsByAddressesEntry, 0, len(pairs))
|
|
for outpoint, utxoEntry := range pairs {
|
|
utxosByAddressesEntries = append(utxosByAddressesEntries, &appmessage.UTXOsByAddressesEntry{
|
|
Address: address,
|
|
Outpoint: &appmessage.RPCOutpoint{
|
|
TransactionID: outpoint.TransactionID.String(),
|
|
Index: outpoint.Index,
|
|
},
|
|
UTXOEntry: &appmessage.RPCUTXOEntry{
|
|
Amount: utxoEntry.Amount(),
|
|
ScriptPublicKey: &appmessage.RPCScriptPublicKey{Script: hex.EncodeToString(utxoEntry.ScriptPublicKey().Script), Version: utxoEntry.ScriptPublicKey().Version},
|
|
BlockDAAScore: utxoEntry.BlockDAAScore(),
|
|
IsCoinbase: utxoEntry.IsCoinbase(),
|
|
},
|
|
})
|
|
}
|
|
return utxosByAddressesEntries
|
|
}
|
|
|
|
// convertUTXOOutpointsToUTXOsByAddressesEntries converts
|
|
// UTXOOutpoints to a slice of UTXOsByAddressesEntry
|
|
func convertUTXOOutpointsToUTXOsByAddressesEntries(address string, outpoints utxoindex.UTXOOutpoints) []*appmessage.UTXOsByAddressesEntry {
|
|
utxosByAddressesEntries := make([]*appmessage.UTXOsByAddressesEntry, 0, len(outpoints))
|
|
for outpoint := range outpoints {
|
|
utxosByAddressesEntries = append(utxosByAddressesEntries, &appmessage.UTXOsByAddressesEntry{
|
|
Address: address,
|
|
Outpoint: &appmessage.RPCOutpoint{
|
|
TransactionID: outpoint.TransactionID.String(),
|
|
Index: outpoint.Index,
|
|
},
|
|
})
|
|
}
|
|
return utxosByAddressesEntries
|
|
}
|
|
|
|
// ConvertAddressStringsToUTXOsChangedNotificationAddresses converts address strings
|
|
// to UTXOsChangedNotificationAddresses
|
|
func (ctx *Context) ConvertAddressStringsToUTXOsChangedNotificationAddresses(
|
|
addressStrings []string) ([]*UTXOsChangedNotificationAddress, error) {
|
|
|
|
addresses := make([]*UTXOsChangedNotificationAddress, len(addressStrings))
|
|
for i, addressString := range addressStrings {
|
|
address, err := util.DecodeAddress(addressString, ctx.Config.ActiveNetParams.Prefix)
|
|
if err != nil {
|
|
return nil, errors.Errorf("Could not decode address '%s': %s", addressString, err)
|
|
}
|
|
scriptPublicKey, err := txscript.PayToAddrScript(address)
|
|
if err != nil {
|
|
return nil, errors.Errorf("Could not create a scriptPublicKey for address '%s': %s", addressString, err)
|
|
}
|
|
scriptPublicKeyString := utxoindex.ConvertScriptPublicKeyToString(scriptPublicKey)
|
|
addresses[i] = &UTXOsChangedNotificationAddress{
|
|
Address: addressString,
|
|
ScriptPublicKeyString: scriptPublicKeyString,
|
|
}
|
|
}
|
|
return addresses, nil
|
|
}
|