Skip to content

Commit

Permalink
spanish + markdown errors (#572)
Browse files Browse the repository at this point in the history
  • Loading branch information
JAlbertoGonzalez authored Dec 28, 2021
1 parent 727aa20 commit 41586c9
Show file tree
Hide file tree
Showing 49 changed files with 81 additions and 81 deletions.
2 changes: 1 addition & 1 deletion en/11/05.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ Once we specified the contract we wanted to test using `artifacts.require`, _Tru
Besides these bits of information, `result` is going to be giving us several other useful details about the transaction:

- `result.tx`: the transaction hash
- `result.receipt`: an object containing the transaction receipt. If `result.receipt.status` is equal to ` true` it means that the transaction was successful. Otherwise, it means that the transaction failed.
- `result.receipt`: an object containing the transaction receipt. If `result.receipt.status` is equal to `true` it means that the transaction was successful. Otherwise, it means that the transaction failed.

>Note: Note that logs can also be used as a much cheaper option to store data. The downside is that they can't be accessed from within the smart contract itself.
Expand Down
2 changes: 1 addition & 1 deletion es/6/01.md
Original file line number Diff line number Diff line change
Expand Up @@ -433,7 +433,7 @@ Recuerda, que la red de Ethereum está formada por nodos, cada uno de los cuales
Los nodos de Ethereum solamente hablan un idioma llamado **_JSON-RPC_**, cuyo lenguaje es bastante difícil de leer para un humano. Una consulta para decirle al nodo que quieres llamar una función en un Contrato Inteligente es algo así:

```
// ¡Y esque escribiendo nuestro contrato así tardaríamos una eternidad!
// ¡Y es que escribiendo nuestro contrato así tardaríamos una eternidad!
// Scroll right ==>
{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{"from":"0xb60e8dd61c5d32be8058bb8eb970870f07233155","to":"0xd46e8dd67c5d32be8058bb8eb970870f07244567","gas":"0x76c0","gasPrice":"0x9184e72a000","value":"0x9184e72a","data":"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}],"id":1}
```
Expand Down
12 changes: 6 additions & 6 deletions es/6/02.md
Original file line number Diff line number Diff line change
Expand Up @@ -435,7 +435,7 @@ material:
</html>
---

Estupendo! Ahora que ya tenemos Web3.js en nuestro proyecto, vamos a inicializarlo y hablar de la blockchain.
¡Estupendo! Ahora que ya tenemos Web3.js en nuestro proyecto, vamos a inicializarlo y hablar de la blockchain.

Lo primero que necesitamos, es un **_Web3 Provider_**.

Expand All @@ -445,15 +445,15 @@ Podrías "hostear" tu propio nodo Ethereum como proveedor. Sin embargo, hay un s

## Infura

<a href="https://infura.io/" target=_blank>Infura</a> es un servicio que mantiene un conjunto de nodos Ethereum con una capa de almacenamiento en caché para lecturas rápidas, el cual puedes acceder de forma gratuita a través de su API. Usando Infura comno proveedor, puedes enviar y recibir mensajes de manera confiable desde/hacia la blockchain de Ethereum sin necesidad de mantener y configurar tu propio nodo.
<a href="https://infura.io/" target=_blank>Infura</a> es un servicio que mantiene un conjunto de nodos Ethereum con una capa de almacenamiento en caché para lecturas rápidas, el cual puedes acceder de forma gratuita a través de su API. Usando Infura como proveedor, puedes enviar y recibir mensajes de manera confiable desde/hacia la blockchain de Ethereum sin necesidad de mantener y configurar tu propio nodo.
En el siguiente ejemplo, se muestra como se puede configurar Web3 para usar Infura como proveedor Web3:
```
var web3 = new Web3(new Web3.providers.WebsocketProvider("wss://mainnet.infura.io/ws"));
```
Sin embargo, dado que muchas personas serán usuarios de nuestra DApp — y estos usuarios no solo van a leer la blockchain sino también escribir en ella — vamos a necesitar una forma para que estos usuarios puedan firmar diversas transacciones con su llave privada.
> Nota: Ethereum (y las Blockchains en general) usan una llave pública/privada para firmar de forma digital las transacciones. De esta manera si cambio algunos datos de la Blockchain, puedo **demostrar** a través de mi llave pública que fui yo quien lo firmó — pero como nadie sabe mi llave privada, nadie puede falsificar una transacción en mi nombre.
La criptografía es complicada, así que a menos que seas un experto en seguridad y realmente sepas lo que estás haciendo, probablemente no sea una buena idea tratar de administrar manuealmente las claves privadas de los usuarios en el front-end de nuestra aplicación.
Per afortunadamente no necesitamos hacerlo — hoy en día ya hay servicios que manejan estas llaves por nosotros. El más popular de estos es **_Metamask_**.
La criptografía es complicada, así que a menos que seas un experto en seguridad y realmente sepas lo que estás haciendo, probablemente no sea una buena idea tratar de administrar manualmente las claves privadas de los usuarios en el front-end de nuestra aplicación.
Pero afortunadamente no necesitamos hacerlo — hoy en día ya hay servicios que manejan estas llaves por nosotros. El más popular de estos es **_Metamask_**.

## Metamask

Expand All @@ -478,8 +478,8 @@ window.addEventListener('load', function() {
startApp()
})
```
Puedes usar este código en todas tus aplicaciones que exijan tener instado Metamask.
> Nota: Hay otros programas de administración de claves privadas que sus usuarios podrían estar usando además de MetaMask, como por ejemplo el navegador web **Mist**. No obstante, todos implementan un patrón de inyección de la variable `web3`, por lo que el método que describimos aquí para detectar el proveedor web3 del usuario también funcionará para estos.
Puedes usar este código en todas tus aplicaciones que exijan tener instalado Metamask.
> Nota: Hay otros programas de administración de claves privadas que sus usuarios podrían estar usando además de MetaMask, como por ejemplo el navegador web **Mist**. No obstante, todos implementan un patrón de inyección de la variable `web3`, por lo que el método que describimos aquí para detectar el proveedor web3 del usuario también funcionará para éstos.
## Póngalo a prueba
Hemos creado algunas etiquetas de script antes del cierre `</body>` en tu archivo HTML. Podemos escribir tu código de JavaScript para esta lección aquí.
1. Dirígete arriba y copia/pega la plantilla de código para detectar si nuestros usuarios tienen instalado Metamask. Es el bloque que comienza con `window.addEventListener`.
Expand Down
6 changes: 3 additions & 3 deletions es/6/03.md
Original file line number Diff line number Diff line change
Expand Up @@ -912,7 +912,7 @@ material:

Ahora que ya hemos inicializado Web3.js con el proveedor Web3 de MetaMask, vamos a configurarlo para hablar con nuestro contrato inteligente.

Web3.js va a necesitar dos cosas para poder hablar con nuestro contrato inteligente: su **_address_** (dirección y su **_ABI_**).
Web3.js va a necesitar dos cosas para poder hablar con nuestro contrato inteligente: su **_address_** (dirección) y su **_ABI_**).

## Dirección del contrato

Expand All @@ -931,7 +931,7 @@ Cuando compilas tu contrato para implementarlo en Ethereum (que cubriremos en la

Como aún no hemos cubierto el tema de la implementación y de momento no lo vamos a hacer, para esta lección, hemos compilado el ABI para ti y lo hemos puesto en un archivo llamado `cryptozombies_abi.js`, almacenado en una variable llamada `cryptoZombiesABI`.

Si incluimos `cryptozombies_abi.js` en nuestro proyecto, vamos a ser capaces de accceder a nuestro CryptoZombies ABI usando esta variable.
Si incluimos `cryptozombies_abi.js` en nuestro proyecto, vamos a ser capaces de acceder a nuestro CryptoZombies ABI usando esta variable.

## Instanciando un Contrato Web.js

Expand All @@ -952,4 +952,4 @@ var myContract = new web3js.eth.Contract(myABI, myContractAddress);

4. Lo primero que debe hacer `startApp()` es declarar una `var` llamada `cryptoZombiesAddress` y asígnale su valor al string `"YOUR_CONTRACT_ADDRESS"` (esta es la dirección del contrato de CryptoZombies en la mainnet).

5. Finalmente, vamos a inicializar nuestro contrarto. Establezca `cryptoZombies` igual a un nuevo` web3js.eth.Contract` como lo hicimos en el código de ejemplo anterior. (Usando `cryptoZombiesABI`, que se importa con nuestra etiqueta de script, y `cryptoZombiesAddress` desde arriba).
5. Finalmente, vamos a inicializar nuestro contrarto. Establezca `cryptoZombies` igual a un nuevo `web3js.eth.Contract` como lo hicimos en el código de ejemplo anterior. (Usando `cryptoZombiesABI`, que se importa con nuestra etiqueta de script, y `cryptoZombiesAddress` desde arriba).
6 changes: 3 additions & 3 deletions es/6/04.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: LLamando a las funciones de nuestro Contrato
title: Llamando a las funciones de nuestro Contrato
actions: ['checkAnswer', 'hints']
requireLogin: true
material:
Expand Down Expand Up @@ -522,7 +522,7 @@ En Solidity, cuando tú declaras una variable `public`, automáticamente se crea

Así es como escribiríamos una función de JavaScript en nuestro front-end que tomaría una identificación de zombie, consultaría nuestro contrato para ese zombie, y devolvería el resultado:

> Nota: Todos los ejemplos de código que estamos usando en esta lección usan la **versión 1.0** de Web3.js, que usa promesas en lugar de devoluciones. Muchos otros tutoriales que verás en internet usarán una versión anterior de Web3.js. La sintaxis ha cambiado mucho con la versión 1.0, así que si estás copiando el código de otros tutoriales, asegúrate de que estén usando la misma versión que tu.
> Nota: Todos los ejemplos de código que estamos usando en esta lección usan la **versión 1.0** de Web3.js, que usa promesas en lugar de devoluciones. Muchos otros tutoriales que verás en internet usarán una versión anterior de Web3.js. La sintaxis ha cambiado mucho con la versión 1.0, así que si estás copiando el código de otros tutoriales, asegúrate de que estén usando la misma versión que .
```
function getZombieDetails(id) {
return cryptoZombies.methods.zombies(id).call()
Expand Down Expand Up @@ -551,7 +551,7 @@ Una vez que la promesa se resuelva (lo que significa que recibimos una respuesta
"level": "9999",
"readyTime": "1522498671",
"winCount": "999999999",
"lossCount": "0" // Obviously.
"lossCount": "0" // Obviamente.
}
```

Expand Down
2 changes: 1 addition & 1 deletion es/6/05.md
Original file line number Diff line number Diff line change
Expand Up @@ -503,7 +503,7 @@ Ahora juntemos algunas piezas — digamos que queremos que la página de inicio

Obviamente, primero necesitaríamos usar nuestra función `getZombiesByOwner(owner)` para buscar todas las IDs de todos los zombies que los usuarios actuales tienen.

Pero nuestro contrato Solidity espera que `owner` usa una Solidity `address`. ¿Cómo podemos saber la dirección del usuario que usa nuestra aplicación?
Pero nuestro contrato Solidity espera que `owner` sea una Solidity `address`. ¿Cómo podemos saber la dirección del usuario que usa nuestra aplicación?

## Obteniendo la cuenta de los usuarios de MetaMask

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

Este tutorial no estaría completado si no te enseñamos cómo mostrar realmente los datos que obtiene el contrato.
Este tutorial no estaría completo si no te enseñamos cómo mostrar realmente los datos que obtiene el contrato.

Sin embargo, de forma realista, querrás utilizar un marco front-end como React or Vue.js en tu aplicación web, ya que hacen que tu vida sea mucho más fácil como desarrollador de front-ends. Pero cubrir React o Vue.js está fuera del alcance de este tutorial — eso acabaría siendo un tutorial completo con múltiples lecciones en sí mismo.

Expand Down
4 changes: 2 additions & 2 deletions es/6/07.md
Original file line number Diff line number Diff line change
Expand Up @@ -586,7 +586,7 @@ material:
</html>
---

Increíble! Ahora nuestra UI va a detectar la cuenta MetaMask del usuario, y automáticamente mostrar por pantalla su ejército zombie en la página de inicio.
¡Increíble! Ahora nuestra UI va a detectar la cuenta MetaMask del usuario, y automáticamente mostrar por pantalla su ejército zombie en la página de inicio.

Ahora veamos el uso de las funciones `send` para cambiar los datos en nuestro contrato inteligente.

Expand Down Expand Up @@ -650,7 +650,7 @@ Hemos añadido un `div` con la ID `txStatus` — de esta manera podemos usar est

1. Abajo de `displayZombies`, copia/pega el código de la función `createRandomZombie` situado arriba.

2. Let's implement another function: `feedOnKitty`.
2. Vamos a implementar otra función: `feedOnKitty`.

La lógica para llamar `feedOnKitty` será casi idéntica — enviaremos una transacción que llame a la función, y una transacción exitosa resulta en un nuevo zombie creado para nosotros, así que querremos volver a dibujar la IU después de que sea exitosa.

Expand Down
6 changes: 3 additions & 3 deletions es/6/08.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: LLamando funciones Payables
title: Llamando funciones Payables
actions: ['checkAnswer', 'hints']
requireLogin: true
material:
Expand Down Expand Up @@ -622,7 +622,7 @@ material:
</html>
---

La lógica para `attack`,` changeName`, y `changeDna` será extremadamente similar, entonces son triviales de implementar y no vamos a perder tiempo codificándolos en esta lección.
La lógica para `attack`, `changeName`, y `changeDna` será extremadamente similar, por lo que son triviales de implementar y no vamos a perder tiempo codificándolas en esta lección.

> De hecho, ya hay mucha lógica repetitiva en cada una de estas funciones, por lo que probablemente tendría sentido refactorizar y poner el código común en su propia función. (Y usar un sistema de plantillas para los mensajes `txStatus` — ¡ya estamos viendo cuánto más limpias serían las cosas con un framework como Vue.js!)
Veamos otro tipo de función que requiere un tratamiento especial en Web3.js — funciones `payable`.
Expand All @@ -642,7 +642,7 @@ La forma de enviar Ether junto con una función es simple, con una advertencia:

## ¿Qué es un Wei?

Un `wei` es la sub-unidad más pequeña del Ether — hay 10^18 `wei`s en un `ether`.
Un `wei` es la subunidad más pequeña del Ether — hay 10^18 `wei`s en un `ether`.

Eso es un montón de ceros para contar — pero afortunadamente Web3.js tiene una utilidad de conversión que hace esto por nosotros.

Expand Down
2 changes: 1 addition & 1 deletion es/6/09.md
Original file line number Diff line number Diff line change
Expand Up @@ -684,7 +684,7 @@ cryptoZombies.events.Transfer({ filter: { _to: userAccount } })
}).on("error", console.error);
```

Como puedes ver, el uso de los campos `events` e` indexed` puede ser una práctica bastante útil para escuchar los cambios en tu contrato y reflejarlos en el front-end de tu aplicación.
Como puedes ver, el uso de los campos `events` e `indexed` puede ser una práctica bastante útil para escuchar los cambios en tu contrato y reflejarlos en el front-end de tu aplicación.

## Consultando eventos pasados

Expand Down
2 changes: 1 addition & 1 deletion es/6/10-wrappingitup.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ material:

¡Felicidades! Has escrito con éxito tu primer front-end Web3.js que interactúa con tu contrato inteligente.

¡Como recompensa, obtienes tu propio zombie `The Phantom of Web3`! Nivel 3.0 (para Web 3.0 😉), completo con máscara de zorro. Miralo hacia la derecha.
¡Como recompensa, obtienes tu propio zombie `The Phantom of Web3`! Nivel 3.0 (para Web 3.0 😉), completo con máscara de zorro. Puedes verlo a la derecha.

## Siguientes pasos

Expand Down
2 changes: 1 addition & 1 deletion fa/11/05.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ Once we specified the contract we wanted to test using `artifacts.require`, _Tru
Besides these bits of information, `result` is going to be giving us several other useful details about the transaction:

- `result.tx`: the transaction hash
- `result.receipt`: an object containing the transaction receipt. If `result.receipt.status` is equal to ` true` it means that the transaction was successful. Otherwise, it means that the transaction failed.
- `result.receipt`: an object containing the transaction receipt. If `result.receipt.status` is equal to `true` it means that the transaction was successful. Otherwise, it means that the transaction failed.

>Note: Note that logs can also be used as a much cheaper option to store data. The downside is that they can't be accessed from within the smart contract itself.
Expand Down
2 changes: 1 addition & 1 deletion fr/1/datatypes.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Dans cet exemple de contrat, nous avons créé un `uint` appelé `myUnsignedInte

Le type de données `uint` est un entier non signé, cela veut dire que **sa valeur doit être non négative**. Il existe aussi un type de données `int` pour les entiers signés.

> Remarque: En Solidity, `uint` est en fait un alias pour` uint256`, un entier non signé de 256 bits. Vous pouvez déclarer des uints avec moins de bits - `uint8`,` uint16`, `uint32`, etc. Mais en général il est plus simple d'utiliser `uint` sauf dans des cas spécifiques que nous aborderons dans les leçons suivantes.
> Remarque: En Solidity, `uint` est en fait un alias pour `uint256`, un entier non signé de 256 bits. Vous pouvez déclarer des uints avec moins de bits - `uint8`, `uint16`, `uint32`, etc. Mais en général il est plus simple d'utiliser `uint` sauf dans des cas spécifiques que nous aborderons dans les leçons suivantes.

# A votre tour
Expand Down
4 changes: 2 additions & 2 deletions it/1/datatypes.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ contract Example {
}
```

In questo contratto di esempio abbiamo creato un `uint` chiamato` myUnsignedInteger` e lo abbiamo impostato su 100.
In questo contratto di esempio abbiamo creato un `uint` chiamato `myUnsignedInteger` e lo abbiamo impostato su 100.

## Numeri Interi senza Segno: `uint`

Expand All @@ -47,4 +47,4 @@ Il tipo di dati `uint` è un numero intero senza segno, nel senso che **il suo v

Il nostro DNA di zombi sarà determinato da un numero di 16 cifre.

Dichiarare un `uint` chiamato` dnaDigits` ed impostarlo uguale a `16`.
Dichiarare un `uint` chiamato `dnaDigits` ed impostarlo uguale a `16`.
2 changes: 1 addition & 1 deletion it/1/functions3.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ Questa funzione non legge nemmeno dallo stato dell'app - il suo valore di ritorn

Vogliamo una funzione di aiuto che generi un numero di DNA casuale da una stringa.

1. Creare una funzione `private` chiamata` _generateRandomDna`. Prenderà un parametro chiamato `_str` (una` string`) e restituirà un `uint`.
1. Creare una funzione `private` chiamata `_generateRandomDna`. Prenderà un parametro chiamato `_str` (una `string`) e restituirà un `uint`.

2. Questa funzione visualizzerà alcune delle variabili del nostro contratto ma non le modificherà, contrassegnala quindi come `view`.

Expand Down
4 changes: 2 additions & 2 deletions it/1/keccak256.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ Ethereum ha la funzione hash `keccak256` integrata, che è una versione di SHA3.
È utile per molti scopi in Ethereum, ma per ora lo useremo solo per la generazione di numeri pseudo-casuali.


Importante: `keccak256` prevede un singolo parametro di tipo` byte`. Ciò significa che dobbiamo "impacchettare" tutti i parametri prima di chiamare `keccak256`:
Importante: `keccak256` prevede un singolo parametro di tipo `byte`. Ciò significa che dobbiamo "impacchettare" tutti i parametri prima di chiamare `keccak256`:

Esempio:

Expand Down Expand Up @@ -97,6 +97,6 @@ Come vedi sopra `a * b` restituisce un `uint`, ma stavamo provando a memorizzarl

Riempiamo il body della nostra funzione `_generateRandomDna`! Ecco cosa dovrebbe fare:

1. La prima riga di codice dovrebbe prendere l'hash `keccak256` di `abi.encodePacked(_str)` per generare un esadecimale pseudo-casuale, dichiararlo come` uint` ed infine archiviare il risultato in un `uint` chiamato `rand`.
1. La prima riga di codice dovrebbe prendere l'hash `keccak256` di `abi.encodePacked(_str)` per generare un esadecimale pseudo-casuale, dichiararlo come `uint` ed infine archiviare il risultato in un `uint` chiamato `rand`.

2. Vogliamo che il nostro DNA sia lungo solo 16 cifre (ricordi il nostro `dnaModulus`?). Quindi la seconda riga di codice dovrebbe esssere la `return` del valore `rand` (`%`) `dnaModulus`.
2 changes: 1 addition & 1 deletion it/1/math.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,4 @@ uint x = 5 ** 2; // uguale a 5^2 = 25

Per assicurarci che il DNA del nostro Zombi abbia solo 16 caratteri, facciamo un altro `uint` uguale a 10^16. In questo modo possiamo in seguito usare l'operatore modulo `%` per abbreviare un numero intero a 16 cifre.

1. Crea un `uint` chiamato` dnaModulus` ed impostalo uguale a **10 alla potenza di `dnaDigits`**.
1. Crea un `uint` chiamato `dnaModulus` ed impostalo uguale a **10 alla potenza di `dnaDigits`**.
2 changes: 1 addition & 1 deletion it/2/3-msgsender.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ function whatIsMyNumber() public view returns (uint) {
}
```

In questo banale esempio chiunque potrebbe chiamare `setMyNumber` e memorizzare un` uint` nel nostro contratto, che sarebbe legato al loro indirizzo. Quindi quando hanno chiamato `whatIsMyNumber` sono stati restituiti gli `uint` che avevano archiviato.
In questo banale esempio chiunque potrebbe chiamare `setMyNumber` e memorizzare un `uint` nel nostro contratto, che sarebbe legato al loro indirizzo. Quindi quando hanno chiamato `whatIsMyNumber` sono stati restituiti gli `uint` che avevano archiviato.

L'uso di `msg.sender` ti offre la sicurezza della blockchain di Ethereum - l'unico modo in cui qualcuno può modificare i dati di qualcun altro sarebbe quello di rubare la chiave privata associata al suo indirizzo Ethereum.

Expand Down
Loading

0 comments on commit 41586c9

Please sign in to comment.