最初のスマートコントラクトを作成して展開する方法は?
公開: 2020-02-13スマートコントラクトは、今日のブロックチェーンテクノロジーの主要なトレンドです。 あなたがフィールドでキャリアを築くことを考えているなら、この記事はあなたがあなたの最初のスマートコントラクトを書くために知る必要があるすべてであなたを助けます!
世界のトップ大学からオンラインソフトウェアコースを学びましょう。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。
目次
あなたの最初のスマートコントラクトを書く方法は?
今日のデジタル時代では、2つの当事者が第三者の関与なしに契約を結ぶことができました。 これらのデジタル契約はブロックチェーンによって処理され、パブリックデータベースに保存されます。 したがって、トランザクションは追跡可能で不可逆的です。
あなたが最初のスマートコントラクトを書きたいのなら、以下にまとめられたリソースはあなたを軌道に乗せるでしょう。
読む:2020年の10のブロックチェーンの傾向と予測
スマートコントラクトの定義
「スマートコントラクト」という用語は、1996年にアメリカのコンピューター科学者ニックサボによって最初に提案されました。これは、契約の履行を促進、検証、および実施するコンピューターまたはデジタルプロトコルです。 汎用計算として、スマートコントラクトはブロックチェーンまたは分散型台帳に存在します。

言い換えれば、契約はコンピュータプログラムの形でコードに組み込まれています。 そして、指定されたアクターは、プログラムの機能を実行するための許可を受け取ります。 スマートコントラクトを正常に実行するには、事前定義されたルールを満たす必要があります。
たとえば、発注書(PO)を考えてみましょう。 これは、買い手と売り手の間の単純な契約です。 POを実行するには、特定の条件を満たす必要があります。 これらの仕様には、購入者による支払いの成功、購入時に合意された条件に従ったサプライヤーによる商品の配送、返品の条件などが含まれます。
したがって、バイヤーは注文を行うことができ、サプライヤーはデジタル形式で注文を履行することができます。 コンピューティングネットワークでは、すべてのアクションはトランザクションと呼ばれます。 また、すべてのトランザクションはネットワークによって検証および実施されます。 確認後、トランザクションを元に戻すことはできません。
読む:ブロックチェーンを学ぶための前提条件。 それはあなたが思っていることではありません
スマートコントラクトを設定するための要件
スマートコントラクトを構築するために、さまざまなプログラミング言語を利用できます。 言語の選択は、主にブロックチェーンプラットフォームに依存します。 たとえば、Solidity、Vyper、eWASM、およびEthereumバイトコードは、Ethereumブロックチェーンプラットフォームで最も人気のあるスマートコントラクト言語の一部です。
スマートコントラクト開発環境
最初のスマートコントラクトを作成する前に、その開発のための遊び場を設定します。 開発環境の知識がなければ、ブロックチェーンの世界を深く掘り下げるのは難しいでしょう。 次の選択肢から選択できます。
- Remix IDE:スマートコントラクトを構築およびテストするための統合開発環境です。 この完全にオンラインのオプションは、インストールを必要としないため、初心者に強くお勧めします。 さらに、スマートコントラクトのプロトタイピングと迅速な検証の課題が少なくなります。
- ローカルセットアップ:ローカルマシンは、スマートコントラクト開発のためのさらに別のリソースを提供します。 これらのツールは、エンタープライズグレードのアプリケーションに大きな柔軟性を提供します。 この環境のセットアップには時間がかかりますが、分散型アプリケーションまたはDApp用のツールの選択はかなり簡単なプロセスです。
スマートコントラクトの構造
Solidityプログラミング言語を使用して開発された発注書契約を調べてみましょう。
Solidityスマートコントラクトは、「データ」と「機能」で構成される標準構造に従います。 データがスマートコントラクトの現在の状態を維持している間、関数はこの状態を遷移するロジックを適用します。
契約は、「プラグマディレクティブ」と呼ばれるステートメントで始まります。 キーワード「pragma」は、コンパイラのチェックまたは機能を有効にします。 以下のステートメントを検討してください。
プラグマの堅牢性>=0.4.0 <= 0.6.0
この宣言は、スマートコントラクトが0.40より前および0.60より後のコンパイラバージョンでコンパイルされないようにすることを目的としています。
次は「契約宣言」です。 次のステートメントは「contract」キーワードを使用し、「PurchaseOrder」という名前で空の契約を識別します。
契約PurchaseOrder{}
データの保存
すべての契約またはコンピュータプログラムには、データが保存されています。 変数は、データを保存、ラベル付け、取得、および操作する方法を提供します。 Solidityには、値と参照の2種類の変数があります。 値型変数は、ブール値、整数などの関数の引数として使用される場合は常にコピーされます。
一方、参照型変数はデータの場所を格納します。 ある参照変数を変更すると、別の変数に影響します。 したがって、慎重に管理する必要があります。 例には、配列や構造体が含まれます。
データの追加
通常、発注書には製品数量が関連付けられています。 それでは、スマートコントラクトにデータ変数を追加しましょう。 正の値のみを持つことを前提として、変数product_quantityを追加します。
まず、uint256で表される符号なし整数を紹介します。 ここで、unsigned(u)は正の整数のみを表すことができる変数のタイプを意味し、256は256ビットのストレージを意味します。
契約発注書{uint256product_quantity;}
コンストラクタ
コンストラクターは、コントラクトがデプロイされるときに、いくつかの値を使用してスマートコントラクトを初期化します。 製品数量が100に設定されているとします。

