ブロックチェーン スクール (レッスン 1): ブロックチェーン + スマート コントラクト + Solidity の概要

ブロックチェーン スクール (レッスン 1): ブロックチェーン + スマート コントラクト + Solidity の概要

前に書かれた言葉:

この記事を読んでいる読者は、ブロックチェーンについて聞いたことがあるはずであり、ブロックチェーンは将来有望で破壊的な技術であると信じているはずです。しかし、混乱を感じることもあるかもしれません。ブロックチェーンについての一般的な概念は理解できても、ブロックチェーン技術の適用方法やブロックチェーンのプログラミング方法となると、それほど簡単ではないことがわかります。それではおめでとうございます!あなたは正しい場所に来ました。このチュートリアルでは、主にブロックチェーン技術の主要な分野である Ethereum プログラミングを紹介します。この本を読んだ後、読者はイーサリアムとそのスマートコントラクトのプログラミングを学習して習得し、実際のプロジェクト開発にブロックチェーン技術を実装できるようになることが期待されます。

最後に、自己紹介をさせてください。私のオンライン名は「Nebula」です。私は、インターネットのベテラン実践者であり、長年ブロックチェーン技術を探求し、Ethereum Chinese Network の創設者でもあります。ブロックチェーン分野で新しい世界を創ることに興味のある友人同士、ぜひコミュニケーションを取り合い、一緒に前進してください。

はい、余談はここまでにして、本題に入りましょう!

ブロックチェーン入門

ブロックチェーンとは一体何でしょうか?

ブロックチェーン(英訳:Blockchain)は、ビットコインから生まれた分散型データベースです。ブロックチェーンは、暗号化手法を使用して生成されたデータ ブロックの文字列です。各データ ブロックには、複数の Bitcoin ネットワーク トランザクションに関する情報が含まれており、情報の有効性 (偽造防止) を検証し、次のブロックを生成するために使用されます。 (ウィキより)

ブロックチェーン技術の定義:

ブロックチェーンは分散型台帳であり、分散型で信頼できない方法で信頼性の高いデータベースを集合的に維持するための技術的ソリューションです。

データの観点から:

ブロックチェーンは、変更がほぼ不可能な分散型データベースです。 「分散」には 2 つの意味があります。1 つは分散ストレージであり、もう 1 つはすべての参加者が共同でそれを維持することです。

ブロックチェーン技術のいくつかの特徴

  • (1)匿名

  • (2)改ざん防止と暗号化セキュリティ

  • (3)システムを信頼する必要はない

  • (4)分散分散化

  • (5)取引の透明性

引用元

ビットコインシステムは、上記の利点を踏まえ、数十億の取引量を誇る自律的な取引システムを実現し、長年にわたり世界中で24時間安定的に稼働しています。 2 つのアカウント間で行われたビットコインの購入または売却は、大規模に冗長化された元帳に忠実に記録されます。

ビットコイン ネットワークでは、すべてのアカウントは匿名であり、アカウント間の取引は改ざんできず、すべてのノードに記録されます。そして、ビットコインのマイニングインセンティブメカニズムを通じて、ネットワークは中央集権的な取引システムを必要とせずに自律的に動作できるようになります。

イーサリアム

では、イーサリアムとは何でしょうか?

Ethereum は、スマート コントラクト機能を備えたオープン ソースのパブリック ブロックチェーン プラットフォームです。専用の暗号通貨イーサを通じてピアツーピア契約を処理するための分散型仮想マシン(EVM)を提供します(ウィキペディアより)

最も簡単に言えば、ブロックチェーン技術 + スマートコントラクトです。

Ethereum はブロックチェーン技術を継承し、スマートコントラクトのサポートを実装しているため、ブロックチェーン技術を商用アプリケーションと組み合わせてプロジェクトの実装を実現できます。

