如何通过 web3js 交易设置 Eth 价格

Posted

技术标签:

【中文标题】如何通过 web3js 交易设置 Eth 价格【英文标题】:How to set the Eth price with a transaction with web3js 【发布时间】:2021-11-23 16:58:52 【问题描述】:

我正在尝试设置交易价格

根据文档:

值(以 wei 为单位):从发送者转移到接收者的 Wei 数量。

但是当我输入这个值时:(对于 0.04eth)-> 我在 metamask 中得到 73 eth :)

(我在rinkeby网络上)

这是我的代码:

window.contract = await new web3.eth.Contract(contractABI.abi, contractAddress);//loadContract();
     const transactionParameters = 
        to: contractAddress, // Required except during contract publications.
        from: window.ethereum.selectedAddress, // must match user's active address.
        'data': window.contract.methods.mint(window.ethereum.selectedAddress,number).encodeABI(),
        value: String(40000000000000000) 
      ;
    try 
        const txHash = await window.ethereum
            .request(
                method: 'eth_sendTransaction',
                params: [transactionParameters],
            );
        return 
            success: true,
            status: " Check out your transaction on Etherscan: https://ropsten.etherscan.io/tx/" + txHash
        
     catch (error) 
      console.log(error);
        return 
            success: false,
            status: " Something went wrong: " + error.message
        
    

【问题讨论】:

【参考方案1】:

我找到了一种解决方法,似乎eth_sendTransaction 不能很好地处理该值。通过这样使用它现在可以工作了。

window.contract.methods.mint(window.ethereum.selectedAddress,  1).send(
         from: window.ethereum.selectedAddress, value: web3.utils.toWei(String(0.05*number),"ether"));

【讨论】:

以上是关于如何通过 web3js 交易设置 Eth 价格的主要内容,如果未能解决你的问题,请参考以下文章

Web3j如何获得交易状态

使用 web3js 在 uniswap 和 sushiswap 交易所获得硬币价格而不使用他们的 api

如何在 web3js 中进行多笔交易

如何使用 web3 js 通过地址获取令牌交易列表

【ETH钱包开发04】web3j转账ERC-20 Token

Web3js 签名交易