ceremonyclient/node/app/db_console.go
2023-09-09 18:52:04 -05:00

113 lines
2.3 KiB
Go

package app
import (
"bufio"
"fmt"
"os"
"strings"
"source.quilibrium.com/quilibrium/monorepo/node/store"
)
type DBConsole struct {
clockStore store.ClockStore
}
func newDBConsole(
clockStore store.ClockStore,
) (*DBConsole, error) {
return &DBConsole{
clockStore,
}, nil
}
// Runs the DB console, this is meant for simple debugging, not production use.
func (c *DBConsole) Run() {
for {
fmt.Printf("db> ")
reader := bufio.NewReader(os.Stdin)
s, err := reader.ReadString('\n')
if err != nil {
panic(err)
}
cmd := strings.Trim(s, "\n")
switch cmd {
case "quit":
return
case "show frames":
earliestFrame, err := c.clockStore.GetEarliestMasterClockFrame([]byte{
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
})
if err != nil {
panic(err)
}
latestFrame, err := c.clockStore.GetLatestMasterClockFrame([]byte{
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
})
if err != nil {
panic(err)
}
fmt.Printf(
"earliest: %d, latest: %d\n",
earliestFrame.FrameNumber,
latestFrame.FrameNumber,
)
fmt.Printf(
"Genesis Frame:\n\tVDF Proof: %x\n",
earliestFrame.Input[:516],
)
iter, err := c.clockStore.RangeMasterClockFrames(
[]byte{
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
},
earliestFrame.FrameNumber,
latestFrame.FrameNumber,
)
if err != nil {
panic(err)
}
for iter.First(); iter.Valid(); iter.Next() {
value, err := iter.Value()
if err != nil {
panic(err)
}
selector, err := value.GetSelector()
if err != nil {
panic(err)
}
fmt.Printf(
"Frame %d (Selector: %x):\n\tParent: %x\n\tVDF Proof: %x\n\n",
value.FrameNumber,
selector.Bytes(),
value.ParentSelector,
value.Input[:516],
)
}
if err := iter.Close(); err != nil {
panic(err)
}
default:
fmt.Printf("unknown command %s\n", cmd)
}
}
}