Solidityを学び、ブロックチェーンプログラミングを開始する方法

ブロックチェーンプログラミングは、ここ10年間で、最も高額でやりがいのあるソフトウェア分野の1つになりました。ブロックチェーンは言語に依存せず、C ++やJavaScript(JS)などの既存の言語の多くはブロックチェーンエンジニアによって使用されますが、既存の言語では便利に実現できないタスクがいくつかあり、新しい暗号固有のオプション。そのような言語の1つがSolidityです.

Solidityは、イーサリアムエコシステムの中核部分として生まれました。 C ++、JavaScript、Pythonを吸収しました。ライブラリや継承など、多くの現代的な機能があります。 Solidityは、スマートコントラクトと呼ばれるイーサリアムアカウントと相互作用するプログラムを作成するように設計されています。スマートコントラクトはイーサリアム仮想マシン(EVM)で実行され、スマートコントラクトを利用するユーザーは、クラウドファンディング、ブラインドオークション、投票などのタスクを分散的に実行できます。スマートコントラクトの最も有名なキラーアプリは、ICOでの分散型資金調達であり、2017年に暗号市場での強気の集会を開始しました.

経験豊富な開発者であろうと、暗号通貨を始めたばかりであろうと、スマートコントラクトはブロックチェーンエコシステムの重要な部分になっているため、Solidityの学習を開始することをお勧めします。 dAppによって積極的に実装されるほかに、それらはインフラストラクチャ層のブロックチェーンに、さらにはRSKなどのプロバイダーを介してビットコインにも積極的に統合されています。スマートコントラクトを構築する方法を知ることで、ブロックチェーンのキャリアをより持続可能にし、より高品質のソリューションを生み出すことができるようになります。もうそれを引っ張らないで、コーディングで手を汚さないようにしましょう!

スマートコントラクトの基本を理解する

スマートコントラクトアカウントは、残高、ストレージ、コードの3つのセクションで構成されています。バランスは、スマートコントラクトが持つイーサリアムの量を表します。ストレージは、アプリケーションに固有の文字列や配列などのデータを保持します。コードセクションには、Solidityで記述したものからコンパイルされた生のマシンコードがあります.

ユーザーアカウントとは異なり、スマートコントラクトアカウントはそれぞれのネットワークの外部にはありません。つまり、KovanやRopstenなどのさまざまなネットワークでウォレットを使用できますが、スマートコントラクトではこれを行うことはできません。スマートコントラクトは内部.

各スマートコントラクトには、作成者のデバイスに保存されているソースと、ブロックチェーンに保存されているインスタンスがあります。スマートコントラクトのインスタンス(アカウント)を作成するには、それをネットワークにデプロイする必要があります。これは、従来のオブジェクト指向プログラミング(OOP)のクラスとインスタンス、およびそれを表す言語(JS、Ruby)の関係に非常によく似ています。より視覚的に表現するために、クラス「Bike」​​を作成してそのインスタンスを追加しましょう。.

自転車クラス&インスタンスUtodayによる画像

ここで作成するのはコントラクト定義です。コントラクト定義は、バイトコードとアプリケーションバイナリインターフェイス(ABI)の2つのファイルを生成するコンパイラーを介して実行されます。バイトコードは実際にEVMに供給されるものであり、ABIはバイトコードと通常のJavaScriptコードの間のレイヤーであり、ユーザーインターフェイス(UI)の構築を可能にします。.

IDEの選択 & Solidityのバージョン

始める前に、適切な統合開発環境(IDE)が必要です。言い換えると、コードを書き込むために必要なツールを備えた便利な端末が必要です。このチュートリアルでは、Ethereum Foundationによって作成されたIDEであるRemixを選択します。これにより、スマートコントラクトの記述、テスト、デバッグ、起動が可能になります。もっとたくさん。ブラウザで直接使用することも、必要に応じてローカルにダウンロードすることもできます.

Remixを起動すると、中央にコードエディター、左側にファイルマネージャー、右側にコンパイラが表示されます。.

初期リミックスウィンドウUtodayによる画像

事前に記述されたコードがいくつかあります-それは必要ありません。初めてのスマートコントラクトを作成するには、ターミナルの左上隅にある小さなプラスアイコンを押して名前を付けましょう.

Remixで新しいプロジェクトを作成するUtodayによる画像

これでb​​lank.solドキュメントができたので、コンパイラーが実行するSolidityのバージョンを指定する必要があります。このチュートリアルの時点で、最新バージョンは0.5.7です。使用するバージョンがわからない場合は、バージョンの範囲を指定できます.

