如何在Next.js中使用ABI?

lo8azlld  于 2023-05-17  发布在  其他
关注(0)|答案(1)|浏览(211)

问题

我正在使用Next.js和ZKSwap API进行一些开发,但我不知道如何使用部署的智能合约的ABI。
具体来说,我想将其称为DepositETH。
https://en.wiki.zks.org/interact-with-zkswap/make-transaction#deposit-eth
而且似乎我需要配置这个ABI来调用它,但我不知道如何配置它。
https://en.wiki.zks.org/interact-with-zkswap/make-transaction#abis

我做了什么

我按如下方式实现了它,但它不起作用。

import { Wallet, Contract, utils } from 'ethers'
import Web3 from 'web3'
import zkswapABI from '../src/zkswap.ABI.json'
const Web3EthAbi = require('web3-eth-abi');

export default function zkswap() {

    //try2
    let ABI = zkswapABI

    const wallet = new Wallet('0x1c1a49fea9a4ede1dc8e582639f498d41fa3c4a9e2ab2b9d740a4a3ec14e1cbf')
    const contract = new Contract('0x8ECa806Aecc86CE90Da803b080Ca4E3A9b8097ad', ABI, wallet)

    async function depositETH(amount) {
        const tx = await contract.depositETH(wallet.address, {
            value: utils.parse(amount)
        })
        return tx
    }

    depositETH('0.5').then(console.log)

    return (
        <div>
            <section className="h-screen w-4/5 max-w-5xl mx-auto flex items-center justify-center flex-col">
                <h1 className="mb-4 text-green-500 text-3xl">sample</h1>
                <p className="mb-2 text-center"> ZKSwap </p>
                <button className="btn-blue" onClick={depositETH}> Deposit ETH</button>
            </section>
        </div>
    )
}

错误

事实上,当我尝试'yarn dev'时,我得到了这样一个错误

TypeError: ethers__WEBPACK_IMPORTED_MODULE_1__.utils.parse is not a function
qybjjes1

qybjjes11#

你不应该在第4行使用require const Web 3EthAbi = require('web 3-eth-abi');//是错误的。
而是使用从“web 3-eth-abi”导入Web 3EthAbi

相关问题