目的
従来のMonacardは card.mona.jp の管理者による中央集権的なサービスです。カード情報や画像データが消える可能性があります。
Monacard2.0は中央集権からの脱却とデータの分散化を目指して策定されました。
概要
画像の保存先をimgurからIPFSに変更することにより分散します。カード情報を card.mona.jp への登録からトークンのdescriptionへの書き込みへ変更します。descriptionへの書き込みはモナコインチェーンへの書き込みなのでデータが消失しません。
descriptionの書き込み形式
書き込みはJSON形式で行います。
{
"monacard": {
"name": "MONACARD2.0",
"owner": "モナカード公式",
"desc": "このカードは新しい方式で登録されました。",
"tag": "公式,test,2.0",
"cid": "bafkrmibgvyv6gr4rgnscfffllralzdh3fcfsqoqawcmfnlu4heel3rwu4i",
"ver": "2"
}
}
- name: カード名(必須)
- owner: 発行者名(必須)
- desc: カード説明(必須)
- tag: タグ(複数指定の場合はカンマ区切り)
- cid: IPFSへアップロードした画像のCID(必須)(sha3-256推奨)
- ver: "2"を固定で入力(必須)
他のアプリの情報をdescriptionに書き込みたい場合は次のように追加してください。
{
"monacard": {
"name": "MONACARD2.0",
"owner": "モナカード公式",
"desc": "このカードは新しい方式で登録されました。",
"tag": "公式,test,2.0",
"cid": "bafkrmibgvyv6gr4rgnscfffllralzdh3fcfsqoqawcmfnlu4heel3rwu4i",
"ver": "2"
},
"monamonbattle(例)": {
"hp": 500,
"attack": 200,
"type": "kusa"
}
}
実際に書き込む際には、スペースや改行がない以下のような形式にすると手数料の削減になるのでおすすめです。スペースや改行があってもJSONが正しければ問題ありません。
{"monacard":{"name":"MONACARD2.0","owner":"モナカード公式","desc":"このカードは新しい方式で登録されました。","tag":"公式,test,2.0","cid":"bafkrmibgvyv6gr4rgnscfffllralzdh3fcfsqoqawcmfnlu4heel3rwu4i","ver":"2"},"monamonbattle":{"hp":500,"attack":200,"type":"kusa"}}
IPFSへの画像アップロード方法
「Monacard2.0画像準拠サーバーの仕様」を満たしたサーバーのAPIからアップロードできます。 このサーバーから実際にアップロードする方法の詳細については card.mona.jpの「API」のページを参照してください。
画像の仕様
画像は 横560px縦800px または 横840px縦1200px, 横1260px縦1800px。PNGまたはJPEGまたはGIF。10MB(1024*1024*10byte)未満です。
トークンの仕様
小数点以下に分割できない整数トークンであること。
カード登録と更新方法
新規発行したトークンまたは発行済みのトークンのdescriptionに上記のJSONを書き込みます。上記の仕様を満たしていればMonacard2.0の登録が完了します。 情報の変更が必要な場合は新しいJSONをdescriptionに書き込むことで更新が完了します。従来の方式でモナカードに登録されている場合でもMonacard2.0の仕様を満たした場合はMonacard2.0として扱います。
Monacard2.0への登録は単にJSONを書き込むことで完了しますが、実際には card.mona.jp のようなサイトが収集しAPI化された情報が使われる可能性が高いです。そのため、アプリへの反映は card.mona.jp などの収集完了が前提になる場合があります。
改訂履歴
2021/11/23: GIFファイルを追加しました。
2021/11/23: 小数点以下に分割できるトークンについて記載が漏れていたので追記しました。