BUILD DAPP USING JS AND?SOLIDITY
VISHNU VISHWAKARMA
"ENABLING DEVELOPERS TO EXCEL IN THE WORLD OF CANISTER SMART CONTRACT DEVELOPMENT."
YOUR MOOD GOONA STORE IN BLOCKCHAIN
WE HAVE FOUR PARTS TO MAKE THIS DAPP
1: HTML
2: CSS
3: SOLIDITY
4: JS
— — — — — — — — — — — — — — — — — — — — — — — — — —?
1 HTML?:
<div class=” container”>
<h1 >This is my fristDapp</h1>
<p>Here we are going to set up some mood</p>
<label for=”mood”>Input</label>
<input type=”text” name=”” id=”mood” />
<div>
<button onclick=”getMood()”>get Mood</button>
</div>
<div>
<button onclick=”setMood()”>set Mood</button>
</div>
</div>
— — — — — — — — — — — — — — — — — — — — — — — — — — — — —
2 CSS:
body {
text-align: center;
font-family: Arial, Helvetica, sans-serif;
}
div {
background-color: aqua;
width: 25%;
margin: 0 auto;
display: flex;
flex-direction: column;
}
.container{
border: 5px solid?;
}
button {
border: none;
width: 150%;
margin: 20px 0px 5px 0px;
}
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — -
3 SOLIDITY?:
// spdx licence identifire?:MIT;
pragma solidity ^0.8.7?;
contract MoodDiary{
string mood;
function getMood() public view returns(string memory){
return mood;
}
function setMood(string memory _mood) public {
mood = _mood;
}
}
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
4 Javascript?:( actual code is written in bold, and the rest is explaination)
<! — ether.js is a library for interacting with the Ethereum Blockchain and its ecosystem. →
<! — importing ether.js source — — — — — — — — — — — — →
<script
src=”https://cdn.ethers.io/lib/ethers-5.2.umd.min.js"
type=”application/javascript”
></script>
<! — another script for writing our code — — — — — — — →
<script>
// window.ethereum.enable() is looking at the window?, this is injected web3, it is goona detect if i have a wallet or metamask installed in browser, remix also doing this, it just check is your browser have wallet
window.ethereum.enable();
//?.web3Provider(), i can use because of src in above script tag
var provider = new ethers.providers.Web3Provider(
window.ethereum,
“rinkeby”
);
console.log(provider);
/* it return an object
Web3Provider {_
isProvider: true,
_events: Array(0),
_emitted: {…}, formatter:
Formatter,
anyNetwork: false,?…}
*/
// we made four variables — — — — — — — — — — — — — — — — -
/*
value of MoodContractAddress = we get from our smart contract
value of MoodContractABI = we get from our smart contract
领英推荐
value of MoodContract = we find below
value of signer = we find below
*/
var MoodContractAddress = “0x9F7C4C49bE4ceC8839FA0AA06b00Fa2Bc0a9B0e4”;
var MoodContractABI =?[
{
inputs: [
{
internalType: “string”,
name: “_mood”,
type: “string”,
},
],
name: “setMood”,
outputs: [],
stateMutability: “nonpayable”,
type: “function”,
},
{
inputs: [],
name: “getMood”,
outputs: [
{
internalType: “string”,
name: “”,
type: “string”,
},
],
stateMutability: “view”,
type: “function”,
},
];
var MoodContract;
var signer;
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —?
provider.send(“eth_requestAccounts”, [])
// console.log(provider.send(“eth_requestAccounts”, []))
// it return promise
.then(() =>?{
provider.listAccounts()
// console.log(provider.listAccounts() )
// it return promise pending
.then((accounts) =>?{
console.log(accounts);
// it return my account [‘0x5723572d0Dae9DF5575565203cF979eF087052dc’]
signer = provider.getSigner(accounts[0]);
// console.log(signer)
/* it return an object?,
JsonRpcSigner {
_isSigner: true, provider:
Web3Provider, _address: ‘0x5723572d0Dae9DF5575565203cF979eF087052dc’,
_index: null}
*/
MoodContract = new ethers.Contract(
MoodContractAddress,
MoodContractABI,
signer
);
console.log(MoodContract);
/* it return an object
Contract {
interface: Interface,
provider: Web3Provider,
signer: JsonRpcSigner,
callStatic: {…},
estimateGas: {…},?…}
*/
});
});
// i have to make these two function asyncronus because it will not stop other executions