← observatory

kind 35128 · don't trust, verify

260bad0297ed6e0212c9bbfddc1254ecb618860823a5489725fdd3f64730ea53

{
  "id": "260bad0297ed6e0212c9bbfddc1254ecb618860823a5489725fdd3f64730ea53",
  "pubkey": "c2f1ab4e6a577dd8980b57e15986ed92830b95a94f374192235563532b5cac20",
  "created_at": 1791778997,
  "kind": 35128,
  "tags": [
    [
      "path",
      "/index.html",
      "d148e95e8e0446594d676b4fec78fab7e29e78379eaaf7088bbafe3088f0f5fd"
    ],
    [
      "path",
      "/__MACOSX/._index.html",
      "61180282ef602366901687eeff9f810b0302d77d3090daa0ca92400a59deaa40"
    ],
    [
      "path",
      "/404.html",
      "d148e95e8e0446594d676b4fec78fab7e29e78379eaaf7088bbafe3088f0f5fd"
    ],
    [
      "server",
      "https://nsite.run"
    ],
    [
      "server",
      "https://nostr.download"
    ],
    [
      "server",
      "https://blssm.us"
    ],
    [
      "server",
      "https://blossom.yakihonne.com"
    ],
    [
      "server",
      "https://zencrown.relay2aeon.quest/"
    ],
    [
      "relay",
      "wss://nsite.run"
    ],
    [
      "relay",
      "wss://nostr.bitcoiner.social"
    ],
    [
      "relay",
      "wss://purplepag.es"
    ],
    [
      "relay",
      "wss://relay.primal.net"
    ],
    [
      "relay",
      "wss://zencrown.relay2aeon.quest"
    ],
    [
      "d",
      "treasury-dao"
    ],
    [
      "title",
      "Shared Bitcoin Treasury (0.9.0) \u2014 a Nostr napplet for Bitcoin multisig coordination"
    ],
    [
      "description",
      "Shared Bitcoin Treasury\nA Nostr-native napplet for coordinating a Bitcoin multisig treasury with your team. It uses Nostr events for signing, relay sync, and proposal voting, and it never touches Bitcoin private keys. On-chain transactions are built, signed, and broadcast in a separate Bitcoin multisig coordinator such as Sparrow Wallet.\n\nWhat it is\n- A napplet: a single-file, browser-based Nostr applet with no backend.\n- A coordination layer for t-of-n Bitcoin P2WSH multisig.\n- A Nostr client that publishes vault definitions, spend proposals, and signature shares as Nostr events.\n- A tool that derives vault IDs, descriptors, and addresses from member pubkeys.\n- A Bitcoin-only build. Cashu wallet functionality has been removed.\n\nWhat it does\nVault: define a t-of-n P2WSH multisig vault, derive the descriptor and address, share vault JSON, import vault JSON from co-signers, and rebuild vaults when members or threshold change.\nKeys: use an ephemeral Nostr key, import an nsec or hex key, sign with a NIP-07 browser extension, connect to a NIP-46 bunker, export a key, and copy npub or compressed pubkey.\nRelays: manage a scored relay pool, pin or prefer relays, set read/write flags, test relays, promote relays, lock the active relay set, and remove relays.\nServices: keep a registry of external HTTPS services used alongside the vault, such as payment processors, custodians, oracles, and coordination endpoints.\nContacts: maintain an encrypted address book for counterparties, co-signers, contracts, terms, preferred relays, signer pubkeys, thresholds, and linked proposals.\nProposals: publish Bitcoin spend proposals, collect Nostr signature shares, reach threshold, mark executed, copy nevent, copy event JSON, fetch peer proposals by npub, and import shared proposals by nevent, note, hex event id, or JSON.\nTreasury: view the on-chain vault address, network, threshold, and member set. Balance is checked in Sparrow Wallet or any Bitcoin API.\nTools: parse and validate vault descriptors, re-derive the vault ID, and rebuild the P2WSH address to confirm a descriptor before using it in Sparrow.\nTour and diagnostics: guided onboarding tour, restartable from the help button, plus live metrics, relay scores, and recent logs.\nAddress-book crypto: AES-256-GCM with PBKDF2-SHA256 and 600,000 iterations for encrypted exports.\nNIP-46 bunker: connect to a remote signer with a bunker:// URL and sign Nostr events without exposing the user key to the browser.\nProposal sync: automatic relay subscription plus explicit peer fetch and shared proposal import for cases where relay discovery is incomplete.\n\nWhat it does not do\n- It does not hold Bitcoin private keys.\n- It does not build or broadcast Bitcoin transactions.\n- It is not a Bitcoin wallet.\n- It does not custody funds.\n- It does not include Cashu. This build is Bitcoin-only.\n- It does not replace Sparrow Wallet, a hardware wallet, or a multisig coordinator.\n\nQuick start\n1. Download or clone the repository.\n2. Open index.html in a modern browser, or serve it over HTTPS.\n3. Create or import a Nostr key in the Keys tab.\n4. Define your vault in the Vault tab.\n5. Share the vault JSON with your co-signers.\n6. Publish proposals and collect signature shares.\n7. Build, sign, and broadcast the actual Bitcoin transaction in Sparrow Wallet.\n\nSparrow Wallet flow\n- Open Sparrow Wallet and create a new wallet.\n- Choose Multi Signature and P2WSH.\n- Set the quorum to match your vault threshold.\n- Use File -> Import Wallet -> Import from descriptor.\n- Paste the descriptor from the Vault tab.\n- Set the derivation path to m/48'/0'/0'/2' for native SegWit multisig.\n- Verify the address matches the vault address.\n- Fund the vault.\n- Spend with t-of-n cosigners.\n\nSecurity notes\n- The app never asks for a Bitcoin seed phrase.\n- Nostr keys are for coordination and signing Nostr events only.\n- Imported Nostr keys stored in localStorage are accessible to anything running in that browser.\n- Encrypted address-book exports use AES-256-GCM and PBKDF2-SHA256 with 600,000 iterations.\n- Relays are untrusted transport. Proposal validity is checked against vault member pubkeys.\n- Always verify the descriptor and address in Sparrow before funding.\n- Never share a Bitcoin private key or seed phrase with this app.\n\nRequirements\n- A modern browser with WebCrypto, WebSocket, and ES module support.\n- Network access to the wss:// relays and https:// services you choose.\n- Optional: a NIP-07 browser extension or a NIP-46 remote signer.\n\nLicense\nMIT"
    ],
    [
      "client",
      "nsite.run"
    ]
  ],
  "content": "",
  "sig": "967031060aa70797cda72ba81b14759eaae88c3f84d13a7e4072348aafc5594dab4751ed374bcc4a032536afed54396e779d97514eee41d079878aecbc970ec5"
}