Nginx で CGI が実行できるようにする

TL;DR

CentOS8のコンテナ環境があり、そこにNginxをインストールしたが、デフォルトではCGIが実行できない。 今回はCGIが実行できるようにするために、環境設定を行う。

fcgiwrap のインストール

標準リポジトリに無いようなので、EPEL からインストール。

# dnf -y install epel-release
~~省略~~
Installed:
  epel-release-8-8.el8.noarch

Complete!
# dnf --enablerep=epel -y install fcgiwrap
~~省略~~
Installed:
  fcgi-2.4.0-36.el8.x86_64          fcgiwrap-1.1.0-12.20181108git99c942c.el8.x86_64

Complete!

Nginx の設定

/etc/nginx/fcgiwrap.conf を新規作成し、[/cgi-bin] 配下は CGI を有効にする

location /cgi-bin/ {
    gzip off;
    root  /usr/share/nginx;
    fastcgi_pass  unix:/var/run/fcgiwrap.socket;
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
}

必要なディレクトリ作成と権限設定

# mkdir /usr/share/nginx/cgi-bin
# chmod 755 /usr/share/nginx/cgi-bin

設定をしたいサイト定義の [server] セクション内に追記
vim /etc/nginx/conf.d/default.conf

server {
    listen       ......
    server_name  ......
    include fcgiwrap.conf;
}

Nginx をリスタート

# systemctl restart nginx

FastCGI Wrap サービス用の Systemd ファイルを作成して起動する

/usr/lib/systemd/system/fcgiwrap.service を新規作成する

[Unit]
Description=Simple CGI Server
After=nss-user-lookup.target
Requires=fcgiwrap.socket

[Service]
EnvironmentFile=/etc/sysconfig/fcgiwrap
ExecStart=/usr/sbin/fcgiwrap ${DAEMON_OPTS} -c ${DAEMON_PROCS}
User=nginx
Group=nginx

[Install]
Also=fcgiwrap.socket

/usr/lib/systemd/system/fcgiwrap.socket を新規作成する

[Unit]
Description=fcgiwrap Socket

[Socket]
ListenStream=/run/fcgiwrap.socket

[Install]
WantedBy=sockets.target

# 起動する
# systemctl enable --now fcgiwrap
Created symlink /etc/systemd/system/sockets.target.wants/fcgiwrap.socket → /usr/lib/systemd/system/fcgiwrap.socket.

テストCGIページ作成

/usr/share/nginx/cgi-bin/index.cgi を新規作成する。

#!/usr/bin/python3

print("Content-type: text/html\n")
print("<html>\n<body>")
print("<div style=\"width: 100%; font-size: 40px; font-weight: bold; text-align: center;\">")
print("CGI Script Test Page")
print("</div>")
print("</body>\n</html>")

ブラウザからhttp://localhost/cgi-bin/index.cgi f:id:lgx:20210410161619p:plain:w600

問題なくできた。

特別感謝

CentOS 8 : Nginx : CGI スクリプトを利用する : Server World

Installing Google Translate to Vim

TL;DR

Things to do:
* Install Google Translate to Vim

My environment:
* macOS Catalina 10.15.7

Google Translate

soimort/translate-shell

Dependencies

Installation

$ which gawk
$ brew install gawk
  • translate-shell
$ cd /usr/local/share
$ git clone https://github.com/soimort/translate-shell
$ cd translate-shell/
$ make
$ sudo make install
$ which trans
/usr/local/bin/trans
Plug 'echuraev/translate-shell.vim'
  • Creating key mapping for these commands e.g
nnoremap <silent> <leader>t :Trans<CR>
vnoremap <silent> <leader>t :Trans<CR>
nnoremap <silent> <leader>tc :Trans :zh<CR>
vnoremap <silent> <leader>tc :Trans :zh<CR>

Translation

In Bash

action example explanation
basic usage $ trans -s=zh -t=ja "你好吗?" same with $ trans zh:ja "你好吗?""
auto identify $ trans :zh "How are you!" en to zh
brief mode $ trans -b :ja "How are you!" お元気ですか?
dictionary mode $ trans :en word used as a dictionary
language identification $ trans -id 世界你好 简体中文
Text-to-Speech $ trans -b -p :zh "Saluton, Mondo" -play (-p) option to listen to the translation
Text-to-Speech $ trans -sp "你好,世界" -speak (-sp) option to listen to the original text
Terminal Paging $ trans -d -v word -view (-v) option to view the translation in a terminal pager such as less or more
Pipeline, Input and Output echo "Hello world" | trans -b :zh or $ trans -b -i input.txt :ja
Translate a File $ trans :ja file://input.txt Brief mode is used when translating from file URI schemes
Translate a Web Page $ trans :zh https://www.yahoo.co.jp Default broswer is launched and contents are translated while browsing
Translate a Web Page $ trans -browser firefox :ja http://www.w3.org/ The specified broswer is launched and contents are translated while browsing
Interactive Translate Shell (REPL) $ trans -shell [en:zh] Start an interactive shell using the -shell (or -I) option

