プログラミングサイト、プログラミング分科会はこちらから。

イーサリアムのスマート・コントラクトを実現するコントラクト指向言語「Solidity」:導入編(1)




akito_minaseです。

コントラクト指向言語、Solidityについて解説されているページをTwitterで見つけました。

目次

  • スマート・コントラクトとは?
  • 分散アプリケーション
  • ブロックチェーン
  • gethのインストール手順

 スマート・コントラクトとは? 


コントラクト指向言語は、スマート・コントラクトを書くための言語です。

スマート・コントラクトは、和訳で「賢い契約」という意味ですが、あらかじめ様々な条件をプログラムしておき、そのプログラムに則り契約や請求・支払いをする、というシステムです。

私自身、ブロックチェーンやスマートコントラクトについての理解はまだまだ浅いです。そのため、備忘録も兼ねて手順や困った点などを記載していきます。

まず、参考にしているページをご紹介します!

⇒ コントラクト指向言語Solidity詳解 · Ethereum入門

上記で取り上げられているのは、ethereum(イーサリアム)です。

一般的には、仮想通貨という認識が多いように思われますが、

イーサリアム上の仮想通貨がETHです。

イーサリアムは、

  • 分散アプリケーション(Decentralized Apprication・Dapps)
  • スマート・コントラクト

を実現するためのプラットフォームです。

分散アプリケーション(Decentralized Apprication)


私は仮想通貨を知った当初、用語に横文字が多すぎてあまり理解していませんでした。

分散アプリケーションというのは、中央管理者がいないアプリケーションのことです。

アプリケーションというのは、近年スマートフォンのITインフラが整っていますのでわかるとは思いますが、スマートフォンで言うところのゲームや家計簿アプリみたいなところに当たります。

今までのアプリケーションは、通常管理者がいます。ゲームで例えると、パズドラでいうガンホー、モンストでいうところのミクシィ、というイメージです。

分散アプリケーションの革命的なところは、この管理者がいない、という点です。

管理者に代わり、ブロックチェーン技術を使い分散型にしていることで、この管理者がいないという問題を解決しています。どのように解決しているのか、という点はまだ私自身きちんと理解していないため、後日どこかでとりあげたいと思います。

ブロックチェーン


ブロックチェーン技術は、トラストレス(信用がいらない)が非常に革新的です。

ブロックチェーンは、常時ブロックを生成する作業により、成り立っています。

このブロック生成には、色々な方法がありますが、Bitcoinでも用いられているProof of Work(プルーフ・オブ・ワーク)という手法で説明します。詳しくは、「<ビットコイン>Bitcoinの仕組みを理解するために(1)」を見てくださいね!

この手法では、トランザクション(送金)を行う際にハッシュ値という数学的問題を解決させます。

この数学的な問題を解くことを、マイニングといいます。

マイニングは、誰でも参加できるもので、問題を解決させた際には、貢献度に応じて報酬が配られるのが通常です。ビットコインにおいては、このマイニングの競争により現在では普通のコンピュータでは難しいというのが現状です。

このトランザクションにおけるハッシュ値ですが、前のブロックでのハッシュ値が次のブロックにも引き継がれます(parent hash)。そうすることでトラストレスな構造を得ています。

geth のインストール手順


小難しいことを書きましたが、私も正直きちんと理解してるわけではありません。実際に、このSolidityに取り組んでいる中で、なんとなく理解出来たらな、と思っています。また正確に書けることがありましたら、随時訂正していきます。

ということで前置きが長くがりましたが、今回は、ethereumの導入として、gethを使います。

私はWindows10を使用しているため、下記のページを参考に導入しました。

⇒ Installation instructions for Windows · ethereum/go-ethereum Wiki · GitHub

chocoというコンパイラが必要なようですが、私の場合、通常にGethをインストールするだけで大丈夫でした。

Cドライブ直下に、予め「geth」というフォルダを作成します。

解説書ではmkdirで作成していますが、ubuntuのためと思われます。Windowsでは必要ありません。

Windowsの場合通常に「geth」フォルダを作成し、そのディレクトリの下に「eth_private_net」を作成してください。

解説書で「/home/ubuntu/eth_private_net」となっているものは、すべて「C:\geth\eth_private_net」と読み替えることになります。

今回は、インストールのみで終了です。

この後、genesis.jsonというファイルを作成します(次回)。

作成後にコマンドプロンプトで下記のように入力し表示が出たら、Gethの起動ができたことになります。GethはCUI(Command User Interface)のため、基本的にコマンドラインでの入力となります。

 

c:\geth>geth –networkid “15” –nodiscover –datadir “c:\geth\eth_private_net” console 2>> c:\geth\eth_private_net\geth_err.log
Welcome to the Geth JavaScript console!

 

instance: Geth/v1.8.7-stable-66432f38/windows-amd64/go1.10.1

 modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

20180516-1

 

参考資料・文献
[1] Ethereum Project:https://www.ethereum.org/
[2] コントラクト指向言語Solidity詳解 · Ethereum入門:https://book.ethereum-jp.net/solidity/
[3] Installation instructions for Windows · ethereum/go-ethereum Wiki · GitHub:https://github.com/ethereum/go-ethereum/wiki/Installation-instructions-for-Windows

コメント