Ethereum ネットワークでは、スマート コントラクトも特別なアカウントとして扱われるため、ユーザーはアカウントでトランザクションを実行することで、アカウント内のプロパティとメソッドを呼び出すことができます。これは、基盤となるテクノロジーからのスマート コントラクトの実装をサポートします。

技術アーキテクチャ図

スマートコントラクトとは何ですか?

以前、ブロックチェーン技術の5つの特徴について説明しました。 Ethereum は上記のすべてのブロックチェーン技術を継承し、スマートコントラクトのサポートを提供します。これにより、ブロックチェーン技術は、本来のアカウント間の取引機能から、スマートコントラクトを実装できるプラットフォームへと拡張されます。このスマート コントラクトは、クラウドファンディング コントラクト、数式、または完全にランダムな数字にすることができます。

スマート コントラクトが Ethereum ネットワークに展開されている限り、ブロックチェーン テクノロジーの 5 つの特性が本質的に備わっています。同時に、JavaScript のような言語で記述されているため、多くの複雑なビジネス ロジックを実装できます。

このチュートリアルでは、主にスマート コントラクトのプログラミングについて説明します。独自のビジネスロジックに準拠したスマートコントラクトを記述することで、さまざまなブロックチェーンベースのプロジェクトを簡単に実装できます。次の章では、最も単純なスマート コントラクトから始めて、スマート コントラクトがどのようなものかを簡単に紹介します。

最もシンプルなスマートコントラクト

最もシンプルなスマートコントラクト


プラグマ ソリディティ 0.4.9;
契約デモタイプ {
    関数f(uint a)は(uint b)を返します{
    uint 結果 = a * 8;
    結果を返します。
    }
}

上記は最も単純なスマート コントラクトです。このスマート コントラクトは、N を入力して 8 * N を返すという最も基本的な機能を実装します。
それで、それをどのように実装するのでしょうか?これには、非常に便利なツールである browser-solidity が関係します。

公式アドレス: https://ethereum.github.io/browser-solidity/#version=soljson-v0.4.9+commit.364da425.js

ここで現在使用されている solidity バージョンは 0.4.9 であるため、pragma solidity の後にバージョン 0.4.9 を続ける必要があります。そうしないと、エラーが報告されます。

上記のコードを貼り付けると、以下のような結果が表示されます。

この時点で、赤い作成ボタンをクリックします

この最もシンプルなスマートコントラクトをブロックチェーンネットワーク(メモリ上)にデプロイできます。

ここでいくつかのことがわかります

  1. 取引/実行コスト: これはガス単位での契約作成コストを表します。 GasとEtherコインの間には交換関係があり、交換比率はOracleによって決定されます

  2. ここで、契約名 DemoTypes がアドレスに登録されていることがわかります。これは、契約がマイニングされたことを意味します。

  3. 3番目は上記の契約コード、f(n) {return 8 * n}です。

今回は100を入力し、fボタンをクリックすると結果が表示されます。

結果は明らかです。

  1. 結果は800で、予想通りでした。

  2. f()関数の実行で消費されるガスコストは21698+800です。

上記では、最も単純なスマート コントラクトを紹介しています。次の章では、スマート コントラクト言語 Solidity を紹介します。それは本全体の焦点でもあります。

堅実性

前の記事では、 pragma solidity 0.4.9;示されています。 、

ここでの Solidity は、Ethereum スマート コントラクトのコア言語である Solidity であり、このチュートリアルの焦点でもあります。

Solidityとは何ですか?

Solidity は、Ethereum スマート コントラクトのプログラミング言語です。スマート コントラクトをコンパイルしてデプロイすることで、スマート コントラクトを作成、実行、表示し、特定の商用アプリケーションを実現できます。

いくつかの簡単なSolidityの例

以下のスマート コントラクトを通じて、いくつかのビジネス アプリケーションを適切にブロックチェーン化できるため、分散型で信頼性が高く、透明性の高いビジネス モデルを実現できます。

