概要
近年話題を集めているブロックチェーン。
ブロックチェーンとは、一般に「取引履歴を暗号技術によって過去から 1 本の鎖のようにつなげ、正確な取引履歴を維持しようとする技術」のことを言います。
データの破壊・改ざんが極めて困難なこと、障害によって停止する可能性が低いシステムが容易に実現可能といった特徴から、主に銀行業界などに大きな変革をもたらす可能性を秘めているといわれています。
上記のようなブロックチェーン技術において、さらに「スマートコントラクト」というワードもよく見かけると思います。
「スマートコントラクト」とは、ブロックチェーン上の概念で、あらかじめ指定されたルールに従ってブロックチェーン上のトランザクション、もしくはブロックチェーン外から取り込まれた情報をトリガーに実行されるプログラムのことを言います。
近年になってますます注目を浴びているこのスマートコントラクトという技術ですが、このスマートコントラクトを効率よく実装するためのプログラミング言語をご存じでしょうか。
それが、今回紹介する OSS 「Solidity」になります。
Solidity は、スマートコントラクトを実装するためのオブジェクト指向高級言語として知られています。
C++ や Python、JavaScript の影響を受けており、静的型付け、継承、ライブラリ、複雑なユーザー定義型などの機能をサポートしています。
概要はこのあたりにしておき、まずは利用方法などについて見ていきましょう。
はじめに
Solidity について学ぶ前に、まずはスマートコントラクトの概念について知っておいたほうが良いということなので、以下 3 つの記事を掘り下げて読むことがおすすめされていました。
- スマートコントラクトのシンプルな例(Solidity で記述)
- ブロックチェーンの基本
- Ethereum Virtual Machine
また、スマートコントラクトの基本的な内容に慣れてきたら、"Solidity for Example" などを読むことで、言語のコンセプトなどを理解することがおすすめされていました。
参考までに。
利用手順
Solidity をインストールする際には、以下のインストールページを参考に、お好みの環境のものをインストールしてください。
なお、Remix IDE を使用することで、ブラウザ上で直接コードを試すことができるため、今回はそちらを使って Solidity を使用してみようと思います。
使用感
Remix IDE を使用して、Solidity について簡単に触れてみました。
新しくファイルを作ってみます。
左メニューの「contracts」フォルダの中にファイルを新規作成し、ファイル名は「HelloWorld.sol」とします。
ソースコードは README にある例をそのままコピーしてペーストしました。
ソースを書き終えたら、左メニューの「HelloWorld.sol」を右クリックして「Compile」を選択します。
コンパイルが完了すると、新たに「artifacts」フォルダが作成されるようになります。
その後、左メニューから「DEPLOY & RUN TRANSACTION」の項目を選択し、CONTRACT に「HelloWorld」が選択されている状態で「Deploy」をクリックすると、コントラクトが実際に配備されるようです。
配備されたコントラクトの確認として、「DEPLOY & RUN TRANSACTION」の下にある「Deployed Contracts」を参照してみると、「HELLOWORLD AT 0XXX」と表示されているのが確認できます。
その下にある「helloWorld」というボタンを選択すると、コマンドラインに return で返している Hello, World!
の文字が表示されていることが確認できます。
まとめ
今回は、スマートコントラクトを効率よく実装するためのプログラミング言語「Solidity」を紹介しました。
私自身スマートコントラクトに関しては全くの初心者のため、あまり踏み込んだ説明はすることができなかったのですが、Solidity を実際に使用し、Remix IDE で実際に動かすことまでできたので、導入としてはまずまずかなと思っています。
幸いにも、Solidity に関しては日本語のドキュメントも用意されおり、内容もとても親切に記述されていますので、まずはこちらを頼りに Solidity というプログラミング言語について学んでいけたらと思います。
また、スマートコントラクトやブロックチェーンといった技術については、今後トレンドになっていくこと間違いないと個人的には考えているので、これを機に勉強していきたいなと思いました!
皆さんもこれを機にブロックチェーン・スマートコントラクト、さらに Solidity 言語について学んでみてはいかがでしょうか。
ライセンス
GNU General Public License v3.0
リンク