Contratos inteligentes

Contrato Inteligente para el Despliegue de la subnet en AVALANCHE: El siguiente contrato contiene las variables de las billeteras que deben ser desplegadas. Billetera de control, Billetera para el despliegue,

// SPDX-License-Identifier: MIT pragma solidity 
^0.8.13; /********************************************************/ /* 
For learning purposes ONLY. Do not use in production */ /********************************************************/ // 
Download into project folder with `npm install @openzeppelin/contracts` 
import "@openzeppelin/contracts/access/Ownable.sol"; 
// Inherits the Ownable contract so we can use its functions and modifiers contract HOABallot is Ownable { 
// Custom type to describe a Presidential Candidate and hold votes struct Candidate { string name; uint256 votes; } 
// Array of Presidential Candidates Candidate[] public candidates; 
// Add a President Candidate - onlyOwner function addCandidate(string memory _name) public onlyOwner 
{ require(bytes(_name).length > 0, "addCandidate Error: Please enter a name"); 
candidates.push(Candidate({name: _name, votes: 0})); } 
// Remove a Candidate - onlyOwner function removeCandidate(string memory _name) public onlyOwner 
{ require(bytes(_name).length > 0, "removeCandidate Error: Please enter a name"); 
bool foundCandidate = false; uint256 index; bytes32 nameEncoded = 
keccak256(abi.encodePacked(_name)); 
// Set index number for specific candidate for (uint256 i = 0; i < candidates.length; i++) 
{ if (keccak256(abi.encodePacked(candidates[i].name)) == nameEncoded) 
{ index = i; foundCandidate = true; } } 
// Make sure a candidate was found require(foundCandidate, "removeCandidate Error: Candidate not found"); 
// shift candidate to be removed to the end of the array and the rest forward for (uint256 i = index; i < candidates.length - 1; i++) { candidates[i] = candidates[i + 1]; } 
// remove last item from array candidates.pop(); } 
// Reset the President Vote Counts - onlyOwner function resetVoteCount() public onlyOwner { for (uint256 p = 0; p < candidates.length; p++) 
{ candidates[p].votes = 0; } } 
// Add a vote to a candidate by name function addVoteByName(string memory _name) public 
{ require(bytes(_name).length > 0, "addVoteByName Error: Please enter a name"); // Encode name so only need to do once bytes32 nameEncoded = keccak256(abi.encodePacked(_name)); for (uint256 i = 0; i < candidates.length; i++) { // solidity can't compare strings directly, need to compare hash if (keccak256(abi.encodePacked(candidates[i].name)) == nameEncoded) { candidates[i].votes += 1; } } } // Returns all the Presidential Candidates and their vote counts function getCandidates() public view returns (Candidate[] memory) { return candidates; } function getWinner() public view returns (Candidate memory winner) { uint256 winningVoteCount = 0; for (uint256 i = 0; i < candidates.length; i++) { if (candidates[i].votes > winningVoteCount) { winningVoteCount = candidates[i].votes; winner = candidates[i]; } } return winner; } }

Last updated