From 97028bc5d036fda198463d78aacdde14c32b3ae8 Mon Sep 17 00:00:00 2001 From: skaunov <65976143+skaunov@users.noreply.github.com> Date: Sat, 25 Jun 2022 11:33:35 +0300 Subject: [PATCH] snippets fixes: Metamask connection, BigNumber * Adding a line to allow connect account from Metamask * Fixing `BigNumber`s used to transact with contracts --- LEARN.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/LEARN.md b/LEARN.md index 43ef157..d32121f 100644 --- a/LEARN.md +++ b/LEARN.md @@ -345,13 +345,15 @@ Aaaand again, let's handle the logic in ``` handleSubmit ```, change it to the f async handleSubmit(event) { event.preventDefault() const provider = new ethers.providers.Web3Provider(window.ethereum) + await provider.send("eth_requestAccounts", []) const signer = provider.getSigner() const contract = new ethers.Contract( ADDRESS, ABI, signer ) - let numberOfTokensToSend = this.state.numOfTokens * (10 ** DECIMALS) + let numberOfTokensToSend = + ethers.BigNumber.from(10).pow(DECIMALS).mul(this.state.numOfTokens) await contract.transfer(this.state.receiver, numberOfTokensToSend) } ``` @@ -409,15 +411,16 @@ In the contract, we require that a user sends 1 Gwei to call ``` buy ```. How to async handleSubmit(event) { event.preventDefault() const provider = new ethers.providers.Web3Provider(window.ethereum) + await provider.send("eth_requestAccounts", []) const signer = provider.getSigner() const contract = new ethers.Contract( ADDRESS, ABI, signer ) - let numberOfTokensToBuy = this.state.numOfTokens * (10 ** DECIMALS) + let numberOfTokensToBuy = ethers.BigNumber.from(10).pow(DECIMALS).mul(this.state.numOfTokens) const overrides = { - value: ethers.utils.parseEther("0.000000001") + value: ethers.utils.parseEther("0.000000001").mul(this.state.numOfTokens) } await contract.buy(numberOfTokensToBuy, overrides) }