Удобная штука для тех, кто использует для разработки TypeScript. Typechain умеет генерировать типы для контрактов Solidity и легко интегрируется с Hardhat и Ethers. https://github.com/dethcrypto/TypeChain/
GitHub
GitHub - dethcrypto/TypeChain: 🔌 TypeScript bindings for Ethereum smart contracts
🔌 TypeScript bindings for Ethereum smart contracts - dethcrypto/TypeChain
👍3🔥3
По многочисленным просьбам трудящихся, следующее видео будет про Ruby. Да я и сам немного соскучился.
👍35🥰5😢2❤1
Ну а пока ещё немного Solidity. Сегодня поступил резонный и не вполне очевидный вопрос. Есть код:
Почему в этом случае первый вызов функции
вызовы стоят одинаково? Я и раньше замечал такую вещь, причём в разных средах. Ответ, на самом деле, очень простой: эта логика зашита прямо в EVM. Читаем документацию по опкодам:
* G(sset) — 20000 Paid for an SSTORE operation when the storage value is set to non-zero from zero
* G(sreset) — 2900 Paid for an SSTORE operation when the storage value’s zeroness remains unchanged or
is set to zero.
То есть переводя с русского на человеческий:
* Мы платим 20к газа, если сохраняем в переменную состояния новое НЕ нулевое значение, но только в том случае, если эта переменная хранила до этого ноль
* Но мы платим всего лишь 2900 газа, если в не-нулевую переменную мы сохраняем что-то ещё (или она была нулевой и осталась нулевой)
Отака история, малята.
contract Adder {
uint public a;
function add() public {
for (uint i; i < 100; i++) {
a += i;
}
}
}Почему в этом случае первый вызов функции
add стоит сильно больше газа (на 20к больше), чем последующие? И почему вот с таким кодом:contract Adder {
uint public a = 1; // a любой, но НЕ нулевой
function add() public {
for (uint i; i < 100; i++) {
a += i;
}
}
}вызовы стоят одинаково? Я и раньше замечал такую вещь, причём в разных средах. Ответ, на самом деле, очень простой: эта логика зашита прямо в EVM. Читаем документацию по опкодам:
* G(sset) — 20000 Paid for an SSTORE operation when the storage value is set to non-zero from zero
* G(sreset) — 2900 Paid for an SSTORE operation when the storage value’s zeroness remains unchanged or
is set to zero.
То есть переводя с русского на человеческий:
* Мы платим 20к газа, если сохраняем в переменную состояния новое НЕ нулевое значение, но только в том случае, если эта переменная хранила до этого ноль
* Но мы платим всего лишь 2900 газа, если в не-нулевую переменную мы сохраняем что-то ещё (или она была нулевой и осталась нулевой)
Отака история, малята.
❤20👍1
Друзья, в следующий четверг в 19:00 UTC+3 предлагаю устроить ещё один стрим и порешать некоторые задачки с ресурса Ethernaut, таким образом закрепив полученные знания. Ну, и просто можно будет пообщаться. 😄 https://www.youtube.com/watch?v=7rDVb91TnRc
YouTube
СТРИМ! Solidity и Ethereum, урок #18 | Решение задач Ethernaut
ХОЧЕШЬ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?! Мои друзья из MCS предлагают скидку на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами: вы действительно узнаете…
🔥23👍7❤1
В этом уроке мы поговорим о test doubles: так называемых "заглушках", которые позволяют вместо реальных объектов использовать "дублёров". Это очень удобно в тех случаях, когда необходимо ввести изолирование и тестировать не всю систему целиком, а конкретную часть. Узнаем, что такое mocks, stubs и spies и как их создавать. https://www.youtube.com/watch?v=4JyOmdi-hNs
YouTube
RSpec 3, урок #4 | Test doubles, mocks, stubs, spies
В этом уроке мы поговорим о test doubles: так называемых "заглушках", которые позволяют вместо реальных объектов использовать "дублёров". Это очень удобно в тех случаях, когда необходимо ввести изолирование и тестировать не всю систему целиком, а конкретную…
🔥29❤3
Перебирал старые посты и нашёл некую зарисовку-рассуждение (дела минувших дней, конечно, но всё же) http://bodrovis.tech/en/categories/prochee/posts/byt-ravnodushnym-pomoch-ili
Ilya Krukowski
Быть равнодушным: помочь или..? - by Ilya Krukowski
🤔3👍2
Биржа для разработчиков Rails с открытым исходным кодом https://railsdevs.com/
Railsdevs
The reverse job board for Ruby on Rails developers · RailsDevs
RailsDevs empowers independent developers available for their next gig. Stop scouring job boards and sit back as companies reach out to you first.
🔥8
Гугловский сервис для "разогрева" перед интервью - актуально в случаях, если собеседование на английском. https://grow.google/certificates/interview-warmup/
👍7
Мой товарищ написал статейку про GraphQL и mutations на Ruby - коротко, но по делу https://ryanbigg.com/2022/05/ruby-graphql-mutations-with-union-types
Ryan Bigg
Using Union Types with GraphQL Mutations in Ruby
🔥4
Напоминаю, что сегодня вечером у нас стрим https://www.youtube.com/watch?v=7rDVb91TnRc
YouTube
СТРИМ! Solidity и Ethereum, урок #18 | Решение задач Ethernaut
ХОЧЕШЬ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?! Мои друзья из MCS предлагают скидку на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами: вы действительно узнаете…
👍9
Друзья, всем огромное спасибо за участие в стриме, получилось очень продуктивно. Запись уже доступна на канале https://www.youtube.com/watch?v=7rDVb91TnRc
YouTube
СТРИМ! Solidity и Ethereum, урок #18 | Решение задач Ethernaut
ХОЧЕШЬ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?! Мои друзья из MCS предлагают скидку на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами: вы действительно узнаете…
❤25
Немного музыки на сегодня https://www.youtube.com/watch?v=SXuh6enDeYE
YouTube
Burzum Ambient
0:00 - Autumn Leaves
4:48 - Die Liebe Nerþus'
7:05 - Den onde kysten
9:24 - Emptiness
22:36 - Der Tod Wuotans
29:21 - Channeling The Power Of Souls Into A New God
32:51 - Han som reiste
37:41 - Sôlbjörg
41:40 - Dungeons Of Darkness
46:33 - Tuistos Herz
52:50…
4:48 - Die Liebe Nerþus'
7:05 - Den onde kysten
9:24 - Emptiness
22:36 - Der Tod Wuotans
29:21 - Channeling The Power Of Souls Into A New God
32:51 - Han som reiste
37:41 - Sôlbjörg
41:40 - Dungeons Of Darkness
46:33 - Tuistos Herz
52:50…
❤3🔥2
По мотивам "this person does not exist", ресурс, который показывает несуществующие блюда с названиями, сгенерированными нейросетью https://thissnackdoesnotexist.com/
👍3
Overengineering, доведённый до абсурда: библиотека, которая говорит, равняется ли число 13. https://github.com/jezen/is-thirteen Что интересно, у неё в списке зависимостей есть noop3 - https://github.com/sindresorhus/noop3#readme библиотека, которая ничего не делает
GitHub
GitHub - jezen/is-thirteen: Check if a number is equal to 13.
Check if a number is equal to 13. Contribute to jezen/is-thirteen development by creating an account on GitHub.
😁9👏1
Странное стоковое фото https://twitter.com/darkstockphotos/status/1364550361260974082/photo/1 В компе, кстати, ещё есть вход PS/2 😄
Twitter
Dark Stock Photos
https://t.co/WFXuXBgkN2
🤔4
Немного музыки на сегодня. Спокойной ночи https://www.youtube.com/watch?v=0EBTn_3DBYo
YouTube
RADIOACTIVITY - KRAFTWERK - HD Live
RADIOACTIVITY - KRAFTWERK - HD Live
http://www.agoravox.tv/culture-loisirs/culture/article/stop-radioactivity-valse-triste-30368 : " Radioactivity & Valse Triste (Kraftwerk - Sibelius) "
http://www.agoravox.tv/actualites/environnement/article/into-eternity…
http://www.agoravox.tv/culture-loisirs/culture/article/stop-radioactivity-valse-triste-30368 : " Radioactivity & Valse Triste (Kraftwerk - Sibelius) "
http://www.agoravox.tv/actualites/environnement/article/into-eternity…