Skip to content

Commit b6df735

Browse files
committed
fix: jun-3 grammatical errors
1 parent 9927308 commit b6df735

File tree

4 files changed

+77
-115
lines changed

4 files changed

+77
-115
lines changed

solidity/README.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,4 @@
22
1. **Junior:**
33
- [junior-1](./junior-1/README.md)
44
- [junior-2](./junior-2/README.md)
5-
- [junior-3](./junior-3/README.md)
6-
7-
2. **Middle**
8-
- [middle-1](./middle-1/README.md)
5+
- [junior-3](./junior-3/README.md)

solidity/junior-3/dao/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,17 @@
1515
- Что такое DAO governance?
1616
- Чем отличается DAO от DAO governance?
1717
- Чем отличается демократическая структура управления от меритократической?
18-
- Объясни работу следующих моделей систем голосования: "голосование токенами", "квадратичное голосование", "футархия", "жидкая демократия", "голосование на основе репутации"
18+
- Объясни работу следующих моделей систем голосования: "голосование токенами", "квадратичное голосование", "футархия", "жидкая демократия", "голосование на основе репутации".
1919
- Что такое делегирование в рамках системы голосования? Почему делегирование важный механизм? Как делегирование помогает сделать процесс голосования эффективнее?
2020
- Что такое rage-quit?
21-
- Для чего используется отложенное исполнение принятого решения после голосования (механизм Timelock)?
21+
- Для чего используется отложенное исполнение принятого решения после голосования (механизм TimeLock)?
2222
5. Назови несколько сервисов (конструкторов DAO) для организации DAO?
2323
- В чем особенность каждого из них?
2424
6. Смарт-контракты для DAO
2525
- Как устроено DAO Compound V2?
2626
- Разбери и объясни, показывая код, что делает контракт Compound Governance V2 [GovernorAlpha.sol](https://github.com/compound-finance/compound-protocol/blob/master/contracts/Governance/GovernorAlpha.sol)?
2727
- Разбери и объясни, показывая код, как работают [смарт-контракты](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/v5.0.0/contracts/governance) для governance библиотеки OpenZeppelin? Как работают следующие контракты: Governor.sol, GovernorCountingSimple.sol, GovernorSettings.sol, GovernorVotes.sol, GovernorVotesQuorumFraction.sol, Votes.sol?
28-
- Какие типы токенов могут быт токеном голосования? Как из обычного токена сделать токен голосования?
28+
- Какие типы токенов могут быть токеном голосования? Как из обычного токена сделать токен голосования?
2929

3030
## Links
3131

solidity/junior-3/meta-transactions/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
3. Какая основная идея стандарта ERC-2771?
66
- Какая задача отводится контракту **Forwarder**?
77
- Для чего необходимо использовать ```_msgSender()``` вместо ```msg.sender```?
8-
4. Gas Station Network - это пример проекта с открытым исходным кодом, который помогает реализовать метатранзакции. Можешь рассказать, как он устроен, как работает, его верхнеуровневую архитектуру?
8+
4. Gas Station Network - это пример проекта с открытым исходным кодом, который помогает реализовать метатранзакции. Можешь рассказать, как он устроен, как работает, как устроена его верхнеуровневая архитектура?
99
- Для чего необходимо реализовать контракт ```Paymaster```?
1010
- Можно ли использовать [контракты из библиотеки OpenZeppelin](https://docs.openzeppelin.com/contracts/4.x/api/metatx) для организации метатранзакций?
1111
- Какие еще есть сервисы, которые можно использовать для организации метатранзакций?

solidity/junior-3/solidity/README.md

Lines changed: 72 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
1. Что такое opcodes?
66
- Что означает цепочка ```Solidity → Байт-код → Opcodes```?
77
- Для чего необходимо базовое понимание opcodes?
8-
2. Известно, что opcodes условно делятся на несколько групп. Твоя задача на каждую группу привести в пример несколько opcodes и обозначить предназначение всей группы.
8+
2. Известно, что opcodes условно делятся на несколько групп. Твоя задача, на каждую группу, привести в пример несколько opcodes и обозначить предназначение всей группы.
99
- Управление стеком.
1010
- Арифметика
1111
- Операции среды
@@ -17,7 +17,7 @@
1717
- В чем разница между базовой стоимостью выполнения opcode и динамической?
1818
- Какой самый дорогой opcode? Сколько газа он требует?
1919
4. Что делает следующий байт-код? Какой будет результат выполнения?
20-
> 6002600404600201
20+
> 6002600404600201
2121
2222
- [Evm opcodes](https://www.evm.codes/?fork=shanghai)
2323
- [The Ethereum Virtual Machine — How does it work?](https://medium.com/mycrypto/the-ethereum-virtual-machine-how-does-it-work-9abac2b7c9e)
@@ -36,133 +36,98 @@
3636
10. Как работают арифметический, логический и циклический сдвиги? В чем отличия?
3737
11. Где используются битовые операции и для чего?
3838
12. Что происходит в этом коде? Как можно сделать то же самое по-другому?
39-
```js
40-
function bitOperation(uint8 number, uint8 index) external pure returns (uint256) {
41-
return number & ~(1 << index);
42-
}
43-
```
44-
45-
- [Двоичные числа](https://asm.kcup.tusur.ru/Library/chapter%201/1-1.html)
46-
- [Как два байта переслать](https://pikabu.ru/story/kak_dva_bayta_pereslat_7070913)
47-
- [Прямой, обратный и дополнительный код](https://microkontroller.ru/programmirovanie-mikrokontrollerov-avr/pryamoy-obratnyiy-dopolnitelnyiy-kod-dvoichnogo-chisla/)
48-
- [Видео: как работают отрицательные числа](https://www.youtube.com/watch?v=BIYiuy8WWiU)
49-
- [Bitwise operation](https://en.wikipedia.org/wiki/Bitwise_operation)
50-
- [Видео: как работать с битами](https://www.youtube.com/watch?v=qewavPO6jcA)
51-
- [Побитовые операции](https://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%B1%D0%B8%D1%82%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8)
39+
```js
40+
function bitOperation(uint8 number, uint8 index) external pure returns (uint256) {
41+
return number & ~(1 << index);
42+
}
43+
```
44+
45+
- [Двоичные числа](https://asm.kcup.tusur.ru/Library/chapter%201/1-1.html)
46+
- [Как два байта переслать](https://pikabu.ru/story/kak_dva_bayta_pereslat_7070913)
47+
- [Прямой, обратный и дополнительный код](https://microkontroller.ru/programmirovanie-mikrokontrollerov-avr/pryamoy-obratnyiy-dopolnitelnyiy-kod-dvoichnogo-chisla/)
48+
- [Видео: как работают отрицательные числа](https://www.youtube.com/watch?v=BIYiuy8WWiU)
49+
- [Bitwise operation](https://en.wikipedia.org/wiki/Bitwise_operation)
50+
- [Видео: как работать с битами](https://www.youtube.com/watch?v=qewavPO6jcA)
51+
- [Побитовые операции](https://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%B1%D0%B8%D1%82%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8)
5252

5353
## Yul
5454

5555
1. Что такое Yul? Как и для чего он используется?
56-
2. Как работает область видимости переменных в inline assembly вставках? Рассказать как будет работать код на примере ниже .
57-
58-
```js
59-
assembly {
60-
let x := 3
56+
2. Как работает область видимости переменных в **inline assembly** вставках? Рассказать как будет работать код на примере ниже.
57+
```js
58+
assembly {
59+
let x := 3
6160
62-
{
63-
let y := x
64-
}
61+
{
62+
let y := x
63+
}
6564
66-
{
67-
let z := y
65+
{
66+
let z := y
67+
}
6868
}
69-
}
70-
```
69+
```
7170

7271
3. Какие есть типы данных в Yul, как объявляются переменные с этими типами?
7372
4. Какие литералы допустимо использовать в коде Yul?
7473
5. Рассказать про инструкции в Yul, в какой последовательности будет выполняться код ниже? Чему будет равен `x` если `a` = 3, `b` = 6?
75-
76-
```js
77-
let x := div(mul(a, b), add(a, b))
78-
```
74+
```js
75+
let x := div(mul(a, b), add(a, b))
76+
```
7977

8078
6. С помощью каких операторов выстраивается поток управления в Yul?
8179
7. Как устроен тип памяти storage, какие два вида переменных существуют в storage?
82-
83-
7.1 Как работает упаковка слотов в storage? Как записывать и извлекать значения из упакованных слотов?
84-
85-
7.2 Как хранятся структуры в storage?
86-
87-
7.3 Как хранятся массивы с фиксированной длиной? Где хранится длина массива?
88-
89-
7.4 Как хранятся динамические массивы? Где хранится длина и как получить доступ к индексу массива? Как получить доступ к динамическому массиву вложенному в динамический массив?
90-
91-
7.5 Как хранятся маппинги? Как получить доступ к элементу маппинга? Как получит доступ к маппингу вложенному в маппинг? Как получить доступ к массиву вложенному в маппинг?
92-
93-
7.6 Как хранятся массива байтов и строки? Какая есть особенность?
94-
95-
7.7 Какие есть инструкции для работы со storage в Yul?
96-
80+
- Как работает упаковка слотов в storage? Как записывать и извлекать значения из упакованных слотов?
81+
- Как хранятся структуры в storage?
82+
- Как хранятся массивы с фиксированной длиной? Где хранится длина массива?
83+
- Как хранятся динамические массивы? Где хранится длина и как получить доступ к индексу массива? Как получить доступ к динамическому массиву вложенному в динамический массив?
84+
- Как хранятся mappings? Как получить доступ к элементу mapping? Как получит доступ к mapping вложенному в mapping? Как получить доступ к массиву вложенному в mapping?
85+
- Как хранятся массив байтов и строки? Какая есть особенность?
86+
- Какие есть инструкции для работы со storage в Yul?
9787
8. Как устроен тип памяти memory? Для чего используется тип памяти memory?
98-
99-
8.1 Когда переменные инициализируются в memory и когда очищаются?
100-
101-
8.2 Какая есть особенность при работе с memory? Можно ли записывать что-то в первые 128 байт? Как они используются Solidity?
102-
103-
8.3 Как получить указатель на свободное место в memory?
104-
105-
8.4 Очищается ли memory автоматически при переключении с кода solidity на inline assembly и наоборот?
106-
107-
8.5 Какие есть инструкции для работы с memory в Yul?
108-
109-
8.6 Как хранятся структуры в memory?
110-
111-
8.7 Как хранятся массивы фиксированной длины и динамические массивы?
112-
113-
8.8 Как хранятся массивы байтов и строки?
114-
115-
8.9 Как работают инструкции `revert` и `return`?
116-
117-
8.10 Как работает `keccak256` в memory?
118-
88+
- Когда переменные инициализируются в memory и когда очищаются?
89+
- Какая есть особенность при работе с memory? Можно ли записывать что-то в первые 128 байт? Как они используются Solidity?
90+
- Как получить указатель на свободное место в memory?
91+
- Очищается ли memory автоматически при переключении с кода solidity на inline assembly и наоборот?
92+
- Какие есть инструкции для работы с memory в Yul?
93+
- Как хранятся структуры в memory?
94+
- Как хранятся массивы фиксированной длины и динамические массивы?
95+
- Как хранятся массивы байтов и строки?
96+
- Как работают инструкции `revert` и `return`?
97+
- Как работает `keccak256` в memory?
11998
9. Как устроен тип памяти calldata?
120-
121-
9.1 Для чего используется тип данных calldata?
122-
123-
9.2 Почему работать с calldata дешевле по газу чем с memory?
124-
125-
9.3 Какие инструкции в Yul есть для работы с типом данных calldata?
126-
127-
9.4 Как в calldata хранятся массивы?
128-
129-
9.5 Как в calldata хрянятся массивы байтов и строки?
130-
131-
9.6 Как сделать срез данных (array slice), для чего это нужно?
132-
99+
- Для чего используется тип данных calldata?
100+
- Почему работать с calldata дешевле по газу чем с memory?
101+
- Какие инструкции в Yul есть для работы с типом данных calldata?
102+
- Как в calldata хранятся массивы?
103+
- Как в calldata хранятся массивы байтов и строки?
104+
- Как сделать срез данных (array slice), для чего это нужно?
133105
10. Как в Yul выполняется вызов смарт-контрактов?
134-
135-
10.1 Какие инструкции используются для вызова смарт-контрактов?
136-
137-
10.2 Как работает инструкция `call(g, a, v, in, insize, out, outsize)`?
138-
139-
10.3 Как обрабатываются возвращаемые данные?
140-
106+
- Какие инструкции используются для вызова смарт-контрактов?
107+
- Как работает инструкция `call(g, a, v, in, insize, out, outsize)`?
108+
- Как обрабатываются возвращаемые данные?
141109
11. Как работать с событиями в Yul?
110+
- Рассказать что происходит в функции `foo`:
111+
```js
112+
contract EmitEvent {
113+
event SomeLog(uint256 indexed a, uint256 indexed b, bool c);
142114
143-
11.1 Рассказать что происходит в функции `foo`:
144-
145-
```js
146-
contract EmitEvent {
147-
event SomeLog(uint256 indexed a, uint256 indexed b, bool c);
148-
149-
function foo() external {
150-
assembly {
151-
let signature := 0x39cf0823186c1f89c8975545aebaa16813bfc9511610e72d8cff59da81b23c72
115+
function foo() external {
116+
assembly {
117+
let signature := 0x39cf0823186c1f89c8975545aebaa16813bfc9511610e72d8cff59da81b23c72
152118
153-
let ptr := mload(0x40)
154-
mstore(ptr, 1)
119+
let ptr := mload(0x40)
120+
mstore(ptr, 1)
155121
156-
log3(0x80, 0x20, signature, 2, 3)
122+
log3(0x80, 0x20, signature, 2, 3)
123+
}
157124
}
158125
}
159-
}
160-
```
161-
126+
```
162127
12. Можно ли писать смарт-контракты на чистом Yul?
163128

164-
- [Docs: Yul](https://docs.soliditylang.org/en/latest/yul.html)
165-
- [Docs: Layout of memory](https://docs.soliditylang.org/en/latest/internals/layout_in_memory.html)
166-
- [Playlist: Mastering Solidity Assembly (YUL)](https://youtube.com/playlist?list=PL5hld-skrdFrxGUmmEbG1LBvYVyTE9M62&si=jwXH_rtSvoNfrDPg)
167-
- [Article: Inline Assembly in Solidity: A Practical Starter’s Guide](https://medium.com/lumos-labs/inline-assembly-in-solidity-34d3ba2cfa7a)
168-
- [Video: The Dark Arts of Yul](https://www.youtube.com/watch?v=ew3pfnb2_V8)
129+
- [Docs: Yul](https://docs.soliditylang.org/en/latest/yul.html)
130+
- [Docs: Layout of memory](https://docs.soliditylang.org/en/latest/internals/layout_in_memory.html)
131+
- [Playlist: Mastering Solidity Assembly (YUL)](https://youtube.com/playlist?list=PL5hld-skrdFrxGUmmEbG1LBvYVyTE9M62&si=jwXH_rtSvoNfrDPg)
132+
- [Article: Inline Assembly in Solidity: A Practical Starter’s Guide](https://medium.com/lumos-labs/inline-assembly-in-solidity-34d3ba2cfa7a)
133+
- [Video: The Dark Arts of Yul](https://www.youtube.com/watch?v=ew3pfnb2_V8)

0 commit comments

Comments
 (0)