コンテンツにスキップ

カルダノ財団SPO投票マニュアル

概要

  • 投票トランザクション fae7bda85acb99c513aeab5f86986047b6f6cbd33a8e11f11c5005513a054dc8
  • 投票期限:413エポック終了まで
  • CIP-0094ダッシュボード
    Adastat.net [Mainnet] / Cardanoscan.io [Mainnet]
  • トランザクション手数料のみで投票できます
  • CIP-0094に対応したcardano-cli(v8.0.0-untested または v8.0.0)が必要です
  • 投票は初回1回のみが有効です。

1.SJG TOOLで投票する

SJG TOOL投票仕様

  • 投票データに簡易メッセージを添付可能!
    ADASTATに実装された投票データ簡易メッセージを表示できます。
  • インストール済みのCLIがCIP-0094非対応の場合は、cardano-cli v8.0.0-untestedを別途自動インストールします。これは投票のみに使用し、通常のオペレーションには使用しません。
  • エアギャップにcardano-cli v8.0.0-untestedをインストールする必要はありません。
  • 投票内容の自動翻訳はAPI自動翻訳のため、正しい日本語になっていない場合があります。

1-1. SJG TOOLを起動し、v5.3へアップグレードしてください。

1-2. [5] SPO投票ツール を選択してください

1-3. 投票トランザクションハッシュを入力してください

fae7bda85acb99c513aeab5f86986047b6f6cbd33a8e11f11c5005513a054dc8

1-4. 画面の指示に従って進めてください。(中断することも可能です)

1-5. 投票確認 CIP-0094ダッシュボードで自身の投票を確認してみましょう!
Adastat.net [Mainnet] / Cardanoscan.io [Mainnet]

以上です。

2.CLIコマンドで投票する

CLIコマンド投票仕様

  • 投票データ簡易メッセージ添付には対応していません。添付したい場合は各自でメタデータファイルを編集するかSJGTOOLを利用してください。

2-1.CLIバージョンチェック

cardano-cli version

v8.0.0はCIP-0094に対応しています。

CLIパスを設定する

cli_path=$(which cardano-cli)

作業ディレクトリを作成する

mkdir $HOME/git/spo-poll && cd $HOME/git/spo-poll

CLI v1.35.7以下の場合

CIP-0094に対応したCLIが必要のため、以下を実行しv8.0.0-untestedをダウンロードしてください。 これは投票のみに使用し、通常のオペレーションには使用しません。

v8.0.0-untestedをダウンロードする

wget -q https://github.com/btbf/spojapanguild/raw/d7cd9792ab4cb532b74a8cd1bf30de3c1c03b8a6/scripts/spo-poll/cardano-cli.gz
gzip -d cardano-cli.gz
chmod 755 $HOME/git/spo-poll/cardano-cli
バージョン確認
$HOME/git/spo-poll/cardano-cli version

cardano-cli 8.0.0 - linux-x86_64 - ghc-8.10 git rev 0000000000000000000000000000000000000000

CLIパスを上書きする

cli_path=$HOME/git/spo-poll/cardano-cli

  • エアギャップにcardano-cli v8.0.0-untestedをインストールする必要はありません。

投票トランザクションハッシュを設定する

txHash="fae7bda85acb99c513aeab5f86986047b6f6cbd33a8e11f11c5005513a054dc8"

投票Cborデータ(json)をダウンロードする

wget https://raw.githubusercontent.com/cardano-foundation/CIP-0094-polls/main/networks/${NODE_CONFIG}/${txHash}/poll.json -O $HOME/git/spo-poll/poll_${txHash}-CBOR.json

投票ファイル作成コマンドを実行する

${cli_path} governance answer-poll --poll-file $HOME/git/spo-poll/poll_${txHash}-CBOR.json > $HOME/git/spo-poll/poll_${txHash}-poll-answer.json

投票トランザクション送信準備

ウォレット残高確認

cd $NODE_HOME
cardano-cli query utxo \
    --address $(cat payment.addr) \
    $NODE_NETWORK > fullUtxo.out

tail -n +3 fullUtxo.out | sort -k3 -nr | sed -e '/lovelace + [0-9]/d' > balance.out

cat balance.out

UTXO計算

tx_in=""
total_balance=0
while read -r utxo; do
    in_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.out
txcnt=$(cat balance.out | wc -l)
echo Total ADA balance: ${total_balance}
echo Number of UTXOs: ${txcnt}

投票用トランザクションファイルを作成する

cd $NODE_HOME
cardano-cli transaction build \
    $NODE_NETWORK \
    ${tx_in} \
    --change-address $(cat payment.addr) \
    --metadata-json-file $HOME/git/spo-poll/poll_${txHash}-poll-answer.json \
    --json-metadata-detailed-schema \
    --required-signer-hash $(cat pool.id) \
    --out-file $NODE_HOME/poll-answer.tx

ファイル転送

BPのpoll-answer.tx をエアギャップマシンのcnodeディレクトリにコピーします。

graph LR
    A[BP] -->|poll-answer.tx| B[エアギャップ];

エアギャップで署名ファイルを作成します。

cd $NODE_HOME
chmod u+rwx $HOME/cold-keys
cardano-cli transaction sign \
    --tx-body-file poll-answer.tx \
    --signing-key-file $HOME/cold-keys/node.skey \
    --signing-key-file payment.skey \
    $NODE_NETWORK \
    --out-file poll-answer-tx.signed
chmod a-rwx $HOME/cold-keys

ファイル転送

エアギャップのpoll-answer-tx.signed をBPのcnodeディレクトリにコピーします。

graph LR
    A[エアギャップ] -->|poll-answer-tx.signed| B[BP];

BPでトランザクションを送信します

submit_txHash=$(cardano-cli transaction txid --tx-file $NODE_HOME/poll-answer.tx)
cardano-cli transaction submit --tx-file $NODE_HOME/poll-answer-tx.signed $NODE_NETWORK

数分後にトランザクションメタデータを確認する

curl -sX POST "https://api.koios.rest/api/v0/tx_metadata" -H "accept: application/json" -H "content-type: application/json"  -d "{\"_tx_hashes\":[\"${submit_txHash}\"]}" | jq .

投票確認

CIP-0094ダッシュボードで自身の投票を確認してみましょう!
Adastat.net [Mainnet] / Cardanoscan.io [Mainnet]

以上です。