メモログ

モナパーティブロックAPI その1


1. はじめに 

この記事は初心者が書いていて、超初心者向けの内容です。
プログラマや詳しい皆さんにはこの記事が、間違ってたら御指摘を頂けるとありがたいです。

さて、自分はMonaparty(モナパーティ)で遊びたいなと思いつつも、何をしたらいいか自分はわからず悶々としていました。
Twitterでそんなつぶやきをしていたところ、ずがーんさんという方に、
モナパーティのAPIページとCounterPartyAPIのリファレンスを教えていただきました。

counterblockAPIにjson形式で投げたら返してくれます!https://t.co/uhV4JYKwqphttps://t.co/RyDXYop0dM

— ずがーん (@zugaaanzubababa) 2017年12月7日

もなぱAPI
CounterPartyのAPIリファレンス

 

本来、これだけ情報があれば自在にこなせるものなんだと思うのですが、、、、
自分はこれをみてパッと理解できるほど利口ではなかったので、訳が分からず。。。
そこで、APIの使い方について、噛み下して自分が確認しやすい記事にしておこう思います。

なお、上記のずがーんさんも以下のモナパーティAPIの記事も書いていらっしゃいます。
http://blog.utyuu.space/2017/12/09/monapartyasobu/

 


2. MonaPartyとは?

モナパーティ(略称「もなぱ!!」らしい)は、モナコイン版のカウンターパーティです。
ではカウンターパーティとは何かというと、ビットコインのブロックチェーンを利用して独自トークンを作れる仕組みです。
つまり、モナパーティは「モナコインのブロックチェーンを使って独自トークンを作れる仕組み」なんです。

トークンはモナコインのブロックチェーン内では一意であり、
そのやり取りはモナコイン同様にブロックチェーンに刻まれるので、不正がされにくいものです。
・独自通貨
・商店街やお店の専用ポイント
みたいなものを発行ができると考えると想像しやすいかもしれません。

勿論上記の例は、既存の発想でしかありません。
面白い何かをそこから何を生み出してどんなサービスやどんなことをするかは、これからみんなで競って考えるところなのかなと思います。

 


3. MonaParty APIの噛み下し(モナブロックAPIその1)

この記事の本題です!

APIとは、定型の形で情報を送ってあげると、対象サービスの処理をしたり、応答を返してくれる仕組みのようなものです。
これを使って、サービスを作ったりして面白いことができるわけです、ありがたいです。

モナパーティにはAPIがたくさん実装されています。
そして前述の通り、モナパーティはカウンターパーティのモナコイン版なので、
APIの構文やパラメータの多くはカウンターパーティと同じです。

カウンターブロックAPIの説明は以下にあります。
https://counterparty.io/docs/counterblock_api/#counterblock-api

この記事では、モナブロックAPI(半分くらい)について記述します。
モナブロックAPI以外にモナパーティサーバーAPI(というかそっちがメイン?)は後日記事する予定、、、

 

@APIのURL

APIのアクセスするURLの共通部分は以下のようになります

テストネット: https://wallet-testnet.monaparty.me/_api
→本物のモナコインではなくてテスト用のブロックチェーンのモナパーティAPIのためのURL。
※こっちに本物のコインを送ってしまったらGOXするから気をつけて!!

メインネット: https://wallet.monaparty.me/_api

→本番ネット。本物のモナコインのブロックチェーンのモナパーティAPIのためのURL

上のURLに対して、POSTという送信方法で定型(JSON)の情報を送ってあげることで、色々な情報が取得できます!!

 

@モナブロックAPIの基本構文

さて、APIには「決まった送り方」みたいなものがあります。

モナブロックAPIもAPIなので、下のような決まった送り方の構文があります。

HTTPメソッド: POST
HTTPヘッダー: Content-Type:application/json
body: { "jsonrpc": "2.0", "id": 0, "method": "APIのメソッド名" (,"params":{"パラメータ名":"パラメーターの値",,,})* }

*()内はパラメータが必要な場合

単純にモナブロックAPI実行する場合は、種類によって変更するのは「body」のAPIのメソッド名とパラメーターだけです。
以下にモナブロックAPIのbodyの例とその内容の説明(自分が把握できた範囲で)をまとめておきます。

JSやcurl,PHPなどでのAPI構文を確認するにはこのpostmanのリンクを見たほうが早いかも。
*postmanのAPI表は自分が入力したものです。

*説明は英語が苦手な人が英語リファレンスを読んで書いたのでなんとなくです。
 間違ってたらスミマセンm(__)m。
 詳しくはCounterPartyの公式リファレンスを読むこと推奨です。

 

 

