mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-11-24 14:35:53 +00:00
Export acceptance data to archival
This commit is contained in:
parent
c12731d4d4
commit
9efaa52d9f
@ -1,8 +1,20 @@
|
|||||||
package appmessage
|
package appmessage
|
||||||
|
|
||||||
|
type AcceptedTxEntry struct {
|
||||||
|
TransactionID string
|
||||||
|
IndexWithinBlock uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
type MergesetBlockAcceptanceData struct {
|
||||||
|
BlockHash string
|
||||||
|
AcceptedTxs []*AcceptedTxEntry
|
||||||
|
}
|
||||||
|
|
||||||
type ArchivalBlock struct {
|
type ArchivalBlock struct {
|
||||||
Block *RPCBlock
|
Block *RPCBlock
|
||||||
Child string
|
Child string
|
||||||
|
AcceptanceData []*MergesetBlockAcceptanceData
|
||||||
|
SelectedParent string
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddArchivalBlocksRequestMessage represents a request to add archival blocks
|
// AddArchivalBlocksRequestMessage represents a request to add archival blocks
|
||||||
|
|||||||
@ -94,6 +94,10 @@ func mainImpl(cfg *configFlags) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if int(root.PPIndex-1) >= len(ppHeaders) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
nextPP := ppHeaders[root.PPIndex-1]
|
nextPP := ppHeaders[root.PPIndex-1]
|
||||||
|
|
||||||
blockToChild := make(map[externalapi.DomainHash]externalapi.DomainHash)
|
blockToChild := make(map[externalapi.DomainHash]externalapi.DomainHash)
|
||||||
@ -140,6 +144,37 @@ func mainImpl(cfg *configFlags) error {
|
|||||||
archivalBlock.Child = child.String()
|
archivalBlock.Child = child.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
acceptanceData, err := tc.AcceptanceDataStore().Get(tc.DatabaseContext(), model.NewStagingArea(), hash)
|
||||||
|
isNotFoundErr := database.IsNotFoundError(err)
|
||||||
|
if !isNotFoundErr && err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if blockGHOSTDAGData.SelectedParent() != model.VirtualGenesisBlockHash && !isNotFoundErr && len(acceptanceData) > 0 {
|
||||||
|
acceptanceDataRPC := make([]*appmessage.MergesetBlockAcceptanceData, 0, len(acceptanceData))
|
||||||
|
for _, data := range acceptanceData {
|
||||||
|
acceptedTxs := make([]*appmessage.AcceptedTxEntry, 0, len(data.TransactionAcceptanceData))
|
||||||
|
for i, tx := range data.TransactionAcceptanceData {
|
||||||
|
if !tx.IsAccepted {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
acceptedTxs = append(acceptedTxs, &appmessage.AcceptedTxEntry{
|
||||||
|
TransactionID: consensushashing.TransactionID(tx.Transaction).String(),
|
||||||
|
IndexWithinBlock: uint32(i),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
acceptanceDataRPC = append(acceptanceDataRPC, &appmessage.MergesetBlockAcceptanceData{
|
||||||
|
BlockHash: data.BlockHash.String(),
|
||||||
|
AcceptedTxs: acceptedTxs,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
archivalBlock.AcceptanceData = acceptanceDataRPC
|
||||||
|
archivalBlock.SelectedParent = blockGHOSTDAGData.SelectedParent().String()
|
||||||
|
}
|
||||||
|
|
||||||
chunk = append(chunk, archivalBlock)
|
chunk = append(chunk, archivalBlock)
|
||||||
|
|
||||||
if len(chunk) == 1 {
|
if len(chunk) == 1 {
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -902,9 +902,22 @@ message GetPruningWindowRootsResponseMessage {
|
|||||||
RPCError error = 1000;
|
RPCError error = 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message AcceptedTxEntry{
|
||||||
|
string transactionId = 1;
|
||||||
|
uint32 index_within_block = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
message MergesetBlockAcceptanceData{
|
||||||
|
string blockHash = 1;
|
||||||
|
repeated AcceptedTxEntry acceptedTxs = 3;
|
||||||
|
}
|
||||||
|
|
||||||
message ArchivalBlock{
|
message ArchivalBlock{
|
||||||
string child = 1;
|
string child = 1;
|
||||||
RpcBlock block = 2;
|
RpcBlock block = 2;
|
||||||
|
repeated MergesetBlockAcceptanceData acceptanceData = 3;
|
||||||
|
string selectedParent = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
message AddArchivalBlocksRequestMessage { repeated ArchivalBlock blocks = 1; }
|
message AddArchivalBlocksRequestMessage { repeated ArchivalBlock blocks = 1; }
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func (x *KaspadMessage_AddArchivalBlocksRequest) toAppMessage() (appmessage.Message, error) {
|
func (x *KaspadMessage_AddArchivalBlocksRequest) toAppMessage() (appmessage.Message, error) {
|
||||||
|
panic("we need to implement acceptance data conversion")
|
||||||
if x == nil {
|
if x == nil {
|
||||||
return nil, errors.Wrapf(errorNil, "KaspadMessage_AddArchivalBlocksRequest is nil")
|
return nil, errors.Wrapf(errorNil, "KaspadMessage_AddArchivalBlocksRequest is nil")
|
||||||
}
|
}
|
||||||
@ -33,6 +34,7 @@ func (x *KaspadMessage_AddArchivalBlocksRequest) fromAppMessage(message *appmess
|
|||||||
for i, block := range message.Blocks {
|
for i, block := range message.Blocks {
|
||||||
protoBlock := &ArchivalBlock{
|
protoBlock := &ArchivalBlock{
|
||||||
Child: block.Child,
|
Child: block.Child,
|
||||||
|
SelectedParent: block.SelectedParent,
|
||||||
}
|
}
|
||||||
|
|
||||||
if block.Block != nil {
|
if block.Block != nil {
|
||||||
@ -42,6 +44,12 @@ func (x *KaspadMessage_AddArchivalBlocksRequest) fromAppMessage(message *appmess
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protoBlock.AcceptanceData = make([]*MergesetBlockAcceptanceData, len(block.AcceptanceData))
|
||||||
|
for j, acceptanceData := range block.AcceptanceData {
|
||||||
|
protoBlock.AcceptanceData[j] = &MergesetBlockAcceptanceData{}
|
||||||
|
protoBlock.AcceptanceData[j].fromAppMessage(acceptanceData)
|
||||||
|
}
|
||||||
blocks[i] = protoBlock
|
blocks[i] = protoBlock
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,6 +59,23 @@ func (x *KaspadMessage_AddArchivalBlocksRequest) fromAppMessage(message *appmess
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *MergesetBlockAcceptanceData) fromAppMessage(message *appmessage.MergesetBlockAcceptanceData) error {
|
||||||
|
if message == nil {
|
||||||
|
return errors.Wrapf(errorNil, "MergesetBlockAcceptanceData is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
x.BlockHash = message.BlockHash
|
||||||
|
x.AcceptedTxs = make([]*AcceptedTxEntry, len(message.AcceptedTxs))
|
||||||
|
for i, tx := range message.AcceptedTxs {
|
||||||
|
x.AcceptedTxs[i] = &AcceptedTxEntry{
|
||||||
|
TransactionId: tx.TransactionID,
|
||||||
|
IndexWithinBlock: tx.IndexWithinBlock,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (x *KaspadMessage_AddArchivalBlocksResponse) toAppMessage() (appmessage.Message, error) {
|
func (x *KaspadMessage_AddArchivalBlocksResponse) toAppMessage() (appmessage.Message, error) {
|
||||||
if x == nil {
|
if x == nil {
|
||||||
return nil, errors.Wrapf(errorNil, "KaspadMessage_AddArchivalBlocksResponse is nil")
|
return nil, errors.Wrapf(errorNil, "KaspadMessage_AddArchivalBlocksResponse is nil")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user