How to create a Ordinal wallet with Sparrow Wallet
⚠️ ⚠️ Warning!! ⚠️ ⚠️
As a general rule if you take this approach, you should use this wallet with the Sparrow software as a receive-only wallet. Do not spend any satoshis from this wallet unless you are sure you know what you are doing. You could very easily inadvertently lose access to your ordinals and inscriptions if you don’t heed this warning.
Wallet Setup & Receiving
Download the Sparrow Wallet from the releases page for your particular operating system.
Select File -> New Wallet
and create a new wallet called ord
Change the Script Type
to Taproot (P2TR)
and select the New or Imported Software Wallet
Option
Select Use 12 Words
and then click the Generate New Button
. Leave the passphrase blank
A new 12 word BIP39 seed phrase will be generated for you. Write this down somewhere safe as this is your backup to get access to your wallet. NEVER share or show this seed phrase to anyone else.
Once you have written down the seed phrase click Confirm Backup
Re-enter the seed phrase which you wrote down, and then click Create Keystore
Click Import Keystore
Click Apply
. Add a password for the wallet if you want to.
You now have a wallet which is compatible with ord
, and can be imported into ord
using the BIP39 Seed Phrase. To receive ordinals or inscriptions, click on the Receive
tab and copy a new address.
Each time you want to receive you should use a brand new address, and not re-use existing addresses.
Note that bitcoin is different to some other blockchain wallets, in that this wallet can generate an unlimited number of new addreses. You can generate a new address by clicking on the Get Next Address
button. You can see all of your addresses in the Addresses
tab of the app.
You can add a label to each address, so you can keep track of what it was used for.
Validating / Viewing Received Inscriptions
Once you have received an inscription you will see a new transaction in the Transactions
tab of Sparrow, as well as a new UTXO in the UTXOs
tab.
Initially this transaction may have an “Unconfirmed” status, and you will need to wait for it to be mined into a bitcoin block before it is fully received.
To track the status of your transaction you can right click on it, select Copy Transaction ID
and then paste that transaction id into mempool.space
Each of your inscriptions is stored in an Unspent Transaction Output (UTXO) which can be viewed in the UTXOs
tab.
Once the transaction has confirmed, you can validate and view your inscription by heading over to the UTXOs
tab, finding the UTXO you want to check, right clicking on the Output
and selecting Copy Transaction Output
. This transaction output id can then be pasted into the ordinals.com search.
Freezing UTXO’s
As explained above, each of your inscriptions is stored in an Unspent Transaction Output (UTXO). You want to be very careful not to accidently spend your inscriptions, and one way to make it harder for this to happen is to freeze the UTXO.
To do this, go to the UTXOs
tab, find the UTXO you want to freeze, right click on the Output
and select Freeze UTXO
.
This UTXO (Inscription) is now unspendable within the Sparrow Wallet until you unfreeze it.
ord
wallet
Importing into For deatils on setting up Bitcoin Core and the ord
wallet check out the Ordinals Handbook
When setting up ord
, instead of running ord wallet create
to create a brand new wallet, you can import your existing wallet using ord wallet restore "BIP39 SEED PHRASE"
using the seed phrase you generated with Sparrow Wallet.
There is currently a bug which causes an imported wallet to not be automatially rescanned against the blockchain. To workaround this you will need to manually trigger a rescan using the bitcoin core cli:
bitcoin-cli -rpcwallet=ord rescanblockchain 767430
You can then check your wallet’s inscriptions using ord wallet inscriptions
Note that if you have previously created a wallet with ord
, then you will already have a wallet with the default name, and will need to give your imported wallet a different name. You can use the --wallet
parameter in all ord
commands to reference a different wallet, eg:
ord --wallet ord_from_sparrow restore "BIP39 SEED PHRASE"
ord --wallet ord_from_sparrow wallet inscriptions
bitcoin-cli -rpcwallet=ord_from_sparrow rescanblockchain 767430
Sending inscriptions with Sparrow Wallet
⚠️ ⚠️ Warning ⚠️ ⚠️
While it is highly reccomended that you setup a bitcoin core node and run the ord
software, there are certain limited ways you can send inscriptions out of Sparrow Wallet in a safe way. Please note that this is not reccomended, and you should only do this if you fully understand what you are doing.
Using the ord
software will remove much of the complexity we are describing here, as it is able to automatically and safely handle sending inscriptions in an easy way.
⚠️ ⚠️ Additional Warning ⚠️ ⚠️
Don’t use your sparrow inscriptions wallet to do general sends of non-inscription bitcoin. You can setup a seperate wallet in sparrow if you need to do normal bitcoin transactions, and keep your inscriptions wallet seperate.
Bitcoin’s UTXO model
Before sending any transaction it’s important that you have a good mental model for bitcoin’s Unspent Transaction Output (UTXO) system. The way Bitcoin works is fundamentally different to many other blockchains such as Ethereum. In Ethereum generally you have a single address in which you store ETH, and you cannot differentiate between any of the ETH – it is just all a single value of the total amount in that address. Bitcoin works very differently in that we generate a new address in the wallet for each receive, and every time you receive sats to an address in your wallet you are creating a new UTXO. Each UTXO can be seen and managed individually. You can select specific UTXO’s which you want to spend, and you can choose not to spend certain UTXO’s.
Some Bitcoin wallets do not expose this level of detail, and they just show you a single summed up value of all of the bitcoin in your wallet. However when sending inscriptions it is important that you use a wallet like Sparrow which allows for UTXO control.
Inspecting your inscription before sending
Like we have previously described inscriptions are inscribed onto sats, and sats are stored within UTXOs. UTXO’s are a collection of satoshis with some particular value of the number of satoshis (the output value). Usually (but not always) the inscription will be inscribed on the first satoshi in the UTXO.
When inspecting your inscription before sending the main thing you will want to check is which satoshi in the UTXO your inscription is inscribed on.
To do this, you can follow the Validating / Viewing Received Inscriptions described above to find the inscription page for your inscription on ordinals.com
There you will find some metadata about your inscription which looks like the following:
There is a few of important things to check here:
- The
output
identifier matches the identifier of the UTXO you are going to send - The
offset
of the inscription is0
(this means that the inscription is located on the first sat in the UTXO) - the
output_value
has enough sats to cover the transaction fee (postage) for sending the transaction. The exact amount you will need depends on the fee rate you will select for the transaction
If all of the above are true for your inscription, it should be safe for you to send it using the method below.
offset
value is not 0
. It is not reccomended to use this method if that is the case, as doing so you could accidently send your inscription to a bitcoin miner unless you know what you are doing.
Sending your inscription
To send an inscription navigate to the UTXOs
tab, and find the UTXO which you previously validated contains your inscription.
If you previously froze the UXTO you will need to right click on it and unfreeze it
Select the UTXO you want to send, and ensure that is the only UTXO is selected. You should see UTXOs 1/1
in the interface. Once you are sure this is the case you can hit Send Selected
You will then be presented with the transaction construction interface. There is a few things you need to check here to make sure that this is a safe send:
- The transaction should have only 1 input, and this should be the UTXO with the label you want to send
- The transaction should have only 1 output, which is the address/label where you want to send the inscription
If your transaction looks any different, for example you have multiple inputs, or multiple outputs then this may not be a safe transfer of your inscription, and you should abandon sending until you understand more, or can import into the ord
wallet.
You should set an appropriate transaction fee, Sparrow will usually reccomend a reasonable one, but you can also check mempool.space to see what the reccomended fee rate is for sending a transaction
You should add a label for the recipient address, a label like alice address for inscription #123
would be ideal.
Once you have checked the transaction is a safe transaction using the checks above, and you are confident to send it you can click Create Transaction
Here again you can double check that your transaction looks safe, and once you are confident you can click Finalize Transaction for signing
Here you can triple check everything before hitting Sign
And then actually you get very very last chance to check everything before hitting Broadcast Transaction
. Once you broadcast the transaction it is sent to the bitcoin network, and starts being propogated into the mempool’s of all of the nodes in the network.
If you want to track the status of your transaction you can copy the Transaction Id
and paste that into mempool.space
Once the transaction has confirmed you can check the inscription page on ordinals.com to validate that it has moved to the new output location and address.
Troubleshooting
Sparrow wallet is not showing a transaction/UTXO, but I can see it on mempool.space!
Make sure that your wallet is connected to a bitcoin node. To validate this, head into the Preferences
-> Server
settings, and click Edit Existing Connection
From there you can select a node and click Test Connection
to validate that Sparrow is able to connect sucessfully