スマートコントラクトのプログラミングの基礎TON(FreeTON)

トークンを書き始めてからスマートコントラクトシステムを書き始める前に、FreeTONのスマートコントラクトの重要な要素の概要を簡単に見てみましょう。





前回の記事、TON(FreeTON)のスマートコントラクトであるHello Wordでは、 FreeTONとHelloWorldのスマートコントラクトの使用の最初の部分について説明しました。





この記事の構造:





  1. 数値タイプintとuint、純粋関数とイベント(イベント):ブロックチェーン上に計算機を書いてみましょう。





  2. 構造と配列:データベースとしてのスマートコントラクト。





  3. ハッシュテーブル:マッピング;





  4. 公開鍵とが必要です。





: tvm.accept(); -.





int ( ) uint ( ). , : int8, int16, uint128. int uint - int256 uint256. - .





- . calc, 3 uint-: 2 - , . calc pure, , , -, , .





, - , - .





pragma ton-solidity >= 0.35.0;
pragma AbiHeader expire;

contract HelloCalc {

    event UnknownOperator(uint op);

    function calc(uint a, uint b, uint op) public pure returns (uint) {
        tvm.accept();
        
        if(op == 1) {
            return a + b;
        } else if(op == 2) {
            return a - b;
        } else if(op == 3) {
            return a * b;
        } else if(op == 4) {
            return a / b;
        } else if(op == 5) {
            return a % b;
        } else if(op == 6) {
            return a ** b;
        }else {
            emit UnknownOperator(op);
            return 0;
        }
    }
}
      
      



(event) - , , , , , 0 , , .





( ) -, , , -. , - blockchain, - blockchain . - blockchain.





pragma ton-solidity >= 0.35.0;
pragma AbiHeader expire;

contract HelloUser {

    event NewUser(uint id);
    
    struct User {
        uint weight;
        uint balance;
    }

    User[] users;

    function AddUser(uint w, uint b) public {
        tvm.accept();
        users.push(User(w, b));
        emit NewUser(users.length - 1);
    }

    function GetUser(uint id) public view returns (uint w, uint b) {
        tvm.accept();
        w = users[id].weight;
        b = users[id].balance;
    }
}
      
      



User , 2 uint: . , , , . push, - NewUser.





GetUser: returns, . pure view.





-: mapping

, (User) ( , ) . mapping. , , , , . , , .





mapping :





contract HelloToken {

    event TokenCreated(uint owner, uint tid);
    
    struct Token {
        string name;
        string symbol;
    }

    Token[] tokens;

    mapping (uint => uint) accounts;

    function NewToken() public {
        tvm.accept();

        tokens.push(Token("", ""));
        accounts[tokens.length-1] = msg.pubkey();
        emit TokenCreated(msg.pubkey(), tokens.length-1);
    }

   function GetTokenOwner(uint tid) public view returns (uint) {
       tvm.accept();
       return accounts[tid];
   }

   function GetTokenInfo(uint tid) public view returns (string _name, string _symbol) {
       tvm.accept();
       _name = tokens[tid].name;
       _symbol = tokens[tid].symbol;
   }

 function SetTokenInfo(uint tid, string _name, string _symbol) public {
       require(msg.pubkey() == accounts[tid], 101);
       tvm.accept();
       tokens[tid].name = _name;
       tokens[tid].symbol = _symbol;
   }
}
      
      



require

- , , - , ( ). : , , value TON Crystal . . - API msg.pubkey(). NewToken() accounts[tokens.length-1] = msg.pubkey(); ID accounts , , tokens. SetTokenInfo() , , . tid accounts . .





ここでは、FreeTONスマートコントラクトのトピックを「ゼロから」研究する読者のために側面を説明しました。次の記事では、独自のトークンの作成を開始します。








All Articles