oneoff check

This commit is contained in:
Cassandra Heart 2025-03-10 02:12:00 -05:00
parent a1bf14673e
commit 642e6ffab5
No known key found for this signature in database
GPG Key ID: 6352152859385958
5 changed files with 195 additions and 174 deletions

View File

@ -2,32 +2,21 @@ package app
import (
"encoding/binary"
"errors"
"fmt"
"sync"
"go.uber.org/zap"
"golang.org/x/crypto/sha3"
"source.quilibrium.com/quilibrium/monorepo/node/consensus"
"source.quilibrium.com/quilibrium/monorepo/node/consensus/master"
"source.quilibrium.com/quilibrium/monorepo/node/crypto"
"source.quilibrium.com/quilibrium/monorepo/node/execution"
"source.quilibrium.com/quilibrium/monorepo/node/execution/intrinsics/token"
"source.quilibrium.com/quilibrium/monorepo/node/keys"
"source.quilibrium.com/quilibrium/monorepo/node/p2p"
"source.quilibrium.com/quilibrium/monorepo/node/store"
)
type Node struct {
logger *zap.Logger
dataProofStore store.DataProofStore
clockStore store.ClockStore
coinStore store.CoinStore
keyManager keys.KeyManager
pubSub p2p.PubSub
execEngines map[string]execution.ExecutionEngine
engine consensus.ConsensusEngine
pebble store.KVDB
logger *zap.Logger
dataProofStore store.DataProofStore
clockStore store.ClockStore
coinStore store.CoinStore
hypergraphStore store.HypergraphStore
keyManager keys.KeyManager
pebble store.KVDB
}
type DHTNode struct {
@ -49,30 +38,18 @@ func newNode(
dataProofStore store.DataProofStore,
clockStore store.ClockStore,
coinStore store.CoinStore,
hypergraphStore store.HypergraphStore,
keyManager keys.KeyManager,
pubSub p2p.PubSub,
tokenExecutionEngine *token.TokenExecutionEngine,
engine consensus.ConsensusEngine,
pebble store.KVDB,
) (*Node, error) {
if engine == nil {
return nil, errors.New("engine must not be nil")
}
execEngines := make(map[string]execution.ExecutionEngine)
if tokenExecutionEngine != nil {
execEngines[tokenExecutionEngine.GetName()] = tokenExecutionEngine
}
return &Node{
logger,
dataProofStore,
clockStore,
coinStore,
hypergraphStore,
keyManager,
pubSub,
execEngines,
engine,
pebble,
}, nil
}
@ -102,50 +79,6 @@ func nearestApplicablePowerOfTwo(number uint64) uint64 {
return power
}
func (n *Node) VerifyProofIntegrity() {
i, _, _, e := n.dataProofStore.GetLatestDataTimeProof(n.pubSub.GetPeerID())
if e != nil {
panic(e)
}
dataProver := crypto.NewKZGInclusionProver(n.logger)
wesoProver := crypto.NewWesolowskiFrameProver(n.logger)
for j := int(i); j >= 0; j-- {
fmt.Println(j)
_, parallelism, input, o, err := n.dataProofStore.GetDataTimeProof(n.pubSub.GetPeerID(), uint32(j))
if err != nil {
panic(err)
}
idx, idxProof, idxCommit, idxKP := GetOutputs(o)
ip := sha3.Sum512(idxProof)
v, err := dataProver.VerifyRaw(
ip[:],
idxCommit,
int(idx),
idxKP,
nearestApplicablePowerOfTwo(uint64(parallelism)),
)
if err != nil {
panic(err)
}
if !v {
panic(fmt.Sprintf("bad kzg proof at increment %d", j))
}
wp := []byte{}
wp = append(wp, n.pubSub.GetPeerID()...)
wp = append(wp, input...)
fmt.Printf("%x\n", wp)
v = wesoProver.VerifyPreDuskChallengeProof(wp, uint32(j), idx, idxProof)
if !v {
panic(fmt.Sprintf("bad weso proof at increment %d", j))
}
}
}
func (d *DHTNode) Start() {
<-d.quit
}
@ -157,31 +90,9 @@ func (d *DHTNode) Stop() {
}
func (n *Node) Start() {
err := <-n.engine.Start()
if err != nil {
panic(err)
}
// TODO: add config mapping to engine name/frame registration
wg := sync.WaitGroup{}
for _, e := range n.execEngines {
wg.Add(1)
go func(e execution.ExecutionEngine) {
defer wg.Done()
if err := <-n.engine.RegisterExecutor(e, 0); err != nil {
panic(err)
}
}(e)
}
wg.Wait()
}
func (n *Node) Stop() {
err := <-n.engine.Stop(false)
if err != nil {
panic(err)
}
n.pebble.Close()
}
@ -201,22 +112,10 @@ func (n *Node) GetDataProofStore() store.DataProofStore {
return n.dataProofStore
}
func (n *Node) GetHypergraphStore() store.HypergraphStore {
return n.hypergraphStore
}
func (n *Node) GetKeyManager() keys.KeyManager {
return n.keyManager
}
func (n *Node) GetPubSub() p2p.PubSub {
return n.pubSub
}
func (n *Node) GetMasterClock() *master.MasterClockConsensusEngine {
return n.engine.(*master.MasterClockConsensusEngine)
}
func (n *Node) GetExecutionEngines() []execution.ExecutionEngine {
list := []execution.ExecutionEngine{}
for _, e := range n.execEngines {
list = append(list, e)
}
return list
}

View File

@ -106,9 +106,6 @@ func NewDebugNode(*config.Config, *protobufs.SelfTestReport) (*Node, error) {
debugLoggerSet,
keyManagerSet,
storeSet,
pubSubSet,
engineSet,
consensusSet,
newNode,
))
}
@ -118,9 +115,6 @@ func NewNode(*config.Config, *protobufs.SelfTestReport) (*Node, error) {
loggerSet,
keyManagerSet,
storeSet,
pubSubSet,
engineSet,
consensusSet,
newNode,
))
}

