問題タブ [smartcontracts]
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.
memory - Ethereum Solidity では、「メモリ」キーワードの目的は何ですか?
サンプル コントラクトを見ると、配列が「メモリ」を使用してメソッドで宣言されている場合とそうでない場合があります。違いは何ですか?
ethereum - イーサリアム コントラクトで将来のトランザクションを指定する
ビットコインには、トランザクションに関連付けて、トランザクションをブロックに追加する前に経過する必要がある最小時間を指定できる nLockTime パラメータがあります。イーサリアム コントラクト内で同様のことを行うことは可能ですか?
blockchain - Solidity 構造体に新しいフィールドを 1 つ追加すると、イーサリアム コントラクトが機能しなくなります
Ethereum プライベート ネットワーク (geth) では、非常に単純なコントラクト (Solidity) を使用しています。
バージョン 1:
コントラクトをデプロイしてから、次のように呼び出します ( web3.jsから):
- 契約.getLog()
- contract.setBalance(有効なアドレス、55)
- 契約.getLog()
- contract.getBalance(住所)
- contract.get42(アドレス)
そして、私は出力結果として得ます:
- [通話終了]: T()
- [通話終了]: setBalance()
- 55
- 42
ここで、TData 構造体に新しいフィールドを 1 つ追加するだけです。
バージョン 2:
上記と同じ呼び出しを行います。
- 契約.getLog()
- contract.setBalance(有効なアドレス、55)
- 契約.getLog()
- contract.getBalance(住所)
- contract.get42(アドレス)
しかし、今私は得る:
- [通話終了]: T()
- [通話終了]: T()
- 0
- 0
「setBalance()」関数が実行されていない (またはどこかで終了している) ようで、ストレージの状態は変更されていません。
助けてください!
ありがとう。
ethereum - Ethereum イベントは表示されないが機能は完了
以下の契約をしています。
web3 を使用して で製品を購入するとStore.buyProduct
、製品の購入は行われますが、フロントエンドでイベントが発生しません。これが私のイベントウォッチャーコードです:
blockchain - スマート コントラクトは複数のユーザーと異なるストレージをどのように処理しますか?
イーサリアム ブロックチェーンでスマート コントラクトを試しています。Solidity のドキュメントにあるSimpleStorage.sol のような、誰でもアクセスできるストレージ状態を持つコントラクトがあるとします。リンク先の説明の通り、
誰でも別の値で set を再度呼び出して、番号を上書きすることができます
これにより問題が発生する可能性があり、その機能へのアクセスを特定のアカウントに制限するという解決策は、私のユース ケースでは適切ではありません。私の契約では、各アカウントが設定したデータに後で別の所定のアカウントからアクセスできるようにしたいと考えています (人物 A->B で B が A のデータのみを使用し、x->y で y がデータを使用する関係を考えてください)。 y が A のデータを使用できる場合、重複は存在できません)。私の理解では、この問題には 2 つの解決策があります。
- アドレスを相互にマッピングし、この単一のスマート コントラクト内のすべてのデータを追跡します。
- 最初のアカウントがアクセスするスマート コントラクトの「テンプレート」を用意し、新しいアカウントごとに個別のスマート コントラクトを生成して、テンプレートとやり取りするデータを保持します。
1の問題は、アカウント間の関係がより複雑になった場合 (別々の構造体をマップする場合)、または大量の人々が自分の情報をコントラクトに保存しようとした場合に発生します。
2の問題は冗長性です。メイン テンプレートにアクセスしようとしているすべてのユーザーに対して個別の「契約」を作成する必要がありますか?
私の質問があいまいな場合は、さらに説明できますが、主に概念的な回答を探しています。私が見つけたほとんどのスマート コントラクトの例は、非常に単純であるか不必要に複雑であり、具体的なユース ケースを提供していません。
ethereum - 「トランザクション ハンドラー」スマート コントラクトを作成する
Solidity と geth を研修生として初めて使用したので、Solidity オンライン IDE と geth dev モードを使用してコントラクトのデプロイを開始しました。私の問題は、それを行うためにいくつかの異なる方法を試しましたが、実際には何もうまくいかないようです。
コード:
堅牢性チュートリアルのこのコントラクトも試しましたが、期待どおりに機能しません。
送信者と受信者の間で取引を行うことができるスマートコントラクトを作成しようとしていますが、アカウントの残高は移動しません。その関数は、堅牢性がどのように機能するかを学ぶための抽象的なものですか、それとも実際にバランスを変えることができますか? あなたの答えをありがとう:)