🛰️ Obsero Probe (Full)
Obsero Probe is a lightweight Go-based agent that generates cryptographically signed uptime proofs and can optionally upload them to IPFS.
🚀 Features
- HTTP ping with latency measurement
- Automatic geolocation of probe (city, region, country)
- SHA256 hashing of observation data
- EVM-compatible signature using Ethereum private key
- IPFS upload support (
--ipfs) - CLI support for target, output, and IPFS toggle
- Cross-platform Makefile for easy builds
⚙️ Requirements
- Go 1.21+
- Local IPFS node (optional, for
--ipfs) - Ethereum private key (test key included by default)
📦 Quick Start
1. Install dependencies
cd probe
go mod tidy
2. Run a probe
go run ./cmd/obsero-probe --target https://example.com --output proof_http_signed.json --ipfs
🛠️ CLI Options
| Flag | Description |
|---|---|
--target |
URL to ping |
--output |
Output file name |
--ipfs |
Upload the proof to IPFS |
📄 Proof Format (simplified)
{
"timestamp": "2025-04-29T14:00:00Z",
"target": "https://example.com",
"status": "up",
"http_status_code": 200,
"latency_ms": 145,
"error_message": null,
"observer": {
"address": "0xABCD...1234",
"country": "France",
"region": "Île-de-France",
"city": "Paris",
"probe_version": "0.1"
},
"version": "0.1",
"proof": {
"hash": "ab13...cdef",
"signature": "0x..."
}
}
📁 Project Structure
probe/
├── cmd/
│ └── obsero-probe/main.go # CLI entrypoint
├── pkg/
│ ├── geo/geo.go # Geolocation
│ ├── probe/ping.go # HTTP ping
│ └── proof/format.go # Build, sign and upload proof
├── Makefile # Multi-platform build support
├── go.mod / go.sum
🧱 Next Steps
- ✅ JSON signed and stored locally
- ✅ Upload to IPFS (
--ipfs) - 🔗 Submit
submitProof(hash, cid, timestamp)to a smart contract on Base chain (coming soon)
🛠️ Makefile Usage
make build # Build for local platform
make build-linux # Build for Linux amd64
make build-mac # Build for macOS
make build-arm # Build for ARM64 (Raspberry Pi, etc.)
📜 License
MIT — Cryptolab.re