From b6cbb2c030c354b527c004f2d131bba6ecfe70e4 Mon Sep 17 00:00:00 2001 From: Aurora Gaffney Date: Fri, 1 Sep 2023 20:39:58 -0500 Subject: [PATCH] feat: parse on-chain datum --- internal/indexer/indexer.go | 30 +++++++++++++----------------- internal/miner/miner.go | 4 ++-- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/internal/indexer/indexer.go b/internal/indexer/indexer.go index 6a4cb58..924de40 100644 --- a/internal/indexer/indexer.go +++ b/internal/indexer/indexer.go @@ -5,6 +5,7 @@ import ( "github.com/blinklabs-io/bluefin/internal/config" "github.com/blinklabs-io/bluefin/internal/logging" + "github.com/blinklabs-io/bluefin/internal/miner" "github.com/blinklabs-io/bluefin/internal/storage" "github.com/blinklabs-io/bluefin/internal/wallet" @@ -22,19 +23,6 @@ type Indexer struct { pipeline *pipeline.Pipeline } -type Datum struct { - nonce uint64 - state State //nolint:unused -} - -type State struct { - BlockNumber uint64 - CurrentHash []byte - LeadingZeros uint64 - DifficultyNumber uint64 - EpochTime uint64 -} - // Singleton indexer instance var globalIndexer = &Indexer{} @@ -146,13 +134,21 @@ func (i *Indexer) handleEvent(evt event.Event) error { return err } datumFields := datum.Value().(cbor.Constructor).Fields() - var data = Datum{ - nonce: datumFields[0].(uint64), + blockData := miner.BlockData{ + BlockNumber: int64(datumFields[0].(uint64)), + TargetHash: datumFields[1].(cbor.ByteString).String(), + LeadingZeros: int64(datumFields[2].(uint64)), + DifficultyNumber: int64(datumFields[3].(uint64)), + EpochTime: int64(datumFields[4].(uint64)), + RealTimeNow: int64(datumFields[5].(uint64)), + } + switch v := datumFields[6].(type) { + case cbor.ByteString: + blockData.Message = v.String() } - state := datumFields[1].(cbor.ByteString).String() // TODO: do the thing - logger.Infof("found updated datum: nonce: %d, state: %s", data.nonce, state) + logger.Infof("found updated datum: %#v", blockData) } } return nil diff --git a/internal/miner/miner.go b/internal/miner/miner.go index 9114436..8a62e6d 100644 --- a/internal/miner/miner.go +++ b/internal/miner/miner.go @@ -34,7 +34,7 @@ type BlockData struct { EpochTime int64 RealTimeNow int64 Message string - Interlink []byte + Interlink [][]byte } type Miner struct { @@ -87,7 +87,7 @@ func (m *Miner) Start() error { difficultyNumber := state.DifficultyNumber epochTime := state.DifficultyNumber + 90000 + realTimeNow - state.EpochTime // TODO: calculate interlink - interlink := []byte("sampleInterlink") + interlink := [][]byte{[]byte("sampleInterlink")} // Construct the new block data postDatum := BlockData{