カラクリサイクル

『輝かしい青春』なんて失かった人の雑記

Bitcoin はオモチャだが、Blockchain はオモチャではない

昨日、お風呂に入っている時、なんとなく

マシンリソースを無駄遣いしない CryptoCurrency とか作れないかなー

という事に思いを馳せていて、色々な事を悶々と考えていたのですが、その時に、

あれ? Blockchain って Bitcoin 的な要素を抜けば、割と実用可能なんじゃ?

と思ったので、今日はその辺り書きます。

Blockchain を Blockchain たらしめるモノ

Bitcoin については毀誉褒貶が有って、僕も Bitcoin そのものを現実社会に適用するには無理が有るだろう、 と思っていたクチなんですが、その Bitcoin そのものを現実社会に適用するには無理が有る と考えていた理由については、 おおよそ、次の通りだったりします:

  1. トランザクションの処理速度が遅い
  2. 価格が安定していない
  3. 詐欺とかが山の様にある

それで、(1) については Bitcoin のシステム上の仕様の問題、(2) と (3) については Bitcoin を取り巻く環境 (ecosystem) の問題、 という感じなんですが、これらについての問題を引き起こさずに Bitcoin 的な技術を現実社会に取り込もうとすると、これは、

Bitcoin から 純粋な Blockchain 技術を抜き出して利用する

という方法しかないだろう、と僕は考えています。

そして、

では 純粋な Blockchain が持つ 特長とは何か?

と考えた時に、僕は、

  1. 公開された 分散台帳である事
  2. すべてのトランザクションに電子署名が付いている
  3. 過去のトランザクションログ について、確実な検証が可能である

と言う 3点が 純粋な Blockchain の持つ特長だ、と考えていて、これらを満す Blockchain であれば、 Bitcoin などに代表される CryptoCurrency が利用している P2P Networking を用いずとも、 Blockchain を Blockchain たらしめる事が出来る、と考えています。

Proof of Works を用いない Blockchain

それで話は最初に戻るんですが、 Bitcoin を現実社会で利用しようとした時、技術的な問題点 として、

トランンザクションの処理速度が遅い

という問題が有る、と僕は述べました。

そして、これをなんとかしようと思うと、現実的には、

Proof of Works と言う、 特定のハッシュ値を求めるの総当り の使用を 取り止める

という手段しかない、と僕は考えているのですが、そもそも、

なぜ Proof of Works という仕組み必要 なのか

と考えると、これは、

過去の Blockchain の改竄を防ぐ ため

という目的が有ります。

無論 Proof of Works には Bitcoin 等で、 Mining (採掘) というゲーム的な要素を成立させるための側面も有るには有りますが、 これらは Blockchain 技術には直接は関係ないため、ここでは考えないモノとし、その上で、

過去の Blockchain を改竄させないためProof of Works を用いない

と言う技術決定を行った場合に、 どの様な手段が取れるか 、と考えると、 現実にはいくつかの手段が取れるかと思うのですが、僕が思い付いたのは、

個々の口座 に対して Blockchain を割り当て 、それらを 相互参照 させる

という方法です。

これは、基本的な考え方については、

自分が影響を及ぼせない第三者 に、自身の Blockchain 口座のログを記録させる

と言う、

第三者に証言させれば良いじゃない!

と言った感じのモノで、具体的な実装についてはもうちょっと仕様を詰める必要があるとは思うんですが、 基本的には、自身の口座に対する Blockchain と、相手側の口座に対する Blockchain矛盾出来ない様に仕組み 、 それを ネットワーク等で共有する等して 全体として整合性を保つ様にする 、という様なイメージです。

Blockchain の現実社会への適用例について

僕は少なくとも、 純粋な Blockchain については、それを紙幣や銀行口座、あるいは登記記録に応用する事によって、 次の事が現実に可能になると考えています:

  • 所得や収益の正確な把握
  • 正確な課税や脱税の防止
  • 土地所有権等の確実な登記

そして、さらに Ethereum 等に代表される スマートコントラクト (プログラムで実装された契約内容等の表現) を持ち込む事によって、 下記の要素も実現可能である、と僕は思います:

  • 所得等への課税の確実な自動化
  • 相続などの課税額の自動計算
  • 確定申告などの所得申請の自動化

ただ、僕は、こういった様々な利用の可能性が有る、と考えている 純粋な Blockchain 技術 ですが、 現実問題としては、これらのメリットを現実に実現させようと思うと、今の社会制度からのマイグレーション (移行) が大変だろう な、 と思う所もあるし、また、これらの 資産や所有に関するすべての情報 が、 国や地方自治体、あるいは一企業などに握られてしまったりする と、 それはそれでディストピア なんじゃね? と思わないでもないので、まぁ現実には その辺りのバランスも取る必要が有る のではないかな、 と僕は思います。はい。

以上

ま、とりあえず以上が、昨日、お風呂に入っている時に思いついた、モヤっとした内容を具体的に書下したモノになります。

まぁ、本当は昨日の時点で書きたかったのですが、これを書こうとした時は、既に眠くて気力が無い状態だったので、 昨日は雑な日記を書いて、今日、日を新ためて、今回の内容を書いた次第です。

そして僕自身としては、Bitcoin 等の既存の CryptoCurrency そのものを現実社会に組込むのは、 あまり現実的ではないよなー、と思うものの、Bitcoin 等の根幹技術の一つである、Blockchain 技術だけを取り出して利用するのであれば、 社会や制度を効率化するために利用出来るんじゃないかなーとか思っています。はい。

という事で今回は以上です。

今日やったコト

