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!