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

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











このパイロットプログラム、CNCF(クラウドネイティブコンピューティングファンデーション)、アンペアコンピューティング、Equinix Metal、およびActuatedのコラボレーションであるCNCF GithubプロジェクトのARM64 CI/CDが合理化されます。 このイニシアチブは、セキュリティの懸念とパフォーマンスリムに対処します

このチュートリアルは、AWSサービスを使用してサーバーレスイメージ処理パイプラインを構築することをガイドします。 APIゲートウェイ、Lambda関数、S3バケット、およびDynamoDBと対話するECS Fargateクラスターに展開されたnext.jsフロントエンドを作成します。 th

これらのトップ開発者ニュースレターを使用して、最新のハイテクトレンドについてお知らせください! このキュレーションされたリストは、AI愛好家からベテランのバックエンドやフロントエンド開発者まで、すべての人に何かを提供します。 お気に入りを選択し、Relを検索する時間を節約してください
