-
Notifications
You must be signed in to change notification settings - Fork 0
/
4_write_contracts.js
59 lines (35 loc) · 1.81 KB
/
4_write_contracts.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
const { ethers } = require ("ethers");
const INFURA_ID = ''; //Your Infura ID here
//Connected to Goreli Test Network
const provider = new ethers.providers.JsonRpcProvider(`https://goerli.infura.io/v3/${INFURA_ID}`)
const account1 = ''; //Sender Address
const account2 = ''; //Receiver Address
const privateKey1 = ''; //Sender Private Key
const wallet = new ethers.Wallet(privateKey1,provider); //New wallet using private key
const linkAddress = '0x326c977e6efc84e512bb9c30f76e30c160ed06fb'; //Contract Address
const ERC20_ABI = [
"function balanceOf(address) view returns (uint256)",
"function transfer(address,uint256) returns(bool)"
];
//connecting to the contract using a provider
//Provider - only read
//Signer or wallet - both read and write
const contract = new ethers.Contract(linkAddress,ERC20_ABI,provider)
const main = async() => {
//To call "read" functions, you can directly call
const senderBalanceBefore = await contract.balanceOf(account1);
console.log(`Sender LINK --> ${ethers.utils.formatEther(senderBalanceBefore)} LINK`)
const recieverBalanceBefore = await contract.balanceOf(account2);
console.log(`Reciever LINK --> ${ethers.utils.formatEther(recieverBalanceBefore)} LINK`)
//To execute "write" functions, you need to connect to the contract
//with a wallet and then call the function
const contractWallet = contract.connect(wallet);
const tx = await contractWallet.transfer(account2,balance);
await tx.wait();
console.log(tx);
const senderBalanceAfter = await contract.balanceOf(account1);
console.log(`Sender LINK --> ${ethers.utils.formatEther(senderBalanceAfter)} LINK`)
const recieverBalanceAfter = await contract.balanceOf(account2);
console.log(`Reciever LINK --> ${ethers.utils.formatEther(recieverBalanceAfter)} LINK`)
}
main()