CryptoZombie de Nivel 1
发布于 2025-07-12 00:38:58(微信公众号导出记录)。
本文来自公众号后台的“导出文章内容”功能。博客正文由导出长图进行本地 OCR 转写,并保留原始排版图用于逐段核对。
原文链接:查看原文
OCR 转写有效文字约 5459 字;代码、流程图和版式以文末原始排版图为准。
正文(本地 OCR 转写)
Enhorsbuenal (Has complctedo le Loccion 1 do
bes de sogul
Puntos Clave @ Capitulo 1: Resumen de la Leccion y ADN del Zonbi
- Concepto Clave: Construir una "Fabrica de Zombis" para crear
un ejercito. La apariencia de cada zombi se basa en un ADN de 16 digitos, lo que garantiza su singularidad.
- Ejemplo original: Usar la operaci6n de modulo (%) para
mapear una parte del ADN a un rasgo especifico. B3 % 7 + 1 - 7 (napea el mimero 83 a la cabeza tipo 7) Capitulo 2: Contratos
- Concepto Clave: Todo el codigo en Solidity se encapsula en
un contract (contrato), que es el bloque de construccion fundamental de las aplicaciones de Ethereum. El archivo debe comenzar con un pragma para declarar la version del compilador y evitar problemas de compatibilidad.
- Ejemplo original:
pragma solidity ^0.4.25; contract HolaMundo { { Capitulo 3: Variables de Estado y Numeros Enteros
- Concepto Clave: Las Variables de estado (State Variables) se
guardan permanentemente en la blockchain. uint (entero sin signo) es el tipo de dato numerico mas comun y representa numeros no negativos; es un alias para uint256.
- Ejemplo original:
contract Example { // Esto se guardara permanentemente en la cadena de bloques uint myUnsignedInteger = 180; { Capitulo 4: Operaciones Matematicas
- Concepto Clave: Solidity soporta las operaciones matematicas
estandar (+, -, *, /. 冬). El operador de exponenciacion es **. .Ejemplo 0riginal: // x elevado a y uint x = 5 ** 2; // es igual a 5^2 = 25 Capitulo 5: Estructuras (Structs)
- Concepto Clave: Las struct te permiten crear tipos de datos
complejos con multiples propiedades. Tambien se introduce el tipo string para texto.
- Ejemplo original:
struct Person { uint age; string name; Capitulo 6: Arrays
- Concepto Clave: Los Arrays se usan para colecciones de
datos; pueden ser de tamano fijo o dinamico. Si declaras un array como public,Solidity crea automaticamente una funcion getter para leer sus datos.
- Ejemplo 0riginal:
// Array de tamafo fijo uint[2] fixedArray; // Array dinamico uint[] dynamicArray; // Array publico Person[] public people; Capitulo 7: Declaracion de Funciones
- Concepto Clave: La sintaxis para declarar una funcion. Por
convencion, los parametros de las funciones comienzan con un guion bajo(_)para diferenciarlos de las variables globales.
- Ejemplo original:
function eatHamburgers(string _name, uint _amount) {
Capitulo B: Trabajando con estructuras y arrays
- Concepto Clave: Usar array.push() para afiadir un nuevo
elemento al final de un array dinamico. Es comun crear una struct y afadirla al array en una sola linea.
- Ejemplo original:
// Crear una nueva ^Person* y afadirla al array people,push(Person(16, *Vitalik")); Capitulo 9: Funciones Publicas y Privadas
- Concepto Clave: La visibilidad de las funciones. Por defecto
public
- (se]jewe11
Las son (cualquiera apand funciones private solo pueden ser llamadas desde dentro del mismo contrato. Por convencion, sus nombres tambien comienzan con un guion bajo (_).
- Ejemplo 0riginal:
function _addToArray(uint _number) private { numbers .push (_number) ; { Capftulo 1o: Més sobre Func1ones
- Concepto Clave: Las funciones pueden devolver valores
usando returns (tipo). Las funciones view solo leen el estado, no lo modifican. Las funciones pure ni leen ni modifican el estado.
- Ejemplo 0riginal:
// Funcion view function sayHello() public view returns (string) { /.../ } // Funcion pure function _multiply(uint a, uint b) private pure returns (uint return a * b; { Capitulo 11: Keccak256 y Encas1llado de tipo
- Concepto Clave: keccak256 es una funci6n hash incorporada
queconvierteunaentradaenunnumeropseudoaleatorio. El encasillado de tipo (Type Casting) se usa para convertir entre tipos de datos.
- Ejemplo original:
//Forzarla conversiondela variableba^uint8 uint8 c=a *uint8(b); Capitulo 12:Juntandolo Todo clave: funciones Combinar multiples .Concepto auxiliares private para construir una funcionalidad completa que se expone a través de una funcion public es un patron de diseno comun. Capitulo 13:Eventos
- Conceptoclave:Loseventsonelmecanismoquetieneun
contratoparacomunicarquealgohasucedidoa una aplicacion externa (frontend).Se declaran con event y se emiten con emit.
- Ejemplo Original:
//Declararelevento event IntegersAdded(uint x,uint y,uint result); function add(uint _x,uint _y) public { uint result =_x + _y; //Emitir el evento emit IntegersAdded(_x, _y, result); { Capitulo 14: Web3.js
- Conceptoclave:Web3.js es una libreria de JavaScript que
permite a las aplicaciones web interactuar con los contratos inteligentesdeEthereum.Elfrontendpuedellamaralas funciones public delcontrato y escucharlos event que este emita.
- Ejemplo Original:
//LlamaalafuncioncreateRandomZombie`denuestrocontrat ZombieFactory.createRandomZombie(name); //Escucha aleventode^NewZombie`,y actualiza lainterfaz: var event = ZombieFactory.NewZombie(function(error,result){ if (error) return; //...actualizar la UI :({ Respuesta Final Este es elcodigo completo delcontrato,que integra todos los conceptos aprendidos en laLeccion 1. pragma solidity ^0.4.25; contract ZombieFactory{ event NewZombie(uint zombieId, string name, uint dna); uint dnaDigits = 16; struct Zombie { string name; uint dna; Zombie[] public zombies; 10 function _createZombie(string _name, uint _dna) private { 1 1
1.2
uint id = zombies.push(Zombie(_name, _dna)) - 1; 13 14 function _generateRandomDna(string _str) private view returns (uin 15 16 uint rand = uint(keccak256(abi.encodePacked(_str))); 17 return rand % dnaModulus; 18 function createRandomZombie(string _name)public{ 19 20 uint randDna = _generateRandomDna(_name); 21 _createZombie(_name,randDna); 22
原始排版图

