Fetch election calls with web3

If you want to connect to the AP Election results in JavaScript using web3, learn how here.

🚀 Want a shortcut? 🚀

Start with our boilerplate "Mission Control" App on GitHub. This shows how to connect to both mainnet and Kovan testnet using web3.

Walkthrough

  1. Begin by installing web3

npm install web3

2. Instantiate a web3 provider

const Web3 = require("web3");
export const web3 = new Web3(
new Web3.providers.HttpProvider(
"YOUR_INFURA_URL_OR_SIMILAR_PROVIDER"
)
);

3. Connect to the contract (the "abi" variable below is a JavaScript array. Find the mainnet abi here and the kovan abi here)

// Mainnet

export const mainnetAddress = "0x0792724900B551d200D954a5Ed709d9514d73A9F";
export const mainnetContract = new web3.eth.Contract(abi, mainnetAddress);

// Kovan

export const kovanAddress = "0x12B7B8Dea45AF31b6303E00C735332A8b6752856";
export const kovanContract = new web3.eth.Contract(abi, kovanAddress);

4. Fetch the election results!

// Mainnet

const allWinners = await mainnetContract.methods
.presidentialWinners(state)
.call()

// Kovan

const allWinners = await kovanContract.methods
.presidentialWinners(state)
.call()

5. Make use of your verified election data!

/**
This is the shape of the data
{
[state]: {
winner: "Biden" | "Trump" | ...,
resultNow: "1604003431", // string unix time that winner was called
resultBlock: "11153856", // string etherum block where call was mined in
}
}
you can find an array of all states (52 = 50 states + D.C. + US) here:
https://github.com/EveripediaNetwork/everipedia-ap-2020/blob/master/src/all-states.js
*/

You may find this screenshot from Remix easier to understand. This is example data returned for the state "TEST" in production.

Function screenshot from remix.ethereum.org

6. Still having issues?

  1. Learn more about Chainlink Oracles at https://docs.chain.link/docs

  2. Tweet to @dawsonbotsford and @everipedia any engineering questions (or send a DM on Twitter to @dawsonbotsford)