【Web技術者注目】ブロックチェーンの中核技術「スマートコントラクト」の実装方法 | 千葉で集客ホームページ制作はティーエスフォート
コラム

【Web技術者注目】ブロックチェーンの中核技術「スマートコントラクト」の実装方法

【Web技術者注目】ブロックチェーンの中核技術「スマートコントラクト」の実装方法

ブロックチェーンは、時間が経つごとに改ざんが難しくなる記録技術と、P2Pで管理されたネットワーク方式のことです。

インターネット以来の大発明として近年注目されている技術でもあります。

この記事では、ブロックチェーンを実現する上で必要な技術であるスマートコントラクトについてご紹介します。

はじめに

ブロックチェーンは、時間が経つごとに改ざんが難しくなる記録技術と、P2Pで管理されたネットワーク方式のことです。

インターネット以来の大発明として近年注目されている技術でもあります。

この記事では、ブロックチェーンを実現する上で必要な技術であるスマートコントラクトについてご紹介します。

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

スマートコントラクトとは、ブロックチェーンシステム上で、規定のルールに従ってトランザクションや外部情報をトリガーに実行されるプログラムあるいはコンピュータプロトコルのことです。

スマートコントラクトは、契約内容および執行の条件を事前にスマートコントラクト内で、定義しておき、指定された条件に合致したイベントが起こると自動的にプログラムが実行される仕組みとなっていて、不可逆の性質があるため、これによって第三者機関の関与が必然ではなくなります。

Solidityとは何か

Solidityとは、スマートコントラクトを記述するための手続き型プログラミング言語であり、キャビン・ウッドによって作成されました。

Solidityには、truffleやopen-zeppelinというスマートコントラクト開発フレームワークも用意されている点でも、スマートコントラクトを通じたブロックチェーンの学習言語としても環境が整っているといえます。

スマートコントラクトを実際に書くには?

Step 1. Solidityのバージョンを指定します。



# pragma solidity ^0.5.9;


プログラムの一番上にpragmaキーワードで、どのSolidityのバージョンかを指定します。

Step 2. 契約を作ります。



contract TestContract{
//契約内容を記述する
}


まずは contract キーワードで契約名を書きます。

ここでは契約名をTestContractとします。

Step 3. 契約にグローバル変数とコンストラクタを入れます。



contract TestContract {
address owner; //ウォレットのアドレス
unit assetValue; //資産額
bool isEnjoy; //ownerが楽しいかどうか

//初期値を設定するためのコンストラクタ
constructor() public payable{
owner = msg.sender;
assetValue = msg.value;
isEnjoy = false;
}
}


Step 4. Modifier を追加します。


Modifierとは、何かをするために必要な条件を記述するためのものです。
Solidityではrequireというキーワードで必要な条件を記述することができます。

最後につく ”_;” はこの条件を読んだら、実際のfunctionを読むという指示です。


modifier onlyOwner {
require (msg.sender == owner );
_;
}

modifier mustBeHappy {
require (isHappy == true);
_;
}


Step 5. 友人に自分がEnjoyしているなら資産を送るfunctionを追加します。



address payable[] friendWallets
mapping (address => uint) enjoymentPay

function setEnjoymentPay(address payable wallet, uint enjoymentPayAmount) public onlyOwner {
friendWallets.push(wallet);
enjoymentPay[wallet] = enjoymentPayAmount;
}

function pay() private mustBeEnjoy{
for (uint i=0; i<friendWallet.length; i++){
friendWallets[i].transfer(enjoymentPay[friendWallets[i]);
}
}

function happy() public onlyOwner{
isEnjoy = true;
pay();
}

まとめ

今回の記事では、ブロックチェーンにおいて活用されるスマートコントラクトの、プログラミング言語Solidityを使った実装についてご紹介しました。

今後Webの分野でも活用が見込まれる注目の技術です。
ページ先頭へ