Publish event
Let's say we would like to transmit a simple note to a single Nostr relay.
Create event
$note = new Event();
Set kind
$note->setKind(1);
Kind number 1
is the most used and famous one for Nostr. There are many other kind numbers you can use for different purposes.
Add tags
$note->addTag(['t', 'introduction']); // This is a generic hashtag.
$note->addTag(['r', 'wss://relay.nostr.band']); // This is a relay hint tag.
There are many tags you can use, and it also depends on the event kind how these tags should be handled by clients. Find out more in the Manage tags on an event guide.
Set content
$content = 'Hello Nostr world!';
$note->setContent($content);
Sign event
To sign the event, you will need a private key. In the example below a new generated private key is used.
$private_key = new Key();
$private_key = = $private_key->generatePrivateKey();
$signer = new Sign();
$signer->signEvent($note, $private_key);
Verify
This will return a boolean.
$isValid = $note->verify();
Transmit a message with the event to a single relay
We now should have a note event which is ready to be transmitted to one relay. We will use the EventMessage
to generate a message to be sent to the relay.
$relay = new Relay('wss://relay.nostr.band');
$eventMessage = new EventMessage($note);
$relay->setMessage($eventMessage);
$response = $relay->send();
Relay response
When the message has been sent to the relay, it will return a RelayResponse object.
if ($response->isSuccess) {
print 'The event has been transmitted to the relay.' . PHP_EOL;
$eventId = $response->eventId;
}
Full snippet
// Compose event.
$note = new Event();
$note->setKind(1);
$note->addTag(['t', 'introduction']);
$note->addTag(['r', 'wss://relay.nostr.band']);
$content = 'Hello Nostr world!';
$note->setContent($content);
// Sign event.
$private_key = new Key();
$private_key = $private_key->generatePrivateKey();
$signer = new Sign();
$signer->signEvent($note, $private_key);
// Optional, verify event.
$isValid = $note->verify();
// Transmit the event to a relay.
$relay = new Relay('wss://relay.nostr.band');
$eventMessage = new EventMessage($note);
$relay->setMessage($eventMessage);
$response = $relay->send();
// Handle response.
if ($response->isSuccess) {
print 'The event has been transmitted to the relay.' . PHP_EOL;
$eventId = $response->eventId;
// Now we could request the event with this id.
}
This snippet can also be found as an example in the library here: src/Examples/publish-event.php
.