ステークプール情報の更新
ステークプール情報の更新
誓約額の変更などは、2エポック後に有効になります。
よくある間違いは、誓約額を下げて資金をすぐに取り消すことです。
これにより、現在の誓約額が満たされなくなるため、報酬がゼロになります。
ティッカーの長さは3 ~ 5文字にする必要があります。文字はA ~ Zと0 ~ 9のみにする必要があります。
説明の長さは255文字を超えることはできません。
- メタデータ更新を含む場合について
- 誓約、固定手数料、マージンやリレー情報の更新のみの場合について
- JSONファイルを使用してプールのメタデータを作成します。
name=''
description=''
ticker=''
homepage=''
extended=''
cat > $NODE_HOME/pool-metadata.json << EOF
{
"name": "${name}",
"description": "${description}",
"ticker": "${ticker}",
"homepage": "${homepage}",
"extended": "${extended}"
}
EOF
構文チェックをします。
jq . $NODE_HOME/pool-metadata.json
pool-metadata.jsonをgithub(またはご自身のWebサイト)へアップロードします。
ローカルマシンにダウンロードしてgithubへアップロードしてください。
- メタデータファイルのハッシュを計算します。これは
pool-metadata-hash.txtに保存されます。
cd $NODE_HOME
cardano-cli latest stake-pool metadata-hash --pool-metadata-file pool-metadata.json > pool-metadata-hash.txt
- メタデータjsonのURLからメタデータハッシュを取得し、ローカルメタデータハッシュと等しいかを確認します。
metadata_url=""
""←の間にURLを入れてください。 例)metadata_url="https://xxx.github.io/xxx/pool-metadata.json"
cardano-cli latest stake-pool metadata-hash --pool-metadata-file <(curl -s -L --fail "${metadata_url}")
cd $NODE_HOME
echo $(cat pool-metadata-hash.txt)
BPのpool-metadata-hash.txtをエアギャップのcnodeディレクトリにコピーします。
ハッシュが一致しない場合は、アップロードされた.JSONファイルが切り捨てられたか、余分な空白によって問題が発生した可能性があります。.JSONを再度アップロードするか、別のWebホストにアップロードしてください。
- エアギャップにてハッシュ値を出力し、BPと比較します。
cd $NODE_HOME
echo $(cat pool-metadata-hash.txt)
リレーノードの複数設定
エアギャッ プオフラインマシンで適切なドメイン名またはIPアドレスを設定してください。
- DNSベース:DNSレコードごとに1つのエントリ
--single-host-pool-relay <DNS1> \
--pool-relay-port 3001 \
--single-host-pool-relay <DNS2> \
--pool-relay-port 3001 \
- IPベース:IPアドレスごとに1つのエントリ
--pool-relay-ipv4 <your first relay node public IP address> \
--pool-relay-port 3001 \
--pool-relay-ipv4 <your second relay node public IP address> \
--pool-relay-port 3001 \
- ステークプールの登録証明書を作成します。
メタデータURLとリレーノード情報を更新します。
- エアギャップ
ノード管理を簡素化するには、DNSベースのリレーが推奨されます。
つまり、IPが変更されるたびにこの登録証明書トランザクションを再送信する必要はありません。
また、たとえばリレーノードを再配置または再構築する場合、DNS を簡単に更新して新しいIPを指すようにすることができます。
例)固定プールコスト170ADA、プールマージン3%で100ADAを誓約する場合の設定値
100ADAを誓約する場合:--pool-pledge 100000000 \
固定プールコストの最小値は170ADA:--pool-cost 170000000 \
プールマージン:--pool-margin 0.03 \
プールマージンは、パブリックプールの場合大体0~5%が多いと感じます。
- 以下の変数
pledged_adaに誓約するADA数を入れます。
pledged_ada=
pledged_ada=100
pledged_lovelace=$((pledged_ada * 1000000))
echo "${pledged_ada} ADAは、${pledged_lovelace} Lovelaceです。"
- 以下の変数
pool_cost_adaに固定プールコストのADA数を入 れます。
minPoolCost は 170000000 Lovelaceまたは170ADA です。
pool_cost_ada=
pool_cost_ada=170
pool_cost_lovelace=$((pool_cost_ada * 1000000))
echo "${pool_cost_ada} ADAは、${pool_cost_lovelace} Lovelaceです。"
- 以下の変数percentに設定したいマージン数(%)を入れてください。
percent=
例)percent=3
pool_margin=$(echo "scale=10; ${percent} / 100" | bc | sed 's/^\./0./;s/\.0*$//;s/\.\([0-9]*[1-9]\)0*$/.\1/')
echo "Margin: ${pool_margin}"
- githubにアップロードされている
pool-metadata.jsonのURLを""の間に入れてください。
metadata-urlは、64文字未満にする必要があります。URLまたはファイル名を短くしてください。
文字数カウント / ラッコツールズ
metadata_url=""
例)metadata_url="https://xxx.github.io/xxx/pool-metadata.json"
- エアギャップ(Relay1台IP運用)
- エアギャップ(Relay2台IP運用)
- エアギャップ(Relay1台DNS運用)
- エアギャップ(Relay2台DNS運用)
Relay-1のIPを変数relay1_ipv4に代入します。
relay1_ipv4=
cd $NODE_HOME
chmod u+rwx $HOME/cold-keys
cardano-cli latest stake-pool registration-certificate \
--cold-verification-key-file $HOME/cold-keys/node.vkey \
--vrf-verification-key-file vrf.vkey \
--pool-pledge ${pledged_lovelace} \
--pool-cost ${pool_cost_lovelace} \
--pool-margin ${pool_margin} \
--pool-reward-account-verification-key-file stake.vkey \
--pool-owner-stake-verification-key-file stake.vkey \
${NODE_NETWORK} \
--pool-relay-ipv4 ${relay1_ipv4} \
--pool-relay-port 3001 \
--metadata-url ${metadata_url} \
--metadata-hash $(cat pool-metadata-hash.txt) \
--out-file pool.cert
それぞれのRelayのIPを変数に代入します。
Relay-1のIPを変数
relay1_ipv4へ
Relay-2のIPを変数relay2_ipv4へ
relay1_ipv4=
relay2_ipv4=
cd $NODE_HOME
chmod u+rwx $HOME/cold-keys
cardano-cli latest stake-pool registration-certificate \
--cold-verification-key-file $HOME/cold-keys/node.vkey \
--vrf-verification-key-file vrf.vkey \
--pool-pledge ${pledged_lovelace} \
--pool-cost ${pool_cost_lovelace} \
--pool-margin ${pool_margin} \
--pool-reward-account-verification-key-file stake.vkey \
--pool-owner-stake-verification-key-file stake.vkey \
${NODE_NETWORK} \
--pool-relay-ipv4 ${relay1_ipv4} \
--pool-relay-port 3001 \
--pool-relay-ipv4 ${relay2_ipv4} \
--pool-relay-port 3001 \
--metadata-url ${metadata_url} \
--metadata-hash $(cat pool-metadata-hash.txt) \
--out-file pool.cert
Relay-1のDNSを変数relay1_dnsに代入します。
relay1_dns=
cd $NODE_HOME
chmod u+rwx $HOME/cold-keys
cardano-cli latest stake-pool registration-certificate \
--cold-verification-key-file $HOME/cold-keys/node.vkey \
--vrf-verification-key-file vrf.vkey \
--pool-pledge ${pledged_lovelace} \
--pool-cost ${pool_cost_lovelace} \
--pool-margin ${pool_margin} \
--pool-reward-account-verification-key-file stake.vkey \
--pool-owner-stake-verification-key-file stake.vkey \
${NODE_NETWORK} \
--single-host-pool-relay ${relay1_dns} \
--pool-relay-port 3001 \
--metadata-url ${metadata_url} \
--metadata-hash $(cat pool-metadata-hash.txt) \
--out-file pool.cert
それぞれのRelayのDNSを変数に代入します。
Relay-1のDNSを変数
relay1_dnsへ
Relay-2のDNSを変数relay2_dnsへ
relay1_dns=
relay2_dns=
cd $NODE_HOME
chmod u+rwx $HOME/cold-keys
cardano-cli latest stake-pool registration-certificate \
--cold-verification-key-file $HOME/cold-keys/node.vkey \
--vrf-verification-key-file vrf.vkey \
--pool-pledge ${pledged_lovelace} \
--pool-cost ${pool_cost_lovelace} \
--pool-margin ${pool_margin} \
--pool-reward-account-verification-key-file stake.vkey \
--pool-owner-stake-verification-key-file stake.vkey \
${NODE_NETWORK} \
--single-host-pool-relay ${relay1_dns} \
--pool-relay-port 3001 \
--single-host-pool-relay ${relay2_dns} \
--pool-relay-port 3001 \
--metadata-url ${metadata_url} \
--metadata-hash $(cat pool-metadata-hash.txt) \
--out-file pool.cert
- エアギャップ
- ステークプールにステークを誓約します。
cardano-cli latest stake-address stake-delegation-certificate \
--stake-verification-key-file stake.vkey \
--cold-verification-key-file $HOME/cold-keys/node.vkey \
--out-file deleg.cert
エアギャップのpool.certとdeleg.certをBPのcnodeディレクトリにコピーします。
ステークプールの所有者が自分のプールに資金を提供する約束を「誓約」と呼びます。
- 残高は誓約額より大きくなければなりません。
- 誓約金はどこにも移動されません。このガイドの例では、誓約金はステーク プールの所有者キー、具体的には
payment.addrに残ります。 - 誓約を履行できない場合、ブロック生成の機会を逃し、委任者は報酬を逃すことになります。
- あなたの誓約はロックされません。資金を自由に移動できます。
- トランザクションをビルドします。
- BP
TX_FULL=$(
cardano-cli latest query utxo ${NODE_NETWORK} \
--address "$(cat "$NODE_HOME/payment.addr")" \
--out-file /dev/stdout \
| jq -r '
to_entries
| sort_by(.value.value.lovelace) | reverse
| if length > 0 then .[0].key else empty end
'
)
if [ -z "$TX_FULL" ]; then
echo "WARNING: UTxO が見つかりません。payment.addr を確認してください。"
else
TX_HASH=${TX_FULL%%#*}
TX_IX=${TX_FULL##*#}
echo "tx_in: $TX_HASH#$TX_IX"
fi
cd $NODE_HOME
cardano-cli latest transaction build \
--tx-in "$TX_HASH#$TX_IX" \
--change-address $(cat payment.addr) \
--certificate-file pool.cert \
--certificate-file deleg.cert \
--witness-override 3 \
${NODE_NETWORK} \
--out-file tx.raw
BPのtx.rawをエアギャップのcnodeディレクトリにコピーします。
- トランザクションに署名します。
- エアギャップ
cd $NODE_HOME
cardano-cli latest transaction sign \
--tx-body-file tx.raw \
--signing-key-file payment.skey \
--signing-key-file $HOME/cold-keys/node.skey \
--signing-key-file stake.skey \
${NODE_NETWORK} \
--out-file tx.signed
chmod a-rwx $HOME/cold-keys
エアギャップのtx.signedをBPのcnodeディレクトリにコピーします。
- トランザクションを送信します。
- BP
cd $NODE_HOME
cardano-cli latest transaction submit \
--tx-file tx.signed \
${NODE_NETWORK}
Transaction Successfully submitted
一部の変更は 2 つのエポックでのみ有効になります。次のエポック遷移後に、プールの設定が正しいことを確認してください。
以下のコマンドはCPUが50%ほど上がります。
cardano-cli latest query ledger-state \
${NODE_NETWORK} \
--out-file $NODE_HOME/ledger-state.json
jq -r '.stateBefore.esSnapshots.pstakeMark.poolParams["'"$(cat $NODE_HOME/pool-hex.id)"'"] // empty' $NODE_HOME/ledger-state.json
SanchoNet
jq -r '.stateBefore.esLState.delegationState.pstate.stakePools["'"$(cat $NODE_HOME/pool-hex.id)"'"]' $NODE_HOME/ledger-state.json