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.
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!