ブロックチェーン スクール (レッスン 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 李其源: なぜ一部の中国マイナーは孤立した検証を嫌うのか?

推薦する

Wagecoin.com は、皆様に楽しい中秋節とたくさんのお金が稼げることを願っています。

Wabi.com のスタッフ一同、皆様の中秋節が楽しいものになりますようお祈り申し上げます。そして...

Binance.USの元CEOがBinance.USとBinanceの関係を明らかに

2023年6月5日、米国証券取引委員会(SEC)は、バイナンスとチャンポン・ジャオが複数の米国法に違...

「ドージコインデー」が急速に盛り上がり、新たな小売大手がドージコイン決済を導入し、暗号通貨のトッププレイヤーが世界を制覇

昨日、ドージコイン愛好家たちは今日ドージコイン大流行を起こそうと、ソーシャルメディア上で4月20日を...

DeFiの合併と買収の王者ACが、なぜ分散型金融の「公敵」になったのか?

インターネット周辺産業に参入した美団は、国境を越えたM&A拡大モデルの下、毛細血管のようにあ...

ビットコイン価格は調整を続けるが、マクロの強気トレンドは変わらない

8月17日、金価格の上昇とともにビットコインの価格も急上昇し、上昇三角形のパターンを突破して一時14...

Ethereum 2.0 がリリースされようとしていますが、正式に使用されるまでにはどれくらいの時間がかかりますか?

原題: Ethereum 2.0 はリリース予定だが、まだ使用可能ではない原作者: ロバート・スティ...

分散型ゲームプロトコル CryptoWars が Uniswap に登場し、CWT 流動性マイニングを開始

分散型金融(DeFi)は、2020年の暗号通貨業界のホットスポットです。DeFiが世界中で人気を博す...

ビットメイン、清華大学スーパーコンピューティングチームのISC16準優勝に貢献

過去数日、皆さんは次のニュースに気づいたかもしれません。中国のスーパーコンピューター「Sunway ...

ブラックフライデーにビットコインを使う場所

今年もその季節がやってきました。ビットコイン ウォレットを用意して、大幅割引の日にオンライン ショッ...

ロイター:景気刺激策でドルが急落、ビットコインが過去最高値を更新

(ロイター、ニューヨーク、2020年12月1日) - 投資家が米国のさらなる財政刺激策計画と堅調な世...

Qitmeer - Medina ネットワーク運用レポート

Qitmeer ネットワークは、PoW コンセンサス アルゴリズムに基づく BlockDAG ネット...

スウェーデン海賊党創設者:ビットコインは中東に大きな政治的影響を与える

CoinTelegraphは、スウェーデン海賊党の創設者リック・ファルクヴィンゲ氏と会い、分散化、ビ...

アブダビ規制当局、ブロックチェーンスタートアップ向けにフィンテックサンドボックスを提供

クレイジー解説:ブロックチェーンの新興企業の発展を促進し、地域の金融セクターの効率を向上させるために...

スペインのねずみ講の創始者が逮捕された

ねずみ講「ウネテ」の創設者が、裁判を待つ間スペインの裁判所に拘留されている。公判前の一時拘留は通常、...

イーサリアムの未決済建玉のピーク急落の可能性

イーサリアムは10月14日から15日にかけて8.8%上昇したが、2,650ドルの抵抗レベルは予想以上...