mirror of
https://github.com/QuilibriumNetwork/ceremonyclient.git
synced 2026-02-21 18:37:26 +08:00
122 lines
2.2 KiB
Go
122 lines
2.2 KiB
Go
package app
|
|
|
|
import (
|
|
"encoding/binary"
|
|
|
|
"go.uber.org/zap"
|
|
"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
|
|
hypergraphStore store.HypergraphStore
|
|
keyManager keys.KeyManager
|
|
pebble store.KVDB
|
|
}
|
|
|
|
type DHTNode struct {
|
|
pubSub p2p.PubSub
|
|
quit chan struct{}
|
|
}
|
|
|
|
func newDHTNode(
|
|
pubSub p2p.PubSub,
|
|
) (*DHTNode, error) {
|
|
return &DHTNode{
|
|
pubSub: pubSub,
|
|
quit: make(chan struct{}),
|
|
}, nil
|
|
}
|
|
|
|
func newNode(
|
|
logger *zap.Logger,
|
|
dataProofStore store.DataProofStore,
|
|
clockStore store.ClockStore,
|
|
coinStore store.CoinStore,
|
|
hypergraphStore store.HypergraphStore,
|
|
keyManager keys.KeyManager,
|
|
pebble store.KVDB,
|
|
) (*Node, error) {
|
|
|
|
return &Node{
|
|
logger,
|
|
dataProofStore,
|
|
clockStore,
|
|
coinStore,
|
|
hypergraphStore,
|
|
keyManager,
|
|
pebble,
|
|
}, nil
|
|
}
|
|
|
|
func GetOutputs(output []byte) (
|
|
index uint32,
|
|
indexProof []byte,
|
|
kzgCommitment []byte,
|
|
kzgProof []byte,
|
|
) {
|
|
index = binary.BigEndian.Uint32(output[:4])
|
|
indexProof = output[4:520]
|
|
kzgCommitment = output[520:594]
|
|
kzgProof = output[594:668]
|
|
return index, indexProof, kzgCommitment, kzgProof
|
|
}
|
|
|
|
func nearestApplicablePowerOfTwo(number uint64) uint64 {
|
|
power := uint64(128)
|
|
if number > 2048 {
|
|
power = 65536
|
|
} else if number > 1024 {
|
|
power = 2048
|
|
} else if number > 128 {
|
|
power = 1024
|
|
}
|
|
return power
|
|
}
|
|
|
|
func (d *DHTNode) Start() {
|
|
<-d.quit
|
|
}
|
|
|
|
func (d *DHTNode) Stop() {
|
|
go func() {
|
|
d.quit <- struct{}{}
|
|
}()
|
|
}
|
|
|
|
func (n *Node) Start() {
|
|
}
|
|
|
|
func (n *Node) Stop() {
|
|
n.pebble.Close()
|
|
}
|
|
|
|
func (n *Node) GetLogger() *zap.Logger {
|
|
return n.logger
|
|
}
|
|
|
|
func (n *Node) GetClockStore() store.ClockStore {
|
|
return n.clockStore
|
|
}
|
|
|
|
func (n *Node) GetCoinStore() store.CoinStore {
|
|
return n.coinStore
|
|
}
|
|
|
|
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
|
|
}
|