@core API : モナコインのブロックチェーン本体の情報を取ってくるためのAPI

get_messagefeed_messages_by_index: 取引IDからモナパーティでのメッセージの詳細を出す
{ "jsonrpc": "2.0", "id": 0, "method": "get_messagefeed_messages_by_index","params":{"message_indexes":[(メッセージ番号),(メッセージ番号複数可)]}}

get_chain_block_height**: 現在の最新ブロックチェーン番号を返す
{ "jsonrpc": "2.0", "id": 0, "method": "get_chain_block_height" }

get_insight_block_info: block_hashの指定に失敗しているので不明

get_chain_address_info: 指定したアドレスの情報が返る
{ "jsonrpc": "2.0", "id": 0, "method": "get_chain_address_info","params":{"addresses":["(モナパーティのアドレス)","(モナパーティのアドレス複数可能)"],"with_uxtos":"True","with_last_txn_hashes":"4"}}

get_chain_txns_status: 指定したtxn_hashesの情報が返る
{ "jsonrpc": "2.0", "id": 0, "method": "get_chain_txns_status","params":{"txn_hashes":["(txn_hashe)","(txn_hashe複数可)"]}}

get_last_n_messages: 最近のメッセージを指定数返す
{ "jsonrpc": "2.0", "id": 0, "method": "get_last_n_messages","params":{"count":100}}

get_pubkey_for_address: 指定アドレスの公開鍵を返す
{ "jsonrpc": "2.0", "id": 0, "method": "get_pubkey_for_address","params":{"address":"(モナパーティアドレス)"}}

get_script_pub_key: vout_indexが何かわかっていないので不明

get_raw_transactions: 指定アドレスの取引履歴が指定数返す
{ "jsonrpc": "2.0", "id": 0, "method": "get_raw_transactions","params":{"address":"(モナパーティアドレス)", "limit":500}}

proxy_to_counterpartyd: サブAPIみたいなものを呼ぶためのものみたいだがドキュメントリンクが途絶えている。。。

 

 

@assets Module API : トークンの情報を取ってくるためのAPI

get_normalized_balances: 指定アドレスの保有資産を返す
{ "jsonrpc": "2.0", "id": 0, "method": "get_normalized_balances","params":{"addresses":["(モナパーティアドレス)","(モナパーティアドレス複数可)"]}}

get_escrowed_balances: 取引に出している資産の残高を出す
{ "jsonrpc": "2.0", "id": 0, "method": "get_escrowed_balances","params":{"addresses":["(モナパーティアドレス)","(モナパーティアドレス複数可)"]}}

get_assets_info: 指定トークンの情報を返す
{ "jsonrpc": "2.0", "id": 0, "method": "get_assets_info","params":{"assetsList":["(トークン名)","(トークン名複数指定可)"]} }

get_base_quote_asset**: トークンペアを指定して資産見積もりを返すようだが、使い方は?
{ "jsonrpc": "2.0", "id": 0, "method": "get_base_quote_asset","params":{"asset1":"(トークン名1)","asset2":"(トークン名2)"}}

get_owned_assets: 指定アドレスがオーナーになっているトークン情報を返す
{ "jsonrpc": "2.0", "id": 0, "method": "get_owned_assets","params":{"addresses":["(モナパーティアドレス)"]}}

get_asset_pair_market_info**: 指定したトークンの組み合わせのマーケットでの情報を返す
{ "jsonrpc": "2.0", "id": 0,"method":"get_asset_pair_market_info","params":{"asset1":"(トークン名1)","asset2":"(トークン名2)","limit":50}}

get_asset_extended_info: 指定トークンの拡張トークンデータを返す
{ "jsonrpc": "2.0", "id": 0, "method": "get_asset_extended_info","params":{"asset":"(トークン名)"}}

get_asset_history: 指定トークンの履歴を返す
{ "jsonrpc": "2.0", "id": 0, "method": "get_asset_history","params":{"asset":"(トークン名)","reverse":"False"}}

get_balance_history: 指定アドレスの指定トークンの資産履歴を返す
{ "jsonrpc": "2.0", "id": 0, "method": "get_balance_history","params":{"asset":"(トークン名)","addresses":["(モナパーティアドレス)","(モナパーティアドレス複数可)"],"normalize":"True"}}

 

 

@dex Moduleb : トークン取引の情報を取ってくるAPI

get_market_price_summary**: トークンペアの取引価格の履歴を返す
{ "jsonrpc":"2.0", "id": 0, "method": "get_normalized_balances","params":{"addresses":["(モナパーティアドレス)","(モナパーティアドレス複数可)"]}}

