問題タブ [web3js]

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.

0 投票する
2 に答える
6305 参照

ethereum - 署名済みトランザクションを Ropsten に送信する

web3js を使用して、署名を必要としない関数 (コントラクトの状態を更新しない関数など) を呼び出すのは簡単です。ただし、MetaMask ウォレットを手動でロック解除し、 Remix環境内で関数を呼び出す以外に、署名が必要な関数を呼び出す方法は明確ではありません。

初めて Ropsten に dapp をデプロイした後、最初に配列を設定するためにcreateItem(string name, uint price)100 回呼び出す必要がありitemsます。Remix では手動でやりたくないので、自動で行うスクリプトを書きたいと思います。

MetaMask を使用せずにプログラムでトランザクションに署名ethereumjs-txする必要があるようです。とweb3jsも必要です。このすべての情報と公式の web3js doc を使用して、次のことを思いつきます。accountprivateKey

コードは実行されますが、txParams実際には 1 つのキーがありません: nonce. これを実行すると、次のエラーが発生します。

ここに私の質問があります:

  1. これは一般的に、私がやろうとしていることを行う正しい方法ですか?
  2. nonce1 が true の場合、デプロイされたコントラクトのパラメーターを取得するにはどうすればよいですか?

参考文献:

  1. http://web3js.readthedocs.io/en/1.0/
  2. https://github.com/ethereumjs/ethereumjs-tx
  3. https://ethereum.stackexchange.com/questions/21402/web3-eth-call-how-can-i-set-data-param
  4. https://ethereum.stackexchange.com/questions/6368/using-web3-to-sign-a-transaction-without-connecting-to-geth

アップデート:

Adam のおかげで、nonce. そこで、次のコードを追加しました。

しかし今、私はこの例外に遭遇し続けています:

未処理の拒否エラー: 返されたエラー: rlp: uint64 には入力文字列が長すぎます。(types.Transaction)(types.txdata).AccountNonce にデコードします

Google 検索は、例外ハンドラを含むこのファイル ( https://github.com/ethereum/go-ethereum/blob/master/rlp/decode.go ) を見つけさせてくれる以外は役に立ちませんでした。これを解決する方法を知っている人はいますか?