benduncan
poh-golang
Go

Proof of History in Golang. Taking key concepts from the Solana whitepaper and providing examples in Go

Last updated Oct 8, 2025
14
Stars
2
Forks
0
Issues
0
Stars/day
Attention Score
3
Language breakdown
Go 96.5%
Makefile 3.5%
Files click to expand
README

Proof of History - Concepts in Go

               
|\     \|\     \|\  \|\  \        
\ \  \|\  \ \  \|\  \ \  \\\  \       
 \ \   __\ \  \\\  \ \     \      
  \ \  \|\ \  \\\  \ \  \ \  \  
   \ \\    \ \\ \\ \\\_\
    \||     \||\||\|\|_| go!

Objective

Provide source-code concepts from the Solana whitepaper in Golang to understand proof-of-history and the mechanics behind Solana further.

Used as an exercise to understand Proof of History further by writing a simple implementation as described in the whitepaper.

Usage

make build

Build from source

./bin/poh-golang

Run a proof-of-history to generate the hashrate on a single core, and validate the results on all available CPU cores

CPU Cores 8
Generate Hashrate 1482625 p/sec (1-core)
Verify Hashrate 4701530 p/sec (8-cores)
Verify Hashrate 587691 p/core

Benchmarks

make bench

Simulate benchmarks to generate proof-of-history (POH) using a single core, and verify the output on multiple cores.

Roadmap

  • [X] Calculate hashrate for POH generation (single core)
  • [X] Calculate hashrate for POH validation (multiple cores)
  • [ ] Implement Solana hash table indexes for user addresses and packet payloads described in the whitepaper.
  • [ ] Add GPU support via Cuda implementation of SHA256
  • [ ] Synchronize multiple POH validators on the local network
  • [ ] Implement event signatures
  • [ ] Add basic Proof of Stake implementation as per the Solana whitepaper
  • [ ] Implement vote support for PoS implementation
  • [ ] Implement election for PoS and simulate PoH generator failure
  • [ ] Add PoH election support and secondary validator promotion
  • [ ] Implement Streaming proof of Replication using basic CBC encryption and XOR inputs

© 2026 GitRepoTrend · benduncan/poh-golang · Updated daily from GitHub