ホームページ >テクノロジー周辺機器 >IT業界 >契約の平坦化とリミックスでのデバッグ
Solitidity Smart Contractのデバッグとフラット化:Remix IDEとTRUFFLEの使用
この記事では、Remix IDEを使用してSolidity Smart Contractsをデバッグし、簡単なデバッグと検証のためにTruffle Flattenerフラット契約コードを使用する方法について説明します。
キーポイント:
assert()
このチュートリアルは、トリュフとOpenzeppelinを使用して、シンプルなカスタムトークンを構築し、契約を平らにする理由と方法を説明し、最終的にRemix IDEを使用して契約のデバッグを開始します。
なぜフラットなスマートコントラクトがあるのですか?契約フラット化とは、すべてのソリッドコードを複数のソースファイルではなく1つのファイルにマージすることを指し、インポートステートメントは必要ありません。インポートされたコードは同じファイルに埋め込まれます。手動で契約のレビュー、Etherscanの契約の検証、Remix IDEを使用した契約のデバッグなど、スマート契約を平らにする必要がある理由はたくさんあります(現在輸入をサポートしていないため)。
トリュフとopenzeppelinを使用してシンプルなトークンを書きますRemix IDEは、小規模契約の構築や学習の堅実さに正式に推奨されますが、より大きな契約を構築する必要がある場合、または高度なコンピレーションオプションが必要な場合は、Solidityコンパイラまたはトリュフなどのその他のツール/フレームワークを使用する必要があります。
エラーのない契約に加えて、セキュリティはスマート契約の構築の重要な部分でもあります。このため、OpenzePpelinのような戦闘テストされたフレームワークを使用して、DAPPの脆弱性を減らすのに役立つ再利用可能で、よくテストされ、コミュニティが参照したスマートコントラクトを提供します。
Openzeppelinの標準トークンを拡張するトリュフとOpenzeppelinを使用して、シンプルなカスタムトークンを作成する方法を見てみましょう。
前提条件このチュートリアルでは、トリュフ、イーサリアム、堅牢性に関する知識を持つ必要があります。ブロックチェーンとイーサリアムを始めるためのチュートリアルを読むことができます。
また、システムにnode.js 5.0とnpmをインストールする必要があります。手順については、そのダウンロードページを参照してください。
取り付けトリュフ
ターミナルを使用して、次のコマンドを実行してトリュフをインストールします。
新しいトリュフプロジェクト最初にプロジェクトの新しいディレクトリを作成します。名前を付けて
<code class="language-bash">npm install -g truffle</code>に名前を付けて、ナビゲートしてください:
このコマンドは、や
などの複数のフォルダーと、契約をブロックチェーンに展開するときに使用されるファイルを作成します。
simpletoken
次に、openzeppelin:
<code class="language-bash">mkdir simpletoken cd simpletoken truffle init</code>
contracts/
単純なトークン契約を作成migrations/
フォルダーで、
という名前のファイルを作成し、以下を追加します。<code class="language-bash">npm install openzeppelin-solidity</code>
これは、私たちが平らにしてデバッグする契約です。 openzeppelin契約をインポートし、オペレーターを使用して
を延長する契約を宣言しています。 contracts/
SimpleToken.sol
契約は多くの変数と機能を継承し、契約をカスタマイズするためにこれらの変数と関数をオーバーライドする必要があります。
<code class="language-solidity">pragma solidity ^0.4.23; import 'openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol'; contract SimpleToken is StandardToken { address public owner; string public name = 'SimpleToken'; string public symbol = 'STt'; uint8 public decimals = 2; uint public INITIAL_SUPPLY = 10000; constructor() public { totalSupply_ = INITIAL_SUPPLY; balances[owner] = INITIAL_SUPPLY; } }</code>トリュフプロジェクトを完了するには、プロジェクトの
フォルダーで、StandardToken.sol
という名前のファイルを作成し、以下を追加します。
SimpleToken
このファイルを使用すると、スマートコントラクトをブロックチェーンに展開/移行できますが、この例では、Remix IDEを使用してフラット化後にスマートコントラクトを展開するため、このファイルは実際には必要ありません。 is
StandardToken.sol
トリュフフラットナーは、トリュフとそのすべての依存関係の下で開発された堅実性ファイルを正しい順序で搾り出したり組み合わせたりするNPMユーティリティです。 migrations/
2_deploy_contract.js
最初に、次のコマンドを使用して、NPMからグローバルにトリュフフラットナーをインストールします。
<code class="language-javascript">var SimpleToken = artifacts.require("SimpleToken"); module.exports = function(deployer) { deployer.deploy(SimpleToken); };</code>次に、トリュフプロジェクトで、次のコマンドを実行して
ファイルをフラット化します。
出力標準出力またはターミナルへの契約の平らになった契約。 演算子を使用して、出力を現在のフォルダーの
ファイルに保存します。
Remix IDEを使用して契約をコンパイルおよび展開します
<code class="language-bash">npm install -g truffle-flattener</code>
FlattenedSimpleToken.sol
ファイルからフラットスマートコントラクトにアクセスできます。ファイルを開き、その内容をコピーします。
https://www.php.cn/link/54af6860114f54728b5c2fd9b5cfeca9からリミックスideを開き、平らなスマート契約をIDEの新しいファイルに貼り付けます。 エラーメッセージが表示されている場合は、モックコンパイラ:ソース
には、設定タブ&gt;新しいコンパイラバージョンのドロップダウンメニュー新しいコンパイラバージョン。 autocompilation
が無効になっている場合、コンパイルパネルの[コンパイル]ボタンをクリックします。
次に、パネルを実行します。最初に、環境にjavaScript vmを選択したことを確認してください。 2番目のボックスで、ドロップダウンメニューから deployボタンをクリックします。
契約は展開され、ブロックチェーンをエミュレートするJavaScript VMで実行されます。これで、さまざまな方法でデバッグを開始できます。
カスタムトークン契約契約のデバッグ方法を理解するために、最初にいくつかのエラーを導入します。
debugボタンからデバッグを開始できます。それが実際にどのように機能するか見てみましょう。
assert() を使用します
関数は2つの数値を減算し、符号なしの数値を返します。最初のパラメーターは、常に正の数値を取得できるように、2番目のパラメーターよりも大きくする必要があります。この関数は、関数を使用してこのルールを強制します。これは、関数のコードです:
検証条件の値を提供する限りおよび 、関数はエラーをスローし、プロンプト: に呼び出しを追加しましょう: ボタンをクリックした後、コードのデバッグを開始できる コードエディターでは、最初の行/命令が強調表示され、コード内の現在の位置をマークします。 sub(a,b)
assert()
sub
パラメーターエラーを使用して<code class="language-bash">npm install -g truffle</code>
にa
b
b < a
契約を再展開すると、端末で無効なオペコードエラーが表示されます。
b
a
assert()
<code class="language-bash">mkdir simpletoken
cd simpletoken
truffle init</code>
debugSimpleToken
debuggersub()
パネルを入力します。 <code class="language-bash">npm install openzeppelin-solidity</code>
どのような方法を使用しても、デバッガーは問題を引き起こすコードに連れて行ってから停止します。
現在のステップでローカル変数のステータスを確認できます。
パネルには、現在のコンテキストに関連付けられたローカル変数が表示されます。 ソースコードと Solidity Local変数
から、問題のルートはメソッドに関連しており、の値は。
assert()
b
a
ボタンのデバッグを停止することを使用してデバッグを停止できます。
また、デバッガーの他のパネルをチェックする価値があります。
指示
命令
パネルには、デバッグされた契約のバイトコードが表示されます。現在のステップのバイトコードが強調表示されます。
堅牢性ステータス
堅牢性ステータス
パネルには、現在デバッグされている契約のステータス変数が表示されます。
低レベルのパネル
これらのパネルは、機能のステップの詳細、メモリ、スタック、返品値など、実行に関する低レベルの情報を表示します。
結論
このチュートリアルでは、トリュフとOpenzeppelinを使用してシンプルなトークンを作成し、トリュフフラットナーとのカスタム契約を平らにし、Remix IDEを使用して契約のデバッグエラーを開始しました。
これが大胆に深くなり、段階的な契約をデバッグするのに役立つことを願っています。使用法を教えてください! (調査コンテンツ、フラット契約のFAQ、およびリミックスでのデバッグは省略されています。これは、記事が長すぎてコアコンテンツとの弱い関係を持っているためです。必要に応じて、個別に尋ねることができます。
以上が契約の平坦化とリミックスでのデバッグの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。