1+ //go:build relic
2+
13package entries
24
35import (
@@ -11,14 +13,23 @@ import (
1113)
1214
1315type BlockEntry struct {
14- BlockHash string `pg:",pk,use_zero"`
15- PrevBlockHash string
16- TxnMerkleRoot string
17- Timestamp time.Time
18- Height uint64
19- Nonce uint64
20- ExtraNonce uint64
21- BadgerKey []byte `pg:",use_zero"`
16+ BlockHash string `pg:",pk,use_zero"`
17+ PrevBlockHash string
18+ TxnMerkleRoot string
19+ Timestamp time.Time
20+ Height uint64
21+ Nonce uint64
22+ ExtraNonce uint64
23+ BlockVersion uint32
24+ TxnConnectStatusByIndexHash string `pg:",use_zero"`
25+ ProposerPublicKey string `pg:",use_zero"`
26+ ProposerVotingPublicKey string `pg:",use_zero"`
27+ ProposerRandomSeedSignature string `pg:",use_zero"`
28+ ProposedInView uint64
29+ ProposerVotePartialSignature string `pg:",use_zero"`
30+ // TODO: Quorum Certificates. Separate entry.
31+
32+ BadgerKey []byte `pg:",use_zero"`
2233}
2334
2435type PGBlockEntry struct {
@@ -27,18 +38,26 @@ type PGBlockEntry struct {
2738}
2839
2940// Convert the UserAssociation DeSo encoder to the PG struct used by bun.
30- func BlockEncoderToPGStruct (block * lib.MsgDeSoBlock , keyBytes []byte ) * PGBlockEntry {
41+ func BlockEncoderToPGStruct (block * lib.MsgDeSoBlock , keyBytes []byte , params * lib. DeSoParams ) * PGBlockEntry {
3142 blockHash , _ := block .Hash ()
3243 return & PGBlockEntry {
3344 BlockEntry : BlockEntry {
34- BlockHash : hex .EncodeToString (blockHash [:]),
35- PrevBlockHash : hex .EncodeToString (block .Header .PrevBlockHash [:]),
36- TxnMerkleRoot : hex .EncodeToString (block .Header .TransactionMerkleRoot [:]),
37- Timestamp : consumer .UnixNanoToTime (block .Header .TstampSecs * 1e9 ),
38- Height : block .Header .Height ,
39- Nonce : block .Header .Nonce ,
40- ExtraNonce : block .Header .ExtraNonce ,
41- BadgerKey : keyBytes ,
45+ BlockHash : hex .EncodeToString (blockHash [:]),
46+ PrevBlockHash : hex .EncodeToString (block .Header .PrevBlockHash [:]),
47+ TxnMerkleRoot : hex .EncodeToString (block .Header .TransactionMerkleRoot [:]),
48+ Timestamp : consumer .UnixNanoToTime (uint64 (block .Header .TstampNanoSecs )),
49+ Height : block .Header .Height ,
50+ Nonce : block .Header .Nonce ,
51+ ExtraNonce : block .Header .ExtraNonce ,
52+ BlockVersion : block .Header .Version ,
53+ TxnConnectStatusByIndexHash : hex .EncodeToString (block .Header .TxnConnectStatusByIndexHash .ToBytes ()),
54+ ProposerPublicKey : consumer .PublicKeyBytesToBase58Check (
55+ block .Header .ProposerPublicKey .ToBytes (), params ),
56+ ProposerVotingPublicKey : block .Header .ProposerVotingPublicKey .ToString (),
57+ ProposerRandomSeedSignature : block .Header .ProposerRandomSeedSignature .ToString (),
58+ ProposedInView : block .Header .ProposedInView ,
59+ ProposerVotePartialSignature : block .Header .ProposerVotePartialSignature .ToString (),
60+ BadgerKey : keyBytes ,
4261 },
4362 }
4463}
@@ -76,10 +95,16 @@ func bulkInsertBlockEntry(entries []*lib.StateChangeEntry, db *bun.DB, operation
7695
7796 for _ , entry := range uniqueBlocks {
7897 block := entry .Encoder .(* lib.MsgDeSoBlock )
79- blockEntry := BlockEncoderToPGStruct (block , entry .KeyBytes )
98+ blockEntry := BlockEncoderToPGStruct (block , entry .KeyBytes , params )
8099 pgBlockEntrySlice = append (pgBlockEntrySlice , blockEntry )
81100 for jj , transaction := range block .Txns {
82- pgTransactionEntry , err := TransactionEncoderToPGStruct (transaction , uint64 (jj ), blockEntry .BlockHash , blockEntry .Height , blockEntry .Timestamp , params )
101+ // Check if the transaction connects or not.
102+ txnConnects := blockEntry .Height < uint64 (params .ForkHeights .ProofOfStake2ConsensusCutoverBlockHeight ) ||
103+ jj == 0 || block .TxnConnectStatusByIndex .Get (jj - 1 )
104+ pgTransactionEntry , err := TransactionEncoderToPGStruct (
105+ transaction , uint64 (jj ), blockEntry .BlockHash , blockEntry .Height , blockEntry .Timestamp , txnConnects ,
106+ params ,
107+ )
83108 if err != nil {
84109 return errors .Wrapf (err , "entries.bulkInsertBlockEntry: Problem converting transaction to PG struct" )
85110 }
0 commit comments