Pensando em um contrato para eleições, vamos considerar as principais funcionalidades:
– Criar eleição
– Adicionar candidato à eleição
– Votar
Para iniciar, vamos criar uma variável onde iremos armazenar todos os dados da eleição, como número de votos, candidatos, tempo de início e encerramento, eleitores e todas as tipagens relacionadas à variável.
import { NearBindgen} from 'near-sdk-js'; @NearBindgen({}) class VotingNear { elections: UnorderedMap<Election> = new UnorderedMap<Election>("elections") }
Para organizar mejor nuestro proyecto, crea un archivo `src/model.ts` para definir nuestras clases para Elección.
export class Election { id: number name: string startsAt: bigint endsAt: bigint candidates: Candidate[] totalVotes: number voters: Voter[] constructor({ endsAt, id, name, startsAt, candidates, totalVotes, voters }: Election) { this.id = id this.endsAt = endsAt this.name = name this.startsAt = startsAt this.totalVotes = totalVotes this.candidates = candidates this.voters = voters } } export class Candidate { accountId: string totalVotes: number constructor({ accountId }: Candidate) { this.accountId = accountId this.totalVotes = 0 } } export class Voter { accountId: string votedCandidateAccountId: string votedAt: bigint constructor({ accountId, votedCandidateAccountId, votedAt }: Voter) { this.accountId = accountId this.votedCandidateAccountId = votedCandidateAccountId this.votedAt = votedAt } }
Para organizar melhor nosso projeto, crie um arquivo src/model.ts para criarmos nossas classes para Election.
Start (l)earning with this Course!
Connect Your Wallet
What is a Wallet?
Safely store and transfer your crypto and NFTs.
No need to create new accounts or credentials. Connect your wallet and you are good to go!