In Vim

  • Translate a word under cursor
    Using <Leader>t likes

f:id:lgx:20210122230643p:plain:w400

  • Translate some lines in visual mode
    The following example is using <Leader>tc to translate to Chinese.

f:id:lgx:20210122231058p:plain:w500

  • Translate something via shell mode in Vim Command :!trans -b "Peace begins with a smile." will show the following result
平和は笑顔から始まります

続けるにはENTERを押すかコマンドを入力してください

Summary

It is easy to install Google Translate to bash and Vim, and it's convenience to translate a word or some lines to any language you like, either in bash or Vim. It will make anyone more efficiently to to their work.

I like Vim and Google!

PreVimでPlantUMLをPreviewできるようにする

概要

以前、このブログで、Google Chrome拡張機能を使って、PlantUMLのシーケンス図を書く記事を書きました。すごく便利ですが、Chrome拡張機能が必要なので、環境によっては使えない方法でした。

今日は、previmという素晴らしいPluginを見つけたので、これの利用方法を書いておきます。

何のPluginか

プレビュー用のVimプラグインです。

何ができるか

インストール方法

vimの設定

.vimrcに以下を追加(vim-plugの場合)

call plug#begin('~/.vim/plugged')
...省略...
Plug 'godlygeek/tabular'
Plug 'plasticboy/vim-markdown'
Plug 'previm/previm'
...省略...
call plug#end()

let g:previm_open_cmd = 'open -a Safari'
nnoremap <Leader>p :PrevimOpen<CR>
let g:vim_markdown_folding_disabled = 1
let g:previm_enable_realtime = 1

上記設定により、filetypeがMarkdownのファイル(拡張子がmd)を編集する時に、コマンドで:PrevimOpen を実行すればSafariにてほぼリアルタイムで確認することが可能となる。

ブラウザの設定

.vimrcではプレビューにSafariを使う設定したため、Safariブラウザに次のように設定変更する 1. メニューバーの Safari > 環境設定 > 詳細 > メニューバーに"開発"メニューを表示にチェック 1. メニューバーの 開発 > ローカルファイルの制限を無効にする を選択

動作確認

PlantUMLのマインドマップを描いてみる

