Wallet

I singoli satoshi possono essere iscritti con contenuti arbitrari, creando artefatti digitali nativi di Bitcoin che possono essere conservati in un portafoglio Bitcoin e trasferiti tramite transazioni Bitcoin. Le iscrizioni sono durevoli, immutabili, sicure e decentralizzate come Bitcoin stesso.

Per lavorare con le iscrizioni è necessario un nodo Bitcoin completo, per avere una visione dello stato attuale della blockchain Bitcoin, e un portafoglio in grado di creare iscrizioni e di eseguire il controllo sat quando si costruiscono transazioni per inviare iscrizioni a un altro portafoglio.

Bitcoin Core fornisce sia un nodo completo Bitcoin che un portafoglio. Tuttavia, il portafoglio di Bitcoin Core non può creare iscrizioni e non esegue il controllo sat.

Per questo è necessario ord, l'utilità ordinale. ord non implementa un proprio portafoglio, quindi i sottocomandi del portafoglio ord interagiscono con i portafogli di Bitcoin Core.

Questa guida tratta di:

  1. Installazione di Bitcoin Core
  2. Sincronizzare la blockchain di Bitcoin
  3. Creare un portafoglio Bitcoin Core
  4. Usare ord wallet receive per ricevere sats
  5. Creare iscrizioni con ord wallet inscribe
  6. Inviare iscrizioni con ord wallet send
  7. Ricevere iscrizioni con ord wallet receive
  8. Inscrivere in batch con ord wallet inscribe --batch

Ricevere Aiuto

Se siete bloccati, provate a chiedere aiuto su Ordinals Discord Server, o a controllare su GitHub i problemi e le discussioni pertinenti.

Installazione di Bitcoin Core

Bitcoin Core è disponibile su bitcoincore.org alla pagina di download.

Making inscriptions requires Bitcoin Core 28 or newer.

Questa guida non tratta in dettaglio l'installazione di Bitcoin Core. Una volta installato Bitcoin Core, si dovrebbe essere in grado di eseguire con successo bitcoind -version dalla riga di comando. NON utilizzare bitcoin-qt.

Configurazione di Bitcoin Core

ord richiede l'indice delle transazioni e l'interfaccia rest di Bitcoin Core.

Per configurare il tuo nodo Bitcoin Core in modo che mantenga un indice delle transazioni, aggiungere quanto segue al tuo bitcoin.conf:

txindex=1

Oppure, eseguire bitcoind con -txindex:

bitcoind -txindex

I dettagli sulla creazione o la modifica del file bitcoin.conf sono disponibili qui.

Sincronizzazione della catena di Bitcoin

Per sincronizzare la catena, eseguire:

bitcoind -txindex

…e lasciarlo in esecuzione fino a getblockcount:

bitcoin-cli getblockcount

concorda con il conteggio dei blocchi su un block explorer come mempool.space block explorer. ord interagisce con bitcoind, quindi si dovrebbe lasciare bitcoind in esecuzione in background quando si utilizza ord.

La blockchain occupa circa 600 GB di spazio su disco. Se si dispone di un disco esterno su cui memorizzare i blocchi, utilizzare l'opzione di configurazione blocksdir=<external_drive_path>. È molto più semplice che usare l'opzione datadir, perché il file cookie sarà ancora nella posizione predefinita per essere trovato da bitcoin-cli e ord.

Risoluzione dei problemi

Assicurarsi di poter accedere a bitcoind con bitcoin-cli -getinfo e che sia completamente sincronizzato.

Se bitcoin-cli -getinfo restituisce Could not connect to the server, bitcoind non è in esecuzione.

Assicurarsi che rpcuser, rpcpassword, o rpcauth NON siano impostati nel file bitcoin.conf. ord richiede l'uso dell'autenticazione tramite cookie. Assicurarsi che ci sia un file .cookie nella tua directory dei dati di bitcoin.

