問題タブ [solidity]
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 - solcjs を使用してコントラクトをデプロイする
そのチュートリアルのブログ投稿https://blog.topl.me/how-to-deploy-solidity/に従って、solcjs を使用してコントラクトをデプロイしようとしています。
ここに私のコードがあります
実際にスクリプトを実行すると、コンパイラからそのエラーが返されます。
エラー: タイプ "bytes32" は状態変数ではサポートされていません。\n マッピング (アドレス => bytes32) レストラン;\n
これが私の契約コードです。
私は solcjs バージョン 0.4.4 を使用しています。エラーはノード クライアントに依存しません。開発ネットワーク上の geth と js-eth の両方で発生します。
node.js - スマート コントラクトの階層に ACL を実装するための修飾子関数の使用
実装したい契約が3つあります。コントラクトはmaster
、admin
およびcustomer
です。そのため、マスター コントラクトは、(geth に基づく) プライベート チェーンの所有者である 1 人の人物によって開始されます。管理コントラクトは、特定のアドレスへのアクセスを提供します。これらの管理インスタンスは、マスターによって作成されます。これを確実にするために修飾子を使用しています。顧客コントラクトは、管理者とマスター コントラクトによってのみ操作できます。
これらのアドレスを、ローカルの Redis db に保存されているアカウント (ユーザー名と pw を使用) にマップしました。私の契約構造のスニッパーは以下の通りです:
基本契約
管理者契約
顧客契約
ここで、これらのコントラクトを結合し、顧客コントラクトで master および admin アドレスを参照して modifier を使用する方法をさらに理解する必要がありますcheckMasterAndAdminAccess
。理想的には、ABI にコンパイルして Nodejs アプリで使用する場合、これらのコントラクトは大きくなるため、これらのコントラクトを別々のファイルに配置したいと考えています。
これは推奨される方法ですか?
マスター コントラクトのインスタンスは 1 人だけによって管理されます (そのため、アクセスできるアドレスは 1 つだけです)。他のコントラクトは複数回インスタンス化される可能性があります
上記を達成する方法についてのガイダンスを得ることができますか。
javascript - 間違った形式: 無効なアドレス
問題があります。Javascript で財布のアドレスを持つ人を初期化し、Solidity 関数に渡す必要がありますが、間違った形式に関するエラーが発生します。
私の JavaScript 関数
そして、この関数を呼び出します
そしてSolidityコード
しかし、その後、無効なアドレスというエラーが発生しました
blockchain - Ethereum スマート コントラクトへの値の送信エラー
私は geth 1.5.2 を持っていて、Mist-linux64-0-8-7 でテストネットに取り組んでいます。関数を呼び出してコントラクトにイーサ (値) を送信しようとすると、単純な問題が発生しました。たとえば、このダミー関数でさえ、ゼロ以外の値では機能しませんが、ゼロ値では正常に機能します。
ここで驚いたことに、「このトランザクションは失敗するようです。送信すると、送信したすべてのガスが消費される可能性があります。」というメッセージが Mist に表示されます。これは、私が提供するガスの量に依存しません。500,000 ガスを入れても取引が完了しないようです。
ここでその結果を見ることができます :
メッセージがあります
警告!コントラクト実行中にエラーが発生しました【ジャンプ先が悪い】
さまざまな契約でさまざまな機能を実行しようとしました。sendTransaction 機能を使用して geth コンソールから直接同じことを行っていましたが、まだ機能させることはできません。誰かが同様の問題を抱えているかどうかはわかりませんでした。アイデアがあれば助けてください。
ethereum - イーサリアムトークンの作成と取引手数料の設定
イーサリアムとのスマート コントラクトの作成にはイーサのユーザーが関与するため、すべてのユーザーのイーサを補充することは企業にとってコストがかかります。ある企業が、イーサリアム ネットワークを介してトークンを発行することを決定し、そのトークンが新しい通貨を表すとしましょう。トークンの元の作成者は、各ユーザーが他の誰かにトークンを送信するたびに取引手数料を受け取ることができますか? そうすれば、会社は簡単に全員のトークンをイーサで補充できます。
token - Solidity コントラクトでのトークンの自動転送
私は Solidity の初心者で、独自のトークンを作成するためのチュートリアルを完了しました。
特定の時間間隔でトークンを指定したアドレスに自動的に転送する方法はありますか? 言い換えると...
100 トークンをウォレット アドレス 0x... に 1 日 1 回、永遠に転送するコントラクトに追加するコードは何ですか?
イーサリアム財団のウェブサイトでコードを使用しました: https://www.ethereum.org/greeter
test-coverage - Solcover は、単純な追加コントラクトでテスト カバレッジを生成できません
Solcover を使用して、契約のテスト カバレッジを生成したいと考えています。
https://github.com/JoinColony/solcover
私は単純なものでそれをテストします:
そして、ここに私のテストコードがあります:
ただし、コンパイル時にいくつかのエラーがあります。
Add.sol:2:1: Warning: Source file does not specify required compiler version!Consider adding "pragma solidity ^0.4.6
contract Add {
^
Spanning multiple lines.
Compilation failed. See above.
fs.js:549
次に、次のようにコンパイル バージョンを追加します。
そして今、コンパイルに合格します。しかし、今回はエラーが発生しました:
cp: no such file or directory: ./../originalContracts/Migrations.sol
rm: no such file or directory: ./allFiredEvents
Compiling Add.sol...
Contract: Add
✓ should return 5 when add 2 and 3
1 passing (15s)
fs.js:549
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^
Error: ENOENT: no such file or directory, open './allFiredEvents'
at Error (native)
at Object.fs.openSync (fs.js:549:18)
at Object.fs.readFileSync (fs.js:397:15)
at Object.<anonymous> (/Users/maiffany/graduate/mytest/solcover/runCoveredTests.js:60:13)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at startup (node.js:139:18)
そしてrunCoveredTests.jsで私はこれを見つけました:
55:shell.cp("./../originalContracts/Migrations.sol",./../contracts/Migrations.sol");
56:
57:shell.rm('./allFiredEvents'); //Delete previous results
58:shell.exec('truffle test --network coverage');
59:
60:events = fs.readFileSync('./allFiredEvents').toString().split('\n')
おそらく、ファイル「allFiredEvents」を生成するのはこのコマンドだと思います。だから私は私のコマンドラインでこれを試します:
truffle test --network coverage
Compiling Add.sol...
Contract: Add
✓ should return 5 when add 2 and 3
1 passing (24s)
しかし、まだファイル「allFiredEvents」が見つかりません。
それで、どこで間違ったのですか?