View File

@ -41,20 +41,10 @@ func NewDebugNode(configConfig *config.Config, selfTestReport *protobufs.SelfTes
pebbleDataProofStore := store.NewPebbleDataProofStore(pebbleDB, zapLogger)
pebbleClockStore := store.NewPebbleClockStore(pebbleDB, zapLogger)
pebbleCoinStore := store.NewPebbleCoinStore(pebbleDB, zapLogger)
pebbleHypergraphStore := store.NewPebbleHypergraphStore(dbConfig, pebbleDB, zapLogger)
keyConfig := configConfig.Key
fileKeyManager := keys.NewFileKeyManager(keyConfig, zapLogger)
p2PConfig := configConfig.P2P
blossomSub := p2p.NewBlossomSub(p2PConfig, zapLogger)
frameProver := crypto.NewCachedWesolowskiFrameProver(zapLogger)
kzgInclusionProver := crypto.NewKZGInclusionProver(zapLogger)
pebbleHypergraphStore := store.NewPebbleHypergraphStore(dbConfig, pebbleDB, zapLogger)
engineConfig := configConfig.Engine
masterTimeReel := time.NewMasterTimeReel(zapLogger, pebbleClockStore, engineConfig, frameProver)
inMemoryPeerInfoManager := p2p.NewInMemoryPeerInfoManager(zapLogger)
pebbleKeyStore := store.NewPebbleKeyStore(pebbleDB, zapLogger)
tokenExecutionEngine := token.NewTokenExecutionEngine(zapLogger, configConfig, fileKeyManager, blossomSub, frameProver, kzgInclusionProver, pebbleClockStore, pebbleDataProofStore, pebbleHypergraphStore, pebbleCoinStore, masterTimeReel, inMemoryPeerInfoManager, pebbleKeyStore, selfTestReport)
masterClockConsensusEngine := master.NewMasterClockConsensusEngine(engineConfig, zapLogger, pebbleClockStore, fileKeyManager, blossomSub, kzgInclusionProver, frameProver, masterTimeReel, inMemoryPeerInfoManager, selfTestReport)
node, err := newNode(zapLogger, pebbleDataProofStore, pebbleClockStore, pebbleCoinStore, fileKeyManager, blossomSub, tokenExecutionEngine, masterClockConsensusEngine, pebbleDB)
node, err := newNode(zapLogger, pebbleDataProofStore, pebbleClockStore, pebbleCoinStore, pebbleHypergraphStore, fileKeyManager, pebbleDB)
if err != nil {
return nil, err
}
@ -68,20 +58,10 @@ func NewNode(configConfig *config.Config, selfTestReport *protobufs.SelfTestRepo
pebbleDataProofStore := store.NewPebbleDataProofStore(pebbleDB, zapLogger)
pebbleClockStore := store.NewPebbleClockStore(pebbleDB, zapLogger)
pebbleCoinStore := store.NewPebbleCoinStore(pebbleDB, zapLogger)
pebbleHypergraphStore := store.NewPebbleHypergraphStore(dbConfig, pebbleDB, zapLogger)
keyConfig := configConfig.Key
fileKeyManager := keys.NewFileKeyManager(keyConfig, zapLogger)
p2PConfig := configConfig.P2P
blossomSub := p2p.NewBlossomSub(p2PConfig, zapLogger)
frameProver := crypto.NewCachedWesolowskiFrameProver(zapLogger)
kzgInclusionProver := crypto.NewKZGInclusionProver(zapLogger)
pebbleHypergraphStore := store.NewPebbleHypergraphStore(dbConfig, pebbleDB, zapLogger)
engineConfig := configConfig.Engine
masterTimeReel := time.NewMasterTimeReel(zapLogger, pebbleClockStore, engineConfig, frameProver)
inMemoryPeerInfoManager := p2p.NewInMemoryPeerInfoManager(zapLogger)
pebbleKeyStore := store.NewPebbleKeyStore(pebbleDB, zapLogger)
tokenExecutionEngine := token.NewTokenExecutionEngine(zapLogger, configConfig, fileKeyManager, blossomSub, frameProver, kzgInclusionProver, pebbleClockStore, pebbleDataProofStore, pebbleHypergraphStore, pebbleCoinStore, masterTimeReel, inMemoryPeerInfoManager, pebbleKeyStore, selfTestReport)
masterClockConsensusEngine := master.NewMasterClockConsensusEngine(engineConfig, zapLogger, pebbleClockStore, fileKeyManager, blossomSub, kzgInclusionProver, frameProver, masterTimeReel, inMemoryPeerInfoManager, selfTestReport)
node, err := newNode(zapLogger, pebbleDataProofStore, pebbleClockStore, pebbleCoinStore, fileKeyManager, blossomSub, tokenExecutionEngine, masterClockConsensusEngine, pebbleDB)
node, err := newNode(zapLogger, pebbleDataProofStore, pebbleClockStore, pebbleCoinStore, pebbleHypergraphStore, fileKeyManager, pebbleDB)
if err != nil {
return nil, err
}

View File

@ -490,8 +490,8 @@ func main() {
}
}
done := make(chan os.Signal, 1)
signal.Notify(done, syscall.SIGINT, syscall.SIGTERM)
// done := make(chan os.Signal, 1)
// signal.Notify(done, syscall.SIGINT, syscall.SIGTERM)
var node *app.Node
if *debug {
node, err = app.NewDebugNode(nodeConfig, report)
@ -503,41 +503,176 @@ func main() {
panic(err)
}
if *integrityCheck {
fmt.Println("Running integrity check...")
node.VerifyProofIntegrity()
fmt.Println("Integrity check passed!")
return
vertexIds := []string{
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d904000067d676550f8bb82a0afeb8c8f4dfa2c596ed6be0b9633055bb82b4b3de",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d904000074bac4cb3cd3661006a270979b61db138c607645a195de4743fac41b34",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d90400008267c0b3e1db177177504cad6e224e9402ce520b0f4999ff8fd52d08f3",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d90400008333485f75647f41c6c6204d49944ce5883f6f984e8215e9c593f4d518",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d904000092b20991086f350cc26943ecdf1a5d792e781d888d1870f5cf2ed87d80",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9040000cc5cb85dc360d1df8b6aeaf88e9c9301d61a3ed771ca855de6b505c5ca",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9040000d2f05dde06258245959d30a366fccdcc83463fb3e7634cf7099948c5f3",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9040000df5c93e1defbaaef7bbf87a3c056f00558dff00989441509c5a0315647",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9040000e7927010847e5fc31fb13745ae5d130e9b9d535a87bf8152402821785b",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9040000ea8458585ba7f52e5b3366b49a27c7e3c56ffcb218f65a836358e520fd",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9040000fa9cfe741f7b4d7fc35e7193c3406bc44c65fa99ed77b2469217e218db",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d90400010c0719130a2f118f72d6621d138c566b252a77594beecc486db6a10d37",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d904000118e9dcfc17d16e3bba318663de47b1904e33c437effe29f3b8c4e30535",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d90400011bc9169b2e90b6e2f744eec52a8d5117d2559335978d16939fed6db12b",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9080001b56e3460be4fa992f2aa75f7eb3216b3ec9196476c270d60e047a3986a",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9080001b705ddb3b09a597dd3b98f81460bf94f0889226d251193522c647f3cd7",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9080001bc686550b0c2bca0373a7ea726a2e7d5f8f4f413b4a92456e60578d836",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9080001cc1cb61fa45d58c8e00ea2eb8edffee4b4510b402427d3f387dc21f080",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9080001cec3fc58b0972030cd880db26a7de87f7b2e1e0b17de26faed59fd22f6",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9080001dd0c5b30ccc0c8d0efab39e7e13dbadeb2a1d21ba6035c3cc8a6fbfd91",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9080001e43497d2c05f4984e57641d9de47030f664767344553edc632a9b5e108",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9080001ec7d523904d18ae1de67d15f6862d4477765c471ac6e643076e312602a",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9080001f093a752a1e0e9bb63634acf0486749594df9f1adace3eca5e2e730656",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9080001f4ada6ded1030743105553cd73c8f86ecd745e4638be710f206f878ac1",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d90800020bb0445a55bb62ddf590ec32ee254d08ed2bcfce991f2ecca416d084da",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d910433356e0f8202d9a276aaf47e7e659a5fa3ad541443fcc633061afd05ea62c",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d910471fc1216096bc79bf8d54f24f81a4b401593b7a019124f2aebd0ba9a8c790",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d910495b6b0bd4b1cd287c1c9d905d8415ef6a40e6779c5029fe2fe915ede4ad84",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d910495b80ab5484edc1b6e922761fec15c71a379d2ada66c37f1a18d2a1be4062",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9104bff1614ac7a9f59586dfe0b6f12e709f35d36f1160ae19d6774597ffbd261",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9104fdbc4e5f2b5e4d9d6341a4c5dfc742d79e3c99346f51215bb404885bc3b8a",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9180012732795f23f028cedf2af727b8e9bec0f099f062a734050bfa1e33aa16e",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d918001275b0cf3107fcd99b7e45e54e5d893c4ad223fcf41cab667e5b142a77e2",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d918001283cc52010c985c4a90546baa3e57bca878ba6807f2c91a5333b235ab08",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9180012859e9f6397e2268da291d61b2e88996d36c8a84a2dd4527867a006035f",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d918001288593b1f341aedd833fc7663eb369178895c41dfd5df1613c1a2e75087",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9180012a7c7c7169686b37c8fcc603f9e788bded64a37664e2993803f87cff085",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9180012aa6ccb550559248b6888d55568ff82b45735d4fae7bf321a22cbd74375",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9180012bc7928e2dab7d3158e7ebfe0f451bbd6d3ccdb54745831928b8a78f00a",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9180012cb50d4226d8532c5510977d41202ec2483c34d084228375d88710235f1",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9180012d3e832dec5fdfc3c656d43504a12b16a6421e3e3b70822aadb5ac5d8bd",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9180012e7a4068bf80da1f7a6c37f6c54caa920d2b86f13ebfc85766e4b0e33a3",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d918001307a7c9312816c4c7ff891da37e5cf3c433d683d26b86b948142d3acd47",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d918001388697c0b89c1acc49626fd56ecc43ede6b09820f5e98546e3dc1a00881",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92400b063898ebea9f2976bfbcbb52c0fc4ea1b13d85eb70c2482033e296a2230",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92400b0644ee33ee673460724e3b9cced7db347caf5919d8427a8223b466b3cad",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92400b0809e71a4d79ef8fc4bd4b0333691d290a12f2436693a14a5ccd3fcffda",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92400b081f7c1c37409e20aed95d7299cbbbf3cd0b14bd712638bf9f8b5b66830",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92400b082a43ee9525dd92c2e15f0afbdf9cd4c125a16cb420d9227062d0f67ab",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92400b0995a7aad2e7b8e36cb6d15e4036e9939945139da983b14ce37b98117de",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92400b09fd7b1695a9ed1454698049ada395f2ff08d9f6b509c72ae33e2780a5b",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92400b0a760ee4f8d254e98b91821c35019309b790b12c14261af94671880f932",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92400b0ace684e9e1fb74a3f5c989959a34db83975a43a0f7c823ced5228416af",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9270000503d3bd15d6c44ede68df75f156f0c4a49b96dc9f26c87d2c8c2aa0d83",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9270000519561693a308bc43e20340a412d600c38ade8bf73667896d69ba8e7ac",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d927000054415101126cc00c84db445225a7fdd8a4f993d869d984d5dbd8ac1c4d",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9270000544c9a47174d61a0c05d8b43eadf8674f1d3d624929201b052e30c89be",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d927000058e741f5e8a171dd32546ca60039eab810bcfdf83ec8ac9bacf888716a",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92700006076cd2603d6e44511d12e203a95f58f34c68269dca90d877c907c2970",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d927000068a125026b0ba1bc857f98668a4259c67be12697a79a77ae37181ae0e6",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92700006a93130bc7aaa4ccaa84d304eb71957728a1f77dc133028b06c2855c37",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9270000713dfd3a4ac943a6937a4eec408359429dd37321b869e277648b075c78",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d927000074ad3f7d45094b345fb9977c16c1466f62da6e85e8631c0cdd74cabadc",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d927000074df5341e4a928fb97f7739f3d74bf2b9bafb3c775bc0e9b1efa3552cb",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92700007898b415d164f5851f9509bebd200f012c3d51d298086b63dcf6f7f092",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d927000081a1963a568bddf7c09b1deb315ede626922f65cd574c54f0cf324708e",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92700008f619837880836b546bab8dfbf5be2d52defaa87f2247838ec379d8d24",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92800005b666e592e488304ec283a67c1789a3e34afba787f177d9501ac646ec6",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92800005d57e4b10d3824f637fb4cee1b1f855aac915015222c4652e6429dca69",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d928000079c51ad3c2edfb53238a5a0195cc8f9d2471fe0ee6a74c8ff5304e13d4",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92800007ead0d90a6bba22d47945d2cb58300609b330ac81c7f003c8d8680d0e5",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92800008c065f38c08a8bff1658043b75d451b121100339e9b18641f1958e9d70",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9280000924f1271a5b85e32ff25415a15f06e71db14d080fb5a0f679888962250",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9280000927fd64b1c10254005ab8fb83daba6db16658d407ffbd9ad2a78b361ae",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9280000952df8ac82460ab5374fb6a199b3a15134f7333090062f9a1ee9e0ac87",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9280000960b2b3dd12ccf91739717137372c3bb2f5ca1890400b1d088c3f5dca4",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92800009dfa6e9badccee5f72bc294c3c5da0e9f6435617a0265227af55ac0bd9",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9280000a2a60ebb77e0ec54aa5916cb0b4a57e2f8458969c44e71309e62748250",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9280000b29db0615e5b0d214be0a17f1a8db662290d73425515e5d68b1fb2034b",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92900007cba90c824446a24da5f5e3588f27eb28110c335ae927b892b9d71aafc",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d929000081fb91a6ba38e5ab8aafef0a9d88c1c279d4e6219275fcad16f3453803",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d929000082078b37b476e525d1019303222809943627bd0eca92d05e68025e9b04",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d929000090ea069966e9a420b848f979d94a975811a915061704ee6c82e2821afe",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92900009c526b10517ed7a72a1dbe90b64c783e2a69ee24849bb4297118c921a2",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9290000ba50d76aeb604930a4b232395602d9ab1d97e231ab9ef4fdb9a3133e93",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9290000be2007eed7ec62281ec9b0cc0e5d1100dc89d236b4a1f8e84111790d05",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9290000be3192660c00d0001a416e5659ce5e45309fd48da47ed431ed1f801e75",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9290000c223a117920f9270776fcdd1d3f9ea8a2b6a7ba94798ec8c8d2692e18e",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d9290000d0fd19cd40725d8cea0eefeb32d7df84beb64f1e5fa100212039e5dd81",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92a00003820b2e656959a6717ac69ab0df2a5af260a44e1843c885e349108912f",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92a00007160f8622935989236557d40e1b537a6b0b811d9fe4d47df574b8cd306",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92a000091018aefea3ac649a5eddc1c269c7e389b628ec7afa886b6adbca932ba",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92a00009ab0b94deea30aa96f48356305b2fcd762b7572cc5e2e4fdbe49ca5573",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92a00009c231ee634883ff752756aa329d2b296cfbd0a64f208f32469f883587e",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92a0000ac9c6aa5ecfb250c86cfd50ef3486fe6a4be5b3c68e4d6df1eb4f2dcdb",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92a0000ae37b40359f9c658b26cddf4fb507166a07c4ecb40732250d91bd84afd",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92a0000bd8d44b40d21447e52f3f86f659e0af6099d6fd7e28ef48244441f3c2a",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92a0000d29279babdd707fbeda855d4120c8a05b1d73a810ad3b44a549feeccd4",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92a0000d4e23a5006891d780a07c62511e2b80ed6ff6040387381189a3d46e1fc",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92a0000df080b88375185206f4b8af3357b84ba8e74e55741dccfd085c6c32b5c",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92bfffad24a3cc7294e838adfa3e389b0f07f8b1fc786ebb00a7b8f6b16f38441",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92bfffae3439350c4c4e62bfeec22cb204165e89cab72ccd37c1997b9d40ce777",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92bfffae524274d9f0d13407af24367f41bb24964817ef200b10db774b7947e27",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92bfffaec11d1a3a05cdc1fc51f2c33a3f8c63e94e63405942a181c5d3af18af5",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92bfffaf4b05281de31b35771e9f10ec7218c12618ee39ea7f0fef91d037b70f1",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92bfffb0005d64536c3cae6bc8d1a71309b9fd112e394e3e5e208e6396032fc19",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92bfffb0566b4e93c5a8fe1a14aa1df037cc4268d621503a61cfd87e1287bd350",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92bfffb07c688268d00a7103eba81ad7262e9259bdac14916e0b4bfb310765237",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92bfffb0a6eb895be0b4585a6b173d5f470005adda9ebb64283ae85ec09959aa3",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92bfffb1be577ab05b57539c9c17fd438f8ca200137d50469f626d7f1def880cc",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92bfffb20df0d6700e3a813256dde5f2899add38032b523998647eecf57c09ebf",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92bfffb21b8c36e791c530aa24c1df2049c98d99e34b3b5aeccb1462806626d54",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92bfffb2bbf15def0ab3e23f7a305046525fd62faade944ebe16990f2e69408a1",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92bfffb3665f69ab669e8e79a6e558e51700ed212e6fbeb43ed0be755f18ead2f",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92bfffb3e27cea6088a99f9c3320e57bb9967501da7307b02c7e21113bbdb48cb",
"11558584af7017a9bfd1ff1864302d643fbe58c62dcf90cbcd8fde74a26794d92bfffb425ee94cde5c6687e3a4cb8efb18805997e75b4369f728856780ead2c3",
}
// runtime.GOMAXPROCS(1)
node.Start()
defer node.Stop()
if nodeConfig.ListenGRPCMultiaddr != "" {
srv, err := rpc.NewRPCServer(
nodeConfig.ListenGRPCMultiaddr,
nodeConfig.ListenRestMultiaddr,
node.GetLogger(),
node.GetDataProofStore(),
node.GetClockStore(),
node.GetCoinStore(),
node.GetKeyManager(),
node.GetPubSub(),
node.GetMasterClock(),
node.GetExecutionEngines(),
)
for _, id := range vertexIds {
key, err := hex.DecodeString(id)
if err != nil {
panic(err)
}
if err := srv.Start(); err != nil {
panic(err)
raw, err := node.GetHypergraphStore().LoadRawVertexTree(key)
if err != nil {
fmt.Printf("%x\n", key)
fmt.Println(err)
fmt.Println()
} else {
fmt.Printf("%x\n%x\n\n", key, raw)
}
defer srv.Stop()
}
<-done
node.Stop()
// if *integrityCheck {
// fmt.Println("Running integrity check...")
// node.VerifyProofIntegrity()
// fmt.Println("Integrity check passed!")
// return
// }
// // runtime.GOMAXPROCS(1)
// node.Start()
// defer node.Stop()
// if nodeConfig.ListenGRPCMultiaddr != "" {
// srv, err := rpc.NewRPCServer(
// nodeConfig.ListenGRPCMultiaddr,
// nodeConfig.ListenRestMultiaddr,
// node.GetLogger(),
// node.GetDataProofStore(),
// node.GetClockStore(),
// node.GetCoinStore(),
// node.GetKeyManager(),
// node.GetPubSub(),
// node.GetMasterClock(),
// node.GetExecutionEngines(),
// )
// if err != nil {
// panic(err)
// }
// if err := srv.Start(); err != nil {
// panic(err)
// }
// defer srv.Stop()
// }
// <-done
}
var dataWorkers []*exec.Cmd

View File

@ -8,6 +8,7 @@ import (
"os"
"path"
"path/filepath"
"slices"
"strings"
"github.com/pkg/errors"
@ -24,6 +25,7 @@ type HypergraphStore interface {
error,
)
LoadVertexData(id []byte) ([]application.Encrypted, error)
LoadRawVertexTree(id []byte) ([]byte, error)
SaveVertexTree(
txn Transaction,
id []byte,
@ -120,6 +122,17 @@ func (p *PebbleHypergraphStore) NewTransaction(indexed bool) (
return p.db.NewBatch(indexed), nil
}
func (p *PebbleHypergraphStore) LoadRawVertexTree(id []byte) ([]byte, error) {
vertexData, closer, err := p.db.Get(hypergraphVertexDataKey(id))
if err != nil {
return nil, err
}
defer closer.Close()
return slices.Clone(vertexData), nil
}
func (p *PebbleHypergraphStore) LoadVertexTree(id []byte) (
*crypto.VectorCommitmentTree,
error,