name: Coordinator Registration description: Become a RoboSats Coordinator title: "[federation]: coordinator 'Alias'" labels: ["Federation"] assignees: - reckless-satoshi body: - type: markdown attributes: value: | # Coordinator Registration This form is for registering a new default coordinator on the RoboSats client. Before proceeding, please review the [RoboSats Federation Basis](https://github.com/RoboSats/robosats/blob/main/federation.md). The Github thread generated by this issue will serve as a communication channel between the development team and the new coordinator, if necessary. The information provided will be used to create a new entry in `frontend/static/federation.json`. If you're technically proficient and wish to expedite the process, you can directly edit `federation.json` via a pull request. Here's a template coordinator: ```json "temp": { "longAlias": "Template", "shortAlias": "temp", "description": "This is the description for an example coordinator", "motto": "Don't trust, verify", "color": "#000000", "contact": { "pgp": "keys.openpgp.org/vks/v1/by-fingerprint/....", "fingerprint": "...", "email": "contact@contact.com", "telegram": "examplecoordinator", "twitter": "examplecoordinator", "matrix": "#example:matrix.org", "website": "https://example.coordinator.com", "simplex": "https://....", "nostr": "npub....", "reddit": "u/..." }, "badges": { "donatesToDevFund": 20, }, "policies": { "Privacy Policy": "...", "Data Policy": "..." "Rule #1": "You do not talk about RoboSats Club", "Rule #2": "You DO NOT talk about RoboSats Club", }, "mainnet": { "onion": "http://robosats6tkf3eva7x2voqso3a5wcorsnw34jveyxfqi2fu7oyheasid.onion", "clearnet": "https://coordinator-address.com" "i2p": "http:///.........b32.i2p" }, "testnet": { "onion": "http://robotestagw3dcxmd66r4rgksb4nmmr43fh77bzn2ia2eucduyeafnyd.onion", "clearnet": "https://testnet.coordinator-address.com" "i2p": "http:///.........b32.i2p" }, "mainnetNodesPubkeys": ["000000000000000000000000000000000000000000000000000000000000000000"], "testnetNodesPubkeys": ["000000000000000000000000000000000000000000000000000000000000000000"] ``` All fields can be updated or completed later through pull requests. Don't worry about getting everything perfect initially. A partially completed form is better than none. It's okay if your data policy, privacy policy, node ids, and endpoints aren't fully defined or are subject to change. - type: input id: alias attributes: label: Coordinator Alias description: What name should the robots refer to you by? placeholder: e.g. SatsSquare validations: required: true - type: textarea id: avatar attributes: label: Avatar description: Your coordinator profile picture. Ideally 200x200px. placeholder: Paste a link to your avatar picture - type: textarea id: description attributes: label: Description description: Share something about yourself. placeholder: Tell us about you, your values, and why you want to coordinate RoboSats. validations: required: true - type: input id: motto attributes: label: Motto description: A brief phrase to be displayed under your profile picture. placeholder: e.g. Don't trust, verify. validations: required: true - type: input id: color attributes: label: Color description: | A hex RGB color used for accent and easier identification in the RoboSats UI. placeholder: e.g. "#000000" validations: required: false # Development Funding - type: markdown attributes: value: | ## Development Funding Donations to the Development Fund (DevFund) are voluntary with no minimum amount. The default donation rate in the Coordinator backend is 20%. The value entered here is for display purposes and can be updated later via a PR. Ideally, it should match the donation rate set in your ``.env`` file. The RoboSats client app randomly sorts coordinators weighted by their DevFund donation value. Thus, the orders of the coordinators that contribute to the development have a higher chance to appear first in the Order book. Coordinators who contribute to the DevFund are more likely to receive support if needed (note that unless the devs are under time constraints support is unlikely to be denied). These patron perks are the way developers say "thank you for your contribution!". The RoboSats development team has an exciting roadmap ahead. However, once RoboSats is decentralized, the only source of funding for further development and maintaining the codebase will be donations (we do not accept venture-capital investments). - type: input id: devfund attributes: label: DevFund Donations description: | What percentage of trade revenue will you donate to the RoboSats Development Fund? placeholder: e.g. 20% validations: required: true - type: input id: pgp attributes: label: "PGP Public Key and Fingerprint" description: | Your permanent identity. If needed, you may have to verify your identity to robots or other coordinators by signing a message. placeholder: | e.g. Pubkey repo: https://keys.openpgp.org//vks/v1/by-fingerprint/... Fingerprint: 1234 5678 90AB CDEF 1234 5678 90AB CDEF 1234 validations: required: true # Coordinator Policies - type: markdown attributes: value: | ## Coordinator Policies The following three sections are designed to inform robots about your service expectations as a coordinator. It's perfectly acceptable to refine your policies over time, as coordinating RoboSats is a learning process. However, remember that robots appreciate clear and concise terms. - type: textarea id: privacy-policy attributes: label: Privacy Policy description: | Describe how you will handle privacy. For example, what kind of evidence will be required in a dispute? How will sensitive information be treated? placeholder: | e.g., 1) TLSnotary might be required for evidence submission in disputes. 2) Full user identification may be necessary to verify ownership of the payment method. validations: required: true - type: textarea id: data-policy attributes: label: Data Policy description: | Explain your data handling practices. For instance, what is your data retention policy? Will data be shared with third parties? Although a RoboSats coordinator's data collection is limited by design, a coordinator could still learn about users through heuristic analysis, payout node pubkeys, onchain addresses, dispute statements, evidence submission, etc. placeholder: | e.g., Data will not be shared or sold to any third party. The database will be cleared every 7 days, except for orders under dispute... validations: required: true - type: textarea id: other-policies attributes: label: Other Policies description: Any other policies can be set here. placeholder: | e.g. "Rule #1": "You do not talk about RoboSats Club" "Rule #2": "You DO NOT talk about RoboSats Club" validations: required: true # Coordinator Addresses - type: markdown attributes: value: | ## Coordinator Addresses Your coordinator API should be publicly accessible via an Onion hidden service. Optionally, you can also expose your API over I2P for redundancy, ensuring robots can still use your service if TOR is under attack. Clearnet endpoints can also be added to your coordinator. You can create new tor2web aliases on services like clearnetonion.eu.org or others (do your own research). - type: input id: onion-mainnet attributes: label: Onion Mainnet Coordinator Service Address description: The Onion hidden service where your MAINNET RoboSats coordinator API can be found. placeholder: e.g. http://robosats6tkf3eva7x2voqso3a5wcorsnw34jveyxfqi2fu7oyheasid.onion validations: required: true - type: input id: onion-testnet attributes: label: Onion Testnet Coordinator Service Address description: The Onion hidden service where your TESTNET RoboSats coordinator API can be found. placeholder: e.g. http://robotestagw3dcxmd66r4rgksb4nmmr43fh77bzn2ia2eucduyeafnyd.onion validations: required: true - type: input id: i2p-mainnet attributes: label: I2P Mainnet Coordinator Service Address description: The I2P service where your MAINNET RoboSats coordinator API can be found (Optional). placeholder: e.g. http:///.........b32.i2p validations: required: false - type: input id: i2p-testnet attributes: label: I2P Testnet Coordinator Service Address description: The I2P service where your TESTNET RoboSats coordinator API can be found (Optional). placeholder: e.g. hhttp:///.........b32.i2p validations: required: false - type: input id: clearnet-mainnet attributes: label: Clearnet Mainnet Coordinator Service Address description: The Clearnet address where your MAINNET RoboSats coordinator API can be found. placeholder: e.g. http://mainnet.coordinator.com validations: required: false - type: input id: clearnet-testnet attributes: label: Clearnet Testnet Coordinator Service Address description: The Clearnet address where your TESTNET RoboSats coordinator API can be found. placeholder: e.g. http://testnet.coordinator.com validations: required: false # Node Pubkeys - type: markdown attributes: value: | ## Node Pubkeys Enter your Lightning node pubkeys (also known as node_id). You can enter multiple pubkeys (comma-separated) for both mainnet and testnet. If you haven't created the lightning node yet, enter a placeholder. These pubkeys will be used to direct robots to explorers to find your node (e.g., 1ML or Amboss). - type: input id: nodeids-mainnet attributes: label: Mainnet Pubkey(s) description: Mainnet Coordinator Lightning Node Pubkey(s) placeholder: e.g. "000000000000000000000000000000000000000000000000000000000000000000", "...." validations: required: true - type: input id: nodeids-testnet attributes: label: Testnet Pubkey(s) description: Testnet Coordinator Lightning Node Pubkey(s) placeholder: e.g. "000000000000000000000000000000000000000000000000000000000000000000", "...." validations: required: true # Contact Methods - type: markdown attributes: value: | ## Contact Methods Only one contact method is required, but multiple are preferred. Find a balance between accessibility and operational security (too many contact methods increase the surface area and might harm OpSec). Contact methods below are sorted by importance. - type: input id: email attributes: label: "1. email" description: "Public contact method #1: Email." placeholder: e.g. contact@example.onion validations: required: false - type: input id: simplex attributes: label: "2. SimpleX" description: "Public contact method #2: SimpleX" placeholder: e.g. http://yoursimplexusercontactaddress.....onion validations: required: false - type: input id: matrix attributes: label: "3. Matrix" description: "Public contact method #3: Matrix." placeholder: "e.g. #example:matrix.org" validations: required: false - type: input id: nostr attributes: label: "4. Nostr" description: "Public contact method #4: Website." placeholder: "e.g. npub..." validations: required: false - type: input id: website attributes: label: "5. Website" description: "Public contact method #5: Website." placeholder: "e.g. https//coordinator-alias.com" validations: required: false - type: input id: telegram attributes: label: "6. Telegram" description: "Public contact method #6: Telegram." placeholder: "e.g. @tguserhandle" validations: required: false - type: input id: twitter attributes: label: "7. Twitter" description: "Public contact method #7: Twitter." placeholder: "e.g. @twitteruser" validations: required: false - type: input id: reddit attributes: label: "8. Reddit" description: "Public contact method #8: Reddit." placeholder: "e.g. @reddit" validations: required: false # Federation Basis - type: markdown attributes: value: | ## Federation Basis - type: checkboxes id: terms attributes: label: RoboSats Federation Basis description: By submitting this issue, you agree to accept the basis for the [RoboSats Federation Basis](https://github.com/RoboSats/robosats/blob/main/federation.md) options: - label: I accept the basis of the RoboSats Federation required: true