次のチュートリアルでは、Solidity プログラミングを段階的に分析し、Solidity 言語を素早く習得し、フロントエンド Web ページにブロックチェーンを実装できるようにします。

1+2+3+..+nの合計関数を実装します。

プラグマ ソリディティ 0.4.9;
契約デモ1 {
  /*1からNまでの合計を計算します*/
  関数 f(uint n) は (uint sum) を返します {
    (n == 0) の場合は throw; uint 結果 = 0;
    (uint i=0; i<=n; i++) の場合 {
      結果 +=i;
    }
    結果を返します。
  }
}

II はトークン機能を実装し、トークンのマイニングと転送の機能を備えています。

プラグマ solidity ^0.4.0;
契約コイン{
    // キーワード「public」はこれらの変数を
    // 外部から読み取り可能。
    パブリックミントアドレス;
    マッピング (アドレス => uint) パブリック残高;
    // イベントにより、軽量クライアントは
    // 効率的に変更します。
    イベント送信(送信元アドレス、送信先アドレス、uint 量);
    // これはコードが
    // 契約が作成された場合にのみ実行されます。
    関数Coin() {
        minter = msg.sender;
    }
    関数 mint(アドレス受信者、uint 金額) {
        if (msg.sender != minter) return;
        残高[受取人] += 金額;
    }
    関数 send(アドレス 受信者, uint 金額) {
        残高[msg.sender] < 金額の場合、戻り値は;
        残高[msg.sender] -= 金額;
        残高[受取人] += 金額;
        送信済み(msg.sender, received, amount);
    }
} 

III クラウドファンディングのスマートコントラクトを実装し、各ユーザーが資金を調達し、資金調達が成功した場合は収益を受益者に送金し、各クラウドファンディング参加者がトークンを取得できるようにします。

プラグマ ソリディティ ^0.4.2;
契約トークン { 関数 transfer(address received, uint amount){ } }
契約クラウドセール4 {
    公的受益者への対応;
    uint 公的資金目標;
    uint パブリック amountRaised;
    uint 公開期限;
    uint 公開価格;
    トークン public tokenReward;
    マッピング(アドレス => uint256) パブリックbalanceOf;
    bool 公共資金目標到達 = false;
    イベント GoalReached(address beneficiary, uint amountRaised);
    イベント FundTransfer(アドレス backer, uint amount, bool isContribution);
    bool パブリック クラウドセール終了 = false;
    /* キャンペーン寄付者に関する情報を保持するデータ構造 */
    /* 初期化時に所有者を設定します */
    機能クラウドセール4(
        アドレスifSuccessfulSendTo、
        uint fundingGoalInEthers、
        uint 期間(分単位)、
        uint イーサコストオブ各トークン、
        報酬として使用されるトークンのアドレス
    ){
        受益者 = ifSuccessfulSendTo;
        fundingGoal = fundingGoalInEthers * 1 ether;
        期限 = 現在 + 所要時間 (分) * 1 分;
        価格 = etherCostOfEachToken * 1 ether;
        トークン報酬 = token(報酬として使用されるトークンのアドレス);
    }
    /* 名前のない関数は、誰かがコントラクトに資金を送るたびに呼び出されるデフォルトの関数です */
    関数()支払可能{
        (crowdsaleClosed) の場合は throw;
        uint 量 = msg.値;
        balanceOf[msg.sender] += 金額;
        調達額 += 調達額;
        tokenReward.transfer(msg.sender, 金額 / 価格);
        FundTransfer(msg.sender, 金額, true);
    }
    修飾子 afterDeadline() { if (now >= 期限) _; }
    /* 目標または時間制限に達したかどうかを確認し、キャンペーンを終了します */
    関数 checkGoalReached() afterDeadline {
        (調達額 >= 資金調達目標)の場合{
            資金調達目標到達 = true;
            GoalReached(受益者、調達額);
        }
        クラウドセール終了 = true;
    }
    関数 safeWithdrawal() afterDeadline {
        資金調達目標に到達した場合
            uint 金額 = balanceOf[msg.sender];
            バランス[msg.sender] = 0;
            (金額>0)の場合{
                if (msg.sender.send(金額)) {
                    FundTransfer(msg.sender, 金額, false);
                } それ以外 {
                    balanceOf[msg.sender] = 金額;
                }
            }
        }
        if (fundingGoalReached && beneficiary == msg.sender) {
            if (beneficiary.send(amountRaised)) {
                FundTransfer(受益者、調達額、false);
            } それ以外 {
                // 受取人への送金に失敗した場合は、資金残高のロックを解除します
                資金調達目標到達 = false;
            }
        }
    }
} 

