Wallet
각 SAT에 임의의 콘텐츠를 새길 수 있으며, 이로써 비트코인 지갑에 보관하고 비트코인 거래를 통해 전송할 수 있는 고유한 비트코인 자체 디지털 아티팩트를 만들 수 있다. 인스크립션은 비트코인만큼이나 내구성이 있고, 불변하며, 안전하고, 탈중앙화되어 있다.
인스크립션 작업에는 비트코인 블록체인의 현재 상태를 볼 수 있는 비트코인 풀 노드와 인스크립션을 생성하고 다른 지갑으로 인스크립션을 전송하는 트랜잭션을 만들 때 SAT 제어를 수행할 수 있는 지갑이 필요하다.
Bitcoin Core는 비트코인 풀노드와 지갑을 모두 제공한다. 그러나 Bitcoin Core 지갑은 인스크립션을 생성할 수 없으며, SAT 제어를 수행하지 않는다.
이를 위해서는 오디널 유틸리티인 ord
가 필요하다. ord
는 자체 지갑을 구현하지 않으므로 ord wallet
하위 명령은 Bitcoin Core 지갑과 상호작용한다.
이 가이드에서 다룰 토픽:
- Bitcoin Core 설치
- 비트코인 블록체인 동기화
- Bitcoin Core 지갑 만들기
ord wallet receive
을 사용하여 SAT 받기ord wallet inscribe
으로 인스크립션 만들기ord wallet send
로 인스크립션 보내기ord wallet receive
로 인스크립션 받기- Batch inscribing with
ord wallet inscribe --batch
도움 받기
문제가 해결되지 않는다면, 오디널스 디스코드 서버에서 도움을 요청해 보거나 깃허브에서 관련 이슈 및 토론을 확인해 보자.
Bitcoin Core 설치
Bitcoin Core는 bitcoincore.org의 다운로드 페이지에서 이용할 수 있다.
Making inscriptions requires Bitcoin Core 28 or newer.
이 가이드에서는 Bitcoin Core 설치에 대해 자세히 다루지 않는다. Bitcoin Core가 설치되면 명령줄에서 bitcoind -version
을 성공적으로 실행할 수 있어야 한다. bitcoin-qt
는 사용하지 말라.
Bitcoin Core 설정하기
ord
는 Bitcoin Core의 트랜잭션 인덱스와 rest 인터페이스가 필요하다.
트랜잭션 인덱스를 유지하도록 Bitcoin Core 노드를 설정하려면, bitcoin.conf
에 다음을 추가한다:
txindex=1
또는 -txindex
와 함께 bitcoind
를 실행한다:
bitcoind -txindex
bitcoin.conf
파일 생성 또는 수정에 대한 자세한 내용은 여기에서 확인할 수 있다.
비트코인 블록체인 동기화
체인을 동기화하려면 다음을 실행한다:
bitcoind -txindex
...그리고 getblockcount
가:
bitcoin-cli getblockcount
mempool.space block explorer와 같은 블록 탐색기의 블록 수와 일치할때까지 실행한다. ord
는 bitcoind
와 상호 작용하므로 ord
을 사용할 때는 bitcoind
를 백그라운드에서 실행하도록 두어야 한다.
블록체인은 약 600GB의 디스크 공간을 필요로 한다. 블록을 저장할 외장 드라이브가 있는 경우, 설정 옵션 blocksdir=<external_drive_path>
를 사용한다. 이렇게 하면 쿠키 파일이 여전히 bitcoin-cli
와 ord
가 찾을 수 있는 기본 위치에 있기 때문에 datadir
옵션을 사용하는 것보다 훨씬 간단하다.
트러블 슈팅
bitcoind
를 bitcoin-cli -getinfo
로 액세스할 수 있는지 그리고 이것이 완전히 동기화되었는지를 확인한다.
bitcoin-cli -getinfo
가 Could not connect to the server
을 반환하면 bitcoind
가 실행되고 있지 않은 것이다.
rpcuser
, rpcpassword
또는 rpcauth
가 bitcoin.conf
파일에 설정되어 있지 않는 것을 확인하자. ord
는 쿠키 인증에 사용을 요구한다. 비트코인 데이터 디렉토리에 .cookie
파일이 있는지 확인하자.
bitcoin-cli -getinfo
가 Could not locate RPC credentials
을 반환하면 쿠키 파일 위치를 지정해야 한다. 사용자 지정 데이터 디렉터리를 사용하는 경우(datadir
옵션을 지정) bitcoin-cli -rpccookiefile=<your_bitcoin_datadir>/.cookie -getinfo
와 같이 쿠키 위치를 지정해야 한다. ord
을 실행할 때는 --cookie-file=<your_bitcoin_datadir>/.cookie
로 쿠키 파일 위치를 지정해야 한다.
bitcoin.conf
파일에 disablewallet=1
이 없는 것을 확인하자. bitcoin-cli listwallets
가 Method not found
을 반환하면 지갑이 비활성화된 것이며 ord
를 사용할 수 없다.
txindex=1
이 설정되어 있는지 확인한다. bitcoin-cli getindexinfo
를 실행하면 다음과 같은 결과가 반환되어야 한다
{
"txindex": {
"synced": true,
"best_block_height": 776546
}
}
만약 {}
만 반환하면 txindex
가 설정되지 않은 것이다. ”synced”: false
를 반환하면 bitcoind
가 여전히 txindex
를 생성하고 있는 것이다. ”synced”: true
가 될 때까지 기다렸다가 ord
를 사용하라.
maxuploadtarget
이 설정되어 있으면 ord
인덱스를 위해 블록을 가져오는 데 방해가 될 수 있다. 이를 제거하거나 whitebind=127.0.0.1:8333
을 설정하라.
ord
설치
'ord` 유틸리티는 Rust로 작성되었으며 소스에서 빌드할 수 있다. 미리 빌드된 바이너리는 릴리스 페이지에서 사용할 수 있다.
명령줄에서 다음을 사용하여 미리 빌드된 최신 바이너리를 설치할 수 있다:
curl --proto '=https' --tlsv1.2 -fsLS https://ordinals.com/install.sh | bash -s
ord
가 설치되면 다음을 실행할 수 있어야 한다:
ord --version
이것이 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.
SAT 받기
인스크립션은 SAT로 수수료를 지불하는 일반 비트코인 거래를 사용하여 개별 SAT에 새김 됨으로 지갑에 약간의 SAT가 필요하다.
다음을 실행하여 ord
지갑에서 새 주소를 가져온다:
ord wallet receive
그리고 자금을 조금 보내자.
다음을 사용하여 펜딩 트랜잭션을 확인할 수 있다:
ord wallet transactions
트랜잭션이 컨펌되면 ord wallet outputs
으로 트랜잭션 출력을 확인할 수 있다.
인스크립션 콘텐츠 만들기
SAT에는 모든 종류의 콘텐츠를 새길 수 있지만, ord
지갑은 ord
블록 탐색기에서 표시할 수 있는 콘텐츠 유형만 지원한다.
또한 인스크립션은 트랜잭션에 포함되므로 콘텐츠가 클수록 인스크립션 트랜잭션에서 지불해야 하는 수수료가 높아진다.
인스크립션 콘텐츠는 트랜잭션 증인에 포함되며, 증인 할인(witness discount)을 받는다. 인스크립트 트랜잭션이 지불할 대략의 수수료를 계산하려면 콘텐츠 크기를 4로 나눈 다음 수수료율을 곱하면 된다.
인스크립션 트랜잭션은 400,000 가중치 단위(weight unit) 미만이어야 하며, 그렇지 않으면 Bitcoin Core에서 릴레이 되지 않는다. 1바이트의 인스크립션 콘텐츠는 1 가중치 단위의 비용이 든다. 인스크립션 트랜잭션에는 인스크립션 콘텐츠만 포함되지 않으므로, 인스크립션 콘텐츠를 400,000 가중치 단위 미만으로 제한하라. 390,000 개의 가중치 단위미만은 안전할 것이다.
인스크립션 생성하기
FILE
의 내용으로 인스크립션을 만들려면 다음을 실행한다:
ord wallet inscribe --fee-rate FEE_RATE --file FILE
Ord는 커밋 트랜잭션과 리빌 트랜잭션에 대한 두 개의 트랜잭션 ID와 인스크립션 ID를 출력한다. 인스크립션 ID는 TXIDiN
형식이며, 여기서 TXID
는 리빌 트랜잭션의 트랜잭션 ID이고 N
은 리빌 트랜잭션안에 있는 인스크립션의 인덱스이다.
커밋 트랜잭션은 인스크립션 콘텐츠가 포함된 탭스크립트(tapscript)에 커밋하고, 리빌 트랜잭션은 해당 탭스크립트에서 지출하여 체인에서 콘텐츠를 공개하고 해당 탭스크립트가 포함된 입력의 첫 번째 SAT에 인스크립션을 새긴다.
리빌 트랜잭션이 채굴될 때까지 기다린다. Mempool.space 블록 탐색기를 사용하여 커밋 및 리빌 트랜잭션의 상태를 확인할 수 있다.
리빌 트랜잭션이 채굴되면 다음을 실행할 때 인스크립션 ID가 출력되어야 한다:
ord wallet inscriptions
부모-자식 인스크립션
부모-자식 인스크립션은 구어체로 컬렉션이라고 하는 것을 가능하게 한다. 자세한 내용은 기원을 참조하자.
인스크립션을 다른 인스크립션의 자식으로 만들려면 부모 인스크립션이 새김되어 있고 지갑에 있어야 한다. 부모를 선택하려면 ord wallet inscriptions
을 실행하고 인스크립션 ID(<PARENT_INSCRIPTION_ID>
)를 복사한다.
이제 자식 인스크립션을 새기고 부모를 다음과 같이 지정한다:
ord wallet inscribe --fee-rate FEE_RATE --parent <PARENT_INSCRIPTION_ID> --file CHILD_FILE
이 관계는 소급하여 추가할 수 없으며, 부모는 자녀가 시작될 때 이미 존재해야 한다.
인스크립션 보내기
수신자에게 다음을 실행해 새 주소를 생성하도록 요청한다:
ord wallet receive
다음을 실행하여 인스크립션을 보낸다:
ord wallet send --fee-rate <FEE_RATE> <ADDRESS> <INSCRIPTION_ID>
다음을 실행하여 펜딩 트랜잭션을 확인한다:
ord wallet transactions
전송 트랜잭션이 확인되면 수신자는 다음을 실행하여 수신을 확인할 수 있다:
ord wallet inscriptions
Sending Runes
수신자에게 다음을 실행해 새 주소를 생성하도록 요청한다:
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
다음을 실행하여 펜딩 트랜잭션을 확인한다:
ord wallet transactions
Once the send transaction confirms, the recipient can confirm receipt with:
ord wallet balance
인스크립션 받기
다음을 사용하여 새 수신 주소를 생성한다:
ord wallet receive
발신자는 다음을 사용하여 인스크립션을 당신의 주소로 전송할 수 있다:
ord wallet send --fee-rate <FEE_RATE> ADDRESS INSCRIPTION_ID
다음을 실행하여 펜딩 트랜잭션을 확인한다:
ord wallet transactions
Once the send transaction confirms, you can confirm receipt by running:
ord wallet inscriptions