首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误:使用mismatchProblem调用应付合同函数时类型/值长度为web3

错误:使用mismatchProblem调用应付合同函数时类型/值长度为web3
EN

Ethereum用户
提问于 2019-03-27 16:22:00
回答 1查看 1.2K关注 0票数 1

环境Node version: v10.15.3 Web3: ^1.0.0-beta.50 Net: Ropsten

我的smart合同是一个非常简单的应付款/余额合同,我的目标是使用web3贡献0.1ETH来提高合同余额:

代码语言:javascript
运行
复制
pragma solidity >=0.4.25 <0.6.0;

contract Demo {
 uint public balance;

 constructor() public
 {
  balance = 0;
 }

 function contribute() public payable
 {
  balance += msg.value;
 }
}

我试着用web3调用贡献函数:

代码语言:javascript
运行
复制
import Web3 from "web3";
import Tx from "ethereumjs-tx";
import contractAbi from "./contractAbi";

    const web3 = new Web3("https://ropsten.infura.io/v3/xxxxxxx");

    const contractAdress = "xxxx";
    const my_public_key_address_1 = "yyyy";
    const privateKey1 = "vvv";

    const txCount = await web3.eth.getTransactionCount(my_public_key_address_1);
    const contract = await new web3.eth.Contract(contractAbi, contractAdress);

    const txObject = {
      nonce: web3.utils.toHex(txCount),
      to: "xxx",
      gasLimit: web3.utils.toHex(41000),
      gasPrice: web3.utils.toHex(web3.utils.toWei("4", "gwei")),
      data: contract.methods.contribute(100000000000000000).encodeABI(),
      chainId: 3,
    };
    //
    const tx = new Tx(txObject);
    tx.sign(privateKey1)
    const serializedTx = tx.serialize()
    const raw = '0x' + serializedTx.toString('hex')

    const txHash = await web3.eth.sendSignedTransaction(raw)

我得到了这个错误:

EN

回答 1

Ethereum用户

回答已采纳

发布于 2019-03-27 17:16:34

contribute不接受任何参数,但您正在尝试传递一个参数。相反,您可能希望调用不带参数的函数,但将以太附加到事务:

代码语言:javascript
运行
复制
const txObject = {
  nonce: web3.utils.toHex(txCount),
  to: "xxx",
  gasLimit: web3.utils.toHex(41000),
  gasPrice: web3.utils.toHex(web3.utils.toWei("4", "gwei")),

  // NOTE: Drop the parameter here:
  data: contract.methods.contribute().encodeABI(),

  chainId: 3,

  // NOTE: Add a value (in wei) here:
  value: "100000000000000000",
};
票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/68928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档