get_market_cap_history: トークンの時価総額の履歴を返す
{ "jsonrpc": "2.0", "id": 0, "method": "get_market_cap_history"}

get_market_info: トークンの取引の情報を返す
{ "jsonrpc": "2.0", "id": 0, "method": "get_market_info","params":{"assets":["(トークン名)","(トークン名複数指定可)"]}}

get_market_info_leaderboard: 取引成績表を返す
{ "jsonrpc": "2.0", "id": 0, "method": "get_market_info_leaderboard","params":{"limit":100}}

get_market_price_history: トークンペアの価格履歴を返す
{ "jsonrpc": "2.0", "id": 0, "method": "get_market_price_history","params":{"asset1":"(トークン名1)","asset2":"(トークン名2)","as_dict":"False"}}

get_trade_history: 取引履歴を返す
{ "jsonrpc": "2.0", "id": 0, "method": "get_trade_history","params":{"limit":50}}

get_order_book_simple**: 注文状況をシンプルに返す
{ "jsonrpc": "2.0", "id": 0, "method": "get_order_book_simple","params":{"asset1":"(トークン名1)","asset2":"(トークン名2)"}}

get_order_book_buysell**: 注文状況を返す
{ "jsonrpc": "2.0", "id": 0, "method": "get_order_book_buysell","params":{"buy_asset":"(トークン名1)","sell_asset":"(トークン名2)"}}

get_users_pairs: 指定アドレスが持っている資産の販売価格を返す
{ "jsonrpc": "2.0", "id": 0, "method": "get_users_pairs","params":{"addresses":["(モナパーティアドレス)","(モナパーティアドレス複数可)"],"max_pairs":12}}

get_market_orders: 指定アドレスの指定トークンペアの注文を返す?
{ "jsonrpc": "2.0", "id": 0, "method": "get_market_orders","params":{"asset1":"(トークン名1)","asset2":"(トークン名2)","addresses":["(モナパーティアドレス)","(モナパーティアドレス複数可)"],"min_fee_provided":0.95, "max_fee_required":0.95}}

get_market_trades: 指定アドレスの指定トークンペアの約定済み注文を返す?
{ "jsonrpc": "2.0", "id": 0, "method": "get_market_trades","params":{"asset1":"(トークン名1)","asset2":"(トークン名2)","addresses":["(モナパーティアドレス)","(モナパーティアドレス複数可)"],"limit":100}}

get_markets_list: 注文可能な取引を返す
{ "jsonrpc": "2.0", "id": 0, "method": "get_markets_list"}

get_market_details: 指定したトークンペアの取引情報を返す
{ "jsonrpc": "2.0", "id": 0, "method": "get_market_details","params":{"asset1":"(トークン名1)","asset2":"(トークン名2)","min_fee_provided":0.95,"max_fee_required":0.95}}

**マーク付きのものは廃止予定のものらしい

 


4. 終わりに

初めて技術系(そんな大層でもないケド)のブログみたいなものを書きました!
思ったより思いっきり時間かかる上に、内容がしょぼいw
でもこのAPIでトークンの基礎情報は取れるから発行数のグラフ書いたりとか、名前リストを作ったりはできるよ!


今後もだんだん自分で納得できる記事を書けるように続けようと思います。
P.S.テーブルってMonappyのメモログにかけないのでしょうか?

 


☆APIをテストしたり見てみるツールについて

APIを確認するツールは多々ありますが、自分はこの記事を書くときにAPIを試すためにPostmanを使いました。
何が返ってくるのかとか、構文がどうなのかとか、確認に便利です。

  • 公開日時:2017/12/15 01:47
  • 543 view
  • +0.61936914 MONA

スポンサーリンク

コメント


※ログインすることで、投げMONAも送信可能になります。 → Login

@gottsu

参考になりました!!

2018/01/13 02:22:25

@TOKITSUKAZE

> @rawbacon
教えていただいてありがとうございました!

> @cryptcoin_junkey
アドベントカレンダー?という概念を知らなかったのですが、紐付けてみました。
これで大丈夫でしょうか?

> @Mona_ample_1237
ありがとうございます!

2017/12/15 14:37:37

@Mona_ample_1237

いいですね!

2017/12/15 11:33:16

@cryptcoin_junkey

この記事には
たった一つだけ間違いがあるっぽい

https://qiita.com/advent-calendar/2017/counterparty-monaparty に参加していないこと
(何卒宜しくお願い申し上げます)

2017/12/15 06:40:54

@rawbacon

わあいすごいです!

2017/12/15 02:14:37

モナコインとゼニーとコトを掘ってみてる。 位置アプリ作るよ。
その他の記事一覧 アドレス帳に追加する
PR