Skip to content

Instantly share code, notes, and snippets.

@maheshmurthy
Last active June 1, 2023 03:04
Show Gist options
  • Select an option

  • Save maheshmurthy/b83d531a2545db1972a51507207412a0 to your computer and use it in GitHub Desktop.

Select an option

Save maheshmurthy/b83d531a2545db1972a51507207412a0 to your computer and use it in GitHub Desktop.

Revisions

  1. Mahesh Murthy revised this gist Mar 6, 2019. 1 changed file with 2 additions and 3 deletions.
    5 changes: 2 additions & 3 deletions index.js
    Original file line number Diff line number Diff line change
    @@ -1,9 +1,8 @@
    abi = JSON.parse('[{"constant":true,"inputs":[{"name":"candidate","type":"bytes32"}],"name":"totalVotesFor","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"candidate","type":"bytes32"}],"name":"validCandidate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"votesReceived","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"candidateList","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"candidate","type":"bytes32"}],"name":"voteForCandidate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"candidateNames","type":"bytes32[]"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]')

    privateKey = '0xe5bd30baa9428cc127b4a1e9b3332882c966e6be8965315e13902cd23016ca91'
    provider = new ethers.providers.JsonRpcProvider()
    wallet = new ethers.Wallet(privateKey, provider)
    contract = new ethers.Contract('0x5735731eEbDA5BE1eEe9f0b119B9374a63b0f507', abi, wallet)
    signer = provider.getSigner(0);
    contract = new ethers.Contract('0x5735731eEbDA5BE1eEe9f0b119B9374a63b0f507', abi, signer)

    candidates = {"Rama": "candidate-1", "Nick": "candidate-2", "Jose": "candidate-3"}

  2. Mahesh Murthy revised this gist Mar 4, 2019. 1 changed file with 0 additions and 5 deletions.
    5 changes: 0 additions & 5 deletions index.js
    Original file line number Diff line number Diff line change
    @@ -5,11 +5,6 @@ provider = new ethers.providers.JsonRpcProvider()
    wallet = new ethers.Wallet(privateKey, provider)
    contract = new ethers.Contract('0x5735731eEbDA5BE1eEe9f0b119B9374a63b0f507', abi, wallet)

    //provider = new ethers.providers.Web3Provider(web3.currentProvider);
    //signer = provider.getSigner();
    //contract = new ethers.Contract('0x5735731eEbDA5BE1eEe9f0b119B9374a63b0f507', abi, signer)

    //contractWithSigner = contract.connect(wallet)
    candidates = {"Rama": "candidate-1", "Nick": "candidate-2", "Jose": "candidate-3"}

    function voteForCandidate(candidate) {
  3. Mahesh Murthy revised this gist Mar 4, 2019. 1 changed file with 38 additions and 0 deletions.
    38 changes: 38 additions & 0 deletions index.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,38 @@
    abi = JSON.parse('[{"constant":true,"inputs":[{"name":"candidate","type":"bytes32"}],"name":"totalVotesFor","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"candidate","type":"bytes32"}],"name":"validCandidate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"votesReceived","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"candidateList","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"candidate","type":"bytes32"}],"name":"voteForCandidate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"candidateNames","type":"bytes32[]"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]')

    privateKey = '0xe5bd30baa9428cc127b4a1e9b3332882c966e6be8965315e13902cd23016ca91'
    provider = new ethers.providers.JsonRpcProvider()
    wallet = new ethers.Wallet(privateKey, provider)
    contract = new ethers.Contract('0x5735731eEbDA5BE1eEe9f0b119B9374a63b0f507', abi, wallet)

    //provider = new ethers.providers.Web3Provider(web3.currentProvider);
    //signer = provider.getSigner();
    //contract = new ethers.Contract('0x5735731eEbDA5BE1eEe9f0b119B9374a63b0f507', abi, signer)

    //contractWithSigner = contract.connect(wallet)
    candidates = {"Rama": "candidate-1", "Nick": "candidate-2", "Jose": "candidate-3"}

    function voteForCandidate(candidate) {
    candidateName = $("#candidate").val();
    console.log(candidateName);

    contract.voteForCandidate(ethers.utils.formatBytes32String(candidateName)).then((f) => {
    let div_id = candidates[candidateName];
    contract.totalVotesFor(ethers.utils.formatBytes32String(candidateName)).then((f) => {
    $("#" + div_id).html(f);
    })
    });
    }

    $(document).ready(function() {

    candidateNames = Object.keys(candidates);

    for(var i=0; i<candidateNames.length; i++) {
    let name = candidateNames[i];
    contract.totalVotesFor(ethers.utils.formatBytes32String(name)).then((f) => {
    $("#" + candidates[name]).html(f);
    })
    }
    });

  4. Mahesh Murthy created this gist Mar 4, 2019.
    44 changes: 44 additions & 0 deletions index.html
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,44 @@
    <!DOCTYPE html>
    <html>
    <head>
    <title>Hello World DApp</title>
    <link href='https://fonts.googleapis.com/css?family=Open Sans:400,700' rel='stylesheet' type='text/css'>
    <link href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css' rel='stylesheet' type='text/css'>
    </head>
    <body class="container">
    <h1>A Simple Hello World Voting Application</h1>
    <div class="table-responsive">
    <table class="table table-bordered">
    <thead>
    <tr>
    <th>Candidate</th>
    <th>Votes</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td>Rama</td>
    <td id="candidate-1"></td>
    </tr>
    <tr>
    <td>Nick</td>
    <td id="candidate-2"></td>
    </tr>
    <tr>
    <td>Jose</td>
    <td id="candidate-3"></td>
    </tr>
    </tbody>
    </table>
    </div>
    <input type="text" id="candidate" />
    <a href="#" onclick="voteForCandidate()" class="btn btn-primary">Vote</a>
    </body>
    <script charset="utf-8"
    src="https://cdn.ethers.io/scripts/ethers-v4.min.js"
    type="text/javascript">
    </script>
    <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
    <script src="./index.js"></script>
    </html>