SAT 헌팅

오디널 헌팅은 어렵지만 보람이 있다. 희귀하고 이색적인 SAT의 향기가 풍기는 UTXO가 가득한 지갑을 소유했을 때의 기분은 그 무엇과도 비교할 수 없다.

오디널은 사토시를 나타내는 숫자이다. 모든 사토시에는 서수가 있고 모든 서수에는 사토시가 있다.

준비

시작하기 전에 몇 가지 준비해야 할 사항이 있다.

  1. 첫째, 트랜잭션 인덱스가 있는 동기화된 Bitcoin Core 노드가 필요하다. 트랜잭션 인덱싱을 활성화하려면 명령줄에 -txindex를 입력한다:

    bitcoind -txindex
    

    또는 다음을 Bitcoin configuration file에 입력한다:

    txindex=1
    

    이를 실행하고 체인 끝을 따라잡을 때까지 기다린 후 다음 명령을 입력하면 현재 블록 높이를 출력할 것이다:

    bitcoin-cli getblockcount
    
  2. 둘째, 동기화된 ord 인덱스가 필요하다.

    • the repo에서 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가 있는 지갑이 필요하다.

희귀 오디널스 검색하기

Bitcoin Core 지갑에서 희귀 오디널스 검색하기

ord wallet 명령은 Bitcoin Core의 RPC API를 감싸는 래퍼일 뿐이므로 Bitcoin Core 지갑에서 희귀한 오디널스를 검색하는 것은 쉽다. 지갑의 이름이 foo이라는 가정하에:

  1. 지갑을 로드한다:

    bitcoin-cli loadwallet foo
    
  2. 희귀한 오디널스 지갑 foo의 UTXO를 표시한다:

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

Bitcoin Core 지갑이 아닌 지갑에서 희귀 오디널스 검색하기

ord wallet 명령은 Bitcoin Core의 RPC API를 감싸는 래퍼일 뿐이므로, Bitcoin Core가 아닌 지갑에서 희귀 오디널스를 검색하려면 지갑의 기술자(discriptors)를 Bitcoin Core로 가져오기 해야 한다.

기술자는 지갑이 개인 키와 공개 키를 생성하는 방법을 설명한다.

지갑의 공개 키에 대한 기술자만 Bitcoin Core로 가져와야 하며, 개인 키는 가져오지 않아야 한다.

지갑의 공개 키 기술자가 유출되면 공격자가 지갑 주소를 볼 수 있지만 자금은 안전할 것이다.

지갑의 개인 키 기술자가 유출되면 공격자가 지갑에서 자금을 탈취할 수 있다.

  1. 희귀 오디널스를 검색하려는 지갑에서 지갑 기술자를 가져온다. 다음과 같은 형태일 것이다:

    wpkh([bf1dd55e/84'/0'/0']xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/0/*)#csvefu29
    
  2. ‘foo-watch-only’라는 이름으로 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 }]'
    

    지갑이 처음 트랜잭션을 받기 시작한 유닉스 타임스탬프를 알고 있다면, 0 대신 ”timestamp” 값에 사용할 수 있다. 이렇게 하면 Bitcoin Core가 당신 지갑의 UTXO를 검색하는 데 걸리는 시간을 줄일 수 있다.

  5. 모든 것이 제대로 되었는지 확인한다:

    bitcoin-cli getwalletinfo
    
  6. 당신 지갑의 희귀 오디널스를 표시한다:

    ord wallet sats
    

다중 경로 기술자를 내보내기 하는 지갑에서 희귀 오디널스 검색하기

일부 기술자는 꺾쇠 괄호(예: <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
       }
     ]'
    

    지갑이 처음 트랜잭션을 받기 시작한 유닉스 타임스탬프를 알고 있다면, 0 대신 ”timestamp” 값에 사용할 수 있다. 이렇게 하면 Bitcoin Core가 당신 지갑의 UTXO를 검색하는 데 걸리는 시간을 줄일 수 있다.

  6. 모든 것이 제대로 되었는지 확인한다:

    bitcoin-cli getwalletinfo
    
  7. 당신 지갑의 희귀 오디널스를 표시한다:

    ord wallet sats
    

기술자 내보내기

스패로우 월렛

Settings 탭으로 이동한 다음 Script Policy로 이동한 후 편집 버튼을 눌러 기술자를 표시한다.

오디널스 전송하기

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.