cardano-submit-api の変更点

cardano-submit-api の変更点


#author("2025-05-05T21:31:29+00:00","","")
#author("2025-05-16T14:30:59+00:00","","")
* cardano-submit-api [#cf2de427]

新たに [[tx-submit-api>tx-submit-api]] を試してみました。''[[tx-submit-api]]のほうが設定項目が少なくお勧めです!''

cardano-submit-apiを試す機会があったので、リレーノードにインストールする手順をメモしておきたいと思います。



ダウンロードフォルダを作成する
 mkdir -p $HOME/git/cardano-submit-api
 cd $HOME/git/cardano-submit-api


cardano-submit-apiバイナリをダウンロードする
 wget https://github.com/IntersectMBO/cardano-node/releases/download/10.2.1/cardano-node-10.2.1-linux.tar.gz


アーカイブを解凍し、解凍されたディレクトリに移動する
 tar xvf cardano-node-10.2.1-linux.tar.gz

/usr/local/binディレクトリに配置する
 sudo cp $(find $HOME/git/cardano-submit-api -type f -name "cardano-submit-api") /usr/local/bin/cardano-submit-api


起動スクリプトを作成する
 cat > $NODE_HOME/startCardanoSubmitAPI.sh << EOF
 #!/bin/bash
 DIRECTORY="${NODE_HOME}"
 PORT=8091
 HOST="127.0.0.1"
 CONFIG_PATH="\${DIRECTORY}/mainnet-config.json"
 SOCKET_PATH="\${DIRECTORY}/db/socket"
 /usr/local/bin/cardano-submit-api --config \${CONFIG_PATH} --socket-path \${SOCKET_PATH} --listen-address \${HOST} --port \${PORT}
 EOF


常時起動させるためのサービスファイルを作成する
 cat > $NODE_HOME/service/cardano-submit-api.service << EOF
 # file: /etc/systemd/system/cardano-submit-api.service
 
 [Unit]
 Description=Cardano Submit API
 After=cardano-node.service
 
 [Service]
 Type=simple
 Restart=always
 RestartSec=5
 User=cardano
 WorkingDirectory=${NODE_HOME}
 ExecStart=/bin/bash -c '${NODE_HOME}/startCardanoSubmitAPI.sh'
 KillSignal=SIGINT
 RestartKillSignal=SIGINT
 SuccessExitStatus=143
 TimeoutStopSec=300
 StandardOutput=syslog
 StandardError=syslog
 SyslogIdentifier=cardano-wallet
 
 [Install]
 WantedBy=cardano-node.service
 EOF

mainnet-config.jsonに以下の2行を追記する(TraceChainDbの下辺りが良いらしいです)
  "EnableLogging": true,
  "EnableLogMetrics": false,


起動スクリプトに実行権限を付与する
 chmod +x $NODE_HOME/startCardanoSubmitAPI.sh


サービスファイルを規定のディレクトリに配置し、パーミッションを設定する
 sudo cp $NODE_HOME/service/cardano-submit-api.service /etc/systemd/system/cardano-submit-api.service
 sudo chmod 644 /etc/systemd/system/cardano-submit-api.service


サービスファイルを再読み込みし、cardano-submit-apiサービスを有効化する
 sudo systemctl daemon-reload
 sudo systemctl enable cardano-submit-api.service


cardano-walletサービスを開始する
 sudo systemctl start cardano-submit-api.service


cardano-walletサービスの起動状態を確認する
 sudo systemctl status cardano-submit-api.service

> cardano-wallet[14009]: [cardano-tx-submit:Info:10] [2025-04-20 05:22:30.78 UTC] Running server on 127.0.0.1:8091


** 外部からAPIを叩けるようにする [#b51d92c6]

nginxリバースプロキシの設定(/etc/nginx/sites-available/submit-api)
 server {
     listen 443;
     server_name submit-api.example.com;
 
     location /submit/ {
         proxy_pass http://127.0.0.1:8091/api/submit/;
         proxy_set_header Host $host;
 
         add_header 'Access-Control-Allow-Origin' '*';
         add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
         add_header 'Access-Control-Allow-Headers' '*';
 
         if ($request_method = OPTIONS) {
             add_header 'Access-Control-Max-Age' 1728000;
             add_header 'Content-Type' 'text/plain; charset=utf-8';
             add_header 'Content-Length' 0;
             return 204;
         }
 
         auth_basic "Restricted";
         auth_basic_user_file /etc/nginx/.htpasswd;
     }
 }


Basic認証の設定
 sudo apt install apache2-utils

 sudo htpasswd -c /etc/nginx/.htpasswd myuser


リバースプロキシ有効化
 sudo ln -s /etc/nginx/sites-available/submit-api /etc/nginx/sites-enabled/

 sudo systemctl reload nginx


HTTPS化 (Let's Encrypt)
 sudo apt install certbot python3-certbot-nginx

 sudo certbot --nginx -d submit-api.example.com


ファイアーウォールの設定(ufw)
 sudo ufw allow 443


テスト(外部クライアントからtx.signedを送信)
 curl -X POST \
  -u myuser:mypassword \
  -H "Content-Type: application/cbor" \
  --data-binary @"tx.signed" \
  https://submit-api.example.com/submit/tx


eternlウォレットの場合の設定
設定→アプリ設定→カスタム送信エンドポイント→エンドポイントを追加 で以下を追加する
 https://submit-api.example.com/submit/tx

> 何故かトランザクション送信時にエラーが発生するが、送信は成功している模様。
> 要調査

* ライター [#r8e61572]

> DAISUKE

  編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS