Skip to content

Commit

Permalink
Merge branch 'master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
eduardonunesp authored Jul 3, 2018
2 parents db72ec7 + 2956527 commit aceb3b1
Show file tree
Hide file tree
Showing 88 changed files with 5,985 additions and 347 deletions.
4 changes: 2 additions & 2 deletions en/1/functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ material:
uint dnaModulus = 10 ** dnaDigits;
struct Zombie {
uint dna;
string name;
uint dna;
}
Zombie[] public zombies;
Expand All @@ -32,8 +32,8 @@ material:
uint dnaModulus = 10 ** dnaDigits;
struct Zombie {
uint dna;
string name;
uint dna;
}
Zombie[] public zombies;
Expand Down
2 changes: 1 addition & 1 deletion en/3/05-timeunits.md
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ In order to keep track of how much time a zombie has to wait until it can attack

Solidity provides some native units for dealing with time.

The variable `now` will return the current unix timestamp (the number of seconds that have passed since January 1st 1970). The unix time as I write this is `1515527488`.
The variable `now` will return the current unix timestamp of the latest block (the number of seconds that have passed since January 1st 1970). The unix time as I write this is `1515527488`.

>Note: Unix time is traditionally stored in a 32-bit number. This will lead to the "Year 2038" problem, when 32-bit unix timestamps will overflow and break a lot of legacy systems. So if we wanted our DApp to keep running 20 years from now, we could use a 64-bit number instead — but our users would have to spend more gas to use our DApp in the meantime. Design decisions!
Expand Down
2 changes: 1 addition & 1 deletion en/6/01.md
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,7 @@ To do this, we're going to use a JavaScript library from the Ethereum Foundation

## What is Web3.js?

Remember, the Ethereum network is made up of nodes, which each contain a copy of the blockchain. When you want to call a function on a smart contract, you need to query one of these nodes and tell it:
Remember, the Ethereum network is made up of nodes, which each containing a copy of the blockchain. When you want to call a function on a smart contract, you need to query one of these nodes and tell it:

1. The address of the smart contract
2. The function you want to call, and
Expand Down
2 changes: 1 addition & 1 deletion en/6/03.md
Original file line number Diff line number Diff line change
Expand Up @@ -868,7 +868,7 @@ Web3.js will need 2 things to talk to your contract: its **_address_** and its *

After you finish writing your smart contract, you will compile it and deploy it to Ethereum. We're going to cover **deployment** in the **next lesson**, but since that's quite a different process from writing code, we've decided to go out of order and cover Web3.js first.

After you deploy your contract, it gets a fixed address on Ethereum where it will live forever. If you recall from Lesson 2, the address of the CryptoKitties contract on Ethereum mainnet is `YOUR_CONTRACT_ADDRESS`.
After you deploy your contract, it gets a fixed address on Ethereum where it will live forever. If you recall from Lesson 2, the address of the CryptoKitties contract on Ethereum mainnet is `0x06012c8cf97BEaD5deAe237070F9587f8E7A266d`.

You'll need to copy this address after deploying in order to talk to your smart contract.