Solidityのバージョンを指定する2つのタイプUtodayによる画像

最後に、スマートコントラクトに名前を付け、その後に括弧を付けましょう.

スマートコントラクトの命名Utodayによる画像

あなたの最初のスマートコントラクトを書く

キャンバスの準備ができたら、基本的な構成要素である変数を定義します。経験豊富なソフトウェアエンジニアはこの概念を理解するのに問題はありませんが、初心者に簡単に紹介します。変数は、それらを実行するプログラムによって後で参照される情報のチャンクのプレースホルダーです。.

文字列(一連の記号)と整数(数値)の2つの変数を作成しましょう。イーサリアムの場合、変数はコントラクトの残りの部分とともにブロックチェーンに保存されるため、どこからでもアクセスおよび更新できます。 Solidity変数のもう1つの重要な特徴は、変数の横に「private」と書くことで、それらをプライベートにすることができることです。最後に、整数の場合、Solidityには2つのタイプがあります。符号付き(正の場合もあります) & 負)および符号なし(正のみ可能)。符号なし変数を指定するには、その前に「u」を付けるだけです。.

プライベート文字列と整数Utodayによる画像

「name」変数を取得したら、それを設定および取得する方法を書き出す必要があります。これはJS関数のように見えます。 Solidityは静的に型付けされているため、変数の型を定義する必要があることに注意してください。これで、「setName」に入力した値によって「name」文字列が定義されます。ゲッターには、「getName」を使用して、表示されると予想される変数を指定します。次に、「年齢」変数についても同じことを行います。メソッドは「getName」と同様に構築されます.

名前/年齢のセッターとゲッターUtodayによる画像

コードの小さなチャンクをテストしてみましょう。コンパイラの[実行]タブに移動し、契約名の下にある[デプロイ]を押します。コンパイラの一番下に、メソッドを使用できる「デプロイされたコントラクト」セクションが表示されます。 「newName」値に名前を渡すには、文字列がJSONで記述されていることを確認する必要があります。そうでない場合、「getName」は何も返しません。 「setAge」の場合は、年齢を引用符なしで入力してください。ご覧のとおり、スマートコントラクトを通じて「名前」と「年齢」の変数を設定して受け取ることができます.

名前と年齢のコンパイラUtodayによる画像

魏とガスの定義

スマートコントラストの最も注目すべき機能の1つは、それらをイーサリアムネットワークに展開するには、トランザクションを開始する必要があることです。これには、イーサリアムで支払われる金額がかかります。 EVMを操作するたびに料金が差し引かれるため、システムで料金がどのように利用されているかを理解することが重要です。.

魏とは?

私たちのチュートリアルをここまで読んだことが、ビットコインを少なくとも一度は使用したことがあると仮定しましょう。あなたはおそらく1BTCよりはるかに少ない小さな取引をしました。その場合、1ドルのペニーのようなものであるSatoshisを使用しました。魏は聡のようなものです–それは1イーサリアムの最小の部分です。プログラミング用語で考えると、ネットワーク内で最も低い符号なし整数です。ネットワークと対話している間、ほとんどの場合、Gweiに遭遇します。これは、Gigaweiを指し、10億Weiに相当します。.

ガスとは?

ガスはスマートコントラクト実行のメカニズムの重要な部分です。トランザクションごとに、消費ガスとその価格の2つの値があります。トランザクションを開始するユーザーがこれらの値を定義することは言及する価値があります。ただし、ガスの設定値が特定の操作を処理するのに十分でない場合、ガスは消費されますが、トランザクションは失敗します。さらに、ガスの価格が特定の時間にネットワークに対して低すぎるように設定されると、トランザクションはノードによって処理されず、最終的には失敗します。トランザクションの最適値をチェックするためのサービスがいくつかあります。そのうちの1つはethgasstation.infoです。ガスとそれにお金がかかる理由をよりよく理解するために、ガスの一部を自分でコーディングしましょう.

Remixウィンドウに戻り、新しいファイルを開始します。この例では、これを「ガス」と呼び、同じ名前の契約を作成します。ブロックチェーンに保存する必要のあるデータが多いほど、必要なガスも多くなることに注意してください。そうは言っても、このチュートリアルの目的のために、安価な契約を作成します。追加すればするほど、料金は高くなります.

2つの入力の合計である整数を返す関数があります。可能な限り軽量にするために、コントラクトがブロックチェーンに何も格納しないように指定し、そのために関数の横に「純粋」を配置します.

