@マナです。
NEM(XEM)決済導入店さん向けのエントリーです。
NEM(XEM)のモバイルウォレットを検証していた時に「あ、これは決済導入店舗さんは注意したほうが良い」と思ったことがあるので書いておきます。
NEM(XEM)支払いをしてもらって着金確認をする際、現在のNEMウォレットの仕様ではunconfirmedの状態では着金完了と判断しないようにしましょう。
@Daokaさんと@みなりんさんもご指摘されていました。
引用して貼り付けておきます。
uncomfirmed は信頼してはいけない
自分も何件か実店舗でxem決済を行いましたが、unconfirmedの状態で決済を完了したみなすケースがいくつかありました。オペレーションをスムーズに回したいというのもあるとは思いますが、unconfirmedの状態では自分のアドレスに残高は反映されておらず、またマルチシグアドレスで署名が集まらずに入金が取り消されるリスクがあります。
※12/21 水無 凛@#みなりん*さんの指摘により追記
via:実店舗でXEM決済を導入する方法
支払者がマルチシグウォレットからの送金だった場合、マルチシグ参加者全員が署名しないと送金しない仕組みになっています。
そして、現在スマホやタブレットで利用できるNEMウォレットの仕様だと、マルチシグウォレットの署名権を持つ人が一人でも送金のトランザクションを作った場合、受取者のウォレットにNEMの数量と「unconfirmed」が表示されます。
ところが、受取者のウォレットではこのトランザクションがマルチシグなのかどうか分かりません。
もしunconfirmedの状態で着金と判断してお客さんを帰してしまった場合、トランザクションがキャンセルされてNEM(XEM)が入金されなくなる可能性があります。
どういうことか、画像付きで具体的に説明しておきます。
NEMのマルチシグウォレットでお店に支払う場合
私が送金決定に2人以上の署名が必要なマルチシグウォレットを持っていたとして、NEM決済導入店で支払うNGモデルケースです。
NEM支払いのNGモデルケース
NEM決済導入店:
「お会計は1XEMになりまーす。こちらが支払先のQRコードです。」
マナ:
「わかりました。スマホでじゃぁQRコードを読み込んでっと・・・」
マナ:
「よし、1XEM送信っと。」
NEM決済導入店:
「トランザクション確認できました。ありがとうございましたー!」
・・・
はい、これNGです。
私はマルチシグウォレットから送金したので、もう1つのアカウントから署名しないと、お店側にNEM(XEM)は送金されません。
↑このように、片方のアカウントでトランザクションを作ると、もう1つのアカウントには「マルチシグアカウントから送金のトランザクションが作成されたので送金しても良いですか?」という確認の通知がウォレットに届きます。
送金決定に2人以上の署名が必要なので、もう1つのNEMウォレットアカウントから「確認」をタップしないと、送金されないのです。
もし「確認」をタップしなかった場合は?
もし確認されずに放置されれば、お店側は代金として受け取れるはずのNEM(XEM)を受け取れなくなってしまいます。
スマホ・タブレットのウォレットからだとマルチシグからの送金かどうか分からない
困ったことに、現在のスマホ・タブレットのNEMウォレットでは、unconfirmed状態では受取者側がマルチシグウォレットから送金されているかを確認することができません。
ですので、unconfirmedが消えるまでお客さんに待ってもらう必要があります。
↑着金完了した場合はUnconfirmedの枠から外れます。
通常だと着金完了までに約1分間必要になります。その間お客さんをレジで待たせておくのは微妙でしょうから、何か工夫が必要になりそうですね。
PCのNanoWalletなら、マルチシグかどうか分かる
PCのNanoWalletではどうでしょうか。同じくマルチシグウォレットからトランザクションを作ったところ、
受け取り側のウォレットに「未確認」のトランザクションが表示されました。
ですが、トランザクションの詳細をチェックできるので、送金者がマルチシグを使っているかどうか判別できます。マルチシグ手数料がかかっていたり、「複数署名を要求」の表示が出ていればマルチシグです。
まとめ
もしUnconfirmedの状態でも着金と判断して、支払い時の流れをスムーズにしたいのであれば、PCのNanoWalletを使った方が良いかもしれませんね。
スマホ・タブレットのNEMウォレットでもUnconfirmedのトランザクションがマルチシグかどうか分かれば、決済導入店舗側としては嬉しいと思います。
または、マルチシグからの送金した場合、全員が署名するまで受け取り側のウォレットにはUnconfirmed(未確認)の表示はしない仕様にするか、でしょうか。(開発者さん、検討してみてはいかがでしょうか)
以上、NEM決済を導入されているお店さんはご注意してください。
ではでは。
※BTC/BCHウォレットのマルチシグだと、全員が署名しない限り、受け取り側のウォレットにはトランザクションが表示されないのでご安心を。
このブログを書いている人

@マナです。貯金1000万円で2017年から仮想通貨(暗号通貨)売買を開始。座右の銘「外そう、自分のリミッター」。