# πŸ›°οΈ 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 ```bash cd probe go mod tidy ``` ### 2. Run a probe ```bash 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) ```json { "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 ```bash 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