安い契約Utodayによる画像

これで、コンパイラにデプロイし、任意の2つの数値を入力して、整数「c」を取得できます。取引の価格を確認するには、コードセクションの下にあるターミナルを確認する必要があります。取引費用と実行費用があります。 1つ目は、トランザクションに含まれるデータの量を示します。 2つ目は、トランザクションに必要なEVMの電力量を示します.

安い契約の費用Utodayによる画像

これは非常に基本的なトランザクションであり、ネットワークにほとんど費用がかかりません。意味のあるスマートコントラクトを作成する際に、詳細を追加します。これにより、その重みが増し、取引手数料が増加します。.

作成 & 独自のERC20トークンを展開する

それに直面しましょう。始めたばかりのブロックチェーン開発者の大多数は、大活躍して独自のブロックチェーンとトークンを作成することを熱望しています。これは他の分野から最高のソフトウェアエンジニアを惹きつけた非常に難しいトピックですが、基本的なERC20トークンの構築はロケット科学ではありません.

まず、Remixで別のファイルを作成し、ERC20インターフェイスをアップロードする必要があります。これは次のとおりです。

ERC20規格Utodayによる画像

「totalSupply」関数を使用すると、トークンの総数を確認できます。 「balanceOf」関数は、特定のアドレスのトークンの量を取得するために使用されます。 「転送」機能により、ユーザーは相互にトランザクションを実行できます。 「transferFrom」、「allowance」、「approve」機能は、他のユーザーが自分に代わってトランザクションを開始できるようにするためのものです。イベントは元帳のログツールです.

インターフェイス自体に加えて、新しいトークン用にseparate.solファイルが必要になります。ここでは、ERC20インターフェースをインポートし、トークンの記号、名前、および小数を指定します.

uTodayトークンUtodayによる画像

コンパイルする前に、制約を指定する必要があります.

  • 総供給量から始めましょう。これは、プライベートにする定数整数変数です。トークンの総供給量は100万になります。また、この値を返す関数も記述します。.

  • 次に、トークンをどこかに保存する必要があります。このために、指定されたアドレスの残高を返すマッピングの概要を説明する必要があります.

  • 第三に、トークン転送用の関数が必要です。この関数には、基本的に受信者のアドレスと転送されるトークンの量が含まれます。この関数は、送信者の残高に十分なトークンがあるかどうかもチェックできる必要があります。これは、単純なif / thenステートメントで実現できます。さらに、「_ value」の条件を設定して、ユーザーが0トークンでトランザクションを送信できないようにします。これは、ネットワークをジャンクで溢れさせるだけだからです。.

  • 第4に、整数へのマッピングのマッピングである剰余関数のマッピングを作成する必要があります.

  • 次に、「承認」および「許容」関数でいくつかのチェッカーを指定し、「transferFrom」の条件を設定します。.

  • 最後に、すべてのトークンが市場で入手できるわけではありません。トークンの一部は通常、チーム、財団、アドバイザー、その他の目的のために省略されています。したがって、循環するトークンの数を明確にすることが重要です。トークンを作成すると、循環供給はバランスに等しくなります.

uTodayトークンの制約Utodayによる画像

コードの準備ができたので、テストしてみましょう。コンパイラの[実行]タブに進み、トークンコントラクトをデプロイします。合計供給量、残高、および手当とともに、トークンデータがあることがわかります。おめでとうございます、あなたは背中を軽くたたく価値があります!

トークンを実際にネットワーク上で機能させるには、スマートコントラクトをデプロイする必要があります(これは、Remixでのテスト用にデプロイすることとは異なることに注意してください)。このチュートリアルでは、RemixとMetamaskを使用しますが、他の方法もあります。 Metamaskは、最も人気のあるブラウザの拡張機能として統合された優れたUIを備えたシンプルで効率的なEthereumウォレットプログラムです。この場合、Operaを使用します。まず、 metamask.io 拡張機能をダウンロードします。完了すると、ブラウザの右上にキツネのアイコンが表示されます.

メタマスクのダウンロード&アイコンの場所Utodayによる画像

アイコンを押して、提供された手順に従ってウォレットを作成します。秘密のフレーズを保存することを忘れないでください!ウォレットを入手したら、メタマスクアイコンを押して、ネットワークを「Ropsten」に変更します。これは、イーサリアムのメインネットを台無しにしたくないためです。.

