Monapartyで何か作ってみる備忘録的な

Monapartyで遊びたい!

ということでこんなの作りました。

TOKENBATTLE
他人とトークンを戦わせることができます。既に最強に近いデッキを組んでる方も……!?

 

自分はプログラマーではないので知識のパッチワークで作ったのですが、他の方が同じものを調べなくていいように備忘録を残したいと思います。

作っていた際の流れを辿るだけです。使用言語はPHPです。

繰り返しますがプログラムに明るくないのでアドバイスなど是非是非お待ちしております。

1.Counterblock API

Monaparty 用の公開 APIサーバはありませんか?

Counterwallet-mona が用いている下記 API エンドポイントを用いて Counterblock API のアクセスを行えます。

Mainnet https://wallet.monaparty.me/_api

monaco-ex support

というのを見つけました。APIを使えばサーバーから何か情報を持ってこれるようです。

そしてCounterblock APIの中身がこちら。ブロックチェーンを覗いて取引記録やトークンを詳しく見られるようです。

Counterblock API

ちなみにCounterparty APIというのもありまして、こちらではトークンの送信などもできます。が、現在使えません。

2. JSON

Counterblock APIを読んでいると、「JSON-encoded data」で送ってくれと言われます。

Counterparty APIの方を見ると、「With PHP, you use the JsonRPC library.」と書いてあり、JsonRPC Clientを使うとスマートに行けそうだったのですが、単純なプログラムなので自分でコマンドを送ればいいかと無視しました。(勉強したら書き換えます)

その下を見るとcurlの使い方が書いてあったのでまずはここの

curl -X POST http://127.0.0.1:4000/api/ --user rpc:$PASSWORD -H 'Content-Type: application/json; charset=UTF-8' -H 'Accept: application/json, text/javascript' --data-binary '{ "jsonrpc": "2.0", "id": 0, "method": "get_running_info" }'

をちょっと書き換えて使ってみることにします。

curl -X POST https://wallet.monaparty.me/_api -H 'Content-Type: application/json; charset=UTF-8' -H 'Accept: application/json, text/javascript' --data-binary '{ "jsonrpc": "2.0", "id": 0, "method": "get_chain_block_height" }'

を入れてみると(get_chain_block_heightは現在の生成ブロック数)、{"jsonrpc": "2.0", "id": 0, "result": 1183657}が返ってきました。

Monacoin Chart で確かめたところ、合っていそうです。

この{ "jsonrpc": "2.0", "id": 0, "method": "get_chain_block_height" }の部分がJSONで書かれていて、JSONは「データを表現するための記法」です。(非エンジニアに贈る「具体例でさらっと学ぶJSON」から引用)

この形で投げたらよさそうなのでPHPに組み込みます。

3.json_encode、json_decode

以下の記事をなるほどなるほどと読みながら、PHPで配列を作ってjson_encodeでJSON形式にして帰ってきた結果をjson_decodeで読みとるプログラムを作りました。

参考

【PHP入門】JSONのデータを処理する方法侍エンジニア塾

以下のように書き換えました。

//配列を作成
$monapa_array = [
'jsonrpc' => '2.0', 'id' => '0',
'method' => 'get_assets_info',
'params'=> ['assetsList' => ['TOTHEMOON']] ];

 

//オプションの設定
curl_setopt($ch, CURLOPT_URL, 'https://wallet.monaparty.me/_api');

Counterblock APIでこの関数はこのように定義されているので、見比べてもらえば大体どのような形で配列を組めばいいか察していただけると思います。ちなみに、トークン名は[]で囲む必要があるようです。

get_assets_info(assetsList)

Returns information on the specified assets.

  • param assetsList: A list of one or more asset names.
  • return: A list of dicts, one dict for each asset provided in assetsList:

4.仕上げる

後は自分が思う機能を入れて仕上げれば完成です!

 

この記事に際しまして、@cryptcoin-junkey様にQiitaで紹介していただくとともに、訂正をいただきました。感謝申し上げます。

一箇所だけ誤解があるようでした。
現在 Monaparty 用で公開されている counterpartyd は無いものの、Counterblock API に proxy_to_counterpartyd というメソッドがあり、Counterparty API を間接的に呼び出せます。

ドキュメントによると proxy_to_counterpartyd は将来削除予定となっているのですが、公式ウォレットである Counterwallet でも用いられており、しばらくは安泰と思われます。

ということでCounterparty APIも使用可能なようです。

 

1 Comment

コメントを残す

メールアドレスが公開されることはありません。