Задачи Capture The Ethers. Lotteries
На досуге я решил пройти CTE, пока разбираю более сложный материал. Буду также делать мини разборы, но без кода. Может совсем новички в Solidity захотят попробовать написать свой код, с небольшой подсказкой направления.
Задача 1
Ответ и так указан в переменной.
Задача 2
uint8 лежит в определенной области чисел (2 ** 8). Нужно перебрать все возможный решения брутфорсом. По сути, одна функция в js файле.
Задача 3
Вытаскиваем значение из нулевого слота памяти.
Задача 4
Нам нужно написать другой контракт, где в функции передать ответ в guess() с точно таким же вычислением answer.
Возможно, эту задачу можно пропустить, так как переделывание ее для 0.8 компилятора может занять у вас время.
Задача 5
Одна из самых глупых задач, которые мне приходилось решать. И не потому что решение сложное, а потому что логика странная. Вам нужно написать контракт и потом тупо ждать, когда ответ совпадет с догадкой.
В общем, нужно написать свой контракт, где передавать в lockInGuess() свой вариант ответа, а также еще одну функцию для атаки, которая будет вызвать settle() и делать проверку на isComplete(), чтобы в случае неудачи Эфир не отсылался и транзакция откатывалась. И потом просто спамить атакой, пока ответ и догадка не совпадут. Глупая задача...
Задача 6
Еще одна задача на ожидание... Вся суть здесь заключается в знании, что возвращает block.blockhash(). Нам нужно установить в lockInGuess() значение из нулей и подождать пока 256 блоков будут созданы.
Заметка от меня
Когда я начинал решать эти задачи, то думал, что они будут немного современнее... Большинство использует 0.4 версию языка, что очень устарело и больше не актуально для 0.8. Даже не знаю, стоит ли решать их дальше...
#capture #cte
Post #472
199
- 👍 1