Skip to content
This repository has been archived by the owner on May 17, 2024. It is now read-only.

Lesson 5 : contract.address TypeError: no matching function #82

Open
LeeJianXing opened this issue May 25, 2023 · 4 comments
Open

Lesson 5 : contract.address TypeError: no matching function #82

LeeJianXing opened this issue May 25, 2023 · 4 comments

Comments

@LeeJianXing
Copy link

LeeJianXing commented May 25, 2023

This is my solidity code,i get this error

TypeError: no matching function (argument="key", value="address", code=INVALID_ARGUMENT, version=6.2.3)

tutorial timestamp at : 8:02:50

const ethers = require("ethers")
const fs = require("fs-extra")
require("dotenv").config()

async function main() {
    //http://172.26.16.1:7545
    const provider = new ethers.JsonRpcProvider(process.env.RPC_URL)

    // const wallet = new ethers.Wallet(process.env.PRIVATE_KEY,provider);
    const encryptedJson = fs.readFileSync("./.encryptedKey.json", "utf8")
    let wallet = ethers.Wallet.fromEncryptedJsonSync(
        encryptedJson,
        process.env.PASSWORD
    )
    wallet = wallet.connect(provider)

    const abi = fs.readFileSync("./SimpleStorage_sol_SimpleStorage.abi", "utf8")
    const binary = fs.readFileSync(
        "./SimpleStorage_sol_SimpleStorage.bin",
        "utf8"
    )

    const contractFactory = new ethers.ContractFactory(abi, binary, wallet)
    console.log("Deploying...please wait")
    const contract = await contractFactory.deploy()
    await contract.deploymentTransaction().wait(1)
   
    console.log(`Contract deployed to ${contract.address}`) <------------- this give me an error

    // console.log("Lets create our own raw tx! :) ");
    // const nonce = await wallet.getNonce();
    // const tx = {
    //   nonce : nonce,
    //   gasPrice: 200000000000,
    //   gasLimit: 6721975,
    //   to: null,
    //   value: 0,
    //   data: "0x608060405234801561001057600080fd5b50610771806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80632e64cec11461005c5780636057361d1461007a5780636f760f41146100965780638bab8dd5146100b25780639e7a13ad146100e2575b600080fd5b610064610113565b604051610071919061052a565b60405180910390f35b610094600480360381019061008f919061046d565b61011c565b005b6100b060048036038101906100ab9190610411565b610126565b005b6100cc60048036038101906100c791906103c8565b6101b6565b6040516100d9919061052a565b60405180910390f35b6100fc60048036038101906100f7919061046d565b6101e4565b60405161010a929190610545565b60405180910390f35b60008054905090565b8060008190555050565b6001604051806040016040528083815260200184815250908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101908051906020019061018c9291906102a0565b505050806002836040516101a09190610513565b9081526020016040518091039020819055505050565b6002818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b600181815481106101f457600080fd5b906000526020600020906002020160009150905080600001549080600101805461021d9061063e565b80601f01602080910402602001604051908101604052809291908181526020018280546102499061063e565b80156102965780601f1061026b57610100808354040283529160200191610296565b820191906000526020600020905b81548152906001019060200180831161027957829003601f168201915b5050505050905082565b8280546102ac9061063e565b90600052602060002090601f0160209004810192826102ce5760008555610315565b82601f106102e757805160ff1916838001178555610315565b82800160010185558215610315579182015b828111156103145782518255916020019190600101906102f9565b5b5090506103229190610326565b5090565b5b8082111561033f576000816000905550600101610327565b5090565b60006103566103518461059a565b610575565b90508281526020810184848401111561037257610371610704565b5b61037d8482856105fc565b509392505050565b600082601f83011261039a576103996106ff565b5b81356103aa848260208601610343565b91505092915050565b6000813590506103c281610724565b92915050565b6000602082840312156103de576103dd61070e565b5b600082013567ffffffffffffffff8111156103fc576103fb610709565b5b61040884828501610385565b91505092915050565b600080604083850312156104285761042761070e565b5b600083013567ffffffffffffffff81111561044657610445610709565b5b61045285828601610385565b9250506020610463858286016103b3565b9150509250929050565b6000602082840312156104835761048261070e565b5b6000610491848285016103b3565b91505092915050565b60006104a5826105cb565b6104af81856105d6565b93506104bf81856020860161060b565b6104c881610713565b840191505092915050565b60006104de826105cb565b6104e881856105e7565b93506104f881856020860161060b565b80840191505092915050565b61050d816105f2565b82525050565b600061051f82846104d3565b915081905092915050565b600060208201905061053f6000830184610504565b92915050565b600060408201905061055a6000830185610504565b818103602083015261056c818461049a565b90509392505050565b600061057f610590565b905061058b8282610670565b919050565b6000604051905090565b600067ffffffffffffffff8211156105b5576105b46106d0565b5b6105be82610713565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b6000819050919050565b82818337600083830152505050565b60005b8381101561062957808201518184015260208101905061060e565b83811115610638576000848401525b50505050565b6000600282049050600182168061065657607f821691505b6020821081141561066a576106696106a1565b5b50919050565b61067982610713565b810181811067ffffffffffffffff82111715610698576106976106d0565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61072d816105f2565b811461073857600080fd5b5056fea264697066735822122005f4761e428b272cff3be71d18d77c255fd57b725a8cec4f019c4e1beb4ada8164736f6c63430008070033",
    //   chainId: 1337,
    // };
    // const sendTx = await wallet.sendTransaction(tx);
    // await sendTx.wait(1);
    // console.log(sendTx);

    const currentFavoriteNumber = await contract.retrieve()
    console.log(`Current favorite number : ${currentFavoriteNumber.toString()}`)
    const txResponse = await contract.store("7")
    const txReceipt = await txResponse.wait(1)
    const updatedFavoriteNumber = await contract.retrieve()
    console.log(`Updated favorite number is ${updatedFavoriteNumber}`)
}