@startmindmap
+[#orange] 人
++[#pink] 女
++[#lightblue] 男
++[#lightgreen] その他
@endmindmap

Safari上では、以下のように表示される。

f:id:lgx:20210111010151p:plain:w200

まとめ

previmプラグインを使えれば、普通のブラウザで簡単にVimでPlantUMLを含めた形式の画像をプレビューすることができた。今後自分がはてなブログVimで書きながらプレビューで確認できるようになったため、超楽になります。

参考資料

PHPのpassword_hashによるパスワードハッシュ化

TL;DR

password_hash() は crypt() よりも簡単に強力なパスワードハッシュを作ることができる、 crypt() のラッパーであり上記互換性を持つ。
今回はこの関数によるハッシュ化の特徴をみていくことにする。

特徴

  • サポートしている暗号化アルゴリズム
    • PASSWORD_DEFAULT → bcrypt アルゴリズムでハッシュかする
    • PASSWORD_BCRYPT → CRYPT_BLOWFISH アルゴリズムでハッシュ化する
    • PASSWORD_ARGON2I → Argon2 を有効にしてコンパイルした場合のみ利用可能
    • PASSWORD_ARGON2ID → Argon2 を有効にしてコンパイルした場合のみ利用可能
  • ソルト
    PHP 7.0.0 以降、ソルトの自動生成が推奨された(より安全に)。
  • cost 2桁のコストパラメータは反復回数(ストレチング)の2を底とする対数で、値は 04 から 31 の範囲にいる必要があり、 それ以外の値の場合は crypt() は失敗。
    つまり、costデフォルトの10は、210 = 1024 回のストレチングになる。
  • ハッシュ値に、ソルトやcost等の値が付いている(ソフト付きパスワードハッシュ値

検証関数

password_verify() を利用し、生のパスワードとパスワードハッシュ値をパラメータにとり、パスワードがマッチするかを検証(true or false)。 * アルゴリズムやソルト値、cost等を知らなくてよい
パスワードハッシュ値にすべて含まれているため、別の場所から取得する必要がない。 * タイミング攻撃に対して安全(のようだ)

動作確認

<?php

$password = "abcdefg1234";

// Blowfishでパスワードハッシュを作る
$hashedPassword = password_hash($password, PASSWORD_BCRYPT);

// 検証
if (password_verify($password, $hashedPassword)) {
    echo "hashedPassword=$hashedPassword" . "\n";
    echo "Hash match ok!\n";
}

?>

まとめ

crypt() では、開発者がアルゴリズム、ランダムなソルト、cost値を指定する必要があり、バグると、脆弱なハッシュ化処理になってしまう可能性はあるが、password_hash() ではcrypt() のラッパーとして、ほとんどの部分を中で自動指定されるようになったことで、より簡単に安全なハッシュ化処理を実現できる。

crypt() ではなく、password_hash() を使うべし。

Vimでファイルを暗号化

概要

Vimでファイルに暗号化して保存することができる。

操作方法

開く時に暗号化

$ vim -x file

開いたvim画面では、

f:id:lgx:20210103123437p:plain:w450

よくあることで、2回パスワードを聞かれる。
編集して、保存した後に、同じファイルを開くと、次のようにパスワードの入力を求める。

f:id:lgx:20210103124013p:plain:w450

編集中に暗号化する

:Xコマンドすると、パスワードを求める画面が表示され、同じく2回入力すれば暗号化される。

パスワードを変更する

$ vim +X file

現在のパスワードの入力を求められて、正しく入力すると、新しいパスワードを求める画面が出る(同じく2回)

f:id:lgx:20210103124636p:plain:w450

暗号化を解除

新しいパスワードを未入力にすることで解除できる。

暗号化のタイミング

実際に暗号化が行われるのはファイル保存時、書き込みせずに強制終了したら暗号化は適用されない。

暗号化方式

:set cryptmethodで分かる、vim8.2では cryptmethod=blowfish2 になっている。

参考資料:Vimとセキュリティ問題 - Vim と暗号化機能 | 株式会社創夢 — SOUM/misc
によると、以下のような方式がある(あった)

cryptmethod 解説
zip Pkzip 互換の暗号化方式。使用するべきではない。
blowfish blowfish というブロック化暗号方式。Vim 7.3 以上が必要。脆弱性が報告されている。使用するべきではない。
blowfish2 blowfish というブロック化暗号方式。Vim 7.4.399 以上が必要。暗号化シードを毎回再生成する。

blowfishについて

参考資料:Blowfish - Wikipedia
によると、blowfishは64bit単位ブロック暗号の共通暗号化方式であり、鍵長は32ビットから448ビットまでの可変長で、ライセンスフリー

Vim+Chrome+PlantUML Viewer→UML Sequence Diagram

TL;DR

Vimでテキストファイルを作成/編集すると、Google Chromeブラウザ上でシーケンス図がリアルタイムに書ける/変更されるようにするための手順をまとめる。

メリット

  • 作図ソフトウェア等に頼らなくてもよい
  • 普段慣れているエディタだけですらすら書ける
  • シーケンス図(に限らず、クラス図やアクティビティ図など)をテキストファイル形式でgit等でバージョン管理できる

環境

手順

必要なもの

  • Vim へ “plantuml-syntax” Pluginをインストール
  • Chromeに "PlantUML Viewer" 拡張機能をインストール

Vim へ “plantuml-syntax” Pluginをインストール

本家:https://github.com/aklt/plantuml-syntax

  • .vimrcとかに以下を追加(vim-plug方式の例)
call plug#begin('~/.vim/plugged')
Plug 'aklt/plantuml-syntax'
call plug#end()
  • 保存後、以下のコマンドでインストール
:PlugInstall
  • VimからChromeを起動できるコマンドを追加 .vimrcとかに以下を追加
au FileType plantuml command! OpenUml :!open "/Applications/Google Chrome.app" --args --disable-web-security --user-data-dir="dummy" file:///Users/liu/dev/plantuml/%

各オプションの説明

オプション 意味
plantuml plantuml形式のファイルの場合(@startumlで始まる)
OpenUml vimにて:OpenUml コマンドで打つ場合
open "/Applications/Google Chrome.app" MacGoogle Chrome.app をダブルクリックして開く
--args おまじない。openコマンドに送っているオプションなので必ず必要
--disable-web-security ChromeにCORS制限解除のオプション
--user-data-dir="dummy" ユーザデータフォルダを切り替えるオプションらしいが、--disable-web-security とセットで使わないと、CORS制限解除できなかったため、追加設定した。値がないと動かないため、ダミーを設定した
file:///Users/liu/dev/plantuml/% Chrome起動時に開くファイルURLを設定(任意。ない場合、Chromeから直接開けばいいので)

これで、(自分の環境の場合)Vimの設定が整えた。

Chromeに "PlantUML Viewer" 拡張機能をインストール

本家:PlantUML Viewer - Chrome ウェブストア

インストール後、以下の設定にする f:id:lgx:20210102152059p:plain:w450

動作確認

  • plantuml形式のテキストファイルを作成
    (自分の環境の場合)file:///Users/liu/dev/plantuml/ 以下に、vimで以下のテキストファイルを作成(hoge.uml
@startuml
participant User

User -> A: DoWork
activate A

A -> B: << createRequest >>
activate B

B -> C: DoWork
activate C
C --> B: WorkDone
destroy C

B --> A: RequestCreated
deactivate B

A -> User: Done
deactivate A

@enduml
  • VimからChromeブラウザを起動できるようコマンドを実行
:OpenUml

注意点Chromeブラウザを閉じた状態で実行する必要がある、さもなければ、CORS制限解除にならない。

Chromeが立ち上がり、以下の警告メッセージが出ていればCORS制限解除になっている証拠。
f:id:lgx:20210102135517p:plain

Chromeに実際に表示されているシーケンス図:

Vimでテキストファイルを編集すると、Chrome場ではリアルタイムに反映されることを確認済。

応用

Yahoo!ID連携(YConnect V2)のクライアントアプリの認可フローをVimでシーケンス図を書いてみた。

Yahoo! ID連携:Authorization Codeフロー - Yahoo!デベロッパーネットワーク

書いたシーケンス図(名称や番号は異なる)

まとめ

Vim+Chrome+PlantUML Viewer→UML Sequence Diagram を、環境整備から動作確認まで一通り終えたが、順調ではなくて、一番手こずったのは、ChromeのCORS 制限解除の設定あたりで、シーケンス図がうまく表示できない。javaやplantumlのソフトウェアをinstallしたり、試してNGしてはまたuninstallしたりしていた。

手軽にシーケンス図を作成できて、またテキストファイルなので、簡単にgit等でバージョン管理できる。現役エンジニア時代に出会っていればよかった。

以下のドキュメントが大変参考になり、ありがとうございます。

仮想通貨の理解

仮想通貨とは

ブロックチェーン技術に基づく、P2Pの電子決済システム。

特徴

  1. 中央に管理者がいない
  2. ブロックチェーン技術 ブロックチェーン技術とは、情報や取引履歴を正しく記録できる技術。改ざんが不可能で、セキュリティ性に優れているのが特徴といえる。
  3. 価格の変動が激しい

仮想通貨と電子マネーの違い

  • 発行元が異なる
  • 対応する法律が違う
  • 中央集権があるかないか
  • 利用できる場所が違う
  • 価格変動性が大きいかどうか
  • ポイントが貯まるかどうか

仮想通貨の分類

  1. ビットコイン(BTC)
  2. アルトコイン(altcoin)

BTCは仮想通貨の代表ともいわれる、主要な通貨。一方、アルトコインは、BTCを除くすべての仮想通貨を指し、それぞれが独自の特徴をもっている。 BTCがaltcoinに比較した時の特徴

  1. 時価総額トップ 誕生してからずっとトップの時価総額を維持しており、取引量も多いことから、他のアルトコインとは一線を画している。
  2. 決済利用がある 日本国内でも、大手家電量販店など、BTCを使って買い物ができる場所が増えてきてる。
  3. アルトコインを購入できる

BTC

国家という権威から離れた場所で、中央集権的な管理を受けない通貨がビットコインの目指した姿。

BTCの仕組・特徴

  • 中央銀行が存在しない
  • インターネット上に分散保存される取引台帳
  • 発行枚数に上限がある
    誕生した当時から、発行枚数が2,100万枚と決められている。
  • 世界中にリアルタイムで送金できる
    それまで数日かかっていた海外送金を、ほんの數十分のうちに完了させることが可能。

BTCの3つのメリット

  • 個人間で直接送金ができる
    理論的には10分、通常では長くとも40分程度あれば、相手がどこにいようと送金することが可能。
  • 手数料が安い
  • 世界中で両替せずに利用できる

BTCの3つのデメリット

  • 価格の変動が激しい
  • 即時決済が難しい
  • 決済サービスが少ない

BTCの価格推移の歴史

初めて値が付いたのは、2009年10月に「New Liberty Standard」というサイトによって提示された、1BTC=約0.07円という価格(マイニングにかかる電気代から算出された)。2010年5月には、フロリダ州に住むプログラマーがピザ2枚を1万BTCで購入したのが初めての決済と言われた(当時1BTC=約0.2円)。

およそ9年間で約200万倍も価値が上がった、ROI(投資利益率)の高い金融商品と世界中の投資家から注目を集めるようになる。

BTCの価格上昇につながる5つのポイント

  • ETFが承認されると価格が上昇する可能性が高まる
  • 決済が拡大すれば価値が上がる
  • ライトニングネットワークの実装で取引しやすくなる
  • AIの活用でビットコイン予測がしやすくなる
  • 法整備が整えば投資家が利用しやすくなる

BTCの半減期

半減期とは、BTCのマイニング報酬が半分になるタイミングのこと。
半減期に注目が集まる理由は、半減期を迎える仮想通貨は価格が上がる可能性が高いから。 半減期は、新規発行のペースを緩やかにするとともに、急激なインフレを防ぐ役割を担っている。 Bitcoin半減カウントダウン | Binance Academy

BTCのマイニング

マイニング=Mining=採掘=「挖矿」= 暗号を解読し新しいブロックを繋ぐ作業=取引記録の検証・確定作業

  • ブロックをチェーンにつないだ人に対してBTCが発行され、報酬が与えられる。
  • BTCが新たに発行されるのはマイニングに成功したときだけ。
  • マイナー = Miner = 採掘者

マイニング作業は、検証行為を行うブロック内のデータと、取引検証完了済の証である1つ前のブロックのハッシュ値と呼ばれる値、さらに、正解を導くことになる数値(ノンス)の3つのデータをハッシュ関数に入れる。

マイニングによって確認される正しいハッシュ値は、必ず先頭に一定のゼロが並ぶ仕組み。

f:id:lgx:20201229153824p:plain
マイニングの仕組み

Nonceを探す方法をProof Of Work(プルーフ・オブ・ワーク)という。

altcoin

BTCを除くすべての仮想通貨のことをいい、Alternative Coin略称。オルトコインとも呼ばれ、BTCの代替コインという意味がある。

日本で買えるaltcoin

  • イーサリアム(ETH)「以太坊」
    • 発行上限がない
    • スマートコントラクト
    • ICOInitial Coin Offering)によく利用される
    • トークンを発行しやすい、ウォレットの管理が簡単、多くのトークンの基盤を成している。
    • メリット
      • 送金の速さ(マイニングは15秒に1回)
      • 発行上限がない
      • 信頼性
      • 汎用性
    • デメリット
      • スケーラビリティの問題
      • スマートコントラクトの弊害
  • リップルXRP
    • 国際送金に強み
    • 大手企業と提携
    • 発行上限がある
      1000億枚と定められていて、すでに発行済。
  • ビットコインキャッシュ(BCH)
    • BTCから分岐
      発行上限はBTCと同様2100千万枚
    • ブロックサイズを拡大
      8MBに拡大
  • ライトコイン(LTC)
    • BTCよりもブロック生成時間が短い
      BTCの時間の1/4
    • 発行上限枚数がBTCの4倍
    • BTCと同様4年に一度の半減期がある
  • ネムXEM
    • PoI(プルーフ・オブ・インポータンス)を採用
    • コミュニティが活発
  • リスク(LSK)
  • ファクトム(FCT)
    • 書面やデータの管理
    • 様々な業界での活用
      記録の証明に強みを持つFCTは、データの公平性を重視する様々な業界での活用が期待されている。
  • イーサリアムクラシック(ETC)
  • モナコイン(MONA
    • 世界で初めてSegwit(セグウィット)を採用
      ほかの仮想通貨と比べて送金速度が速い(90秒程)
    • アトミックスワップの導入

マイニングする3つの方法と仕組み

ビットコイン(BTC)マイニングの3つの方法と仕組みを解説 | Coincheck

  1. ソロマイニング
  2. プールマイニング
    大人数で協力してマイニングを行う方法、報酬は参加人数で分けることになる。
  3. クラウドマイニング
    マイニングを行う事業者に投資し、成果を分配してもらう。

ハッシュレート

マイニングをする際の1秒あたりの計算力、採掘速度のこと。単位は hash/s で、「毎秒 ◯ ハッシュの計算ができる」ことを意味する。

マイニングマシン

  • ASIC(エーシック)というマイニング用に特化された集積回路
  • GPUジーピーユー)という高速描画処理の部品。 が使われている。

参考資料:
【最新版】誰でもノートパソコンで仮想通貨をマイニングできるHoneyMinerの使い方まとめ lifeforearth.com

販売場 / 取引場

Coincheck

口座開設手続き

  1. Coincheckのアカウント登録
  2. 基本情報を入力する
  3. 本人確認書類の提出
  4. 顔と本人確認書類の撮影

購入手続き(BTCの例)

  1. 暗号資産取引所に登録する
  2. 銀行振込で日本円を入金する
  3. BTCを購入する

購入方法

  • 販売所で購入
    運営会社からユーザーが仮想通貨を購入・売却することができる。運営会社が保有するコインを、提示価格で購入したり売却したりする仕組。
    • メリット
      常にコインを購入/売却する窓口が開かれている。
    • デメリット
      コインの価格に加え、スプレッド手数料が課される。
  • 取引所で購入
    ユーザー同士が仮想通貨を売買する。
    • メリット
      自分自身が購入/売却したい通貨の価格を決められる、販売所のようにスプレッド手数料が高く付くことはない。
    • デメリット
      販売所のように常に通貨が売られているわけではないため、取引相手を見つけるのに時間がかかる場合がある。

売買手数料(Coincheckの場合)

送金・売買・入出金手数料 | 仮想通貨取引所のCoincheck(コインチェック)

  • 日本円の入金手数料
    銀振は入金手数料無料(振込手数料はユーザー負担)
  • 日本円の出金手数料
    • 1回につき手数料は407円固定
    • 出金上限は1回あたり5000万円
  • 日本円の送金手数料

BTCの取引方法

ブロックチェーン(Blockchain)

ブロックチェーン技術及び関連技術(ブロックチェーン実装あり) - Qiita

仮想通貨で採用されている情報を記録・管理するための「分散型台帳技術」。

Blockchainのメリット

  • 改ざんが非常に難しい
    • 51%攻撃(https://coincheck.com/ja/article/218
      PoW(プルーフ・オブ・ワーク)を悪用して、全体の50%を超えてマイニングすると、不正な取引も承認することができてしまう。
      51%攻撃の脅威が話題となったきっかけに、2013年12月の「Ghash.io」というマイニングプールがあります。当時このプールの計算能力が50%を超えそうになり、ビットコインが大暴落した。
  • 管理運用コストが安い
  • システム全体としての安定性が高い
    BTCは2009年に取引が始められてから、これまで一度もシステムが停止したことはない。

Blockchainのデメリット

  • 時間あたりの取引数が小さい
    1つのブロックの記録容量が小さく、BTCのさばけるTX数は1秒間に7件ほどと言われている。
    課題解決に、メインのBloackchainから分岐する「サイドチェーン」を作り、Bloackchainの外側で取引を繰り返して最終的な結果だけをメインチェーンに記録する「オフチェーン」の手法を使ったりして、取引速度を上げる対策が進められている。
  • スケーラビリティ問題を抱えている
    取引量が増えると、送金に時間がかかったり、送金要求が承認されなかったり、取引手数料が高騰するといったスケーラビリティ問題が発生する可能性がある。
  • 関連法規の未整備
    日本では、2017年4月1日に施行された「改正資金決済法」によって、仮想通貨として暗号資産が定義された。

Blockchainの将来性

  • 未来的な取引法「スマートコントラクト」
    Bloackchain上で契約を自動的に実行するしくみのこと。
  • 金融(貯蓄、送金、証券取引、資金調達など)
  • 認証(本人確認、著作権管理、公証など)
  • 公共サービス(各種申告、納税、投票、医療など)
  • エンターテイメント
  • その他(データ管理、各種登記の自動化など)

エストニア共和国は、Blockchain技術を生した「電子政府」として有名。

注目サイト

勉強会資料