Se bitcoin-cli -getinfo restituisce Could not locate RPC credentials, è necessario specificare la posizione del file cookie. Se si utilizza una directory di dati personalizzata (specificando l'opzione datadir), è necessario specificare la posizione del cookie come bitcoin-cli -rpccookiefile=<your_bitcoin_datadir>/.cookie -getinfo. Quando si esegue ord è necessario specificare la posizione del file cookie con --cookie-file=<your_bitcoin_datadir>/.cookie.

Assicurarsi di NON avere disablewallet=1 nel file bitcoin.conf. Se bitcoin-cli listwallets restituisce Method not found, il portafoglio è disabilitato e non sarà possibile utilizzare ord.

Assicurarsi che txindex=1 sia impostato. Eseguite bitcoin-cli getindexinfo e dovrebbe restituire qualcosa come

{
  "txindex": {
    "synced": true,
    "best_block_height": 776546
  }
}

Se restituisce solo {}, il txindex non è impostato. Se restituisce "synced": false, bitcoind sta ancora creando il txindex. Attendere fino a "synced": true prima di usare ord.

Se è impostato maxuploadtarget, può interferire con il recupero dei blocchi per l'indice ord. Rimuoverlo o impostare whitebind=127.0.0.1:8333.

Installazione di ord

L'utilità ord è scritta in Rust e può essere compilata dalla sorgente. I binari precompilati sono disponibili nella pagina dei rilasci.

È possibile installare l'ultimo binario precostruito dalla riga di comando con:

curl --proto '=https' --tlsv1.2 -fsLS https://ordinals.com/install.sh | bash -s

Una volta installato ord, dovrebbe essere possibile eseguirlo:

ord --version

Che stampa il numero di versione di ord.

Creating a Wallet

ord uses bitcoind to manage private keys, sign transactions, and broadcast transactions to the Bitcoin network. Additionally the ord wallet requires ord server running in the background. Make sure these programs are running:

bitcoind -txindex
ord server

To create a wallet named ord, the default, for use with ord wallet, run:

ord wallet create

This will print out your seed phrase mnemonic, store it somewhere safe.

{
  "mnemonic": "dignity buddy actor toast talk crisp city annual tourist orient similar federal",
  "passphrase": ""
}

If you want to specify a different name or use an ord server running on a non-default URL you can set these options:

ord wallet --name foo --server-url http://127.0.0.1:8080 create

To see all available wallet options you can run:

ord wallet help

Restoring and Dumping Wallet

The ord wallet uses descriptors, so you can export the output descriptors and import them into another descriptor-based wallet. To export the wallet descriptors, which include your private keys:

$ ord wallet dump
==========================================
= THIS STRING CONTAINS YOUR PRIVATE KEYS =
=        DO NOT SHARE WITH ANYONE        =
==========================================
{
  "wallet_name": "ord",
  "descriptors": [
    {
      "desc": "tr([551ac972/86'/1'/0']tprv8h4xBhrfZwX9o1XtUMmz92yNiGRYjF9B1vkvQ858aN1UQcACZNqN9nFzj3vrYPa4jdPMfw4ooMuNBfR4gcYm7LmhKZNTaF4etbN29Tj7UcH/0/*)#uxn94yt5",
      "timestamp": 1296688602,
      "active": true,
      "internal": false,
      "range": [
        0,
        999
      ],
      "next": 0
    },
    {
      "desc": "tr([551ac972/86'/1'/0']tprv8h4xBhrfZwX9o1XtUMmz92yNiGRYjF9B1vkvQ858aN1UQcACZNqN9nFzj3vrYPa4jdPMfw4ooMuNBfR4gcYm7LmhKZNTaF4etbN29Tj7UcH/1/*)#djkyg3mv",
      "timestamp": 1296688602,
      "active": true,
      "internal": true,
      "range": [
        0,
        999
      ],
      "next": 0
    }
  ]
}

An ord wallet can be restored from a mnemonic:

ord wallet restore --from mnemonic

Type your mnemonic and press return.

To restore from a descriptor in descriptor.json:

cat descriptor.json | ord wallet restore --from descriptor

To restore from a descriptor in the clipboard:

ord wallet restore --from descriptor

Paste the descriptor into the terminal and press CTRL-D on unix and CTRL-Z on Windows.

Ricevere i Sats

Le iscrizioni vengono effettuate su singoli sat, utilizzando le normali transazioni Bitcoin che pagano le commissioni in sats, quindi il vostro portafoglio avrà bisogno di alcuni sats.

Ottenere un nuovo indirizzo dal proprio portafoglio ord eseguendo:

ord wallet receive

E inviategli dei fondi.

È possibile vedere le transazioni in sospeso con:

ord wallet transactions

Una volta confermata la transazione, si dovrebbe essere in grado di vedere i risultati delle transazioni con ord wallet outputs.

Creazione del contenuto dell'iscrizione

I sats possono essere iscritti con qualsiasi tipo di contenuto, ma il portafoglio ord supporta solo i tipi di contenuto che possono essere visualizzati dall'explorer di blocchi ord.

Inoltre, le iscrizioni sono incluse nelle transazioni, quindi più grande è il contenuto, più alta è la commissione che la transazione di iscrizione deve pagare.

I contenuti delle iscrizioni sono inclusi nei witness delle transazioni, che ricevono uno sconto sulle commissioni. Per calcolare la tariffa approssimativa che una transazione di iscrizione dovrà pagare, dividere la dimensione del contenuto per quattro e moltiplicare per la tariffa.

Le transazioni di iscrizione devono essere inferiori a 400.000 unità di peso, altrimenti non saranno trasmesse dal Bitcoin Core. Un byte di contenuto di iscrizione costa un'unità di peso. Poiché una transazione di iscrizione non include solo il contenuto dell'iscrizione, limitate il contenuto dell'iscrizione a meno di 400.000 unità di peso. 390.000 unità di peso dovrebbero essere sicure.

Creazione di iscrizioni

Per creare un'iscrizione con il contenuto di FILE, eseguire:

ord wallet inscribe --fee-rate FEE_RATE --file FILE

Ord produrrà due ID di transazione, uno per la transazione di commit e uno per la transazione di reveal, e l'ID dell'iscrizione. Gli ID delle iscrizioni sono della forma TXIDiN, dove TXID è l'ID della transazione di rivelazione e N è l'indice dell'iscrizione nella transazione di rivelazione.

La transazione di commit esegue il commit su un tapscript contenente il contenuto dell'iscrizione e la transazione di reveal esegue il commit da quel tapscript, rivelando il contenuto sulla catena e iscrivendolo sul primo sat dell'input che contiene il tapscript corrispondente.

Attendere che la transazione reveal venga minata. È possibile controllare lo stato delle transazioni di commit e di reveal utilizzando il block explorer di mempool.space.

Una volta che la transazione reveal è stata estratta, l'ID dell'iscrizione dovrebbe essere stampato durante l'esecuzione:

ord wallet inscriptions

Iscrizioni Genitore-Figlio

Le iscrizioni "parent-child" consentono di creare quelle che in gergo si chiamano collezioni, per maggiori informazioni, si veda la voce provenienza.

Per rendere un'iscrizione figlia di un'altra, l'iscrizione parent deve essere iscritta e presente nel portafoglio. Per scegliere un genitore, eseguire ord wallet inscriptions e copiare l'id dell'iscrizione (<PARENT_INSCRIPTION_ID>).

Ora iscrivete l'iscrizione figlia e specificate il genitore in questo modo:

ord wallet inscribe --fee-rate FEE_RATE --parent <PARENT_INSCRIPTION_ID> --file CHILD_FILE

Questo rapporto non può essere aggiunto retroattivamente, il genitore deve essere presente al momento dell'iscrizione del bambino.

Invio di iscrizioni

Chiedere al destinatario di generare un nuovo indirizzo eseguendo:

ord wallet receive

Inviare l’iscrizione eseguendo:

ord wallet send --fee-rate <FEE_RATE> <ADDRESS> <INSCRIPTION_ID>

Vedere la transazione in sospeso con:

ord wallet transactions

Una volta confermata la transazione di invio, il destinatario può confermare la ricezione eseguendo:

ord wallet inscriptions

Sending Runes

Chiedere al destinatario di generare un nuovo indirizzo eseguendo:

ord wallet receive

Send the runes by running:

ord wallet send --fee-rate <FEE_RATE> <ADDRESS> <RUNES_AMOUNT>

Where RUNES_AMOUNT is the number of runes to send, a : character, and the name of the rune. For example if you want to send 1000 of the EXAMPLE rune, you would use 1000:EXAMPLE.

ord wallet send --fee-rate 1 SOME_ADDRESS 1000:EXAMPLE

Vedere la transazione in sospeso con:

ord wallet transactions

Once the send transaction confirms, the recipient can confirm receipt with:

ord wallet balance

Ricevere Iscrizioni

Generare un nuovo indirizzo di ricezione utilizzando:

ord wallet receive

Il mittente può trasferire l'iscrizione al vostro indirizzo utilizzando:

ord wallet send --fee-rate <FEE_RATE> ADDRESS INSCRIPTION_ID

Vedere la transazione in sospeso con:

ord wallet transactions

Once the send transaction confirms, you can confirm receipt by running:

ord wallet inscriptions