Documentation
¶
Index ¶
- Variables
- func MinConsensusPeers() int
- type BinaryEntry
- type BinaryQueryRequest
- type BinaryQueryResponse
- type BinaryRegistry
- func (br *BinaryRegistry) CacheEntry(entry *BinaryEntry)
- func (br *BinaryRegistry) GetBinary(hash string) (*BinaryEntry, error)
- func (br *BinaryRegistry) RegisterBinary(hash, name, version, filePath string) error
- func (br *BinaryRegistry) ScanAndAnnounce()
- func (br *BinaryRegistry) ScanBinDirectory(binDir string)
- func (br *BinaryRegistry) StartAutoAnnounce()
- type Config
- type ConsensusValidator
- func (cv *ConsensusValidator) PublishChecksum(hash string, checksum string) error
- func (cv *ConsensusValidator) VerifyBeforeDownload(hash string) (*PackageVerification, error)
- func (cv *ConsensusValidator) VerifyPackage(hash string, localFilePath string) (*PackageVerification, error)
- func (cv *ConsensusValidator) WaitForConsensus(hash string, maxWait time.Duration) (*PackageVerification, error)
- type HealthChecker
- type HealthStatus
- type MessageHandler
- type MessageType
- type NetworkMessage
- type Node
- func (n *Node) AnnounceSeed(hash string, name string, version string, size int64) error
- func (n *Node) BroadcastPackageAvailable(hash, name, version string, size int64) error
- func (n *Node) BroadcastSeedAnnounce(hash, name, version string) error
- func (n *Node) Close() error
- func (n *Node) DownloadPackage(peerID string, hash string, name string, destPath string) error
- func (n *Node) FindPackage(hash string) (*PackageInfo, error)
- func (n *Node) GetPeers() []peer.ID
- func (n *Node) PeerCount() int
- func (n *Node) Publish(message []byte) error
- func (n *Node) PublishPackage(pkg PackageInfo) error
- func (n *Node) SearchPackageWithPeers(hash string) (*PackageInfo, []PeerInfo, error)
- func (n *Node) SeedPackage(hash string, filePath string) error
- func (n *Node) SetupTransferProtocol(storageDir string)
- func (n *Node) StartMessageListener(handler MessageHandler)
- func (n *Node) WaitForPeers(minPeers int, timeout time.Duration) bool
- type PackageAvailablePayload
- type PackageInfo
- type PackageVerification
- type PeerChecksum
- type PeerInfo
- type SeedAnnouncePayload
- type TransferMetadata
- type TransferProgress
- type TransferRequest
Constants ¶
This section is empty.
Variables ¶
var BootstrapNodes = []string{}
BootstrapNodes son los nodos semilla de Nucleus (requieren VPS público)
var IPFSBootstrapNodes = []string{
"/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN",
"/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa",
"/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb",
"/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt",
}
IPFSBootstrapNodes son nodos públicos de IPFS que permiten que la DHT funcione
Functions ¶
func MinConsensusPeers ¶
func MinConsensusPeers() int
MinConsensusPeers devuelve el número mínimo de peers para consenso
Types ¶
type BinaryEntry ¶
type BinaryQueryRequest ¶
type BinaryQueryResponse ¶
type BinaryQueryResponse struct {
Found bool `json:"found"`
Entry *BinaryEntry `json:"entry,omitempty"`
PeerID string `json:"peer_id,omitempty"`
}
type BinaryRegistry ¶
type BinaryRegistry struct {
// contains filtered or unexported fields
}
func NewBinaryRegistry ¶
func NewBinaryRegistry(node *Node, storageDir string) *BinaryRegistry
func (*BinaryRegistry) CacheEntry ¶
func (br *BinaryRegistry) CacheEntry(entry *BinaryEntry)
func (*BinaryRegistry) GetBinary ¶
func (br *BinaryRegistry) GetBinary(hash string) (*BinaryEntry, error)
func (*BinaryRegistry) RegisterBinary ¶
func (br *BinaryRegistry) RegisterBinary(hash, name, version, filePath string) error
func (*BinaryRegistry) ScanAndAnnounce ¶
func (br *BinaryRegistry) ScanAndAnnounce()
func (*BinaryRegistry) ScanBinDirectory ¶
func (br *BinaryRegistry) ScanBinDirectory(binDir string)
func (*BinaryRegistry) StartAutoAnnounce ¶
func (br *BinaryRegistry) StartAutoAnnounce()
type Config ¶
Config contiene la configuración del nodo P2P
func DefaultConfig ¶
func DefaultConfig() *Config
DefaultConfig devuelve la configuración por defecto
type ConsensusValidator ¶
type ConsensusValidator struct {
// contains filtered or unexported fields
}
ConsensusValidator maneja la verificación de consenso de binarios
func NewConsensusValidator ¶
func NewConsensusValidator(node *Node) *ConsensusValidator
NewConsensusValidator crea un nuevo validador de consenso
func (*ConsensusValidator) PublishChecksum ¶
func (cv *ConsensusValidator) PublishChecksum(hash string, checksum string) error
PublishChecksum publica el checksum de un paquete en la DHT
func (*ConsensusValidator) VerifyBeforeDownload ¶
func (cv *ConsensusValidator) VerifyBeforeDownload(hash string) (*PackageVerification, error)
VerifyBeforeDownload verifica el consenso antes de descargar un paquete
func (*ConsensusValidator) VerifyPackage ¶
func (cv *ConsensusValidator) VerifyPackage(hash string, localFilePath string) (*PackageVerification, error)
VerifyPackage consulta a múltiples peers y verifica que el binario sea idéntico
func (*ConsensusValidator) WaitForConsensus ¶
func (cv *ConsensusValidator) WaitForConsensus(hash string, maxWait time.Duration) (*PackageVerification, error)
WaitForConsensus espera hasta que se alcance consenso para un paquete
type HealthChecker ¶
type HealthChecker struct {
// contains filtered or unexported fields
}
HealthChecker monitorea la salud del nodo P2P
func NewHealthChecker ¶
func NewHealthChecker(node *Node) *HealthChecker
NewHealthChecker crea un nuevo health checker
func (*HealthChecker) GetStatus ¶
func (hc *HealthChecker) GetStatus() HealthStatus
GetStatus devuelve el estado actual del nodo
func (*HealthChecker) MonitorPeriodic ¶
func (hc *HealthChecker) MonitorPeriodic(interval time.Duration, handler func(HealthStatus))
MonitorPeriodic ejecuta chequeos periódicos de salud
func (*HealthChecker) WaitForHealthy ¶
func (hc *HealthChecker) WaitForHealthy(timeout time.Duration) error
WaitForHealthy espera hasta que el nodo esté saludable
type HealthStatus ¶
type HealthStatus struct {
NodeID string `json:"node_id"`
ListenAddr string `json:"listen_addr"`
PeerCount int `json:"peer_count"`
DHTReady bool `json:"dht_ready"`
PubSubReady bool `json:"pubsub_ready"`
Uptime string `json:"uptime"`
Timestamp time.Time `json:"timestamp"`
}
HealthStatus contiene el estado del nodo
type MessageHandler ¶
type MessageHandler func(msg NetworkMessage)
MessageHandler es una función para manejar mensajes entrantes
type MessageType ¶
type MessageType string
MessageType define el tipo de mensaje en la red
const ( MessagePackageAvailable MessageType = "package_available" MessagePackageUpdate MessageType = "package_update" MessageSeedAnnounce MessageType = "seed_announce" MessagePeerDiscovery MessageType = "peer_discovery" )
type NetworkMessage ¶
type NetworkMessage struct {
Type MessageType `json:"type"`
Payload interface{} `json:"payload"`
SenderID string `json:"sender_id"`
Timestamp time.Time `json:"timestamp"`
}
NetworkMessage es el formato estándar de mensajes en la red Nucleus
type Node ¶
type Node struct {
Host host.Host
DHT *dht.IpfsDHT
PubSub *pubsub.PubSub
Topic *pubsub.Topic
Sub *pubsub.Subscription
Datastore datastore.Batching
MDNS mdns.Service
}
Node representa un nodo en la red P2P de Nucleus
func (*Node) AnnounceSeed ¶
AnnounceSeed notifica a la red que este nodo tiene un binario
func (*Node) BroadcastPackageAvailable ¶
BroadcastPackageAvailable anuncia que un paquete está disponible
func (*Node) BroadcastSeedAnnounce ¶
BroadcastSeedAnnounce anuncia que este nodo está seedeando un paquete
func (*Node) DownloadPackage ¶
DownloadPackage descarga un binario desde un peer remoto
func (*Node) FindPackage ¶
func (n *Node) FindPackage(hash string) (*PackageInfo, error)
FindPackage busca un paquete en la DHT por su hash
func (*Node) PublishPackage ¶
func (n *Node) PublishPackage(pkg PackageInfo) error
PublishPackage anuncia un paquete en la DHT
func (*Node) SearchPackageWithPeers ¶
func (n *Node) SearchPackageWithPeers(hash string) (*PackageInfo, []PeerInfo, error)
SearchPackageWithPeers busca un paquete y devuelve información de peers que lo tienen
func (*Node) SeedPackage ¶
SeedPackage hace que un archivo esté disponible para descarga por otros peers
func (*Node) SetupTransferProtocol ¶
SetupTransferProtocol configura el protocolo de transferencia en el host
func (*Node) StartMessageListener ¶
func (n *Node) StartMessageListener(handler MessageHandler)
StartMessageListener comienza a escuchar mensajes de la red
type PackageAvailablePayload ¶
type PackageAvailablePayload struct {
Hash string `json:"hash"`
Name string `json:"name"`
Version string `json:"version"`
Size int64 `json:"size"`
}
PackageAvailablePayload se envía cuando un paquete está disponible en la red
type PackageInfo ¶
type PackageInfo struct {
Hash string `json:"hash"`
Name string `json:"name"`
Version string `json:"version"`
Size int64 `json:"size"`
SeedCount int `json:"seed_count"`
Timestamp time.Time `json:"timestamp"`
}
PackageInfo contiene información sobre un paquete disponible en la red
type PackageVerification ¶
type PackageVerification struct {
Hash string `json:"hash"`
Checksum string `json:"checksum"`
PeerCount int `json:"peer_count"`
Consensus bool `json:"consensus"`
PeerChecksums []PeerChecksum `json:"peer_checksums"`
Timestamp time.Time `json:"timestamp"`
}
PackageVerification contiene el resultado de la verificación
type PeerChecksum ¶
PeerChecksum contiene el checksum reportado por un peer
type SeedAnnouncePayload ¶
type SeedAnnouncePayload struct {
Hash string `json:"hash"`
Name string `json:"name"`
Version string `json:"version"`
PeerID string `json:"peer_id"`
}
SeedAnnouncePayload se envía cuando un nodo comienza a seedear un paquete
type TransferMetadata ¶
type TransferMetadata struct {
Hash string `json:"hash"`
Name string `json:"name"`
Size int64 `json:"size"`
Chunks int `json:"chunks"`
Checksum string `json:"checksum"`
}
TransferMetadata contiene metadata sobre el archivo que se transfiere
type TransferProgress ¶
type TransferProgress struct {
CurrentChunk int
TotalChunks int
BytesTransferred int64
TotalBytes int64
}
TransferProgress representa el progreso de una transferencia
type TransferRequest ¶
TransferRequest es la solicitud inicial para descargar un binario