2020/09/30
[ADA]Cardano Submit APIを起動するDockerfileを作りました
やったこと
cardano-submit-apiは、cardanoのトランザクションデータを受取、Cardano NodeにブロードキャストするWebアプリケーションです。
input-output-hk/cardano-restの中でWebアプリとして開発されています。
以下のドキュメントを参考にしつつ
最新のGithubリリースからcardano-submit-apiを起動するDocker imageを開発しました。
Motivation
inputoutput/cardano-submit-api - Docker Hubも準備されていたのですが、将来的に細かい中身の制御などをしたかったので、
debian
ベースのimageで作ることにしました。
Dockerfile
- cardano-submit-api
がinstallされたdocker imageを作成しました。
FROM debian:stretch-slim
ENV CARDANO_REST_VERSION=2.1.3
# Install dependencies
RUN apt-get update -y
RUN apt-get install -y --no-install-recommends \
sudo \
locales \
git \
curl \
wget \
gnupg \
xz-utils
# avoid ssl error when wget https site
RUN apt-get install -y --no-install-recommends ca-certificates
# install postgresql client
RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - && \
echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" | tee /etc/apt/sources.list.d/postgresql.list && \
apt-get update -y && \
apt-get install -y --no-install-recommends postgresql-client-11
RUN useradd -m -d /home/cardano -s /bin/bash cardano
RUN usermod -a -G sudo cardano
RUN echo " cardano ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers
RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8
WORKDIR /home/cardano
USER cardano
# Install nix
RUN curl -L https://nixos.org/nix/install | sh
ENV PATH=/home/cardano/.nix-profile/bin:${PATH}
ENV NIX_PATH=/home/cardano/.nix-defexpr/channels
ENV NIX_PROFILES=/home/cardano/.nix-profile
ENV NIX_SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
# To improve build speed, it is possible to set up a binary cache maintained by IOHK (this is optional):
# https://github.com/input-output-hk/cardano-node/blob/468f52e5a6a2f18a2a89218a849d702481819f0b/doc/getting-started/building-the-node-using-nix.md#building-under-nix
# https://www.mankier.com/5/nix.conf
ADD nix.conf /home/cardano/.config/nix/
# Download the source code for cardano-wallet and Build and install the wallet
RUN git clone https://github.com/input-output-hk/cardano-rest.git && \
cd cardano-rest && \
git fetch --all --tags && \
git checkout tags/${CARDANO_REST_VERSION} && \
nix-build -A scripts.testnet.submit-api && \
sudo mv result /usr/local/bin/submit-api
起動時の注意点
以下の引数を指定して起動しました
key | value | memo |
---|---|---|
config | コンフィグファイルのpath | |
socket-path | cardano-nodeのsocketのpath | docker volumeを使ってcardano nodeのsocketを共有しました |
port | サーバーの待受ポート番号 |
以下のような感じで、起動します。
submit-api \
--config ${CONFIG_FILE_PATH} \
--socket-path ${CARDANO_NODE_SOCKET_PATH} \
--port ${CARDANO_SUBMIT_API_PORT}
起動後の確認
github.com/kumanote/cardano-serialization-libのライブラリを使って
Cardanoのトランザクションを生成し、バイナリーデータとして、Cardano Submit APIに送信します。
import requests
import cardano_serialization_lib
# 署名付のtransactionを生成します。(hex文字列)
tx_str = cardano_serialization_lib.generate_transaction_from_bip32_enterprise_address(...省略...)
# cardano submit apiのサーバーへPOSTします
url = "http://127.0.0.1:8090/api/submit/tx"
headers = {
"Content-Type": "application/cbor"
}
tx_data = bytes.fromhex(tx_str) # submit apiへtransactionをbinaryデータとして送信します
response = requests.post(url=url, headers=headers, data=tx_data, verify=False)
こちらで、ちゃんとトランザクションが送信でき、ADAの送金ができることを確認できました。
以上になります。
関連する記事
[Python]ハイフンなし電話番号からハイフン付きに復元
Pythonでハイフンなしの日本の電話番号をハイフン付きのものに変換する
tmkmsをdockerでビルドしてローカルのdocker-compose環境で利用してみる
tendermintのkey management systemであるtmkmsをsoftsignモードでテスト環境に導入してみる
[22.0]Local環境でbitcoind@Regtestを動かしてみる
version22.0のbitcoind・Regtestネットワークをdocker-composeを使って動作確認をしました
[Python]BeautifulSoup4でhtmlの解析
BeautifulSoup4というPythonのライブラリを使って、特定のURLのコンテンツを取得し、タイトルや説明文を取得できるようにしました。