|
2 | 2 | title = 'Spaces Protocol | Scalable & Permissionless Bitcoin Identities'
|
3 | 3 | +++
|
4 | 4 |
|
5 |
| -<div style="text-align: center;margin-bottom:4em;margin-top:4em;"> |
6 |
| - <h1 style="font-size:4em;margin-bottom:-0.1em;margin-left:0;margin-right:0;margin-top:0;">Spaces Protocol</h1> |
| 5 | +<div style="max-width:700px;padding:2em;margin-bottom:4em;margin-top:4em;"> |
| 6 | + <h1 style="text-align:center; font-size:4em;margin-bottom:-0.1em;margin-left:0;margin-right:0;margin-top:0;">Spaces Protocol</h1> |
7 | 7 | <p style="font-size: 1.4em">Scalable & Permissionless Bitcoin Identities</h1>
|
8 |
| -</div> |
9 |
| - |
10 |
| - |
11 |
| -Spaces is a naming protocol that leverages the existing infrastructure and security of Bitcoin without requiring a new blockchain or any modifications to Bitcoin itself. Spaces is a permissionless protocol and can be used as decentralized social handles for [Nostr](https://nostr.com/), receiving payments and other digital interactions. On-chain Spaces are represented as Bitcoin UTXOs, they take full advantage of Bitcoin's security, and have minimal on-chain footprint. |
12 |
| - |
13 |
| - |
14 |
| - |
15 |
| -# Bitcoin Testnet |
16 |
| - |
17 |
| -You can now try the base functionality of the Spaces protocol on [Bitcoin testnet3](https://mempool.space/testnet)! First, download Bitcoin Core and set it up using these steps: |
18 |
| - |
19 |
| -<img src="/images/bcs.png" alt="Spaces Protocol" style="width:100%;margin-top:2em;margin-bottom:2em;"> |
20 |
| - |
21 |
| - |
22 |
| -## Prerequisites |
23 |
| - |
24 |
| -- [Bitcoin Core](https://bitcoincore.org/en/download/) |
25 |
| -- [Rust](https://www.rust-lang.org/tools/install) |
26 |
| - |
27 |
| - |
28 |
| - |
29 |
| -## Testnet sync |
30 |
| - |
31 |
| -```bash |
32 |
| -# Create a directory for Bitcoin testnet data |
33 |
| -mkdir $HOME/bitcoin-testnet |
34 |
| - |
35 |
| -# Create a configuration file with RPC credentials |
36 |
| -echo "rpcuser=test" > $HOME/bitcoin-testnet/bitcoin.conf |
37 |
| -echo "rpcpassword=test" >> $HOME/bitcoin-testnet/bitcoin.conf |
38 |
| - |
39 |
| -# Start Bitcoin Core in testnet mode |
40 |
| -bitcoind -testnet -datadir=$HOME/bitcoin-testnet |
41 |
| -``` |
42 |
| - |
43 |
| -Spaces protocol is activated on Bitcoin testnet block `2865460` - wait for `bitcoind` to sync up to that block before proceeding. |
44 |
| - |
45 |
| -## Install `spaced` |
46 |
| - |
47 |
| -`spaced` is a tiny layer on top of Bitcoin Core allowing you to interact with Spaces. To compile `spaced`, you need to install Rust and then |
48 |
| - |
49 |
| -```bash |
50 |
| -# Clone the repository |
51 |
| -git clone https://github.com/spacesprotocol/spaced && cd spaced |
52 |
| - |
53 |
| -# Build the release version |
54 |
| -cargo build --release |
55 |
| - |
56 |
| -# Install the binaries |
57 |
| -cargo install --path node |
58 |
| - |
59 |
| -# Ensure Cargo's bin directory is in your PATH |
60 |
| -echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc |
61 |
| -source ~/.bashrc |
62 |
| -``` |
63 |
| - |
64 |
| -Verify you have `spaced` and `space-cli` installed: |
65 |
| - |
66 |
| -```bash |
67 |
| -spaced --version |
68 |
| -space-cli --version |
69 |
| -``` |
70 |
| - |
71 |
| -## Connect to Bitcoin Core |
72 |
| - |
73 |
| -```bash |
74 |
| -spaced --chain test --bitcoin-rpc-user test --bitcoin-rpc-password test |
75 |
| -``` |
76 |
| - |
77 |
| - |
78 |
| -## Creating a wallet |
79 |
| - |
80 |
| -`space-cli` is a command-line tool that makes it easy to interact with Spaces. It also functions as a Bitcoin wallet. To create a new wallet, run: |
81 |
| - |
82 |
| - |
83 |
| -```bash |
84 |
| -space-cli createwallet <optional-wallet-name> |
85 |
| -``` |
86 |
| - |
87 |
| - |
88 |
| -## Getting testnet coins |
89 |
| - |
90 |
| -You can get testnet coins from a [testnet faucet](https://bitcoinfaucet.uo1.net/) but these faucets give very small amounts. If you need more, you can ask in the [Spaces Telegram](https://t.me/spacesprotocol) group. |
91 |
| - |
92 |
| -```bash |
93 |
| -space-cli getnewaddress |
94 |
| -``` |
95 |
| - |
96 |
| -The `getnewaddress` command will return an address you can use to receive testnet coins compatible with most Bitcoin wallets. You |
97 |
| -can also use `getnewspaceaddress` to return a special Bitcoin address for receiving Spaces. |
98 |
| - |
99 |
| -Check your balance: |
100 |
| - |
101 |
| -```bash |
102 |
| - |
103 |
| -space-cli balance |
104 |
| -``` |
105 |
| - |
106 |
| - |
107 |
| -## Opening an auction |
108 |
| - |
109 |
| -To open an auction for a Space, run: |
110 |
| - |
111 |
| -```bash |
112 |
| -space-cli open bitcoin |
113 |
| -``` |
114 |
| - |
115 |
| -You will get a similar output to this |
116 |
| - |
117 |
| -```json |
118 |
| -[ |
119 |
| - { |
120 |
| - "txid": "fa55b7e5e5b54e170a99f26dcb43baf207d922efb8d69304993c255f61c6ca43", |
121 |
| - "tags": ["auction-outputs", "commitment"] |
122 |
| - }, |
123 |
| - { |
124 |
| - "txid": "aeba215372b5095640416c7bac31feecdb8cc0589803172939c0fb0b233d6785", |
125 |
| - "tags": ["open"] |
126 |
| - } |
127 |
| -] |
128 |
| -``` |
129 |
| - |
130 |
| -The tags field indicate the reason(s) for this transaction. In this case, the first is creating a P2TR script commitment and initial outputs to auction off. |
131 |
| -Second one opens the auction by revealing the Space. |
132 |
| - |
133 |
| - |
134 |
| -## Placing a bid |
135 |
| - |
136 |
| -To place a bid on an open auction: |
137 |
| - |
138 |
| -```bash |
139 |
| -space-cli bid bitcoin 1500 |
140 |
| -``` |
141 |
| - |
142 |
| -Bid amounts are in satoshis. |
143 |
| - |
144 |
| - |
145 |
| -## Space details |
146 |
| - |
147 |
| -```bash |
148 |
| -space-cli getspace bitcoin |
149 |
| -``` |
150 |
| - |
151 |
| - |
152 |
| -```json |
153 |
| -{ |
154 |
| - "outpoint": "45b06887c6f560af607f833fe78edd40327b177a60c9c22b21894510cd094b7c:1", |
155 |
| - "value": 662, |
156 |
| - "script_pubkey": "5120dcb42260e175ed4c27709ca0b9246a2a0506471bbac000c7caf5503c5f5ff176", |
157 |
| - "name": "@bitcoin", |
158 |
| - "covenant": { |
159 |
| - "type": "bid", |
160 |
| - "burn_increment": 1000, |
161 |
| - "signature": "........", |
162 |
| - "total_burned": 1000, |
163 |
| - "claim_height": null |
164 |
| - } |
165 |
| -} |
166 |
| -``` |
167 |
| - |
168 |
| - |
169 |
| - |
170 |
| -You can use `listspaces` command to see all outputs representing spaces you own |
171 |
| -including outputs that are actively in an auction. |
172 |
| - |
173 |
| - |
174 |
| -The `bid` covenant indicates spending this output requires either another bid spend or a registration spend if the claim height is reached. There are three types of covenants: `bid`, `transfer`, and `reserved`. |
175 |
| - |
176 |
| -Spends that don't satisfy a covenant condition will be revoked by the protocol causing the winning bidder to lose any coins they have burned or ownership of their name. |
177 |
| - |
178 |
| - |
179 |
| -The `claim_height` field is not populated in the above output indicating the name is still in the pre-auctions phase. Every 144 blocks, the top 10 names with highest bids are rolled out to the auctions. |
180 |
| - |
181 |
| -Once a Space is in the auctions phase, the `claim_height` indicates the block height at which the winning bidder may register the Space. |
182 |
| - |
183 |
| -Auctions continue indefinitely until a winning bidder claims their Space. |
184 |
| - |
185 |
| - |
186 |
| -## Registering a Space |
187 |
| - |
188 |
| -To register a Space: |
189 |
| - |
190 |
| -```bash |
191 |
| -space-cli register bitcoin |
192 |
| -``` |
193 |
| - |
194 |
| -If you are the winning bidder and registering after the `claim_height`, you will get something like this: |
195 |
| - |
196 |
| - |
197 |
| -```json |
198 |
| -{ |
199 |
| - "outpoint": "45b06887c6f560af607f833fe78edd40327b177a60c9c22b21894510cd094b7c:1", |
200 |
| - "value": 662, |
201 |
| - "script_pubkey": "5120dcb42260e175ed4c27709ca0b9246a2a0506471bbac000c7caf5503c5f5ff176", |
202 |
| - "name": "@bitcoin", |
203 |
| - "covenant": { |
204 |
| - "type": "transfer", |
205 |
| - "expire_height": 2918106, |
206 |
| - "data": null, |
207 |
| - } |
208 |
| -} |
209 |
| -``` |
210 |
| - |
211 |
| - |
212 |
| -## Receiving payments |
213 |
| - |
214 |
| -As a Space owner you can receive payments by sharing your Space handle. |
215 |
| - |
216 |
| -```bash |
217 |
| -space-cli send 1000 --to @bitcoin |
218 |
| -``` |
219 |
| -Amount is in satoshis. |
220 | 8 |
|
| 9 | +<div style="margin-bottom: 4em;"> |
| 10 | + <p>Spaces empowers users with a sovereign Bitcoin identity, anchored securely on the Bitcoin blockchain. Imagine a social handle that is truly yours—censorship-resistant and accessible across various protocols like Nostr, wallet naming, peer-to-peer applications, and beyond.</p> |
| 11 | +</div> |
221 | 12 |
|
222 |
| -## More information |
| 13 | +<div style="display:flex;gap: 20px;justify-content: center;"> |
| 14 | + <a href="https://docs.spacesprotocol.org" style="background:#FF8400;color:#fff;text-decoration: none; padding:12px 22px;border-radius:20px;">Read the docs</a> |
| 15 | + <a href="https://explorer.spacesprotocol.org" style="background:#FF8400;color:#fff;text-decoration: none; padding:12px 22px;border-radius:20px;">Explorer</a> |
| 16 | +</div> |
| 17 | +</div> |
223 | 18 |
|
224 |
| -Use `space-cli help` to see all other available commands and options. Ask in the [Spaces Telegram](https://t.me/spacesprotocol) group if you have any questions or need help. |
0 commit comments