以下の内容は、cardano-cliを使用して、payment.addrから任意のアドレスにメタデータを添付してトランザクションを送信する方法です。 トランザクションを送信するには最低1ADA必要です。
cd $NODE_HOMEmkdir metadata
cat > $NODE_HOME/metadata/sendMetadata.json << EOF{"0" : { "message" : "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }}EOF
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx を任意の文字列またはハッシュ値に置き換えてください
amountToSend=1000000echo amountToSend: $amountToSend
ここで指定しているのは1,000,000 lovelace (1ADA)
destinationAddress=addr1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxecho destinationAddress: $destinationAddress
addr1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx を任意のアドレスに置き換えてください
currentSlot=$(cardano-cli query tip --mainnet | jq -r '.slotNo')echo Current Slot: $currentSlot
cardano-cli query utxo \--address $(cat payment.addr) \--mainnet \--mary-era > fullUtxo.outtail -n +3 fullUtxo.out | sort -k3 -nr > balance.outcat balance.outtx_in=""total_balance=0while read -r utxo; doin_addr=$(awk '{ print $1 }' <<< "${utxo}")idx=$(awk '{ print $2 }' <<< "${utxo}")utxo_balance=$(awk '{ print $3 }' <<< "${utxo}")total_balance=$((${total_balance}+${utxo_balance}))echo TxHash: ${in_addr}#${idx}echo ADA: ${utxo_balance}tx_in="${tx_in} --tx-in ${in_addr}#${idx}"done < balance.outtxcnt=$(cat balance.out | wc -l)echo Total ADA balance: ${total_balance}echo Number of UTXOs: ${txcnt}
cardano-cli transaction build-raw \${tx_in} \--tx-out $(cat payment.addr)+0 \--tx-out ${destinationAddress}+0 \--invalid-hereafter $(( ${currentSlot} + 10000)) \--fee 0 \--json-metadata-no-schema \--metadata-json-file $NODE_HOME/metadata/sendMetadata.json \--mary-era \--out-file tx.tmp
fee=$(cardano-cli transaction calculate-min-fee \--tx-body-file tx.tmp \--tx-in-count ${txcnt} \--tx-out-count 2 \--mainnet \--witness-count 1 \--byron-witness-count 0 \--protocol-params-file $NODE_HOME/params.json | awk '{ print $1 }')echo fee: $fee
txOut=$((${total_balance}-${fee}-${amountToSend}))echo Change Output: ${txOut}
cardano-cli transaction build-raw \${tx_in} \--tx-out $(cat payment.addr)+${txOut} \--tx-out ${destinationAddress}+${amountToSend} \--invalid-hereafter $(( ${currentSlot} + 10000)) \--fee ${fee} \--json-metadata-no-schema \--metadata-json-file $NODE_HOME/metadata/sendMetadata.json \--mary-era \--out-file tx.raw
tx.rawをエアギャップマシンのcardano-my-nodeにコピーしてください。
cardano-cli transaction sign \--tx-body-file tx.raw \--signing-key-file payment.skey \--mainnet \--out-file tx.signed
tx.signedをBPのcardano-my-nodeにコピーしてください
cardano-cli transaction submit \--tx-file tx.signed \--mainnet
自分が送信したメタデータ付きトランザクションが記録されているか、確認してみましょう! Cardanoscan-Metadata(https://cardanoscan.io/metadata)