メタマスクをRopstenに変更するUtodayによる画像

最後のステップは、Etherを生成することです(残念ながら、これらを実際の購入に使用することはできませんが、テストには必要です)。に向かいます faucet.metamask.io イーサリアムを1つリクエストします.

これですべての設定が完了しました。 Remixウィンドウに戻り、コンパイラで環境を「InjectedWeb3」に変更します。アカウントタブもご覧ください。アドレスは、メタマスクで生成したものと同じである必要があります。デプロイするスマートコントラクトを選択します。これはERC20インターフェイスではなくトークンコントラクトであり、それぞれのボタンを押します。メタマスクウィンドウがポップアップし、トランザクション、その詳細、およびトランザクションを操作するためのオプションが表示されます。トランザクションを送信すると、トークンが有効になります.

メタマスクポップアップUtodayによる画像

これで、前に指定したすべての機能を試すことができます。契約を別の側から見て、正しく機能することを確認しましょう。他のブロックチェーンと同様に、イーサリアムには複数のブロックエクスプローラーがあり、ネットワークで何が起こっているかを監視するという本質的な目的を果たします。私たちの場合、私たちは固執します エーテルスキャン, 他にもいくつかの優れた選択肢がありますが。 etherscanにアクセスすると、メインネットワークが表示されることに注意してください。 Ropstenネットワークを確認する必要があるため、ウェブサイトのアドレスの前に「ropsten。」を付ける必要があります。住所を検索すると、2つのトランザクションが表示されます。1つは受け取った無料のEther用で、もう1つは契約の展開用です。.

EtherscanのユーザーのアドレスUtodayによる画像

契約の住所を見つけるには、TxHashを押して、[宛先]フィールドに移動します。ここでは、スマートコントラクトのトランザクション、コード、およびイベントを確認できます。この時点で、契約を確認して公開する必要があります。 [コード]セクションに移動し、[確認して公開]リンクをクリックします。ここで、トークンの名前、コンパイラのバージョンを再度指定する必要があります(この場合、使用したSolidityの最新バージョンは0.5.7であったため、関連するコンパイラバージョンを使用します)。次に、トークンのスマートコントラクトコードとERC20インターフェースコードをRemixウィンドウからetherscanにコピーし、画面の下部にある[Verify andPublish]を押す必要があります。.

スマートコントラクトの検証Utodayによる画像

契約の住所に戻る時が来ました。 [コード]タブのコードが確認されます。さらに、「契約を読む」という2つのタブが追加されます。 & 「契約書を書く」。読書セクションでは、トークンの機能を確認できます。 (契約ではなく)アドレスを「balanceOf」フィールドに入力して、トークンの数を確認します。総供給量としてハードコーディングし、ウォレットに循環させたことを100万と表示するはずです。これは、トークンがテストネットで正しく機能していることを意味します.

残高を受け取るUtodayによる画像

概要

あなたが暗号業界でのキャリアを始めようとしているなら、あなたは基本的に比較的単純であるにもかかわらず、ブロックチェーンはそれに信じられないほどの深さを持っていることを理解する必要があります。 2017年以降、ブロックチェーンは大幅に進化し、そのユースケースは単なる金融取引を超えました。イーサリアムの出現により、さまざまなdAppとブロックチェーンベースのソリューションをホストするまったく新しいネットワーク層が登場しました。この進化の背後にあるツールはスマートコントラクトでした。エクスペリエンスをより価値のある将来性のあるものにしたい場合は、その仕組みを知っておく必要があります。.

他の言語を使用してスマートコントラクトをコーディングすることもできますが、Solidityはそのような目的に適しています。さらに、イーサリアム開発者になりたい場合、またはプロジェクトのICO / ERC20トークンを作成したい場合は、これが頼りになる選択です。 C ++またはJavaScriptの経験があれば、Solidityでのコーディングは比較的簡単です。ただし、ソフトウェアを起動するクライアントサーバーモデルと分散モデルの違いを理解する必要があります。イーサリアム財団といくつかのサードパーティ組織のおかげで、開発者には、スマートコントラクトをコーディングしてデプロイするためのRemixやEtherscanなどの便利なツールのセットが提供されます.

私たちのチュートリアルが、Solidityの概念の大部分を回避して、ブロックチェーンの旅を始めるのに役立つことを願っています。 Solidityに関する最新のドキュメントでいつでも確認できることを忘れないでください。私たちはあなたに幸運を祈り、いつかあなたのdAppのいくつかを喜んで使用するでしょう!