Add blockVerboseData to blockAddedNotifications (#1508)

* Add blockVerboseData to blockAddedNotifications.

* Run the documentation generator.
This commit is contained in:
stasatdaglabs 2021-02-09 10:30:16 +02:00 committed by GitHub
parent 2edf6bfd07
commit 3a4fa6e0e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 674 additions and 629 deletions

View File

@ -37,7 +37,8 @@ func NewNotifyBlockAddedResponseMessage() *NotifyBlockAddedResponseMessage {
// its respective RPC message
type BlockAddedNotificationMessage struct {
baseMessage
Block *MsgBlock
Block *MsgBlock
BlockVerboseData *BlockVerboseData
}
// Command returns the protocol command string for the message
@ -46,8 +47,9 @@ func (msg *BlockAddedNotificationMessage) Command() MessageCommand {
}
// NewBlockAddedNotificationMessage returns a instance of the message
func NewBlockAddedNotificationMessage(block *MsgBlock) *BlockAddedNotificationMessage {
func NewBlockAddedNotificationMessage(block *MsgBlock, blockVerboseData *BlockVerboseData) *BlockAddedNotificationMessage {
return &BlockAddedNotificationMessage{
Block: block,
Block: block,
BlockVerboseData: blockVerboseData,
}
}

View File

@ -69,7 +69,12 @@ func (m *Manager) NotifyBlockAddedToDAG(block *externalapi.DomainBlock, blockIns
return err
}
blockAddedNotification := appmessage.NewBlockAddedNotificationMessage(appmessage.DomainBlockToMsgBlock(block))
msgBlock := appmessage.DomainBlockToMsgBlock(block)
blockVerboseData, err := m.context.BuildBlockVerboseData(block.Header, block, false)
if err != nil {
return err
}
blockAddedNotification := appmessage.NewBlockAddedNotificationMessage(msgBlock, blockVerboseData)
return m.context.NotificationManager.NotifyBlockAdded(blockAddedNotification)
}

View File

@ -4,6 +4,7 @@ import (
"encoding/hex"
"fmt"
"github.com/kaspanet/kaspad/domain/consensus/utils/constants"
"github.com/kaspanet/kaspad/infrastructure/logger"
"github.com/kaspanet/kaspad/util/difficulty"
"math"
"math/big"
@ -23,8 +24,14 @@ import (
"github.com/kaspanet/kaspad/util/pointers"
)
// BuildBlockVerboseData builds a BlockVerboseData from the given block.
func (ctx *Context) BuildBlockVerboseData(blockHeader externalapi.BlockHeader, includeTransactionVerboseData bool) (*appmessage.BlockVerboseData, error) {
// BuildBlockVerboseData builds a BlockVerboseData from the given blockHeader.
// A block may optionally also be given if it's available in the calling context.
func (ctx *Context) BuildBlockVerboseData(blockHeader externalapi.BlockHeader, block *externalapi.DomainBlock,
includeTransactionVerboseData bool) (*appmessage.BlockVerboseData, error) {
onEnd := logger.LogAndMeasureExecutionTime(log, "BuildBlockVerboseData")
defer onEnd()
hash := consensushashing.HeaderHash(blockHeader)
blockInfo, err := ctx.Domain.Consensus().GetBlockInfo(hash)
@ -48,9 +55,11 @@ func (ctx *Context) BuildBlockVerboseData(blockHeader externalapi.BlockHeader, i
}
if blockInfo.BlockStatus != externalapi.StatusHeaderOnly {
block, err := ctx.Domain.Consensus().GetBlock(hash)
if err != nil {
return nil, err
if block == nil {
block, err = ctx.Domain.Consensus().GetBlock(hash)
if err != nil {
return nil, err
}
}
txIDs := make([]string, len(block.Transactions))
@ -100,6 +109,9 @@ func (ctx *Context) BuildTransactionVerboseData(tx *externalapi.DomainTransactio
blockHeader externalapi.BlockHeader, blockHash string) (
*appmessage.TransactionVerboseData, error) {
onEnd := logger.LogAndMeasureExecutionTime(log, "BuildTransactionVerboseData")
defer onEnd()
var payloadHash string
if tx.SubnetworkID != subnetworks.SubnetworkIDNative {
payloadHash = tx.PayloadHash.String()

View File

@ -28,7 +28,7 @@ func HandleGetBlock(context *rpccontext.Context, _ *router.Router, request appme
response := appmessage.NewGetBlockResponseMessage()
blockVerboseData, err := context.BuildBlockVerboseData(header, getBlockRequest.IncludeTransactionVerboseData)
blockVerboseData, err := context.BuildBlockVerboseData(header, nil, getBlockRequest.IncludeTransactionVerboseData)
if err != nil {
return nil, err
}

View File

@ -261,6 +261,7 @@ See: NotifyBlockAddedRequestMessage
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| block | [BlockMessage](#protowire.BlockMessage) | | |
| blockVerboseData | [BlockVerboseData](#protowire.BlockVerboseData) | | |

View File

@ -87,6 +87,7 @@ message NotifyBlockAddedResponseMessage{
// See: NotifyBlockAddedRequestMessage
message BlockAddedNotificationMessage{
BlockMessage block = 1;
BlockVerboseData blockVerboseData = 2;
}
// GetPeerAddressesRequestMessage requests the list of known kaspad addresses in the

View File

@ -37,8 +37,13 @@ func (x *KaspadMessage_BlockAddedNotification) toAppMessage() (appmessage.Messag
if err != nil {
return nil, err
}
blockVerboseData, err := x.BlockAddedNotification.BlockVerboseData.toAppMessage()
if err != nil {
return nil, err
}
return &appmessage.BlockAddedNotificationMessage{
Block: block,
Block: block,
BlockVerboseData: blockVerboseData,
}, nil
}
@ -48,8 +53,14 @@ func (x *KaspadMessage_BlockAddedNotification) fromAppMessage(message *appmessag
if err != nil {
return err
}
blockVerboseData := &BlockVerboseData{}
err = blockVerboseData.fromAppMessage(message.BlockVerboseData)
if err != nil {
return err
}
x.BlockAddedNotification = &BlockAddedNotificationMessage{
Block: blockMessage,
Block: blockMessage,
BlockVerboseData: blockVerboseData,
}
return nil
}