Ethereumを用いたPersonal BlocklistのようなChrome拡張を作った
Ethereumを用いたPersonal BlocklistのようなChrome拡張を作った:
Personal Blocklist の代替になりそうな Chrome 拡張機能を作ってみたで紹介されているGoogleの検索結果から指定したサイトを排除する拡張であるuBlackListを使っていましたが、いちいち何もない状態からサイトをブロックしていくのは面倒だと感じました。(uBlacklistにはGoogle Driveとの連携機能がありましたがこれを他人と使うのはさすがに面倒だと思いました。)
そこでEthereumを使って、みんなでサイトのブロックリストを共有することができたら、面白いものが出来上がるのではないかと思いました。
Ethereum Domain Blocker
上でも紹介したiorateさんのuBlacklistをベースに製作しました。
ソースコードはGithubにて公開しています。
MetaMaskを使います。
実はChrome拡張からMetaMaskを使うのはそれなりに工夫のいる作業だったのですが、それは私の別記事の他のChrome拡張からMetaMaskを使うを見てください。
この拡張機能の持っている機能は主に4つです。
追加対象のコントラクトのアドレスと追加するドメインを入力してOKを押すとMetaMaskが起動して署名を求められます。
ベースにしたuBlacklistの機能ですが、開いているページのURLを加工してドメインでブロックする正規表現が自動でフォームに入っています。
Ethereumのストレージに書き込みを行うのでEthereumを消費します。せいぜい10円くらいです。
ブロック中のページからポップアップを開くと、そのページの(ドメインの)ブロックを解除できます。
Ethereumでfor文を回しているため、gasがそれなりにかかる場合があるかもしれません。 解除対象のサイトがコントラクトにない場合はgasだけが消費されるので注意してください。
コントラクトのアドレスを参照すると、そのブラックリストをGoogleの検索結果に反映することができます。
ブラックリストを読み取っているだけなので、この操作にはgasもMetamaskも必要ありません。
アドレスだけではどのコントラクトがどんなブラックリストを持っているかわかりにくいので、ラベルを付けることができます。
ラベルはローカルに保存されるのでトランザクションは起こりません。
アドレスごとのブラックリストはオプションページから確認ができます。
MetaMaskを用いてブラックリストを持ったコントラクトのデプロイを行います。
2018/12/18時点では60円くらいでデプロイできました。
Ethereum上にブラックリストがあるので、編集参照(特に参照)が誰でもできるというのが一番のメリットなのかなと思っています。
また書き込みに少々のコストがかかるため、悪意のある参加者の攻撃の抑制になるはず・・・(はず・・・)
個人的には、1つのコントラクトアドレスにブラックリストをあつめる使い方ではなく、サイトのカテゴリごとにコントラクトを分けたりとか、身内で集まって共有のコントラクトを作ったりして、その中から自分に合ったブラックリストのあるコントラクトを参照すると言った使い方をするのかなと思っています。
とりあえず、私がデプロイしたプログラマ系のサイトで検索結果に出てきてほしくないなと思ったドメインを数個ですが入れたコントラクトアドレスがあるので試しに参照してみてください。(0xb638d68a4fb985c53705fd14b4bc0ceeecdca460)
他にも、まだ使っていない空のブラックリストコントラクトがあるので、ご自由に使ってみてください。
(0x59BF71B83D9695Dc9b7341Fb05cEb3202eb357c3, 0x91ddcD1d1D45143c50313FE15886E59e933beA24)
まだベータ版のようなものなので、バグが残っているかもしれません。発見したら連絡くださるとありがたいです。
またベースにしたuBlackListの開発者のiorateさんにも感謝です。 コード読みやすかったです。(それに引き換え私のコードは。。。)
もしこれを使って自分(たち)のブラックリストを作った人がいたら教えてくださると本当に喜びます。
前置き
Personal Blocklist の代替になりそうな Chrome 拡張機能を作ってみたで紹介されているGoogleの検索結果から指定したサイトを排除する拡張であるuBlackListを使っていましたが、いちいち何もない状態からサイトをブロックしていくのは面倒だと感じました。(uBlacklistにはGoogle Driveとの連携機能がありましたがこれを他人と使うのはさすがに面倒だと思いました。)そこでEthereumを使って、みんなでサイトのブロックリストを共有することができたら、面白いものが出来上がるのではないかと思いました。
Ethereum Domain Blocker
Ethereum Domain Blocker上でも紹介したiorateさんのuBlacklistをベースに製作しました。
ソースコードはGithubにて公開しています。
必要なもの
MetaMaskを使います。実はChrome拡張からMetaMaskを使うのはそれなりに工夫のいる作業だったのですが、それは私の別記事の他のChrome拡張からMetaMaskを使うを見てください。
機能
この拡張機能の持っている機能は主に4つです。
ドメインをコントラクトのブラックリストに追加する
追加対象のコントラクトのアドレスと追加するドメインを入力してOKを押すとMetaMaskが起動して署名を求められます。
ベースにしたuBlacklistの機能ですが、開いているページのURLを加工してドメインでブロックする正規表現が自動でフォームに入っています。
Ethereumのストレージに書き込みを行うのでEthereumを消費します。せいぜい10円くらいです。
ドメインをコントラクトのブラックリストから削除する
ブロック中のページからポップアップを開くと、そのページの(ドメインの)ブロックを解除できます。
Ethereumでfor文を回しているため、gasがそれなりにかかる場合があるかもしれません。 解除対象のサイトがコントラクトにない場合はgasだけが消費されるので注意してください。
コントラクトのブラックリストを参照する
コントラクトのアドレスを参照すると、そのブラックリストをGoogleの検索結果に反映することができます。
ブラックリストを読み取っているだけなので、この操作にはgasもMetamaskも必要ありません。
アドレスだけではどのコントラクトがどんなブラックリストを持っているかわかりにくいので、ラベルを付けることができます。
ラベルはローカルに保存されるのでトランザクションは起こりません。
アドレスごとのブラックリストはオプションページから確認ができます。
コントラクトをデプロイする
MetaMaskを用いてブラックリストを持ったコントラクトのデプロイを行います。
2018/12/18時点では60円くらいでデプロイできました。
メリット
Ethereum上にブラックリストがあるので、編集参照(特に参照)が誰でもできるというのが一番のメリットなのかなと思っています。また書き込みに少々のコストがかかるため、悪意のある参加者の攻撃の抑制になるはず・・・(はず・・・)
個人的には、1つのコントラクトアドレスにブラックリストをあつめる使い方ではなく、サイトのカテゴリごとにコントラクトを分けたりとか、身内で集まって共有のコントラクトを作ったりして、その中から自分に合ったブラックリストのあるコントラクトを参照すると言った使い方をするのかなと思っています。
とりあえず、私がデプロイしたプログラマ系のサイトで検索結果に出てきてほしくないなと思ったドメインを数個ですが入れたコントラクトアドレスがあるので試しに参照してみてください。(0xb638d68a4fb985c53705fd14b4bc0ceeecdca460)
他にも、まだ使っていない空のブラックリストコントラクトがあるので、ご自由に使ってみてください。
(0x59BF71B83D9695Dc9b7341Fb05cEb3202eb357c3, 0x91ddcD1d1D45143c50313FE15886E59e933beA24)
最後に
まだベータ版のようなものなので、バグが残っているかもしれません。発見したら連絡くださるとありがたいです。またベースにしたuBlackListの開発者のiorateさんにも感謝です。 コード読みやすかったです。(それに引き換え私のコードは。。。)
もしこれを使って自分(たち)のブラックリストを作った人がいたら教えてくださると本当に喜びます。
コメント
コメントを投稿