コンストラクター()public {product_quantity = 100;}
キーワードまたはアクセス修飾子「public」は、機能が制限されていないことを指定していることに注意してください。 したがって、誰でもアクセスできます。
関数の追加
関数を追加すると、プログラムがインタラクティブになります。 これらは、キーワード「function」が前に付いた制御された機能です。 宣言には、関数名、アクセス修飾子、状態ミューテーター、および戻り値が含まれます。
保存された値を読み取るために、「get関数」を追加します。 「get_quantity」を使用すると、この関数は保存されたデータを取得または読み取る機能を取得します。 以下のステートメントを見てください。
function get_quantity()public view returns(uint256){return product_quantity;}
さらに分解すると、次のことがわかります。
- 関数名:get_quantity(「()」はパラメーターが渡されないことを意味します)
- アクセス修飾子:パブリック(アクセスは制限されていません)
- State Mutator:view(関数がコントラクトの状態を変更せず、それを読み取るだけであることを示します)
- 戻り値:関数によって返されるもの、つまりuint256型の変数を定義します
セッター機能
データを書き込んだり更新したりするときに、セッター関数が登場します。 この関数は、ユーザーから入力パラメーターを受け取り、それに基づいて「product_quantity」変数の値を更新します。 set関数(update_quantity)は、次のようにプラグインされます。
update_quantity(uint256 value)public {product_quantity = product_quantity + value;}
次に、上記のすべてのステートメントをプラグインして、最初のスマートコントラクトを作成します。

スマートコントラクトの展開
前述の手順を完了したら、スマートコントラクトをテストします。 スマートコントラクトをオンラインで作成、テスト、検証するSolidityコンパイラ機能を提供するRemixIDEを使用して同じことを行うことができます。
RemixOnlineIDEを使用してスマートコントラクトを設計およびデプロイするための段階的な手順は次のとおりです。
- プラスアイコンをクリックして、新しい(空の)ファイルを作成します
- クリックして空のファイルを開きます
- 契約書をこのファイルに貼り付けます
- 左側のメニューに移動し、ファイルアイコンのすぐ下にある2番目のアイコンをクリックします。 これにより、Solidityコンパイラオプションが表示されます
- コンパイララベルに移動して、コンパイラバージョンを選択します
- ファイルをクリックしてスマートコントラクトをコンパイルします
- コンパイル後、コンパイラの詳細ボタンをクリックして、バイトコードとアプリケーションのバイナリインターフェイスを理解します。 バイトコードには、変換およびコンパイル後のイーサリアムの運用コードとスマートコントラクトロジックが含まれています
- 左側のメニューで、コンパイルアイコンの下にあるアイコンをクリックして、スマートコントラクトをデプロイします
展開された契約との対話
コントラクトに記載されているパブリックメソッドは、デプロイされたコントラクトと対話する方法を提供します。 注文書のコンテキストでは、「update_quantity」と「get_quantity」が使用可能な2つの対話方法です。 入力ボックスを使用してパラメータを入力することもできます。 コントラクト変数を変更する操作はすべてトランザクションになることに注意してください。
これで、最初のスマートコントラクトを作成する方法の基本と、オンライン開発環境でSolidityプログラミング言語を使用してそれをテストおよびデプロイする方法について説明しました。 また、スマートコントラクトと対話してトランザクションを開始するプロセスも理解しました。 だから、あなたの学習を適用し、今日スマートコントラクトを作成してください。 結局のところ、練習は完璧になります!
まとめ
ブロックチェーンテクノロジーのキャリアは増加しており、ブロックチェーンはテクノロジー業界の顔を永遠に大きく変えました。 ブロックチェーン開発者になり、スマートコントラクトとチェーンコードを構築することに興味がある場合は、ブロックチェーンテクノロジーでIIIT-BとupGradの高度な証明書プログラムをチェックアウトしてください
スマートコントラクトのいくつかの可能なアプリケーションは何ですか?
スマートコントラクトは、契約の条件を自動的に実行するコンピュータープログラムです。 それらは、安全で透過的で改ざん防止のトランザクションを可能にする分散データベースであるブロックチェーンテクノロジーを使用しています。 レンタカー、ホテルの予約、イベントチケットは、スマートコントラクトがどのように採用されるかの一例にすぎません。
スマートコントラクトが通常のコントラクトよりも安全であると見なされるのはなぜですか?
スマートコントラクトはブロックチェーンネットワークに実装されているため、従来のコントラクトよりも安全であると見なされます。 ブロックチェーンは、暗号で保護された分散データベースです。 これは、ブロックチェーン上の情報が改ざんされたりハッキングされたりすることができないことを意味します。 その結果、スマートコントラクトの実行は正確で信頼できることが保証されます。 また、公開されており、監査可能です。つまり、ブロックチェーン上のすべての人が契約の条件を表示し、契約が実行されていることを確認できます。 一方、スマートコントラクトは、詐欺や紛争のリスクを下げるのに役立ちます。 肝心なのは、それらは多くの機能を備えており、使いやすいということです。
スマートコントラクトが人気を博しているのはなぜですか?
スマートコントラクトの最も重要な利点の1つは、組織が手順を自動化し、コストを削減するのに役立つ可能性があることです。 たとえば、企業はスマートコントラクトを利用して、配達が行われた直後にサプライヤーに支払いを行う場合があります。 これにより、会社が手動で支払いを処理する必要性が減り、時間とお金の両方が節約されます。 また、企業とその顧客の間の信頼を構築するために使用することもできます。 たとえば、スマートコントラクトを使用して、安全なオンライン決済システムを構築できます。 これにより、顧客は個人情報が危険にさらされることを恐れずに支払いを行うことができます。 最後になりましたが、これは、人と企業の両方のデジタルIDを構築するために使用できます。 これにより、企業は顧客のIDを認証し、詐欺から顧客を保護することができます。