Skip to content

Commit

Permalink
russian translation added
Browse files Browse the repository at this point in the history
  • Loading branch information
phDooY committed Feb 8, 2018
1 parent 1416d9b commit 17898e1
Show file tree
Hide file tree
Showing 38 changed files with 3,205 additions and 1 deletion.
4 changes: 3 additions & 1 deletion index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ import pt from './pt'
import jp from './jp'
import th from './th'
import th from './fr'
import ru from './ru'

export default {
en, // English (source for all translations)
zh,
pt,
jp,
th,
fr
fr,
ru
}
11 changes: 11 additions & 0 deletions ru/1/00-overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: Фабрика Зомби
header: Смелей, человек!
roadmap: roadmap.jpg
---

Всё ли у тебя есть для того, чтобы стать **КриптоЗомби**?

На этом курсе ты научишься, как **создать игру на Ethereum**.

Курс для новичков в Ethereum, но надеемся, что у тебя есть опыт программирования на других языках (например, на Javascript).
75 changes: 75 additions & 0 deletions ru/1/arrays.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
title: Массивы
actions: ['Проверить', 'Подсказать']
material:
editor:
language: sol
startingCode: |
pragma solidity ^0.4.19;
contract ZombieFactory {
uint dnaDigits = 16;
uint dnaModulus = 10 ** dnaDigits;
struct Zombie {
string name;
uint dna;
}
// Начало здесь
}
answer: >
pragma solidity ^0.4.19;
contract ZombieFactory {
uint dnaDigits = 16;
uint dnaModulus = 10 ** dnaDigits;
struct Zombie {
string name;
uint dna;
}
Zombie[] public zombies;
}
---

Если нужен список из похожих элементов, подойдет **_массив_**. В Solidity есть два типа массивов: **_фиксированный_** и **_динамический_**:

```
// Массив фиксированной длины из 2 элементов:
uint[2] fixedArray;
// Другой фиксированный массив из 5 строк:
string[5] stringArray;
// Динамический массив не ограничен по размеру и может увеличиваться:
uint[] dynamicArray;
```

Ты можешь создать массив из **_структур_**. Возьми структуру `Person` из предыдущей части:

```
Person[] people; // Динамический массив позволяет добавлять в него данные
```

Ты не забыл, что переменные состояния сохраняются в блокчейне навсегда? Создание динамического массива из подобных структур полезно для хранения структурированных данных внутри контракта, как в базе данных.

## Открытые массивы

Можно задать массив как `public` (открытый), и Solidity автоматически создаст для него **_геттер_** (способ получения). Синтаксис:

```
Person[] public people;
```

В этом случае другие контракты смогут читать этот массив (но не писать в него). Это образец хранения открытых данных в контракте.

# Проверь себя

Армию зомби надо где-то разместить. Мы хотим, чтобы другие приложения видели зомби, поэтому сделаем массив открытым.

1. Создай открытый массив **_структур_** `Zombie` и назови его `zombies`.
94 changes: 94 additions & 0 deletions ru/1/arraysstructs2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
---
title: Как работать со структурами и массивами
actions: ['Проверить', 'Подсказать']
material:
editor:
language: sol
startingCode: |
pragma solidity ^0.4.19;
contract ZombieFactory {
uint dnaDigits = 16;
uint dnaModulus = 10 ** dnaDigits;
struct Zombie {
string name;
uint dna;
}
Zombie[] public zombies;
function createZombie(string _name, uint _dna) {
// Начало здесь
}
}
answer: >
pragma solidity ^0.4.19;
contract ZombieFactory {
uint dnaDigits = 16;
uint dnaModulus = 10 ** dnaDigits;
struct Zombie {
string name;
uint dna;
}
Zombie[] public zombies;
function createZombie(string _name, uint _dna) {
zombies.push(Zombie(_name, _dna));
}
}
---

### Создаем новую структуру

Помнишь структуру `Person` (личность) из предыдущего примера?

```
struct Person {
uint age;
string name;
}
Person[] public people;
```

Посмотри, как создать новые личности `Person` и добавить их в массив `people`(люди):

```
// Создать новую личность:
Person satoshi = Person(172, "Satoshi");
// Добавить личность в массив:
people.push(satoshi);
```

