Files
zeekay 7cf87b230b node-unified is the node
The module already called itself github.com/luxfi/node while containing no node
in Go: cmd/luxd was twenty-one lines that printed the size of a few types, and
the Go column of the matrix measured a VM plugin. A repo that fetches the thing
it claims to be has not replaced it, so the Go sources move in — 1515 files,
the daemon and everything under it — and the build reaches outside this module
for nothing.

Rust and C++ sit beside it unchanged and are still measured against it by the
differential. That is the point of one repo: the reference implementation and
the two ports are the same checkout, so parity is a thing you can run rather
than a thing you assert.

Verified: builds, and the closure carries no lux-private — checked at build time
rather than believed. The daemon starts twelve chains on a local network
(P X C Q Z A B G K M F, plus D through its plugin) and reports healthy.
2026-09-07 16:15:25 -07:00

62 lines
1.4 KiB
Go

// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package archivedb
import "github.com/luxfi/database"
var _ database.KeyValueReader = (*Reader)(nil)
type Reader struct {
db *Database
height uint64
}
func (r *Reader) Has(key []byte) (bool, error) {
_, err := r.Get(key)
if err == database.ErrNotFound {
return false, nil
}
return true, err
}
func (r *Reader) Get(key []byte) ([]byte, error) {
value, _, exists, err := r.GetEntry(key)
if err != nil {
return nil, err
}
if exists {
return value, nil
}
return value, database.ErrNotFound
}
// GetEntry retrieves the value of the provided key, the height it was last
// modified at, and a boolean to indicate if the last modification was an
// insertion. If the key has never been modified, ErrNotFound will be returned.
func (r *Reader) GetEntry(key []byte) ([]byte, uint64, bool, error) {
it := r.db.db.NewIteratorWithStartAndPrefix(newDBKeyFromUser(key, r.height))
defer it.Release()
next := it.Next()
if err := it.Error(); err != nil {
return nil, 0, false, err
}
// There is no available key with the requested prefix
if !next {
return nil, 0, false, database.ErrNotFound
}
_, height, err := parseDBKeyFromUser(it.Key())
if err != nil {
return nil, 0, false, err
}
value, exists := parseDBValue(it.Value())
if !exists {
return nil, height, false, nil
}
return value, height, true, nil
}