Expand Down
6 changes: 3 additions & 3 deletions en/6/07.md
Original file line number Diff line number Diff line change
Expand Up @@ -482,7 +482,7 @@ material:
// the transaction has been sent
$("#txStatus").text("Creating new zombie on the blockchain. This may take a while...");
// Send the tx to our contract:
return CryptoZombies.methods.createRandomZombie(name)
return cryptoZombies.methods.createRandomZombie(name)
.send({ from: userAccount })
.on("receipt", function(receipt) {
$("#txStatus").text("Successfully created " + name + "!");
Expand All @@ -500,7 +500,7 @@ material:
// the transaction has been sent
$("#txStatus").text("Eating a kitty. This may take a while...");
// Send the tx to our contract:
return CryptoZombies.methods.feedOnKitty(zombieId, kittyId)
return cryptoZombies.methods.feedOnKitty(zombieId, kittyId)
.send({ from: userAccount })
.on("receipt", function(receipt) {
$("#txStatus").text("Ate a kitty and spawned a new Zombie!");
Expand Down Expand Up @@ -582,7 +582,7 @@ function createRandomZombie(name) {
// the transaction has been sent
$("#txStatus").text("Creating new zombie on the blockchain. This may take a while...");
// Send the tx to our contract:
return CryptoZombies.methods.createRandomZombie(name)
return cryptoZombies.methods.createRandomZombie(name)
.send({ from: userAccount })
.on("receipt", function(receipt) {
$("#txStatus").text("Successfully created " + name + "!");
Expand Down
14 changes: 7 additions & 7 deletions en/6/08.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ material:
// the transaction has been sent
$("#txStatus").text("Creating new zombie on the blockchain. This may take a while...");
// Send the tx to our contract:
return CryptoZombies.methods.createRandomZombie(name)
return cryptoZombies.methods.createRandomZombie(name)
.send({ from: userAccount })
.on("receipt", function(receipt) {
$("#txStatus").text("Successfully created " + name + "!");
Expand All @@ -81,7 +81,7 @@ material:
function feedOnKitty(zombieId, kittyId) {
$("#txStatus").text("Eating a kitty. This may take a while...");
return CryptoZombies.methods.feedOnKitty(zombieId, kittyId)
return cryptoZombies.methods.feedOnKitty(zombieId, kittyId)
.send({ from: userAccount })
.on("receipt", function(receipt) {
$("#txStatus").text("Ate a kitty and spawned a new Zombie!");
Expand Down Expand Up @@ -513,7 +513,7 @@ material:
// the transaction has been sent
$("#txStatus").text("Creating new zombie on the blockchain. This may take a while...");
// Send the tx to our contract:
return CryptoZombies.methods.createRandomZombie(name)
return cryptoZombies.methods.createRandomZombie(name)
.send({ from: userAccount })
.on("receipt", function(receipt) {
$("#txStatus").text("Successfully created " + name + "!");
Expand All @@ -528,7 +528,7 @@ material:
function feedOnKitty(zombieId, kittyId) {
$("#txStatus").text("Eating a kitty. This may take a while...");
return CryptoZombies.methods.feedOnKitty(zombieId, kittyId)
return cryptoZombies.methods.feedOnKitty(zombieId, kittyId)
.send({ from: userAccount })
.on("receipt", function(receipt) {
$("#txStatus").text("Ate a kitty and spawned a new Zombie!");
Expand All @@ -541,8 +541,8 @@ material:
function levelUp(zombieId) {
$("#txStatus").text("Leveling up your zombie...");
return CryptoZombies.methods.levelUp(zombieId)
.send({ from: userAccount, value: web3js.utils.toWei("0.001") })
return cryptoZombies.methods.levelUp(zombieId)
.send({ from: userAccount, value: web3js.utils.toWei("0.001", "ether") })
.on("receipt", function(receipt) {
$("#txStatus").text("Power overwhelming! Zombie successfully leveled up");
})
Expand Down Expand Up @@ -616,7 +616,7 @@ web3js.utils.toWei("1", "ether");
In our DApp, we set `levelUpFee = 0.001 ether`, so when we call our `levelUp` function, we can make the user send `0.001` Ether along with it using the following code:

```
CryptoZombies.methods.levelUp(zombieId)
cryptoZombies.methods.levelUp(zombieId)
.send({ from: userAccount, value: web3js.utils.toWei("0.001", "ether") })
```

Expand Down
16 changes: 8 additions & 8 deletions en/6/09.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ material:
// the transaction has been sent
$("#txStatus").text("Creating new zombie on the blockchain. This may take a while...");
// Send the tx to our contract:
return CryptoZombies.methods.createRandomZombie(name)
return cryptoZombies.methods.createRandomZombie(name)
.send({ from: userAccount })
.on("receipt", function(receipt) {
$("#txStatus").text("Successfully created " + name + "!");
Expand All @@ -83,7 +83,7 @@ material:
function feedOnKitty(zombieId, kittyId) {
$("#txStatus").text("Eating a kitty. This may take a while...");
return CryptoZombies.methods.feedOnKitty(zombieId, kittyId)
return cryptoZombies.methods.feedOnKitty(zombieId, kittyId)
.send({ from: userAccount })
.on("receipt", function(receipt) {
$("#txStatus").text("Ate a kitty and spawned a new Zombie!");
Expand All @@ -96,8 +96,8 @@ material:
function levelUp(zombieId) {
$("#txStatus").text("Leveling up your zombie...");
return CryptoZombies.methods.levelUp(zombieId)
.send({ from: userAccount, value: web3.utils.toWei("0.001") })
return cryptoZombies.methods.levelUp(zombieId)
.send({ from: userAccount, value: web3.utils.toWei("0.001", "ether") })
.on("receipt", function(receipt) {
$("#txStatus").text("Power overwhelming! Zombie successfully leveled up");
})
Expand Down Expand Up @@ -531,7 +531,7 @@ material:
// the transaction has been sent
$("#txStatus").text("Creating new zombie on the blockchain. This may take a while...");
// Send the tx to our contract:
return CryptoZombies.methods.createRandomZombie(name)
return cryptoZombies.methods.createRandomZombie(name)
.send({ from: userAccount })
.on("receipt", function(receipt) {
$("#txStatus").text("Successfully created " + name + "!");
Expand All @@ -546,7 +546,7 @@ material:
function feedOnKitty(zombieId, kittyId) {
$("#txStatus").text("Eating a kitty. This may take a while...");
return CryptoZombies.methods.feedOnKitty(zombieId, kittyId)
return cryptoZombies.methods.feedOnKitty(zombieId, kittyId)
.send({ from: userAccount })
.on("receipt", function(receipt) {
$("#txStatus").text("Ate a kitty and spawned a new Zombie!");
Expand All @@ -559,8 +559,8 @@ material:
function levelUp(zombieId) {
$("#txStatus").text("Leveling up your zombie...");
return CryptoZombies.methods.levelUp(zombieId)
.send({ from: userAccount, value: web3.utils.toWei("0.001") })
return cryptoZombies.methods.levelUp(zombieId)
.send({ from: userAccount, value: web3.utils.toWei("0.001", "ether") })
.on("receipt", function(receipt) {
$("#txStatus").text("Power overwhelming! Zombie successfully leveled up");
})
Expand Down
2 changes: 1 addition & 1 deletion es/1/events.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ material:

¡Nuestro contrato está casi terminado! Añadamos ahora un **_evento_**.

Los **_eventos_** son la forma en la que nuestro contrato comunica que algo sucedió en la cadena de bloques a la interfaz de usuario, el cual puede estar 'escuchando' ciertos eventos y hacer algo cuando suceden.
Los **_eventos_** son la forma en la que nuestro contrato comunica que algo sucedió en la cadena de bloques a la interfaz de usuario, el cual puede estar 'escuchando' ciertos eventos y hacer algo cuando sucedan.

Ejemplo:

Expand Down
4 changes: 2 additions & 2 deletions es/1/functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ material:
uint dnaModulus = 10 ** dnaDigits;
struct Zombie {
uint dna;
string name;
uint dna;
}
Zombie[] public zombies;
Expand All @@ -32,8 +32,8 @@ material:
uint dnaModulus = 10 ** dnaDigits;
struct Zombie {
uint dna;
string name;
uint dna;
}
Zombie[] public zombies;
Expand Down
2 changes: 1 addition & 1 deletion es/1/functions2.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,6 @@ Como puedes ver, usamos la palabra clave `private` después del nombre de la fun

# Vamos a probarlo

Nuestro contrato tiene una función `createZombie` que es pública por defecto, esto significa ¡que cualquiera podría llamarlo y crear un nuevo zombi en nuestro contrato! Vamos a hacerla privada.
Nuestro contrato tiene una función `createZombie` que es pública por defecto, esto significa ¡qué cualquiera podría llamarlo y crear un nuevo zombi en nuestro contrato! Vamos a hacerla privada.

1. Modifica la función `createZombie` para que sea una función privada. ¡No te olvides de la convención del nombre!
2 changes: 1 addition & 1 deletion es/1/lessonoverview.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ En la Lección 1 vas a construir una "Fabrica de Zombis" para poder crear tu ej
* Nuestra fábrica tendrá una función que cree nuevos zombis
* Cada zombi tendrá una apariencia aleatoria y no habrá dos iguales

En las siguientes lecciones añadiremos más funcionalidades, ¡como la capacidad de atacar humanos u otros zombis! Pero antes de que lleguemos allí tendremos que contar con la funcionalidad de crear nuevos zombis.
En las siguientes lecciones añadiremos más funcionalidades, ¡cómo la capacidad de atacar humanos u otros zombis! Pero antes de que lleguemos allí tendremos que contar con la funcionalidad de crear nuevos zombis.

## Cómo funciona el ADN de los Zombis

Expand Down
2 changes: 1 addition & 1 deletion es/4/battle-03.md
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ Nuestras batallas zombie funcionarán de la siguiente manera:

Esto es mucha lógica a implementar así que lo haremos por partes en los siguientes capítulos.

+## Pongalo a prueba
## Pongalo a prueba

1. Dele a nuestro contrato una variable `uint` llamada `attackVictoryProbability`, y configurela como igual a `70`.

Expand Down
2 changes: 1 addition & 1 deletion es/5/06-erc721-6.md
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ material:

## Póngalo a prueba

1. Queremos asegurarnos de que sólo el dueño de un token / zombie pueda transferirlo. ¿Recuerda cómo podemos restringir el acceso a una función solo a su propietario?
1. Queremos asegurarnos de que solo el dueño de un token / zombie pueda transferirlo. ¿Recuerda cómo podemos restringir el acceso a una función solo a su propietario?

Correcto, ya tenemos un `modifier` que hace esto. Así que añade el `modifier` llamado `onlyOwnerOf` a esta función.

Expand Down
2 changes: 1 addition & 1 deletion es/5/07-erc721-7.md
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,7 @@ Ahora, vamos a implementar `approve`.

Recuerda, con `approve` / `takeOwnership`, la transferencia se produce en 2 pasos:

1. Tu, el propietario, llamas a `approve` y envías la dirección `address` del nuevo propietario, y el `_tokenId` que quieres enviar.
1. , el propietario, llamas a `approve` y envías la dirección `address` del nuevo propietario, y el `_tokenId` que quieres enviar.

2. El nuevo propietario llama a `takeOwnership` con el `_tokenId`, el contrato comprobará que este nuevo usuario está autorizado para ello y si es correcto, le transferirá el token.

Expand Down
14 changes: 7 additions & 7 deletions es/5/11-safemath-3.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ material:
contract ZombieFactory is Ownable {
using SafeMath for uint256;
// 1. Declare using SafeMath32 for uint32
// 2. Declare using SafeMath16 for uint16
// 1. Declara el uso de SafeMath32 for uint32f
// 2. Declara el uso de SafeMath16 for uint16
event NewZombie(uint zombieId, string name, uint dna);
Expand All @@ -39,11 +39,11 @@ material:
mapping (address => uint) ownerZombieCount;
function _createZombie(string _name, uint _dna) internal {
// Note: We chose not to prevent the year 2038 problem... So don't need
// worry about overflows on readyTime. Our app is screwed in 2038 anyway ;)
// Nota: Decidimos no prevenir el problema del año 2018... sin embargo no debemos
// preocuparnos de readyTime. Igual nuestra DApp funcionará hasta el año 2038 ;)
uint id = zombies.push(Zombie(_name, _dna, 1, uint32(now + cooldownTime), 0, 0)) - 1;
zombieToOwner[id] = msg.sender;
// 3. Let's use SafeMath's `add` here:
// 3. Usemos el metodo `add` de SafeMath aquí:
ownerZombieCount[msg.sender]++;
NewZombie(id, _name, _dna);
}
Expand Down Expand Up @@ -485,8 +485,8 @@ function add(uint256 a, uint256 b) internal pure returns (uint256) {
return c;
}
// If we call `.add` on a `uint8`, it gets converted to a `uint256`.
// So then it won't overflow at 2^8, since 256 is a valid `uint256`.
// Si usamos `.add` con un `uint8`, lo convertirá en `uint256`.
// Por lo tanto no se desbordará, ya que 256 funciona en `uint256`.
```

Esto significa que vamos a tener que implementar 2 librerías más para evitar los casos con `uint16` y `uint32`. Podemos llamarlos `SafeMath16` y `SafeMath32`.
Expand Down
4 changes: 2 additions & 2 deletions es/5/12-safemath-4.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ material:
uint attackVictoryProbability = 70;
function randMod(uint _modulus) internal returns(uint) {
// Here's one!
// ¡Aquí hay uno!
randNonce++;
return uint(keccak256(now, msg.sender, randNonce)) % _modulus;
}
Expand All @@ -26,7 +26,7 @@ material:
Zombie storage enemyZombie = zombies[_targetId];
uint rand = randMod(100);
if (rand <= attackVictoryProbability) {
// Here's 3 more!
// ¡Aquí hay tres más!
myZombie.winCount++;
myZombie.level++;
enemyZombie.lossCount++;
Expand Down
2 changes: 1 addition & 1 deletion es/5/13-comments.md
Original file line number Diff line number Diff line change
Expand Up @@ -422,7 +422,7 @@ contract CryptoZombies {
}
```

En particular, es una buena práctica comentar su código para explicar el comportamiento esperado de cada función en su contrato. De esta forma, otro desarrollador (¡O tu, después de un paréntesis de 6 meses en un proyecto!) puede leer rápidamente y comprender a un nivel alto lo que hace su código sin tener que leer el código en sí.
En particular, es una buena práctica comentar su código para explicar el comportamiento esperado de cada función en su contrato. De esta forma, otro desarrollador (¡O , después de un paréntesis de 6 meses en un proyecto!) puede leer rápidamente y comprender a un nivel alto lo que hace su código sin tener que leer el código en sí.

El estándar en la comunidad Solidity es usar un formato llamado **_natspec_**, que tiene esta apariencia:

Expand Down
2 changes: 1 addition & 1 deletion es/6/03.md
Original file line number Diff line number Diff line change
Expand Up @@ -797,7 +797,7 @@ Web3.js va a necesitar dos cosas para poder hablar con nuestro contrato intelige

Después de terminar de escribir tu contrato inteligente, lo tendrás de compilar y desplegar en Ethereum. Vamos a cubrir el **despliegue** en la siguiente **lección**, pero ya que es un proceso bastante diferente de escribir código, hemos decidido desordenar y cubrir primero Web3.js.

Después de implementar tu contrato, obtiene una dirección fija en Ethereum donde vivirá por siempre. Si recuerda de la Lección 2, la dirección del contrato CryptoKitties en el mainnet de Ethereum es `YOUR_CONTRACT_ADDRESS`.
Después de implementar tu contrato, obtiene una dirección fija en Ethereum donde vivirá por siempre. Si recuerda de la Lección 2, la dirección del contrato CryptoKitties en el mainnet de Ethereum es `0x06012c8cf97BEaD5deAe237070F9587f8E7A266d`.

Deberás copiar esta dirección después de la implementación para poder hablar con su contrato inteligente..

Expand Down
Loading

0 comments on commit aceb3b1

Please sign in to comment.