Безопасность ICO контрактов весна 2018 — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
(Лекции)
 
(не показано 18 промежуточных версий этого же участника)
Строка 3: Строка 3:
 
Преподаватель: Половьян Александр Игоревич ('''a.polovjan@gmail.com''')
 
Преподаватель: Половьян Александр Игоревич ('''a.polovjan@gmail.com''')
  
Есть чат в Телеграм для общения (спрашивайте ссылку у коллег), называется "АУ: blockchain (весна 2018)".
+
Есть чат в Телеграм для общения и оповещений (спрашивайте ссылку у коллег), называется "АУ: blockchain (весна 2018)".
  
 
Предполагаемая отчётность: зачёт, сложные домашки.
 
Предполагаемая отчётность: зачёт, сложные домашки.
Строка 21: Строка 21:
 
|16.03.2018
 
|16.03.2018
 
|[[Медиа:ico180316.pdf|ico180316.pdf]]
 
|[[Медиа:ico180316.pdf|ico180316.pdf]]
 +
|
 +
|-
 +
|3
 +
|23.03.2018
 +
|[[Медиа:ico180323.pdf|ico180323.pdf]]
 +
|
 +
|-
 +
|4
 +
|30.03.2018
 +
|[[Медиа:ico180330.pdf|ico180330.pdf]]
 +
|
 +
|-
 +
|5
 +
|13.04.2018
 +
|[[Медиа:ico180413.pdf|ico180413.pdf]]
 +
|
 +
|-
 +
|6
 +
|20.04.2018
 +
|[[Медиа:ico180420.pdf|ico180420.pdf]]
 +
|
 +
|-
 +
|7
 +
|27.04.2018
 +
|[[Медиа:ico180427.pdf|ico180427.pdf]]
 
|
 
|
 
|}
 
|}
 +
 +
=== Полезные ссылки ===
 +
 +