Solidity の紹介はこれで終わりです。これらの契約の謎については後ほど詳しく分析します。

前述したように、スマート コントラクトは Ethereum ネットワーク上に展開されます。したがって、Ethereum ネットワークを構築するには、公式ツール Geth が必要です。次の章で詳しく説明します。

<<:  金融サービス大手がブロックチェーン企業に投資する方法

>>:  BTCC CEO 李其源: なぜ一部の中国マイナーは孤立した検証を嫌うのか?

推薦する

ビットコインを「エレガントに」殺す方法 参加者の合意とパワーコンセンサスに注意

ビットコインは、市場発展価値が自身の市場価値よりもはるかに高いが、世論によって絶えず誤った方向に導か...

ビットコインは一晩で6,000ドル近く急落し、6万人以上が清算され、63億元が消失した

出典: 金石データビットコインは先週末、再び急騰した。ビットコインは土曜日(1月9日)の早朝に1コイ...

ビットコイン企業ブロックストリームとPwCが戦略的提携

ビットコイン拡大論争の中心企業であるブロックストリーム社は1月29日、会計大手プライスウォーターハウ...

2024年のビットコインの優位性

今週は、暗号通貨市場におけるビットコインの優位性の高まりについて探ります。ビットコイン ETF の影...

ビットコインの評価モデル7つ:50万ドルから2400万ドルまで

ビットコインを4年間保有して50万ドルになるつもりですか?過去10年間で90倍に増加しました。今後 ...

2021 年の Polkadot エコシステムの価値は何ですか? |オンライン教室

2021年1月19日、PolkaWorldマーケティングディレクターの水元碩子氏はLieyun Fi...

FinCENが新たな規制を発表、米国のデジタル通貨企業はより厳しい監督を受ける可能性

金融犯罪取締ネットワーク(FinCEN)は、ブロックチェーン上で取引される商品のトークン化を目指す米...

BTCはより良い未来を創造する唯一のツールです

SquareとTwitterのCEO、ジャック・ドーシーは、人権財団のアレックス・グラッドスタイン氏...

オーストラリア証券取引所、ブロックチェーンを代替の清算・決済システムとして検討

オーストラリアのメディアSMHによると、オーストラリア証券取引所(ASX)は、ビットコインの背後にあ...

ノルウェーのフィヨルド地域の鉱山がグリーンビットコイン採掘事業を実施

コインジャーナルによると、ノルウェーのニューハウン地域にあるレフダル鉱山は現在、グリーンビットコイン...

コインゾーントレンド: 今週のビッグデータに基づくビットコインの価格動向 (2017-07-27)

ボリューム調整の全体的な傾向は変わらない1. 市場動向<br/>今日は2017年7月27...

模倣の流行は続くのか?

今週の旧正月期間中、暗号通貨界は良い時も悪い時も経験しました。良いニュースは、ビットコインが新たな最...

AppleはiPhoneのマイニングを禁止したが、マイニングマシンになるデバイスは増えている

企画|ジュリアン著者: ビザンチン総主教鉱業はもともと、石炭や石油の採掘など、地殻や表面から鉱物資源...