56 lines
1.9 KiB
Markdown
56 lines
1.9 KiB
Markdown
|
|
# go-blockchain
|
||
|
|
|
||
|
|
Pure Go implementation of the Lethean blockchain protocol. Provides chain configuration, core cryptographic data types, CryptoNote wire serialisation, and LWMA difficulty adjustment for the Lethean CryptoNote/Zano-fork chain. Follows ADR-001: protocol logic in Go, cryptographic primitives deferred to a C++ bridge in later phases. Lineage: CryptoNote to IntenseCoin (2017) to Lethean to Zano rebase.
|
||
|
|
|
||
|
|
**Module**: `forge.lthn.ai/core/go-blockchain`
|
||
|
|
**Licence**: EUPL-1.2
|
||
|
|
**Language**: Go 1.25
|
||
|
|
|
||
|
|
## Quick Start
|
||
|
|
|
||
|
|
```go
|
||
|
|
import (
|
||
|
|
"forge.lthn.ai/core/go-blockchain/config"
|
||
|
|
"forge.lthn.ai/core/go-blockchain/types"
|
||
|
|
"forge.lthn.ai/core/go-blockchain/wire"
|
||
|
|
"forge.lthn.ai/core/go-blockchain/difficulty"
|
||
|
|
)
|
||
|
|
|
||
|
|
// Query the active hardfork version at a given block height
|
||
|
|
version := config.VersionAtHeight(config.MainnetForks, 10081) // returns HF2
|
||
|
|
|
||
|
|
// Check if a specific hardfork is active
|
||
|
|
active := config.IsHardForkActive(config.MainnetForks, config.HF4Zarcanum, 50000) // false
|
||
|
|
|
||
|
|
// Encode and decode a Lethean address
|
||
|
|
addr := &types.Address{SpendPublicKey: spendKey, ViewPublicKey: viewKey}
|
||
|
|
encoded := addr.Encode(config.AddressPrefix)
|
||
|
|
decoded, prefix, err := types.DecodeAddress(encoded)
|
||
|
|
|
||
|
|
// Varint encoding for the wire protocol
|
||
|
|
buf := wire.EncodeVarint(0x1eaf7)
|
||
|
|
val, n, err := wire.DecodeVarint(buf)
|
||
|
|
|
||
|
|
// Calculate next block difficulty
|
||
|
|
nextDiff := difficulty.NextDifficulty(timestamps, cumulativeDiffs, 120)
|
||
|
|
```
|
||
|
|
|
||
|
|
## Documentation
|
||
|
|
|
||
|
|
- [Architecture](docs/architecture.md) -- package structure, key types, design decisions, ADR-001
|
||
|
|
- [Development Guide](docs/development.md) -- prerequisites, test patterns, coding standards
|
||
|
|
- [Project History](docs/history.md) -- completed phases with commit hashes, known limitations
|
||
|
|
|
||
|
|
## Build & Test
|
||
|
|
|
||
|
|
```bash
|
||
|
|
go test ./...
|
||
|
|
go test -race ./...
|
||
|
|
go vet ./...
|
||
|
|
go build ./...
|
||
|
|
```
|
||
|
|
|
||
|
|
## Licence
|
||
|
|
|
||
|
|
European Union Public Licence 1.2 -- see [LICENCE](LICENCE) for details.
|