nostriphant / nip-01
Nostr NIP-01 implementation in PHP
2.3.1
2026-02-16 18:26 UTC
Requires
- php: ^8.4
- ext-secp256k1_nostr: *
- nostriphant/functional: ^2.2
- simplito/elliptic-php: ^1.0
Requires (Dev)
- pestphp/pest: ^2.35
README
Nostr NIP-01 implementation in PHP, currently this contains only the private/public key related code. This package requires the secp256k1-nostr-php extension to be installed. Follow their installation instructions first.
Key usage
use nostriphant\NIP01\Key;
$private_key = Key::fromHex('435790f13406085d153b10bd9e00a9f977e637f10ce37db5ccfc5d3440c12d6c');
$public_key = $private_key(Key::public());
$hash = hash('sha256', 'Hello World');
$signature = $private_key(Key::signer($hash));
if (Key::verify($public_key, $signature, $hash)) {
echo 'Signature belongs to hash';
}
Message usage
use nostriphant\NIP01\Message;
$message = Message::count(1);
print $message; // prints "['COUNT',1]"
use nostriphant\NIP01\Message;
use nostriphant\NIP01\Event;
$rumor = new Rumor(
pubkey: $sender_pubkey,
created_at: time(),
kind: 14,
content: 'Hello!!',
tags: [['p', $recipient_pubkey]]
);
$message = Message::event($rumor($private_key));
print $message; // prints "['EVENT',{...}]"