[https://ethereum.github.io/yellowpaper/paper.pdf Yellow Paper] (более детальный), [https://github.com/ethereum/wiki/wiki/White-Paper White Paper] (более общий).
  
 
== Практики ==
 
== Практики ==
 +
 +
=== Результаты ===
 +
 +
[https://docs.google.com/spreadsheets/d/1rfMaKDy_X3ZoyqiD7ZOIFzakf0lwKZh5lccJYz7ghvo/edit#gid=0 Табличка с результатами]
 +
 +
Для зачёта требуется сдать 75% домашек с кодом (т.е. хотя бы 3 из 4).
 +
 +
=== Домашнее задание от 02.03.2018 ===
 +
 +
Находится в слайдах первой лекции:
 +
 +
# Решить, как общаемся вне очных занятий (ответ - чат в Telegram)
 +
# Приватная сеть ([https://ethereum.stackexchange.com/a/3961 как преаллоцировать средства], [https://medium.com/mercuryprotocol/how-to-create-your-own-private-ethereum-blockchain-dad6af82fc9f описание genesis])
 +
## Развернуть приватную ноду Ethereum
 +
## Добавить вторую ноду к этой приватной сети
 +
# Подключить к mainnet'у
 +
# Опционально: запустить сеть на весь курс (есть одна [https://gist.github.com/LDVSOFT/9809fbdaaa7ed8a9e8334ddb6074ac94 от Димы Лапшина])
 +
 +
=== Домашнее задание от 16.03.2018 (№1) ===
 +
 +
Написать смарт-контракт для записи шахматной партии в блокчейн. 2 участника, ходят по очереди, каждый публикует свой ход (текстовое представление). Смарт-контракт должен предоставлять возможность получить весь ход партии для сторонних наблюдателей. Не требуется проверять корректность ходов - считаем, что если игрок походил неверно, то он автоматически проиграл (а это разбирается вне блокчейна).
 +
 +
[http://remix.ethereum.org/ Онлайн-редактор]
 +
 +
[http://solidity.readthedocs.io/en/v0.4.21/solidity-in-depth.html Описание языка Solidity]
 +
 +
=== Домашнее задание от 23.03.2018 (№2) ===
 +
 +
# Написать смарт-контракт для связи двух смарт-контрактов SocialAccount с лекции
 +
# Добавить ограничить вызовы методов для участников (где применимо)
 +
# Валидировать все аргументы функций (где применимо)
 +
# Добавить подтверждение социальной связи вторым участником
 +
# В смарт-контракт SocialAccount реализовать метод AddFriend который будет добавлять друзей при помощи  смарт-контракта SocialConnection
 +
# Добавить Event’ы. Про ивенты можно читать тут: http://solidity.readthedocs.io/en/v0.4.21/contracts.html#events
 +
 +
=== Домашнее задание от 30.03.2018 (№3) ===
 +
 +
Добавить возможность хранения ETH в SocialAccount. Реализовать методы:
 +
* <code>deposit</code> — зачислить eth на счет смарт-контракта
 +
* <code>withdraw</code> — перевести часть средств (или все) со счета смарт-контракта на счет владельца
 +
* <code>sendToFriend</code> — перевести на счет друга (другой экземпляр SocialAccount)
 +
 +
=== Домашнее задание от 20.04.2018 (№4) ===
 +
 +
Реализовать свой простой токен, соответствующий [https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md ERC-20]

Текущая версия на 14:01, 29 апреля 2018

Лекции

Преподаватель: Половьян Александр Игоревич (a.polovjan@gmail.com)

Есть чат в Телеграм для общения и оповещений (спрашивайте ссылку у коллег), называется "АУ: blockchain (весна 2018)".

Предполагаемая отчётность: зачёт, сложные домашки.

№ занятия Дата Лекция Комментарии
1 02.03.2018 ico180302.pdf
2 16.03.2018 ico180316.pdf
3 23.03.2018 ico180323.pdf
4 30.03.2018 ico180330.pdf
5 13.04.2018 ico180413.pdf
6 20.04.2018 ico180420.pdf
7 27.04.2018 ico180427.pdf

Полезные ссылки

Yellow Paper (более детальный), White Paper (более общий).

Практики

Результаты

Табличка с результатами

Для зачёта требуется сдать 75% домашек с кодом (т.е. хотя бы 3 из 4).

Домашнее задание от 02.03.2018

Находится в слайдах первой лекции:

  1. Решить, как общаемся вне очных занятий (ответ - чат в Telegram)
  2. Приватная сеть (как преаллоцировать средства, описание genesis)
    1. Развернуть приватную ноду Ethereum
    2. Добавить вторую ноду к этой приватной сети
  3. Подключить к mainnet'у
  4. Опционально: запустить сеть на весь курс (есть одна от Димы Лапшина)

Домашнее задание от 16.03.2018 (№1)

Написать смарт-контракт для записи шахматной партии в блокчейн. 2 участника, ходят по очереди, каждый публикует свой ход (текстовое представление). Смарт-контракт должен предоставлять возможность получить весь ход партии для сторонних наблюдателей. Не требуется проверять корректность ходов - считаем, что если игрок походил неверно, то он автоматически проиграл (а это разбирается вне блокчейна).

Онлайн-редактор

Описание языка Solidity

Домашнее задание от 23.03.2018 (№2)

  1. Написать смарт-контракт для связи двух смарт-контрактов SocialAccount с лекции
  2. Добавить ограничить вызовы методов для участников (где применимо)
  3. Валидировать все аргументы функций (где применимо)
  4. Добавить подтверждение социальной связи вторым участником
  5. В смарт-контракт SocialAccount реализовать метод AddFriend который будет добавлять друзей при помощи смарт-контракта SocialConnection
  6. Добавить Event’ы. Про ивенты можно читать тут: http://solidity.readthedocs.io/en/v0.4.21/contracts.html#events

Домашнее задание от 30.03.2018 (№3)

Добавить возможность хранения ETH в SocialAccount. Реализовать методы:

  • deposit — зачислить eth на счет смарт-контракта
  • withdraw — перевести часть средств (или все) со счета смарт-контракта на счет владельца
  • sendToFriend — перевести на счет друга (другой экземпляр SocialAccount)

Домашнее задание от 20.04.2018 (№4)

Реализовать свой простой токен, соответствующий ERC-20