2026-02-20 15:24:38 +00:00
# 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.
2026-03-22 01:49:26 +00:00
**Module**: `dappco.re/go/core/blockchain`
2026-02-20 15:24:38 +00:00
**Licence**: EUPL-1.2
**Language**: Go 1.25
## Quick Start
```go
import (
2026-03-22 01:49:26 +00:00
"dappco.re/go/core/blockchain/config"
"dappco.re/go/core/blockchain/types"
"dappco.re/go/core/blockchain/wire"
"dappco.re/go/core/blockchain/difficulty"
2026-02-20 15:24:38 +00:00
)
// 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.