問題タブ [consensys-truffle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ethereum - リエントラント攻撃のスマート コントラクトのグッド プラクティス
私は堅牢性とブロックチェーン テクノロジに取り組んでいる初心者で、コードを改善するための優れた方法をいくつか読んでいました。
そして、よく理解していないコードについて質問があります。
ソース: https://github.com/ConsenSys/smart-contract-best-practices/blob/master/docs/known_attacks.md
上記のコードでは、悪意のあるエージェントが必要な回数だけステップ 2 を呼び出すことができるため、安全ではないと言われています。これに関する私の質問は、悪意のあるエージェントがどのようにしてこれを誤用し、そのコード行を複数回呼び出すことができるかということです。ここで明らかに何かが欠けています。
smartcontracts - Web3 オブジェクトにプロバイダを設定できません
私は DApp の作成に関するオンライン コースを受講しており、現在、チュートリアルで使用されるアプリケーションをセットアップしようとしています。
Dapp は、Chrome で Truffle と Metamask を使用してセットアップされます。すべての Dapp ファイルはコースによって提供されました (実際には仮想マシンで使用するために Ubuntu Linux インスタンスが提供されました) が、Metamask の最近のバージョン (コースの日付は 2017 年だと思います) の変更により、すぐに明らかになりました。アカウント アドレスに関連するフロントエンド コントロール (それらを表示するドロップダウン リストと、アカウント アドレスをコントラクトに送信する関数を呼び出すボタン) が壊れていました。エコシステム全体に慣れていないので、これからinitWeb3
機能を変更した仲間の学生からの提案に従いました
これに
ethereum.enable()
主な違いは通話であることを理解しています。これにより、関連するコントロールが (Chrome) Web ページに表示され、Metamask は、ユーザーによるアカウントとの通信の承認を求めるポップアップも表示します。問題は、Web ページの読み込み時に、Chrome が次のエラーを記録することです。
これはファイルの変更に関連しているとapp.js
思いますが、解決策が見つかりませんでした。App.web3Provider = new Web3.providers.HttpProvider(App.url)
「新しい」バージョンから元のバージョンに存在するものに置き換えてみまし App.web3Provider = new Web3.providers.HttpProvider('http://127.0.0.1:9545');
たが、違いはありませんでした。givenProvider
とと同じcurrentProvider
です。
私と他の仲間の学生は、コースの背後にあるスタッフと契約して支援を求めましたが、何も提供されませんでした(私も彼らと問題を取り上げました). エラーをグーグル検索し、結果を読み返すのにかなりの時間を費やしましたが、これまでのところ解決策は提供されていません.いくつかの結果は、これが実際にはWeb3のバグであることを示唆していますが、私は確信が持てませんでした. 誰かが問題を手伝ってくれるなら、それはありがたいです。
ありがとう