Solidityインテリジェント契約のファイル構造

3575 ワード

Solidityインテリジェント契約ファイル構造


バージョンの説明


pragma solidity ^0.4.0;


説明:1バージョンは0.4より高くなければコンパイルできません2^号は0.5より高いバージョンを表すとコンパイルできません.3番目のバージョン番号は変更できますが、バグとして残して修復できます(0.4.1のコンパイラにバグがあり、0.4.2で修復できます.既存の契約はコードを変更しません).

その他のソースファイルを参照

  • グローバル導入*
  • 
    import “filename”;
    
    
  • カスタムネーミングスペース導入*
  • 
    import * as symbolName from “filename”
    
    

    導入の個別定義
    
    import  {symbol1 as alias, symbol2} from “filename”
    
    

    非es 6互換の略語構文
    
    import “filename” as symbolName
    
    

    上記と同等
    
    import * as symbolName from “filename”
    
    

    パスについて
    ファイルパスを導入するときは、.ヘッダ以外のパスは絶対パスとみなされるので、同じディレクトリのファイルを参照して使用します.
    
    import “./x” as x
    
    

    次の方法も使用しないでください.これはグローバルなディレクトリの下にあります.
    
    import “x” as x;
    
    

    なぜこの違いがあるのかは、コンパイラによって異なります.解析パスの場合、通常、ディレクトリ階層構造はローカルのファイルに1つ1つ対応していません.ipfs、http、gitによって構築されたネットワーク上の仮想ディレクトリである可能性が高いからです.

    コンパイラ解析リファレンスファイルメカニズム


    各コンパイラは、ファイル接頭辞マッピングメカニズムを提供します.
  • は、ドメイン名の下のファイルをローカルにマッピングし、ローカルのファイルから
  • を読み出すことができる.
  • は、同じインプリメンテーションの異なるバージョンに対するサポートを提供する(あるバージョンのインプリメンテーションの前後が互換性がなく、区別が必要である可能性がある)
  • .
  • 接頭辞が同じ場合は最長、
  • にはfallback-remappingメカニズムがあり、空白列は「/usr/local/include/solidify」
  • にマッピングされます.

    solcコンパイラ


    コマンドラインコンパイラ、次のコマンドネーミングスペースマッピングでサポート
    
    context:prefix=target
    
    

    上記のcontext:および=targetはオプションである.すべてのcontextディレクトリの下にあるprefixで始まるものは、targetに置き換えられます.たとえば、github.com/ethereum/dapp-binをローカルの/usr/local/dapp-binにコピーし、次の方法でファイルを使用します.
    
    import “github.com/ethereum/dapp-bin/library/iterable_mapping.sol” as it_mapping;
    
    

    このファイルをコンパイルするには、次のコマンドを使用します.
    
    solc github.com/ethereum/dapp-bin=/usr/local/dapp-bin source.sol
    
    

    もう1つのより複雑な例は、より古いバージョンのdapp-binを使用する場合、古いバージョンは/url/local/dapp-bin_old、では、次のコマンドを使用してコンパイルできます.
    
    solc module1:github.com/ethereum/dapp-bin=/usr/local/dapp-bin  \
            modeule2:github.com/ethereum/dapp-bin=/usr/local/dapp-bin_old \
            source.sol
    
    

    solcは、実際に存在するファイルのみを含むことを許可することに注意してください.再マッピングされたディレクトリまたはサブディレクトリに存在する必要があります.直接の絶対パスを含む場合は、名前空間を=\注記に再マッピングできます.複数の再マッピングが同じファイルを指している場合は、最長のファイルを取得します.

    browser-solidityコンパイラ:


    browser-solidityコンパイラはデフォルトでgithubに自動的にマッピングされ、ネットワークからファイルが自動的に取得されます.たとえば、反復パケットを次のように導入できます.
    
    import “github.com/ethereum/dapp-bin/library/iterable_mapping.sol” as it_mapping
    
    

    備考:将来、他のソース方式がサポートされる可能性があります.

    コードコメント


    2つの方法、1行(//)、複数行使用(/*…*/)
    
    // this is a single-line comment
    /*
    this is a
    mulit-line comment
    */
    
    

    ドキュメントコメント


    文書作成用.3つのスラッシュ///または/** … */は、Doxygen構文を使用して、ドキュメントの説明、パラメータ検証の注釈の生成、またはユーザがこの関数を呼び出すときに弾き出される確認内容をサポートすることができる.
    
    pragma solidity ^0.4.0;
    /** @title Shape calculator.*/
    contract shapeCalculator{
        /**
        *@dev calculate a rectangle's suface and perimeter
    
        *@param w width of the rectangles
    
        *@param h height of the rectangles
    
        *@return s surface of the rectangles
    
        *@return p perimeter of the rectangles
    
        */
    
        function rectangles(uint w, uint h) returns (uint s, uint p){
    
            s = w * h;
    
            p = 2 * ( w + h) ;
    
        }
    
    }