moukrea/cairn-p2p

cairn P2P connectivity library for PHP

Maintainers

Package info

github.com/moukrea/cairn-p2p

Homepage

pkg:composer/moukrea/cairn-p2p

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.3.0 2026-03-29 12:51 UTC

This package is auto-updated.

Last update: 2026-04-29 13:14:37 UTC


README

PHP implementation of the cairn P2P connectivity library.

Installation

composer require moukrea/cairn-p2p

Requirements

  • PHP 8.2+
  • Extensions: sodium, openssl, gmp
  • ReactPHP event loop for long-running daemon operation

Quick Start

<?php
use Cairn\CairnNode;
use React\EventLoop\Loop;

$loop = Loop::get();
$node = CairnNode::create($loop);
$peer = $node->pairWithPin('123456');
$peer->send('hello');
$loop->run();

API Overview

  • CairnNode -- Main entry point, manages identity, sessions, and discovery
  • Session -- Persistent encrypted session with a peer
  • PeerIdentity -- Ed25519 identity with Peer ID derivation
  • CairnConfig -- Configuration with tier presets

Key Dependencies

  • ext-sodium -- ChaCha20-Poly1305, X25519, Ristretto255
  • ext-openssl -- AES-256-GCM
  • react/event-loop -- Async event loop
  • react/socket -- TCP transport
  • ramsey/uuid -- UUID v7 generation
  • endroid/qr-code -- QR code pairing

Note on PHP

PHP's request/response execution model requires a long-running daemon process (via ReactPHP) for persistent P2P connections. The event loop must be running for transport I/O, heartbeat timers, and reconnection to function.

License

Licensed under the MIT License.