119 lines
2.5 KiB
Markdown
119 lines
2.5 KiB
Markdown
# 🛰️ 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
|