Mpurseを試すためだけのページ

デベロッパーツールを使って、JavaScriptでMpurseを利用するのがいかに簡単であるかをみんなで確認するためのページです。PC版Charomeを想定していますが、モダンなPCブラウザなら大抵は同じことができるでしょう。スマホは厳しい。

Mpurseの動き

Mpurseはブラウザのプラグインの形で提供されるモナコイン/Monapartyのウォレットです。Mpurseはブラウザで条件を満たすページ(※)が開かれたときに、そのページのグローバルオブジェクト window に window.mpurse を追加します。サイトのJavaScriptから window.mpurse が持っている getAddress, sendAsset, ... などのメソッドが利用できます。

※ブラウザにも依るかもですが、例えばChromeなら「プラグインの設定でMpurseによるアクセスが許可されているページ」かつ「HTTPSでアクセスしているページ」である必要があります。

なぜこんなページが存在するのか

セキュリティを解さない人間は暗号通貨の世界では全てを失うことになります。ブラウザのプラグインを利用するときは以下のことを認識しましょう。

つまりセンシティブなデータを取り扱うMpurseは、必要のないサイトで有効にするべきではありません。ついでにいうなら、センシティブなデータを取り扱うサイト(モナパレットとか、Tiproid Stationとか)で必要のないプラグインを有効にするのも危険です。プラグインのアクセス許可設定は常に必要最低限に絞っておくべき。

このページはJavaScriptどころか画像もCSSも使っていないので、悪意のあるコードの含まれようがありません。そしてHTTPSで提供されている。つまり、安心してMpurseが試せるということです。(と言われて確認もせずにホイホイと試すようではNGです。HTMLソースを確認しましょう。わざわざこのようなページを用意してまでMpurseを試させようとしているのだから嘘をついていてもおかしくない。いや、嘘をついていて当然だと考えるべきです。)

試す

前置きが長い。それではデベロッパーツールを開きましょう。慣れている人はショートカットで、慣れていない人はメニューのどこかにあるのを探してください。わからなければこちら参考に: ブラウザー開発者ツールとは?

デベロッパーツールにJavaScriptのコンソールがあると思います。その場で打ち込めば簡単にコードが試せるというスグレモノです。まずはこれを打ってみましょう。

window.mpurse

Mpurseが有効になっていたらなんかごちゃっと出ると思います。undefinedしか出なかった場合はMpurseがこのページで有効になっていないので、有効にしてきてください。

window.mpurse さえあれば公式の説明書に載っているメソッドが試し放題です。Mpurseでは秘密鍵を使うアクションについては確認ダイアログを出してくれるので、こわがらずにいろいろやってみましょう。

アドレスを取得する

await window.mpurse.getAddress()

モナコインを送る

sendAssetやsendRawTransactionはチェーンへのブロードキャストまで勝手に仲介してくれるので便利です。宛先アドレスを書き換えないと私への寄付になってしまいますが、もちろん書き換えなくてもいいのよ。

await window.mpurse.sendAsset('MRgURnJZjSqCqdrHbAsonzkQAc4Sam68Dz', 'MONA', 1)

メッセージに署名する

await window.mpurse.signMessage('宇宙からきました')

モナコイン残高などを取得する(Counterblock APIを利用)

ブロックに刻まれている情報はMpurse単体で算出できるものではないので、Counterparty API とか Counterblock API とか Mpchain API とかのチカラを借りる必要があります。Mpurseにはこれらに簡単にアクセスできるメソッドまで用意されています。

await window.mpurse.getAddress().then(addr => window.mpurse.counterBlock('get_chain_address_info', { addresses: [addr] }))

Monapartyトークンの残高を取得する(Mpchain APIを利用)

await window.mpurse.getAddress().then(addr => window.mpurse.mpchain('balances', { address: addr }))