NAME
Net::Nostr::RelayAccess - NIP-43 Relay Access Metadata and Requests
SYNOPSIS
use Net::Nostr::RelayAccess;
# Membership list (kind 13534)
my $event = Net::Nostr::RelayAccess->membership_list(
pubkey => $hex_pubkey,
members => [$member_pk1, $member_pk2],
);
# Add member (kind 8000)
my $event = Net::Nostr::RelayAccess->add_member(
pubkey => $hex_pubkey,
member => $member_pk,
);
# Remove member (kind 8001)
my $event = Net::Nostr::RelayAccess->remove_member(
pubkey => $hex_pubkey,
member => $member_pk,
);
# Join request (kind 28934)
my $event = Net::Nostr::RelayAccess->join_request(
pubkey => $hex_pubkey,
claim => $invite_code,
);
# Invite response (kind 28935)
my $event = Net::Nostr::RelayAccess->invite(
pubkey => $hex_pubkey,
claim => $generated_code,
);
# Leave request (kind 28936)
my $event = Net::Nostr::RelayAccess->leave_request(
pubkey => $hex_pubkey,
);
# Parse any relay access event
my $parsed = Net::Nostr::RelayAccess->from_event($event);
# Validate
Net::Nostr::RelayAccess->validate($event);
DESCRIPTION
Implements NIP-43 (Relay Access Metadata and Requests). Six event kinds are used:
Membership List (kind 13534) - A replaceable event listing pubkeys that have access to a relay. MUST be signed by the relay's NIP-11
selfpubkey. Containsmembertags with hex pubkeys.Add Member (kind 8000) - Published when a member is added to a relay. Contains a
ptag with the member's hex pubkey.Remove Member (kind 8001) - Published when a member is removed from a relay. Contains a
ptag with the member's hex pubkey.Join Request (kind 28934) - An ephemeral event sent by a user to request admission to a relay. MUST contain a
claimtag with an invite code.Invite (kind 28935) - An ephemeral event returned by a relay with a claim string. Relays generate claims on the fly when requested.
Leave Request (kind 28936) - An ephemeral event sent by a user to revoke their own access.
All six kinds MUST include a NIP-70 ["-"] protected tag.
CONSTRUCTOR
new
my $ra = Net::Nostr::RelayAccess->new(
members => [$member_pk],
);
Creates a new Net::Nostr::RelayAccess object. Croaks on unknown arguments. members defaults to [].
CLASS METHODS
membership_list
my $event = Net::Nostr::RelayAccess->membership_list(
pubkey => $hex_pubkey, # required
members => [$member_pk, ...], # optional, defaults to []
);
Creates a kind 13534 membership list Net::Nostr::Event. Automatically includes the NIP-70 ["-"] protected tag. Each member pubkey is added as a ["member", $pubkey] tag.
add_member
my $event = Net::Nostr::RelayAccess->add_member(
pubkey => $hex_pubkey, # required
member => $member_pk, # required (p tag)
);
Creates a kind 8000 add-member Net::Nostr::Event. Automatically includes the NIP-70 ["-"] protected tag.
remove_member
my $event = Net::Nostr::RelayAccess->remove_member(
pubkey => $hex_pubkey, # required
member => $member_pk, # required (p tag)
);
Creates a kind 8001 remove-member Net::Nostr::Event. Automatically includes the NIP-70 ["-"] protected tag.
join_request
my $event = Net::Nostr::RelayAccess->join_request(
pubkey => $hex_pubkey, # required
claim => $invite_code, # required (claim tag)
);
Creates a kind 28934 join request Net::Nostr::Event. Automatically includes the NIP-70 ["-"] protected tag. The claim tag contains the invite code.
invite
my $event = Net::Nostr::RelayAccess->invite(
pubkey => $hex_pubkey, # required
claim => $generated_code, # required (claim tag)
);
Creates a kind 28935 invite Net::Nostr::Event. Automatically includes the NIP-70 ["-"] protected tag. The claim tag contains the generated invite code.
leave_request
my $event = Net::Nostr::RelayAccess->leave_request(
pubkey => $hex_pubkey, # required
);
Creates a kind 28936 leave request Net::Nostr::Event. Automatically includes the NIP-70 ["-"] protected tag. No other tags are required.
from_event
my $ra = Net::Nostr::RelayAccess->from_event($event);
Parses a kind 13534, 8000, 8001, 28934, 28935, or 28936 event into a Net::Nostr::RelayAccess object. Returns undef for unrecognized kinds.
validate
Net::Nostr::RelayAccess->validate($event);
Validates a NIP-43 event. Croaks if:
Kind is not 13534, 8000, 8001, 28934, 28935, or 28936
Missing NIP-70
["-"]protected tagKind 8000/8001 missing
ptagKind 28934/28935 missing
claimtag
Returns 1 on success.
ACCESSORS
members
Arrayref of hex pubkeys from member tags (membership list only). Defaults to [].
member
Hex pubkey from p tag (add/remove member only).
claim
Invite code string from claim tag (join request/invite only).