Techioz Blog

Eth::Client::ContractExecutionError - トランザクションの価格が低価格です

概要

eth gem Ruby ライブラリ https://q9f.github.io/eth.rb/ を使用して ABI から呼び出される関数を実行していますが、エラー トランザクションが過小評価され続けます。ガス価格と関係があると思うので、ガス価格を設定しましたが、依然としてエラーが発生します。 「balanceOf」のような情報の取得に依存する関数を呼び出すと正常に動作することに注意してください。

コード:

def self.mint(mint_address, mint_amount)
      signer = Eth::Key.new(priv: @@private_key)

      client = Eth::Client.create "https://polygon-mainnet.g.alchemy.com/v2/API"
      
      contract_name = "WOW"
      wow_contract = Eth::Contract.from_abi(abi: @@abiWOW.to_json, address:  @@master_contract_address, name: contract_name)
      wow_contract.key = signer

      # Convert Gwei to Wei for the gas price. 1 Gwei = 1e9 Wei.
      gas_price = 170 * 1e9

      # Set gas_price for the contract
      wow_contract.gas_price = gas_price
      wow_contract.gas_limit = 200000

      puts "gas price: #{wow_contract.gas_price}"
           
      mint_amount_in_smallest_unit = (mint_amount.to_f * (10**18)).to_i

      tx_hash = client.transact_and_wait(wow_contract, "mint", mint_address, mint_amount_in_smallest_unit, sender_key: signer)

      if client.tx_mined?(tx_hash)
        puts "Transaction was successful!"
      else
        puts "Transaction failed!"
      end
  end

エラー:

Eth::Client::ContractExecutionError - transaction underpriced

その他の出力:

gas price: 170000000000.0

ネットワークは Polygon で、クライアントは Alchemy です。

解決策

ガソリン価格を値上げしてみてください。ブロックチェーンの現在のガス推定器に応じて、価格の 2 ~ 3 倍をお試しください。メタマスクを使用している場合は、メタマスクにガス送信を操作するセクションがあります。それを確認できます。メタマスクにはこれに関するブログが 1 つあります。それをお読みください。