diff --git a/node/app/node.go b/node/app/node.go index e0ed4ae..ba10f9d 100644 --- a/node/app/node.go +++ b/node/app/node.go @@ -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 -} diff --git a/node/app/wire.go b/node/app/wire.go index c7a8d4f..7ff0ef8 100644 --- a/node/app/wire.go +++ b/node/app/wire.go @@ -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, )) } diff --git a/node/app/wire_gen.go b/node/app/wire_gen.go index dc4e212..90197a4 100644 --- a/node/app/wire_gen.go +++ b/node/app/wire_gen.go @@ -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 } diff --git a/node/main.go b/node/main.go index 56512f5..789b93d 100644 --- a/node/main.go +++ b/node/main.go @@ -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 diff --git a/node/store/hypergraph.go b/node/store/hypergraph.go index 4a2e615..b715f2b 100644 --- a/node/store/hypergraph.go +++ b/node/store/hypergraph.go @@ -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,