Web3 - 最初のスマート コントラクトの開発

最初のスマート コントラクトの書き方を学びます。以下のリンクは統合開発環境です

https://github.com/smartcontractkit/full-blockchain-solidity-course-js#lesson-2-welcome-to-remix-simple-storage

ここに画像の説明を挿入

「Remix」をクリックして、Remix IDE に移動します。これは、コードを記述したい統合開発環境です。スマート コントラクトが記述され、やり取りされる場所です。「同意する」をクリックします。
ここに画像の説明を挿入

これには多くの機能があり、スマート コントラクトを表示して対話するのに役立ちますが、徐々に「リミックス」から離れてローカル開発環境を使用します。しかし、Remix はスマート コントラクトの基本を学ぶのに非常に役立ちます。

最初のコントラクトを開発するには、"contracts" の下に新しい "SimpleStorage.sol" ファイルを作成します. .sol はコンパイラにこれが Solidity ファイルであることを伝えます. Solidity はスマート コントラクトの主要なプログラミング言語です. どの Solidity スマート コントラクトでも、最初に必要なのは使用済みバージョンの Solidity だけです。更新頻度が非常に高いため、「pragma solidity」で使用するバージョン番号を追加してバージョン番号を一致させ、

コードの先頭に "SPDX-License-Identifier" を追加します. 存在しない場合、コンパイラは警告を発します. これにより、ライセンスとコード共有ルールが定義されます. 図に示すように、MIT が使用され、MITは、最も制限の少ないライセンスの 1 つです。現時点では
、コンパイルできます。コンパイル インターフェイスに移動し、下の画像をクリックしてください。
ここに画像の説明を挿入
スマート コントラクトはありません。今すぐ定義を開始してください。

// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;  // 或者 ^0.8.7  或者 >=0.8.7

// 没有智能合约现在开始定义,输入“contract” ,contract是Solidity的关键字,告诉编译器后面的代码是来定义智能合约的。给智能合约取名名字叫“SimpleStorage”
contract SimpleStorage {
    
    

}

この時点で、Ctrl+S を押して保存すると、緑色のチェックマークが表示されます。以下に示すように
ここに画像の説明を挿入

そうでない場合は、コンパイル インターフェイスに入り、[コンパイル] をクリックすると、表示されます。緑色のチェックマークは、コードがエラーなしで正常にコンパイルされたことを示します。

solidity 基本データ型

最も基本的な 4 つのデータ型は、boolean、uint、int、および address です。

  • boolean は true または false を定義します。
  • uint は符号なし整数です。つまり、この数値は正でも負でもなく、正の数だけです。
  • int は、正または負の数値を表すことができます。
  • address は、Metamask に見られるように、アドレスを表します。
bytes是一种更底层的数据类型。
// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;  // 或者 ^0.8.7  或者 >=0.8.7

// 没有智能合约现在开始定义,输入“contract” ,contract是Solidity的关键字,告诉编译器后面的代码是来定义智能合约的。给智能合约取名名字叫“SimpleStorage”
contract SimpleStorage {
    
    
    // 创建一个变量,叫做“hasFavoriteNumber”
    bool hasFavoriteNumber = false; // 布尔类型数据
    uint8 favoriteNumber = 123;  // uint 比较特殊,我们可以决定给它分配的空间。uint8表示分配了8个bit ,最大uint256 ,
    int256 hasFavoriteInt = -54;
   // address myAddress = 0x106225d232323a23323592898;
    bytes32 favoriteByte = "1212";
    string hasFavoriteText= "123";
}

関数

JavaScriptと同様に「関数」キーワードで表され、


    uint256 favoriteNum; // 定义变量
    // 接收uint256的参数,参数名是“_favoriteNum” .定义为public函数
    function funName(uint256 _favoriteNum) public {
    
      
          favoriteNum = _favoriteNum; // 一定要带上“;”符号`
    }

実際の実行結果を確認するために、コントラクトをテスト環境にデプロイしました。ローカルネットワークにデプロイし、デプロイ前にコンパイルし、
トランザクション領域をデプロイして送信します。
ここに画像の説明を挿入

各アカウントには 100 イーサがあります。これらのアカウントは Metamask のアカウントに似ていますが、違いはこれらがテストのイーサ通貨であることです。
ガス制限を設定し、デプロイするコントラクトを選択し、
「デプロイ」ボタンをクリックしてコントラクトをデプロイできます。実行結果を下図に示します。

ここに画像の説明を挿入
Deployed Contracts は、スマート コントラクトの展開アドレスです。右側のドロップダウンをクリックすると、ステータス、トランザクション ハッシュ、from、to などのよく知られたキーワードが表示されます。コントラクトを展開することは、実際にはトランザクションを送信することです。ブロックチェーンで状態を変更するために何かを行うと、トランザクションが送信されます. コントラクトをデプロイすると、ブロックチェーンが変更され、コントラクトをブロックチェーン上で所有できるようになります。
関数名「funName」の後に 123 test と入力すると、下図のように口座の残高も少し減っていることがわかります。これは、コントラクトを呼び出すときにガスが使用されるためです。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_43506403/article/details/127880864