Michael Sutton 21b82d7efc
Block template cache (#1994)
* minor text fix

* Implement a block template cache with template modification/reuse mechanism

* Fix compilation error

* Address review comments

* Added a through TestModifyBlockTemplate test

* Update header timestamp if possible

* Avoid copying the transactions when only the header changed

* go fmt
2022-03-31 16:37:48 +03:00

39 lines
1008 B
Go

package externalapi
import "bytes"
// DomainCoinbaseData contains data by which a coinbase transaction
// is built
type DomainCoinbaseData struct {
ScriptPublicKey *ScriptPublicKey
ExtraData []byte
}
// Clone returns a clone of DomainCoinbaseData
func (dcd *DomainCoinbaseData) Clone() *DomainCoinbaseData {
scriptPubKeyClone := make([]byte, len(dcd.ScriptPublicKey.Script))
copy(scriptPubKeyClone, dcd.ScriptPublicKey.Script)
extraDataClone := make([]byte, len(dcd.ExtraData))
copy(extraDataClone, dcd.ExtraData)
return &DomainCoinbaseData{
ScriptPublicKey: &ScriptPublicKey{Script: scriptPubKeyClone, Version: dcd.ScriptPublicKey.Version},
ExtraData: extraDataClone,
}
}
// Equal returns whether dcd equals to other
func (dcd *DomainCoinbaseData) Equal(other *DomainCoinbaseData) bool {
if dcd == nil || other == nil {
return dcd == other
}
if !bytes.Equal(dcd.ExtraData, other.ExtraData) {
return false
}
return dcd.ScriptPublicKey.Equal(other.ScriptPublicKey)
}