Можно совместить и записать одной строчкой, чтобы код выглядел чище:

```
people.push(Person(16, "Vitalik"));
```

Обрати внимание, что `array.push()` обозначает конец массива, поэтому элементы выстраиваются в порядке добавления. Пример:

```
uint[] numbers;
numbers.push(5);
numbers.push(10);
numbers.push(15);
// Числа равны [5, 10, 15]
```

# Проверь себя

Заставим функцию createZombie что-нибудь сделать!

1. Заполни тело функции таким образом, чтобы она создавала нового `Zombie` и добавляла его в массив `zombies`. Имя `name` и ДНК `dna` нового зомби должны браться из параметров функции.
2. Запиши все одной строчкой, чтобы код выглядел чисто.
56 changes: 56 additions & 0 deletions ru/1/contracts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
title: Контракты
actions: ['Проверить', 'Подсказать']
material:
editor:
language: sol
startingCode: |
pragma solidity //1. Здесь укажи версию Solidity
//2. Здесь создай контракт
answer: >
pragma solidity ^0.4.19;
contract ZombieFactory {
}
---

Начнем с азов:

Код в Solidity помещают внутри **контрактов**. `contract` — это базовый блок для создания приложений на Ethereum. Все переменные и функции принадлежат контракту, он — отправная точка проекта.

Пустой контракт под названием `HelloWorld` (Привет, мир!) будет выглядеть так:

```
contract HelloWorld {
}
```

## Версия pragma

Любой код на Solidity начинается с «версии pragma» — объявления, с какой версией компилятора Solidity совместим код. Это делается для того, чтобы избежать проблем с будущими версиями компилятора, содержащими изменения и потенциально способными испортить код.

Вот так: `pragma solidity ^0.4.19;` (на момент написания кода используется версия Solidity 0.4.19).

Соберем все вместе и получим скелет будущего контракта. Ты будешь начинать с этого каждый раз, когда создаешь новый проект:

```
pragma solidity ^0.4.19;
contract HelloWorld {
}
```

# Проверь себя

Чтобы начать создавать армию зомби, напишем базовый контракт и назовем его `ZombieFactory` (Фабрика Зомби).

1. В поле справа обозначь версию контракта Solidity как `0.4.19`.

2. Создай пустой контракт с именем `ZombieFactory`(Фабрика Зомби).

Когда закончишь, кликни «Проверить» внизу. Если затрудняешься, нажми «Подсказать».
50 changes: 50 additions & 0 deletions ru/1/datatypes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
title: Переменные состояния и целые числа
actions: ['Проверить', 'Подсказать']
material:
editor:
language: sol
startingCode: |
pragma solidity ^0.4.19;
contract ZombieFactory {
//Начало здесь
}
answer: >
pragma solidity ^0.4.19;
contract ZombieFactory {
uint dnaDigits = 16;
}
---

Отличная работа! Теперь, когда у нас есть оболочка контракта, мы можем изучить, как Solidity работает с переменными.

**_Переменные состояния_** записываются в хранилище контракта. Это означает, что они сохраняются в блокчейне Ethereum, как в базе данных.

##### Пример:
```
contract Example {
// Контракт навсегда сохранен в блокчейне
uint myUnsignedInteger = 100;
}
```

В этом примере контракта мы создали `uint` под названием `myUnsignedInteger` и присвоили ему значение 100.

## Целые числа без знака: `uint`

Тип данных `uint` — это целые числа без знака, то есть **их значение не может быть отрицательным**. Еще есть тип данных `int` для целых чисел со знаком.

> Примечание: в Solidity `uint` используют как синоним для `uint256`, 256-битного целого числа без знака. Можно задать uint с меньшим количество битов — `uint8`, `uint16`, `uint32` и.т.д. Но обычно используют просто `uint`, кроме особенных случаев, о которых мы поговорим далее.
# Проверь себя

ДНК зомби будет определяться номером из 16 цифр.

Задай переменную состояния `uint` под названием `dnaDigits` (номер ДНК) и установи ее значение равным `16`.
Loading

0 comments on commit 17898e1

Please sign in to comment.