fiz: correções da pool
This commit is contained in:
67
cmd/main.go
67
cmd/main.go
@ -4,13 +4,11 @@ import (
|
||||
"context"
|
||||
"dejo_node/internal/api"
|
||||
"dejo_node/internal/consensus"
|
||||
"dejo_node/internal/mempool"
|
||||
"dejo_node/internal/monitor"
|
||||
"dejo_node/internal/staking"
|
||||
"dejo_node/internal/state"
|
||||
"dejo_node/internal/storage"
|
||||
"dejo_node/internal/transactions"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
@ -22,33 +20,52 @@ func main() {
|
||||
|
||||
nodeID := os.Getenv("NODE_ID")
|
||||
port := os.Getenv("DEJO_PORT")
|
||||
validators := strings.Split(os.Getenv("DEJO_VALIDATORS"), ",")
|
||||
peers := strings.Split(os.Getenv("DEJO_PEERS"), ",")
|
||||
|
||||
blockStore := storage.NewBlockStore()
|
||||
blockStore := storage.NewBlockStore("./data/blocks")
|
||||
stakingStore := staking.NewStakingStore()
|
||||
mp := mempool.NewMempool()
|
||||
globalState := state.NewState()
|
||||
|
||||
// Heartbeat function
|
||||
pingPeer := func(peer string) bool {
|
||||
client := http.Client{Timeout: 2 * time.Second}
|
||||
resp, err := client.Get(peer + "/health")
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
return resp.StatusCode == http.StatusOK
|
||||
// Carregar staking existente se disponível
|
||||
if err := stakingStore.LoadFromDisk("./data/staking.db"); err != nil {
|
||||
fmt.Println("ℹ️ Criando novo staking store")
|
||||
}
|
||||
|
||||
monitor := monitor.NewMonitor(pingPeer)
|
||||
// Registrar todos os validadores com stake mínimo
|
||||
minStake := uint64(1000)
|
||||
validators := strings.Split(os.Getenv("DEJO_VALIDATORS"), ",")
|
||||
for _, validator := range validators {
|
||||
if err := stakingStore.Stake(validator, minStake, 1000); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
handler := api.NewHandler(blockStore, stakingStore, mp, globalState)
|
||||
mp := transactions.NewMempool()
|
||||
|
||||
handler := api.NewHandler()
|
||||
handler.SetStores(blockStore, stakingStore, mp)
|
||||
|
||||
server := api.NewServer(handler)
|
||||
go func() {
|
||||
fmt.Printf("🌐 Servidor HTTP iniciado na porta :%s\n", port)
|
||||
http.ListenAndServe(":"+port, server)
|
||||
addr := ":" + port
|
||||
fmt.Printf("🌐 Iniciando servidor HTTP em %s\n", addr)
|
||||
|
||||
// Adicionar pequeno delay para garantir que tudo está inicializado
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
|
||||
// Verificar se o servidor está respondendo
|
||||
go func() {
|
||||
time.Sleep(2 * time.Second) // Aumentar tempo de espera
|
||||
client := http.Client{Timeout: 2 * time.Second}
|
||||
resp, err := client.Get("http://localhost" + addr + "/ping")
|
||||
if err != nil || resp == nil || resp.StatusCode != http.StatusOK {
|
||||
log.Printf("⚠️ Aviso: Servidor HTTP pode não estar respondendo - %v", err)
|
||||
return // Não encerrar o programa, apenas registrar o aviso
|
||||
}
|
||||
resp.Body.Close()
|
||||
}()
|
||||
|
||||
if err := http.ListenAndServe(addr, server); err != nil {
|
||||
log.Fatalf("❌ Falha ao iniciar servidor HTTP: %v", err)
|
||||
}
|
||||
}()
|
||||
|
||||
round := consensus.NewRoundState(1)
|
||||
@ -58,16 +75,16 @@ func main() {
|
||||
ctx,
|
||||
nodeID,
|
||||
round,
|
||||
transport.Receive,
|
||||
transport.Broadcast,
|
||||
700,
|
||||
blockStore,
|
||||
func() *transactions.Block {
|
||||
return &transactions.Block{
|
||||
Txns: mp.GetTransactions(),
|
||||
Txns: mp.All(),
|
||||
}
|
||||
},
|
||||
stakingStore,
|
||||
globalState,
|
||||
monitor,
|
||||
1000, // minStake
|
||||
&consensus.LivenessMonitor{},
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user