モナレッジというサービスを開発しました
モナレッジはqiitaやzennのようにmarkdownで記事を書いて投稿できるサービスです。
一番の特徴は、良い記事を書いた著者に対してMONACOINを投げつけることができることです。将来的にはmonapartyを使ったトークンとかも扱えるようにしたいと思っています。
開発経緯
qiitaで記事を書いてくださっている皆さんの情報発信のありがたさは常日頃感じていますが、その感謝を送る方法として「いいね」や「シェア」くらいしかできないことにもどかしさを感じていました。
インターネット上でお金を扱う方法として、bitcoinに代表されるような、公開鍵暗号の方式を利用したUTXO構造でお金を動かすというのは結構よくできた仕組みだなぁと思っています(もちろん、すべて自己責任なのでGOXとかしたときとかに何もすることができないデメリットもありますが)。
とりわけ、投げ銭などの使い道っていうことだと、モナコインとかの方がクレカ登録して投げ銭とかよりもお気軽だし、有事の際のリスクも低いんじゃないのかなぁとおもっています。
ちょっと動かす用のウォレットを作成して(これはめっちゃ簡単にできる。BIP32以降の仕組みによって、リカバリーフレーズさえちゃんと管理すれば、複数の秘密鍵の管理もそんなに苦ではない)、そこに数MONA入れたじょうたいで投げ銭をするというのも良いだろうし、
まだMONAを持っていない人は、bitbankとかの取引所で購入するか、記事を書いてMONAをもらったりするのが良いかも。
開発の思い
僕が、いわゆる暗号資産にかんするところで違和感を感じているのが、投機の対象にばかり注目が集まりがちなところです。
まあ、ボラティリティが大きくなるような仕組みなのでその手のものが好きな人は好きなんでしょうが、個人的にはこの技術を使ってどんな新しいサービスができるのかなぁというところの方が気になるところではあります。
このサービスではサインアップの際に、パスワードが必要ありません。どうしてそんなことができるかというとデジタル署名を利用しているからです。
このサービスではログインをする代わりに、記事の投稿時などユーザの識別が必要なタイミングではデジタル署名を求めるようにしています。
デジタル署名に関してわからない方は、これを機に公開鍵暗号などと合わせて一度勉強してみてください。暗号資産を扱う上で知っておいた方がいいと思います。
ユーザ認証のタイミングで署名を求め、バックエンドで署名を検証することでユーザを認証する仕組みをとっています。
そんなこんなでweb3.0っぽいけど、おそらくピュアな3.0じゃないので2.5くらいなのかな?
機能
記事を書く人はmdで記事を書けます
読んだ人は、良いなと思った記事に投げ銭をすることができます。
開発技術
ここからはエンジニアが興味ありそうな部分
- フロント : Vue, Nuxt
- バックエンド : Node.js, Express, postgres
基本的には、フロントで署名を作成し、バックエンドでリクエストの検証をデジタル署名の検証で行うという流れになります。
なので、いわゆる一般的なwebサービスなどとは一味違ったUXになっていると思います。
その辺は使って感じてみてください
大事なのは, mpurseという拡張機能。
Ethereumのmetamaskに相当するものですね。
これが、送金、署名作成(厳密にはこれが送金の大部分でもあるんだけど、そこは割愛)などをフロントのロジックでやってくれます。
これにより、バックエンド側にユーザの機密情報(カード情報、パスワード、etc)を持たずとも、ユーザを認証し、送金機能を持たせることが可能になります。
これは開発者にとってはかなり嬉しいことで、
お金とユーザ情報を扱うサービスなのに、サーバ側にその情報を保存しておかなくて良いので、とても開発しやすいです。
これは、公開鍵暗号の仕組みがベースになっていて、
暗号を利用したアプリケーションの台頭で、クライアントが秘密鍵を持ち始める動きが進んことで、なし得ることができる設計です。
まだまだ、この分野は開拓途中なので、みんなで盛り上がって
楽しんでいきましょう。