149 lines
3.9 KiB
JavaScript
149 lines
3.9 KiB
JavaScript
const { ethers } = require("ethers");
|
|
|
|
var contractAddress = "0x5F109D5Cea7BD7345EFcC1b7b7Bb7FB2693e5Fb2";
|
|
var abi = [
|
|
{
|
|
inputs: [
|
|
{
|
|
internalType: "string",
|
|
name: "_name",
|
|
type: "string",
|
|
},
|
|
{
|
|
internalType: "uint256",
|
|
name: "_favoriteNumber",
|
|
type: "uint256",
|
|
},
|
|
],
|
|
name: "addPerson",
|
|
outputs: [],
|
|
stateMutability: "nonpayable",
|
|
type: "function",
|
|
},
|
|
{
|
|
inputs: [
|
|
{
|
|
internalType: "string",
|
|
name: "",
|
|
type: "string",
|
|
},
|
|
],
|
|
name: "nameToFavoriteNumber",
|
|
outputs: [
|
|
{
|
|
internalType: "uint256",
|
|
name: "",
|
|
type: "uint256",
|
|
},
|
|
],
|
|
stateMutability: "view",
|
|
type: "function",
|
|
},
|
|
{
|
|
inputs: [
|
|
{
|
|
internalType: "uint256",
|
|
name: "",
|
|
type: "uint256",
|
|
},
|
|
],
|
|
name: "people",
|
|
outputs: [
|
|
{
|
|
internalType: "uint256",
|
|
name: "favoriteNumber",
|
|
type: "uint256",
|
|
},
|
|
{
|
|
internalType: "string",
|
|
name: "name",
|
|
type: "string",
|
|
},
|
|
],
|
|
stateMutability: "view",
|
|
type: "function",
|
|
},
|
|
{
|
|
inputs: [],
|
|
name: "retrieve",
|
|
outputs: [
|
|
{
|
|
internalType: "uint256",
|
|
name: "",
|
|
type: "uint256",
|
|
},
|
|
],
|
|
stateMutability: "view",
|
|
type: "function",
|
|
},
|
|
{
|
|
inputs: [
|
|
{
|
|
internalType: "uint256",
|
|
name: "_favoriteNumber",
|
|
type: "uint256",
|
|
},
|
|
],
|
|
name: "store",
|
|
outputs: [],
|
|
stateMutability: "nonpayable",
|
|
type: "function",
|
|
},
|
|
];
|
|
|
|
async function connect() {
|
|
if (typeof window.ethereum !== "undefined") {
|
|
try {
|
|
await ethereum.request({ method: "eth_requestAccounts" });
|
|
} catch (error) {
|
|
console.log(error);
|
|
}
|
|
document.getElementById("connectButton").innerHTML = "Connected";
|
|
const accounts = await ethereum.request({ method: "eth_accounts" });
|
|
console.log(accounts);
|
|
} else {
|
|
document.getElementById("connectButton").innerHTML = "Please install MetaMask";
|
|
}
|
|
}
|
|
|
|
async function storeNumber() {
|
|
if (typeof window.ethereum !== "undefined") {
|
|
const provider = new ethers.providers.Web3Provider(window.ethereum);
|
|
const signer = provider.getSigner();
|
|
const contract = new ethers.Contract(contractAddress, abi, signer);
|
|
let inputNumber = document.getElementById("inputNumber").value;
|
|
let divNumber = document.getElementById("divNumber");
|
|
try {
|
|
await contract.store(inputNumber);
|
|
} catch (error) {
|
|
console.log(error);
|
|
}
|
|
} else {
|
|
document.getElementById("executeButton").innerHTML = "Please install MetaMask";
|
|
}
|
|
}
|
|
|
|
async function retrieve() {
|
|
if (typeof window.ethereum !== "undefined") {
|
|
const provider = new ethers.providers.Web3Provider(window.ethereum);
|
|
const signer = provider.getSigner();
|
|
const contract = new ethers.Contract(contractAddress, abi, signer);
|
|
let divNumber = document.getElementById("divNumber");
|
|
try {
|
|
let previousNumber = await contract.retrieve();
|
|
divNumber.innerHTML = previousNumber;
|
|
alert(previousNumber);
|
|
} catch (error) {
|
|
console.log(error);
|
|
}
|
|
} else {
|
|
document.getElementById("executeButton").innerHTML = "Please install MetaMask";
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
connect,
|
|
storeNumber,
|
|
retrieve,
|
|
};
|