main()
    .then(() => process.exit(0))
    .catch((error) => {
        console.error(error)
        process.exit(1)
    })

This is my package.json, the ethers version i followed what is shown in the tutorial

{
    "dependencies": {
        "dotenv": "^16.0.3",
        "ethers": "^6.2.3",
        "fs-extra": "^11.1.1",
        "prettier": "^2.8.8",
        "prettier-plugin-solidity": "^1.1.3",
        "solc": "0.8.7-fixed"
    },
    "scripts": {
        "compile": "yarn solcjs --bin --abi --include-path node_modules/ --base-path . -o . SimpleStorage.sol"
    }
}
@matcom-chacha
Copy link

matcom-chacha commented Jun 2, 2023

I think this migth be the problem:

For ethers version 6 you need to use:

console.log(`Contract deployed to ${await contract.getAddress()});

to access the contract's address.

@ezescigo
Copy link

ezescigo commented Jun 12, 2023

@LeeJianXing aren't you getting a type error when contract.retrieve()?

async function main() {
  //http://127.0.0.1:7545
  const provider = new ethers.JsonRpcProvider("http://127.0.0.1:7545");
  const wallet = new ethers.Wallet(
    "0x962355e5534cf73d354b2792432a511f6f70eac52b1d30a085acf9ede3ba5d6a",
    provider
  );
  const abi = fs.readFileSync("./SimpleStorage_sol_SimpleStorage.abi", "utf8");
  const binary = fs.readFileSync(
    "./SimpleStorage_sol_SimpleStorage.bin",
    "utf8"
  );
  const contractFactory = new ethers.ContractFactory(abi, binary, wallet);
  console.log("Deploying, please wait...");
  const contract = await contractFactory.deploy();
  // await contract.waitForDeployment();
  console.log(contract);
  const transactionReceipt = await contract.deploymentTransaction()?.wait(1);

  // console.log(transactionReceipt);
  // const nounce = await wallet.getNonce();
  // const tx = {
  //   nonce: nounce,
  //   gasPrice: 100000000000,
  //   gasLimit: 1000000,
  //   to: "0x0000000000000000000000000000000000000000",
  //   value: 0,
  //   data: "0x60",
  //   chainId: 1337,
  // };
  // const sentTx = await wallet.sendTransaction(tx);
  // console.log(sentTx);

  const currentFavoriteNumber = await contract.retrieve();  // <========== here
}

@EggsyOnCode
Copy link

EggsyOnCode commented Jun 16, 2023

I think this migth be the problem:

For ethers version 6 you need to use:

console.log(`Contract deployed to ${await contract.getAddress()});

to access the contract's address.

plus for deployment and waiting for deploying use;

const contract = await contractFactory.deploy();
  await contract.waitForDeployment().then(()=>{console.log("success");}).catch(()=>{console.log("unsuccessful");})
  await contract.getAddress().then((res)=>{console.log(res);}).catch((err)=>{console.log(err);})

@cReAtOR0009
Copy link

THANK YOU @EggsyOnCode , I'm really giving my best shot to follow the tutorial, this just saved me a ton of time and I'm very grateful, I need to get an Internship Opportunity...

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants