Охота на сатоши

Охота на ordinal - трудное, но вознаграждаемое занятие. Ощущения от обладания кошельком, полным UTXO, наполненным ароматом редких и экзотических сатов, вне сравнения.

Ordinals - это числа для сатоши. Каждый сатоши имеет порядковый номер, а каждый порядковый номер имеет свой сатоши.

Подготовка

Перед началом работы вам потребуется несколько вещей.

  1. Во-первых, вам потребуется синхронизированный Bitcoin Core node с индексом транзакций. Чтобы включить индексирование транзакций, передайте в командной строке команду -txindex:

    bitcoind -txindex
    

    Или поместите в файл конфигурации Bitcoin:

    txindex=1
    

    Запустите его и дождитесь, пока он догонит вершину цепи, после чего следующая команда должна вывести текущую высоту блока:

    bitcoin-cli getblockcount
    
  2. Во-вторых, вам понадобится синхронизированный индекс ord.

    • Получить копию ord из репозитория.

    • Run ord --index-sats server. It should connect to your bitcoin core node and start indexing.

    • Once it has finished indexing, leave the server running and submit new ord commands in a separate terminal session.

  3. В-третьих, вам понадобится кошелек с UTXO, которые вы хотите найти.

Поиск Rare Ordinals

Поиск Rare Ordinals в Bitcoin Core Wallet

Команда ord wallet - это просто обертка вокруг RPC API Bitcoin Core, поэтому найти rare ordinals в Bitcoin Core wallet довольно легко . Предположим, что ваш кошелек имеет имя foo:

  1. Загрузите свой кошелек:

    bitcoin-cli loadwallet foo
    
  2. Отображение любых rare ordinals кошелька foo UTXOs:

    ord --index-sats wallet --name foo sats
    

Поиск Rare Ordinals в кошельке, не относящемся к Bitcoin Core Wallet

Команда ord wallet является лишь оберткой для RPC API Bitcoin Core, поэтому для поиска rare ordinals в кошельке, не принадлежащем Bitcoin Core wallet, необходимо импортировать дескрипторы кошелька в Bitcoin Core.

Дескрипторы описывают способы генерации кошельками закрытых и открытых ключей.

В Bitcoin Core следует импортировать дескрипторы только для открытых ключей кошелька, но не для его закрытых ключей.

Если дескриптор открытого ключа вашего кошелька будет скомпрометирован, злоумышленник сможет увидеть адреса вашего кошелька, но ваши средства будут в безопасности.

Если дескриптор закрытого ключа вашего кошелька скомпрометирован, злоумышленник может вывести с него ваши средства.

  1. Получите дескриптор кошелька, в кошельке которого вы хотите искать rare ordinals UTXO. Он будет выглядеть примерно так:

    wpkh([bf1dd55e/84'/0'/0']xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/0/*)#csvefu29
    
  2. Создайте кошелек с именем foo-watch-only, предназначенный только для просмотра:

    bitcoin-cli createwallet foo-watch-only true true
    

    Не стесняйтесь дать ему более подходящее название, чем foo-watch-only!

  3. Загрузите кошелек foo-watch-only:

    bitcoin-cli loadwallet foo-watch-only
    
  4. Импортируйте дескрипторы вашего кошелька в foo-watch-only:

    bitcoin-cli importdescriptors \
      '[{ "desc": "wpkh([bf1dd55e/84h/0h/0h]xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/0/*)#tpnxnxax", "timestamp":0 }]'
    

    Если вам известна временная метка Unix, когда ваш кошелек впервые начал принимать транзакции, вы можете использовать ее в качестве значения "timestamp" вместо 0. Это позволит сократить время поиска UTXO кошелька для Bitcoin Core.

  5. Проверьте, что все работает:

    bitcoin-cli getwalletinfo
    
  6. Отображение rare ordinals в кошельке:

    ord wallet sats
    

Поиск Rare Ordinals в кошельке, экспортирующем многопутевые дескрипторы

Некоторые дескрипторы описывают несколько путей в одном дескрипторе с помощью угловых скобок, например,<0;1>. Bitcoin Core пока не поддерживает многопутевые дескрипторы, поэтому сначала их необходимо преобразовать в многопутевые дескрипторы, а затем импортировать эти многопутевые дескрипторы в Bitcoin Core.

  1. Сначала получите многопутевой дескриптор из вашего кошелька. Он будет выглядеть примерно так:

    wpkh([bf1dd55e/84h/0h/0h]xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/<0;1>/*)#fw76ulgt
    
  2. Создайте дескриптор для пути адреса приема:

    wpkh([bf1dd55e/84'/0'/0']xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/0/*)
    

    И путь смены адреса:

    wpkh([bf1dd55e/84'/0'/0']xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/1/*)
    
  3. Получите и запишите контрольную сумму для дескриптора адреса приема, в данном случае tpnxnxax:

    bitcoin-cli getdescriptorinfo \
      'wpkh([bf1dd55e/84h/0h/0h]xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/0/*)'
    
    {
      "descriptor": "wpkh([bf1dd55e/84'/0'/0']xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/0/*)#csvefu29",
      "checksum": "tpnxnxax",
      "isrange": true,
      "issolvable": true,
      "hasprivatekeys": false
    }
    

    И для дескриптора адреса изменения, в данном случае 64k8wnd7:

    bitcoin-cli getdescriptorinfo \
      'wpkh([bf1dd55e/84h/0h/0h]xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/1/*)'
    
    {
      "descriptor": "wpkh([bf1dd55e/84'/0'/0']xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/1/*)#fyfc5f6a",
      "checksum": "64k8wnd7",
      "isrange": true,
      "issolvable": true,
      "hasprivatekeys": false
    }
    
  4. Загрузите кошелек, в который вы хотите импортировать дескрипторы:

    bitcoin-cli loadwallet foo-watch-only
    
  5. Теперь импортируйте дескрипторы с правильными контрольными суммами в Bitcoin Core.

    bitcoin-cli \
     importdescriptors \
     '[
       {
         "desc": "wpkh([bf1dd55e/84h/0h/0h]xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/0/*)#tpnxnxax"
         "timestamp":0
       },
       {
         "desc": "wpkh([bf1dd55e/84h/0h/0h]xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/1/*)#64k8wnd7",
         "timestamp":0
       }
     ]'
    

    Если вам известна временная метка Unix, когда ваш кошелек впервые начал принимать транзакции, вы можете использовать ее в качестве значения "timestamp" вместо 0. Это позволит сократить время поиска UTXO кошелька для Bitcoin Core.

  6. Проверьте, что все работает:

    bitcoin-cli getwalletinfo
    
  7. Отображение rare ordinals в кошельке:

    ord wallet sats
    

Экспорт дескрипторов

Sparrow Wallet

Перейдите на вкладку Settings, затем на вкладку Script Policy и нажмите кнопку редактирования для отображения дескриптора.

Отправка Ordinals

The ord wallet supports transferring specific satoshis by using the name of the satoshi. To send the satoshi zonefruits, do:

ord wallet send <RECEIVING_ADDRESS> zonefruits --fee-rate 21

You can also use the bitcoin-cli commands createrawtransaction, signrawtransactionwithwallet, and sendrawtransaction, but this method can be complex and is outside the scope of this guide.