Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RU] Remove trailing spaces + fix typos/errors #675

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ru/1/arrays.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ uint[] dynamicArray;
Person[] people; // Динамический массив позволяет добавлять в него данные
```

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

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

Expand Down
2 changes: 1 addition & 1 deletion ru/1/arraysstructs2.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ people.push(satoshi);
people.push(Person(16, "Vitalik"));
```

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

```
uint[] numbers;
Expand Down
6 changes: 3 additions & 3 deletions ru/1/contracts.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
---
title: Контракты
actions: ['Проверить', 'Подсказать']
material:
material:
editor:
language: sol
startingCode: |
pragma solidity //1. Здесь укажи версию Solidity

//2. Здесь создай контракт
answer: >
answer: >
pragma solidity ^0.4.19;


Expand All @@ -31,7 +31,7 @@ contract HelloWorld {

## Версия pragma

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

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

Expand Down
6 changes: 3 additions & 3 deletions ru/1/datatypes.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ material:

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

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

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

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

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

Задай переменную состояния `uint` под названием `dnaDigits` (номер ДНК) и установи ее значение равным `16`.
12 changes: 6 additions & 6 deletions ru/1/events.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ material:
function _createZombie(string _name, uint _dna) private {
zombies.push(Zombie(_name, _dna));
// Здесь запусти событие
}
}

function _generateRandomDna(string _str) private view returns (uint) {
uint rand = uint(keccak256(_str));
Expand Down Expand Up @@ -58,7 +58,7 @@ material:
function _createZombie(string _name, uint _dna) private {
uint id = zombies.push(Zombie(_name, _dna)) - 1;
NewZombie(id, _name, _dna);
}
}

function _generateRandomDna(string _str) private view returns (uint) {
uint rand = uint(keccak256(_str));
Expand All @@ -75,7 +75,7 @@ material:

Наш контракт почти готов! Осталось добавить **_событие_**.

**_Событие_** — это способ, которым контракт сообщает внешнему интерфейсу приложения, что в блокчейне произошло некое событие. Интерфейс может «услышать» определенные события и выполнить заданное действие по его наступлении.
**_Событие_** — это способ, которым контракт сообщает внешнему интерфейсу приложения, что в блокчейне произошло некое событие. Интерфейс может «услышать» определенные события и выполнить заданное действие по его наступлении.

Пример:

Expand All @@ -85,7 +85,7 @@ event IntegersAdded(uint x, uint y, uint result);

function add(uint _x, uint _y) public {
uint result = _x + _y;
// Запусти событие, чтобы оповестить приложение о вызове функции:
// Запусти событие, чтобы оповестить приложение о вызове функции:
IntegersAdded(_x, _y, result);
return result;
}
Expand All @@ -94,7 +94,7 @@ function add(uint _x, uint _y) public {
Теперь внешний интерфейс приложения сможет услышать событие. Примерно так будет выглядеть выполнение JavaScript:

```
YourContract.IntegersAdded(function(error, result) {
YourContract.IntegersAdded(function(error, result) {
// Воспользуйся результатом
}
```
Expand All @@ -105,6 +105,6 @@ YourContract.IntegersAdded(function(error, result) {

1. Задай `event` (событие) под названием `NewZombie` (новый зомби). Оно должно сообщать `zombieId` (`uint`), имя `name` (строку `string`) и ДНК `dna` (`uint`).

2. Измени функцию `_createZombie` (создать зомби) так, чтобы событие `NewZombie` запускалось после добавления нового солдата в массив `zombies`.
2. Измени функцию `_createZombie` (создать зомби) так, чтобы событие `NewZombie` запускалось после добавления нового солдата в массив `zombies`.

3. Тебе понадобится `id` — идентификатор зомби. `array.push()` возвращает `uint` новой длины массива. Поскольку первый элемент в массиве имеет индекс 0, `array.push () - 1` вернет индекс только что добавленного зомби. Сохрани результат `zombies.push () - 1` в `uint` с названием `id`, чтобы его можно было использовать в событии `NewZombie` в следующей строчке.
4 changes: 2 additions & 2 deletions ru/1/functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ function eatHamburgers(string _name, uint _amount) {
}
```

Функция `eatHamburgers` (есть гамбургеры) берет два параметра: `string` и `uint`. Пока тело функции оставим пустым.
Функция `eatHamburgers` (есть гамбургеры) берет два параметра: `string` и `uint`. Пока тело функции оставим пустым.

> Примечание: обычно (но не обязательно) имена переменных в параметрах функций записывают со знаком подчеркивания в начале, чтобы было проще отличить их от глобальных переменных. В наших урокам мы тоже будем пользоваться этим обычаем.

Expand All @@ -69,4 +69,4 @@ eatHamburgers("vitalik", 100);

1. Создай функцию под названием `createZombie` (создать зомби), которая берет 2 параметра: **\_name** (имя, строка `string`) и **\_dna** (ДНК, тип `uint`).

Пока оставь тело функции пустым, мы заполним его позже.
Пока оставь тело функции пустым, мы заполним его позже.
6 changes: 3 additions & 3 deletions ru/1/functions2.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ material:
}
---

По умолчанию функции в Solidity `public` (открытые): любой человек или контракт может вызвать и исполнить функцию твоего контракта.
По умолчанию функции в Solidity `public` (открытые): любой человек или контракт может вызвать и исполнить функцию твоего контракта.

Разумеется, это не всегда желательно, потому что в контракте могут найтись уязвимости для атак. Лучше по умолчанию помечать функции как «закрытые» и потом задавать «открытые» функции, которые не страшно выставить на всеобщее обозрение.

Expand All @@ -61,12 +61,12 @@ function _addToArray(uint _number) private {
}
```

Это означает, что только другие функции внутри контракта смогут вызвать и исполнить функцию добавления к массиву `numbers`.
Это означает, что только другие функции внутри контракта смогут вызвать и исполнить функцию добавления к массиву `numbers`.

Как видишь, после имени функции идет ключевое слово `private`. Как и параметры, названия закрытых функций принято записывать, начиная со знака подчеркивания (`_`).

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

На данный момент функция контракта `createZombie` (создать зомби) по умолчанию является открытой — любой может вызвать ее и создать зомби внутри нашего контакта! Давай закроем ее.
На данный момент функция контракта `createZombie` (создать зомби) по умолчанию является открытой — любой может вызвать ее и создать зомби внутри нашего контакта! Давай закроем ее.

1. Измени тип функции `createZombie` на закрытый. Не забудь записать имя функции так, как принято!
16 changes: 8 additions & 8 deletions ru/1/functions3.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ material:

function _createZombie(string _name, uint _dna) private {
zombies.push(Zombie(_name, _dna));
}
}

function _generateRandomDna(string _str) private view returns (uint) {

Expand All @@ -53,11 +53,11 @@ material:
}
---

В этом разделе мы изучим функцию **_вернуть значение_** и ее модификаторы.
В этом разделе мы изучим функцию **_вернуть значение_** и ее модификаторы.

## Вернуть значение

Как задать функцию, чтобы она возвращала значение:
Как задать функцию, чтобы она возвращала значение:

```
string greeting = "Привет, дружок";
Expand Down Expand Up @@ -87,16 +87,16 @@ function _multiply(uint a, uint b) private pure returns (uint) {
}
```

Функция даже не читает состояние приложения - она возвращает значение, которое зависит только от параметров самой функции. В этом случае мы задаем функцию как **_pure_**.
Функция даже не читает состояние приложения - она возвращает значение, которое зависит только от параметров самой функции. В этом случае мы задаем функцию как **_pure_**.

> Примечание: не всегда легко вспомнить, когда задать «чистую» функцию или «просмотр». К счастью, компилятор Solidity исправно выдает предупреждения, что нужно использовать тот или иной модификатор.
> Примечание: не всегда легко вспомнить, когда задать «чистую» функцию или «просмотр». К счастью, компилятор Solidity исправно выдает предупреждения, что нужно использовать тот или иной модификатор.

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

Нам понадобится вспомогательная функция, которая генерирует случайный номер ДНК из строки.
Нам понадобится вспомогательная функция, которая генерирует случайный номер ДНК из строки.

1. Создай `private` (приватную) функцию под названием `_generateRandomDna` (сгенерировать случайную ДНК). Она будет брать один параметр под названием `_str` (строку `string`), и возвращать `uint`.

2. Эта функция будет просматривать определенные переменные в контракте, но не менять их. Присвой ей модификатор `view` (просмотр).
2. Эта функция будет просматривать определенные переменные в контракте, но не менять их. Присвой ей модификатор `view` (просмотр).

3. Тело функции по прежнему остается пустым, заполним его позже.
3. Тело функции по прежнему остается пустым, заполним его позже.
Loading