With blockchain explorer
With verified contracts on blockchain explorer, we can easily interact with them via blockchain explorer UI.
Read contract
Public fields of the contract:
uint public unlockTime;
address payable public owner;
They are displayed on the explorer, at Read contract
tab:
Write contract
Contract have a function:
function withdraw() public {}
Since it is publicly set, user can interact with this function via explorer's UI:
With Hardhat
The same as above method, we will call withdraw()
on Lock
contract.
Back to your sample project, at scripts
folder, add following withdraw.ts
file:
import { ethers } from "hardhat";
import { Lock } from "../typechain-types";
async function main() {
const [owner] = await ethers.getSigners();
const lockAddr = "0x8D51395C76C34d0e11178c1F7EE3219B4b958e30"
const Lock = await ethers.getContractFactory("Lock")
const lock = await Lock.attach(lockAddr) as Lock
const tx = await lock.withdraw()
console.log("Withdrawal has completed. Transaction hash: " + tx.hash)
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
Then run it by:
npx hardhat run scripts/withdraw.ts --network nebulas
And the result:
Withdrawal has completed. Transaction hash: 0x0481a1abccb0e3dc336ec970628c033d11af6696da5536838ac76cad5f0494d7
With a frontend and web3.js