なんか色々ブログ記事を書こうとしたんだけど、もう眠気がかなり来てて、それどころじゃなくなったので、 一応雑に今日やった事を書いておきます。

  • このブログの SCSS を書いていた
  • 目的は主に細かい微調整とか
  • 実質的にはフルスクラッチで書き直している

  • なんか調子が悪かった
  • が、久しぶりに散歩とか言った
  • あと、午前中の作業の続きとかしてた

  • 朝と昼の作業の続きをしていた
  • その途中で夕食の手伝いとかしてた
  • あと、久しぶりに電子書籍を買うなどした

  • かなり久しぶりに読書 (電子書籍) をした
  • Kindle for PC での読書は思ってたより読み易い感じ
  • とりあえず今日は二冊ぐらい読んでた

以上

もう限界なので寝ます。はい。

デスクの上を再整理して掃除した

と言う話。

ちなみに、今現在はこんな感じ:

f:id:nyarla-net:20170917201053j:plain

なんで整理したのか

今日の再整理と掃除をするまでは、

  1. 机の上が夏場の手垢等で汚れててビミョい
  2. 机の上で継ぎ足したBlu-ray ドライブ等の配線がジャラジャラ
  3. あと、モノをゴチャっと置いているせいで机の上が狭い

と言う、色々な問題がデスクの上 (とは言っても小学校の時の学習机だけども) にあったのと、 あと、台風の低気圧の影響で非常に気分的に安定しない、とかもあって、 気分転換も兼ねて、掃除とモノの配置換えとかしていました。

それで、結果を言えばこれが正解……というのヘンなんだけど、 気分転換にもなってちょっとだけ気分が晴れたのと、あとデスクの上が綺麗になり、 かつ配置もキチっと決まったので、その点では大変に満足です。はい。

なお、左側のディスプレイは、その後ろが、割とこう蛇がとぐろを巻いている様な状態なので、 その目隠し代わりも兼ねて配置してあったりします。

以上

とりあえず、今日はそんな感じでした。はい。

Windows ファイル共有上の node_modules 問題をなんとかした

という話。

Windows ファイル共有上の node_modules 問題をなんとかしたとは?

Windows のファイル共有……と言うか、Linux の ACL とか Permission が有効にならない共有ファイルシステム上で、 yarn addnpm i を使って node_modules とかと作ろうとすると、

  1. symlink が貼れない
  2. パーミッションを変更出来ない
  3. というか node_modules とか共有フォルダに置きたくない

言った様な色々と面倒なコトが起きるんですが、色々と考えるのが面倒だったので、 下記の様なスクリプトを用意してなんとかしました、という話です。

問題解決のためのスクリプト

#!/usr/bin/env zsh

set -e -u -o pipefail

function main() {
  local prefix="$HOME"/.cache/node_prefix"$(cd "$(pwd)" && pwd)"
  local target="$(pwd)/node_modules"

  if ! test -d "${prefix}" ; then
    mkdir -p "${prefix}"
  fi

  if ! test -d "${target}" ; then
    mkdir -p "${target}"
  fi

  sudo bindfs "${prefix}" "${target}"
  /run/current-system/sw/bin/yarn $*
  sudo fusermount -u "${target}"
}

main $*

これは何をしているのか

基本的には、

  1. node packages の管理コマンド (この場合 yarn) を実行するタイミングで
  2. bindfs を使ってファイル共有上の node_modules をローカルな fs に変更し
  3. コマンド (この場合 yarn) の実行した後に元に戻す

という感じです。

なお、上記スクリプトでは yarn が奇妙な絶対パスで書かれていますが、この絶対パスは NixOS 独特のモノで、 普通の Linux だったら普通の絶対パスで yarn (に相当する package manager) へのパスを書けば良いです。

使ってみた感想は?

最初、上記スクリプトを yarn というファイル名で作成し、 その際にスクリプト内部で呼び出す yarn を絶対パスで書いていなかったのですが、 そのせいで yarnyarn を呼び出して無限ループしてやーん、って感じにはなりましたが、その点を除けば、 別に特段の面倒もなく yarn が使えています。

以上

今日は NixOS on Hyper-V の環境構築とか行なっていたのですが、ファイル共有周りを除けば、 特段のに苦労するを事なく環境構築が出来ました。

ただ、それとは別に、なんか今の Windows 環境のネットワークが時々詰まるので、 その辺りがちょっと微妙だなーと感じてます。何が原因かは良く判ってないんですが。

色々あって結局 Windows 10 Pro 上で開発環境を作るのを止めた

うん、まあチラシの裏です。


まー最初は cmd.exe on Windows 10 Pro でなんとかなるかなーと思ってたんですが、 想定以上に、こう、Console Applciations がめんどくさい挙動となるため、なんかもう嫌になってきて、

とりあえず Windows 10 Pro のネイティブなコンソールで開発するのは止めよう

って事になりました。

そのため、とりあえず今日の時点では、

Hyper-V 上の NixOS でなんとかする

という方針を立てて作業は一旦終わり、Windows アプリケーションを開発したくなったら、 またその時にでも環境構築してみよう、という感じになりましたとさ。


ちなみに。

今日なんで NixOS のインストールをパスったか、と言うと、 NixOS ってワリとインストールするのに心理的コストが高めなのと、 あと、実際に落ち着いて作業するにはそれなりに時間を要するため、 今日はもうめんどくさいや、ってなったが大きな理由です。

つーか、

もう NixOS on Hyper-V でいいや

ってなったのがつい先程なので、そもそもそんなに時間的な余裕がないっていうね。 ちなみにこれを書いている今現在の時刻は 19:45 なので、色々と家事やらのやる事がががっていう。 ま、本当はこのブログの CSS とか書き直す予定だったのに、どうしてこうなった感。


とりあえず、本日は以上です。はい。