'handleNostrLoggedIn', 'nostrLoggedOut' => 'handleNostrLoggedOut', ]; public function mount(): void { if (NostrAuth::check()) { $this->currentPubkey = NostrAuth::pubkey(); $this->currentPleb = EinundzwanzigPleb::query() ->with([ 'paymentEvents' => fn ($query) => $query->where('year', date('Y')), 'profile', ]) ->where('pubkey', $this->currentPubkey)->first(); if ($this->currentPleb) { if ($this->currentPleb->nip05_handle) { $this->nip05Handle = $this->currentPleb->nip05_handle; // Get all NIP-05 handles for current pubkey $this->nip05VerifiedHandles = $this->getNip05HandlesForPubkey($this->currentPubkey); if (count($this->nip05VerifiedHandles) > 0) { $this->nip05Verified = true; $this->nip05VerifiedHandle = $this->nip05VerifiedHandles[0]; // Check if verified handle differs from database handle if (! in_array($this->nip05Handle, $this->nip05VerifiedHandles, true)) { $this->nip05HandleMismatch = true; } } } // Check if current year is paid $paymentEvent = $this->currentPleb->paymentEvents->first(); if ($paymentEvent && $paymentEvent->paid) { $this->currentYearIsPaid = true; } } } } public function updatedNip05Handle(): void { $this->nip05Handle = strtolower($this->nip05Handle); } public function saveNip05Handle(): void { $this->validate([ 'nip05Handle' => 'required|string|max:255|regex:/^[a-z0-9_-]+$/|unique:einundzwanzig_plebs,nip05_handle', ]); $nip05Handle = strtolower($this->nip05Handle); $this->currentPleb->update([ 'nip05_handle' => $nip05Handle, ]); Flux::toast('NIP-05 Handle gespeichert.'); } public function copyRelayUrl(): void { $relayUrl = 'wss://nostr.einundzwanzig.space'; $this->js("navigator.clipboard.writeText('{$relayUrl}')"); Flux::toast('Relay-Adresse in die Zwischenablage kopiert!'); } public function copyWatchtowerUrl(): void { $watchtowerUrl = '03a09f56bba3d2c200cc55eda2f1f069564a97c1fb74345e1560e2868a8ab3d7d0@62.171.139.240:9911'; $this->js("navigator.clipboard.writeText('{$watchtowerUrl}')"); Flux::toast('Watchtower-Adresse in die Zwischenablage kopiert!'); } public function handleNostrLoggedIn(string $pubkey): void { NostrAuth::login($pubkey); $this->mount(); } public function handleNostrLoggedOut(): void { $this->currentPleb = null; $this->currentPubkey = null; $this->currentYearIsPaid = false; $this->nip05Handle = ''; $this->nip05Verified = false; $this->nip05VerifiedHandle = null; $this->nip05HandleMismatch = false; $this->nip05VerifiedHandles = []; } } ?>

Vorteile deiner Mitgliedschaft

Nostr Relay

Exklusive Schreib-Rechte auf Premium Nostr Relay von Einundzwanzig.

@if($currentPleb && $currentPleb->association_status->value > 1 && $currentYearIsPaid)

Ein Outbox-Relay ist wie ein Postbote für deine Nostr-Nachrichten. Es speichert und verteilt deine Posts. Um unser Relay nutzen zu können, musst du es in deinem Nostr-Client hinzufügen.

Gehe in deinem Nostr-Client zu den Einstellungen (meistens "Settings" oder "Relays") und füge folgende Outbox-Relay-Adresse hinzu:

wss://nostr.einundzwanzig.space

Wichtige Hinweise: Du kannst deine Posts auf mehreren Relays gleichzeitig veröffentlichen. So stellst du sicher, dass deine Inhalte auch über unser Relay erreichbar sind.

@endif

Get NIP-05 verified

Verifiziere deine Identität mit einem menschenlesbaren Nostr-Namen.

@if($currentPleb && $currentPleb->association_status->value > 1 && $currentYearIsPaid)
Dein NIP-05 Handle @einundzwanzig.space
Speichern

Regeln für dein Handle: Nur Kleinbuchstaben (a-z), Zahlen (0-9) und die Zeichen "-" und "_" sind erlaubt. Dein Handle wird automatisch kleingeschrieben.

NIP-05 verifiziert deine Identität auf Nostr. Das Handle ist wie eine E-Mail-Adresse (z.B. name@einundzwanzig.space). Clients zeigen ein Häkchen für verifizierte Benutzer. Dies macht dein Profil einfacher zu teilen und vertrauenswürdiger.

@if($nip05Verified)

Du hast {{ count($nip05VerifiedHandles) }} aktive Handles für deinen Pubkey!

@if($nip05HandleMismatch)

Die Synchronisation zu {{ $nip05Handle }}@einundzwanzig.space wird automatisch im Hintergrund durchgeführt.

@endif

Deine aktivierten Handles:

    @foreach($nip05VerifiedHandles as $handle)
  • {{ $handle }}@einundzwanzig.space OK
  • @endforeach
@elseif($nip05Handle)

Dein Handle {{ $nip05Handle }}@einundzwanzig.space ist noch nicht aktiv.

Das Handle ist gespeichert, aber noch nicht in der NIP-05 Konfiguration veröffentlicht. Der Vorstand wird dies bald aktivieren.

@endif
@else
Aktiviere deine Mitgliedschaft, um NIP-05 zu verifizieren.
@endif

Lightning Watchtower

Nutze unseren Watchtower zum Schutz deiner Lightning Channel.

@if($currentPleb && $currentPleb->association_status->value > 1 && $currentYearIsPaid)

Ein Watchtower überwacht deine Lightning Channel und schützt sie, falls deine Node offline ist. Wenn du die Zahlung von Channel-Closing-Transaktionen verpasst, kümmert sich der Watchtower darum und verhindert den Verlust deiner Sats.

Um unseren Watchtower zu nutzen, füge folgende URI in deiner Lightning Node Konfiguration hinzu:

03a09f56bba3d2c200cc55eda2f1f069564a97c1fb74345e1560e2868a8ab3d7d0@62.171.139.240:9911

Einrichtung für gängige Lightning Clients:

  • LND: https://docs.lightning.engineering/lightning-network-tools/lnd/watchtower
  • Core Lightning: Nutze den watchtower-client Plugin mit der URI
  • Eclair: Füge die URI zu den Watchtower-Einstellungen in deiner eclair.conf hinzu

Wichtig: Der Watchtower überwacht deine Channel passiv. Er hat keinen Zugriff auf deine privaten Schlüssel oder dein Guthaben.

@else
Aktiviere deine Mitgliedschaft, um den Lightning Watchtower zu nutzen.
@endif