ERC-1404
Это дополнение к ERC-20-совместимым токенам, которое включает дополнительную функцию, позволяющую ограничивать передачу токенов. Этот стандарт был создан TokenSoft , поставщиком технологий для компаний, которые стремятся выпускать и управлять цифровыми ценными бумагами на блокчейне, соблюдая при этом нормативные требования.
#erc #erc1404
Это дополнение к ERC-20-совместимым токенам, которое включает дополнительную функцию, позволяющую ограничивать передачу токенов. Этот стандарт был создан TokenSoft , поставщиком технологий для компаний, которые стремятся выпускать и управлять цифровыми ценными бумагами на блокчейне, соблюдая при этом нормативные требования.
#erc #erc1404
👍1
ERC-1410
Он относится как к дифференцированному владению, так и к прозрачным ограничениям. Этот интерфейс поддерживает токены владельца для группировки в разделы, каждый из которых представлен идентифицирующим ключом и балансом.
Некоторые из этих разделов могут быть взаимозаменяемыми, в то время как другие не являются взаимозаменяемыми. Например, нефункционируемый раздел токенов может иметь определенные условия (например, период перехода, определенный для владельцев безопасности).
#erc #erc1410
Он относится как к дифференцированному владению, так и к прозрачным ограничениям. Этот интерфейс поддерживает токены владельца для группировки в разделы, каждый из которых представлен идентифицирующим ключом и балансом.
Некоторые из этих разделов могут быть взаимозаменяемыми, в то время как другие не являются взаимозаменяемыми. Например, нефункционируемый раздел токенов может иметь определенные условия (например, период перехода, определенный для владельцев безопасности).
#erc #erc1410
👍1
ERC-1594
Этот стандарт предоставляет интерфейс, который вводит проверки на потенциальное ограничение в цепочке, ввод данных вне цепочки для ограничений на передачу и семантику выдачи / погашения.
Внедрение данных относится к правилам, которые определены вне цепочки, которые могут применяться и обновляться администратором договора для определения набора применимых механизмов выдачи и погашения и потенциальных ограничений передачи между адресами.
#erc #erc1594
Этот стандарт предоставляет интерфейс, который вводит проверки на потенциальное ограничение в цепочке, ввод данных вне цепочки для ограничений на передачу и семантику выдачи / погашения.
Внедрение данных относится к правилам, которые определены вне цепочки, которые могут применяться и обновляться администратором договора для определения набора применимых механизмов выдачи и погашения и потенциальных ограничений передачи между адресами.
#erc #erc1594
👍1
ERC-3475
Стандарт токенов EIP-3475 принят Ethereum Foundation в качестве нового стандарта интерфейса для создания токенезированных облигаций— EIP-3475 позволяет кредиторам выпускать деривативы по непогашенным ссудам, формируя из них новые облигации с различными комбинациями параметров риска и прибыли.
Новый стандарт также позволяет распределять кредитные риски между поставщиками ликвидности — это является основным преимуществом для кредитора по сравнению с другими существующими DeFi-протоколами кредитования. Главным плюсом для заемщика станет то, что залоговое обеспечение не придется ликвидировать, если его стоимость опустится ниже установленного порога.
#erc #erc3475
Стандарт токенов EIP-3475 принят Ethereum Foundation в качестве нового стандарта интерфейса для создания токенезированных облигаций— EIP-3475 позволяет кредиторам выпускать деривативы по непогашенным ссудам, формируя из них новые облигации с различными комбинациями параметров риска и прибыли.
Новый стандарт также позволяет распределять кредитные риски между поставщиками ликвидности — это является основным преимуществом для кредитора по сравнению с другими существующими DeFi-протоколами кредитования. Главным плюсом для заемщика станет то, что залоговое обеспечение не придется ликвидировать, если его стоимость опустится ниже установленного порога.
#erc #erc3475
👍1
ERC-4626
В начале апреля 2022 года разработчики yEarn объявили о завершении работы над ERC-4626 и начале «Великой стандартизации хранилищ».
По их словам, построенное на базе нового стандарта хранилище может взаимодействовать с любыми токенами ERC-4626.
Как пояснили эксперты Huobi Research, ERC-4626 унифицирует следующие параметры:
- способы внесения пользовательских средств в хранилище, а также их вывода;
- функции расчета количества токенов доходности и базовых активов;
- происходящие при взаимодействии с хранилищами события, включая ввод и вывод средств;
- интерфейс для подтверждения адресов базовых активов.
ERC-4626 также экономит время на разработку, придает интеграции гибкость, повышает безопасность взаимодействия пользователей с приложениями и способствует инновациям.
#erc #erc4626
В начале апреля 2022 года разработчики yEarn объявили о завершении работы над ERC-4626 и начале «Великой стандартизации хранилищ».
По их словам, построенное на базе нового стандарта хранилище может взаимодействовать с любыми токенами ERC-4626.
Как пояснили эксперты Huobi Research, ERC-4626 унифицирует следующие параметры:
- способы внесения пользовательских средств в хранилище, а также их вывода;
- функции расчета количества токенов доходности и базовых активов;
- происходящие при взаимодействии с хранилищами события, включая ввод и вывод средств;
- интерфейс для подтверждения адресов базовых активов.
ERC-4626 также экономит время на разработку, придает интеграции гибкость, повышает безопасность взаимодействия пользователей с приложениями и способствует инновациям.
#erc #erc4626
👍1
ERC-4907
Он позволяет владельцу NFT разрешить другому лицу использовать его NFT в течение определенного периода времени. По истечении этого времени пользователь больше не имеет доступа к NFT. Видеоигры Play-to-earn (P2E) все еще являются относительно новым явлением как в криптовалюте, так и в игровом бизнесе.
#erc #erc4907
Он позволяет владельцу NFT разрешить другому лицу использовать его NFT в течение определенного периода времени. По истечении этого времени пользователь больше не имеет доступа к NFT. Видеоигры Play-to-earn (P2E) все еще являются относительно новым явлением как в криптовалюте, так и в игровом бизнесе.
#erc #erc4907
👍1
Популярные ошибки в Solidity
Нашел интересный пост с корявым переводом ошибок, которые могут появиться при проведении транзакций. Это точно не полный список, но теперь это будет постоянная рубрика на канале.
Если вы получили какую-то ошибку у себя в практике и решили ее, то поделитесь этим решением с другими участниками. А пока, вот небольшой список:
1. Error: VM Exception while processing transaction: out of gas
В Solidity нельзя настроить постоянное выполнение транзакций.
Транзакция может выполняться, пока не будет достигнут лимит газа. Как только это произойдет, транзакция выдаст ошибку и вернет "out of gas".
Чаще всего это происходит в циклах функций.
2. Error: VM Exception while processing transaction: invalid opcode
Смарт контракты порой используют assert() для выявления ошибок по выполнению определенных условий в функции. Но иногда они могут противоречить условиям самого контракта. Например,
function set(uint x) public {
assert(x == 0);
myVariable = x;
}
3. Error: VM Exception while processing transaction: revert (описание ошибки)
Обычно это происходит, когда условия модификатора не выполняются, например, модификатор onlyOwner, который может быть вызван только владельцем.
Как и с другими require(), если условие не выполнено, оно вернет "revert exception".
4. CompilerError: Stack too deep, try removing local variables.
Это зависит от сложности выражения внутри функции, где присутствует много (более 16) локальных переменных.
Решение:
-Удалите ненужные переменные;
- Разделите большие функции;
5. SyntaxError: Unexpected token in JSON at position 0
Ошибки с форматом данных json указывает на наличие проблемы при синтаксическом анализе файла .sol для создания файла .json.
Такого рода проблемы могут быть в Truffle.
6. Solidity error: Unexpected token h in JSON at position
Строку параметра необходимо передавать в двойных кавычках.
7. The transaction has been reverted to the initial state. Note: The called function should be payable if you send value and the value you send should be less than your current balance.
Одна из переменных или функций должа быть помечена как payable, чтобы была возможность перевода валюты или токенов.
8. Expected pragma, import directive or contract/interface/library definition...
Проверьте версию pragma в компиляторе и в контракте.
9. ParserError: Source file requires different compiler version (current compiler is 0.6.12+commit.27d51765.Windows.msvc) - note that nightly builds are
considered to be strictly less than the released version pragma solidity ^0.8.0;
И снова следите за версиями в компиляторе и контракте.
10. Cannot estimate gas; transaction may fail or may require manual gas limit.
Возможно, что функция потребует больше газа, чем может себе позволить. В этом случаем можно либо вручную указать количество газа, либо переписать функцию.
Иногда такие ошибки возникают при использовании сторонних сервисов, когда чужой контракт должен вызвать в нашем callback функции, и у нас нет средств оплатить этот вызов.
11. Undeclared identifier.
Вы пытаетесь использовать переменную, которая нигде ранее не появлялась. Проверьте ее на опечатку или регистр.
12. ParseError: Expected '(' but got identifier.
Проверьте закрыты ли все кавычки выше или в самой функции.
13. Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: " to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code.
Скорее всего забыли прописать лицензию в начале кода смарт контракта, типа "SPDX-License-Identifier: MIT".
14. Error: invalid arrayify value
Означает, что в массиве передаете на правильный тип данных.
Читайте ошибки! По опыту могу сказать, что, внимательно прочитав ошибку, можно понять, из-за чего она появилась. Даже если вы не знаете английского языка, то онлайн переводчики отлично смогут помочь вам с этим.
В будущем поиск ошибок на канале можно будет выполнить по хештегу #error
#error
Нашел интересный пост с корявым переводом ошибок, которые могут появиться при проведении транзакций. Это точно не полный список, но теперь это будет постоянная рубрика на канале.
Если вы получили какую-то ошибку у себя в практике и решили ее, то поделитесь этим решением с другими участниками. А пока, вот небольшой список:
1. Error: VM Exception while processing transaction: out of gas
В Solidity нельзя настроить постоянное выполнение транзакций.
Транзакция может выполняться, пока не будет достигнут лимит газа. Как только это произойдет, транзакция выдаст ошибку и вернет "out of gas".
Чаще всего это происходит в циклах функций.
2. Error: VM Exception while processing transaction: invalid opcode
Смарт контракты порой используют assert() для выявления ошибок по выполнению определенных условий в функции. Но иногда они могут противоречить условиям самого контракта. Например,
function set(uint x) public {
assert(x == 0);
myVariable = x;
}
3. Error: VM Exception while processing transaction: revert (описание ошибки)
Обычно это происходит, когда условия модификатора не выполняются, например, модификатор onlyOwner, который может быть вызван только владельцем.
Как и с другими require(), если условие не выполнено, оно вернет "revert exception".
4. CompilerError: Stack too deep, try removing local variables.
Это зависит от сложности выражения внутри функции, где присутствует много (более 16) локальных переменных.
Решение:
-Удалите ненужные переменные;
- Разделите большие функции;
5. SyntaxError: Unexpected token in JSON at position 0
Ошибки с форматом данных json указывает на наличие проблемы при синтаксическом анализе файла .sol для создания файла .json.
Такого рода проблемы могут быть в Truffle.
6. Solidity error: Unexpected token h in JSON at position
Строку параметра необходимо передавать в двойных кавычках.
7. The transaction has been reverted to the initial state. Note: The called function should be payable if you send value and the value you send should be less than your current balance.
Одна из переменных или функций должа быть помечена как payable, чтобы была возможность перевода валюты или токенов.
8. Expected pragma, import directive or contract/interface/library definition...
Проверьте версию pragma в компиляторе и в контракте.
9. ParserError: Source file requires different compiler version (current compiler is 0.6.12+commit.27d51765.Windows.msvc) - note that nightly builds are
considered to be strictly less than the released version pragma solidity ^0.8.0;
И снова следите за версиями в компиляторе и контракте.
10. Cannot estimate gas; transaction may fail or may require manual gas limit.
Возможно, что функция потребует больше газа, чем может себе позволить. В этом случаем можно либо вручную указать количество газа, либо переписать функцию.
Иногда такие ошибки возникают при использовании сторонних сервисов, когда чужой контракт должен вызвать в нашем callback функции, и у нас нет средств оплатить этот вызов.
11. Undeclared identifier.
Вы пытаетесь использовать переменную, которая нигде ранее не появлялась. Проверьте ее на опечатку или регистр.
12. ParseError: Expected '(' but got identifier.
Проверьте закрыты ли все кавычки выше или в самой функции.
13. Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: " to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code.
Скорее всего забыли прописать лицензию в начале кода смарт контракта, типа "SPDX-License-Identifier: MIT".
14. Error: invalid arrayify value
Означает, что в массиве передаете на правильный тип данных.
Читайте ошибки! По опыту могу сказать, что, внимательно прочитав ошибку, можно понять, из-за чего она появилась. Даже если вы не знаете английского языка, то онлайн переводчики отлично смогут помочь вам с этим.
В будущем поиск ошибок на канале можно будет выполнить по хештегу #error
#error
👍1
Заметка по работе с ошибками
Давно хотел написать небольшую заметку о работе с ошибками в программировании. Опять же из своего опыта.
Я состою в нескольких чатах, где пользователи активно делятся своими ошибками, дают и спрашивают совета, постят статьи и т.д.
И очень часто, складывается такое ощущение, что некоторым пользователям просто лень самим разбираться с возникающими ошибками в коде. Они делают скрин и постят в чат. Потом пишут, что не получилось и скрин новой ошибки и так до бесконечности.
Хочу дать вам пару советов, как лучше работать со своими ошибками в коде.
1. Самое первое - это прочитать ошибку. В 90% случаев вам будет понятно, в чем может быть проблема.
2. Погуглите ее. Так и пишите в поисковой строке: "Ошибка ..." и копируйте текст ошибки. Скорее всего в первых же выдачах она будет показана. Stackoverflow - наше все!
3. Если вы пошли в чат или на канал, то сначала также воспользуйтесь поиском. Велика вероятность, что у кого-то уже была такая же ошибка и сообщество помогло ее решить.
4. Если случилось невероятное, и вашей ошибки нет ни в гугле, ни в чатах, то опишите ошибку как можно подробнее! Не стоит делать скрин и спрашивать, что не так. Опишите язык программирования, который используете, покажите код или функцию, на каком этапе возникает и т.д.
Самое главное в работе с ошибками в программировании - это уметь гуглить и правильно составлять вопросы для поиска! Покопавшись несколько минут в документации вы не только сможете разобраться в данной ошибке, но и избежать ее в дальнейшем!
#error
Давно хотел написать небольшую заметку о работе с ошибками в программировании. Опять же из своего опыта.
Я состою в нескольких чатах, где пользователи активно делятся своими ошибками, дают и спрашивают совета, постят статьи и т.д.
И очень часто, складывается такое ощущение, что некоторым пользователям просто лень самим разбираться с возникающими ошибками в коде. Они делают скрин и постят в чат. Потом пишут, что не получилось и скрин новой ошибки и так до бесконечности.
Хочу дать вам пару советов, как лучше работать со своими ошибками в коде.
1. Самое первое - это прочитать ошибку. В 90% случаев вам будет понятно, в чем может быть проблема.
2. Погуглите ее. Так и пишите в поисковой строке: "Ошибка ..." и копируйте текст ошибки. Скорее всего в первых же выдачах она будет показана. Stackoverflow - наше все!
3. Если вы пошли в чат или на канал, то сначала также воспользуйтесь поиском. Велика вероятность, что у кого-то уже была такая же ошибка и сообщество помогло ее решить.
4. Если случилось невероятное, и вашей ошибки нет ни в гугле, ни в чатах, то опишите ошибку как можно подробнее! Не стоит делать скрин и спрашивать, что не так. Опишите язык программирования, который используете, покажите код или функцию, на каком этапе возникает и т.д.
Самое главное в работе с ошибками в программировании - это уметь гуглить и правильно составлять вопросы для поиска! Покопавшись несколько минут в документации вы не только сможете разобраться в данной ошибке, но и избежать ее в дальнейшем!
#error
👍1
Немного об xNFT
Недавно в одном из Телеграм каналов о криптовалюте проскальзывала новость о xNFT. Тогда я не обратил внимание на нее, но слово "xNFT" плотно засела у меня в голове. И вот я, наконец, добрался до него.
Поиск по слову "xNFT" мне мало, что дал. Какие-то протоколы, валюты и прочее, все это не то, что хотелось найти.
В итоге, это оказалось очень крутой штукой, хоть пока реализованной на языке Solana. Однако мне верится, что и для Ethereum скоро создадут нечто подобное.
Итак, сама новость:
"Компании FTX Ventures и Jump Crypto возглавили сбор средств в размере $20 млн для кошелька невзаимозаменяемых токенов (NFT) Coral на основе Solana. Среди других участников были отмечены Multicoin Capital, Anagram и K5 Global.
Стало известно, что денежные средства привлечены в рамках раунда стратегического финансирования. Собранный капитал пойдет на создание первого флагманского продукта Backpack, представляющего собой хранилище для исполняемых невзаимозаменяемых токенов (xNFT).
В случае с xNFT владелец имеет право выполнять токенизированный компьютерный код определенного типа. По сути юзер может инициировать работу приложений благодаря токену. Возможность запуска нескольких типов dApp на единой площадке может упростить адаптацию, что является глобальной проблемой криптоиндустрии, по словам создателей стартапа.
Backpack был запущен для закрытого бета-тестировании 26 сентября 2022 года. Около 10 крупнейших проектов на базе Solana уже разрабатывают продукты с использованием технологии Backpack xNFT, включая торговую площадку NFT Magic Eden, межсетевой мост Wormhole, протокол децентрализованных финансов (DeFi) Solend и фреймворк Anchor."
По сути скоро может появится Google Play или App Store в web3 и приложения распространяемые через них!
#backpack #xnft
Недавно в одном из Телеграм каналов о криптовалюте проскальзывала новость о xNFT. Тогда я не обратил внимание на нее, но слово "xNFT" плотно засела у меня в голове. И вот я, наконец, добрался до него.
Поиск по слову "xNFT" мне мало, что дал. Какие-то протоколы, валюты и прочее, все это не то, что хотелось найти.
В итоге, это оказалось очень крутой штукой, хоть пока реализованной на языке Solana. Однако мне верится, что и для Ethereum скоро создадут нечто подобное.
Итак, сама новость:
"Компании FTX Ventures и Jump Crypto возглавили сбор средств в размере $20 млн для кошелька невзаимозаменяемых токенов (NFT) Coral на основе Solana. Среди других участников были отмечены Multicoin Capital, Anagram и K5 Global.
Стало известно, что денежные средства привлечены в рамках раунда стратегического финансирования. Собранный капитал пойдет на создание первого флагманского продукта Backpack, представляющего собой хранилище для исполняемых невзаимозаменяемых токенов (xNFT).
В случае с xNFT владелец имеет право выполнять токенизированный компьютерный код определенного типа. По сути юзер может инициировать работу приложений благодаря токену. Возможность запуска нескольких типов dApp на единой площадке может упростить адаптацию, что является глобальной проблемой криптоиндустрии, по словам создателей стартапа.
Backpack был запущен для закрытого бета-тестировании 26 сентября 2022 года. Около 10 крупнейших проектов на базе Solana уже разрабатывают продукты с использованием технологии Backpack xNFT, включая торговую площадку NFT Magic Eden, межсетевой мост Wormhole, протокол децентрализованных финансов (DeFi) Solend и фреймворк Anchor."
По сути скоро может появится Google Play или App Store в web3 и приложения распространяемые через них!
#backpack #xnft
👍1
Что такое ETF?
Однажды в одном из уроков про chainlink я встретил аббревиатуру ETF. Я не знал, что это такое и полагал, что это как-то связано с блокчейном. Оказалось все проще.
Оставлю здесь, вдруг, кто еще не в курсе.
Exchange Traded Fund, или ETF, — это биржевой инвестиционный фонд, зарегистрированный вне пределов России, но акции которого можно приобрести на российском фондовом рынке.
#etf
Однажды в одном из уроков про chainlink я встретил аббревиатуру ETF. Я не знал, что это такое и полагал, что это как-то связано с блокчейном. Оказалось все проще.
Оставлю здесь, вдруг, кто еще не в курсе.
Exchange Traded Fund, или ETF, — это биржевой инвестиционный фонд, зарегистрированный вне пределов России, но акции которого можно приобрести на российском фондовом рынке.
#etf
Что такое flashloan?
Это понятие часто встречалась на каналах про биржевую торговлю, и мне было интересно, как это работает.
Мгновенные займы или флэш-кредиты (от англ. Flash Loans) — это функция в ряде популярных DeFi-протоколов, позволяющая брать в долг криптовалютные активы без залогового обеспечения с условием, что долг будет возвращен в том же блоке транзакций.
Это пока также теоретическая часть, поэтому вот прекрасное видео, детально поясняющее flashloan.
#flashloan
Это понятие часто встречалась на каналах про биржевую торговлю, и мне было интересно, как это работает.
Мгновенные займы или флэш-кредиты (от англ. Flash Loans) — это функция в ряде популярных DeFi-протоколов, позволяющая брать в долг криптовалютные активы без залогового обеспечения с условием, что долг будет возвращен в том же блоке транзакций.
Это пока также теоретическая часть, поэтому вот прекрасное видео, детально поясняющее flashloan.
#flashloan
YouTube
Объяснение функции мгновенных займов (Flash Loans) в Aave и dYdX
Finematics одна из лучших образовательных платформ, посвященная децентрализованным финансам (DeFi). Из этого видео вы узнаете о том, что же такое мгновенные займы. И как их можно использовать для займа криптовалюты на миллионы долларов без залога? Ответы…
Что такое ANKR?
Уфф, мне потребовалось некоторое время, что разобраться, чем же занимается этот сервис. Информации на русском языке о нем крайне мало, большинство статей связано с прогнозами их собственной одноименной криптовалюты. А это меня не особо волнует, как разработчика.
В зарубежном новостном мире информации намного больше, но объясняется она техническим языком, типа как "ANKR- это инфраструктурный провайдер для блокчейна"... А нафига он нужен конкретно, не объясняют.
В общем, как обычно, пишу о том, что понял сам простым языком.
ANKR создает децентрализованную сеть пользователей (узлов), которые обрабатывают информацию с различных блокчейнов, и которую могут использовать другие разработчики.
ANKR работает с Ethereum, Solana, Binance, Optimism и другими (более 30) различными блокчейнами. И вы, как разработчик, можете получить доступ к информации, хранящейся в этих сетях и использовать ее в какой-либо программе или смарт контракте.
Другими словами, вам не нужно искать варианты подключения к определенному блокчейну, а можно подключиться к ANKR и иметь доступ ко всем сетям единовременно.
Здесь также есть свои токены для оплаты услуг узлов, голосования в развитии компании или получения доступа к премиальным фичам без каких-либо ограничений.
Скорее всего, эта компания, как и Chainlink, станет одной из основополагающих для разработки приложений, игр и других программ в web3.
Чуть больше можно прочитать об ANKR в статье Binance по ссылке тут.
#ankr
Уфф, мне потребовалось некоторое время, что разобраться, чем же занимается этот сервис. Информации на русском языке о нем крайне мало, большинство статей связано с прогнозами их собственной одноименной криптовалюты. А это меня не особо волнует, как разработчика.
В зарубежном новостном мире информации намного больше, но объясняется она техническим языком, типа как "ANKR- это инфраструктурный провайдер для блокчейна"... А нафига он нужен конкретно, не объясняют.
В общем, как обычно, пишу о том, что понял сам простым языком.
ANKR создает децентрализованную сеть пользователей (узлов), которые обрабатывают информацию с различных блокчейнов, и которую могут использовать другие разработчики.
ANKR работает с Ethereum, Solana, Binance, Optimism и другими (более 30) различными блокчейнами. И вы, как разработчик, можете получить доступ к информации, хранящейся в этих сетях и использовать ее в какой-либо программе или смарт контракте.
Другими словами, вам не нужно искать варианты подключения к определенному блокчейну, а можно подключиться к ANKR и иметь доступ ко всем сетям единовременно.
Здесь также есть свои токены для оплаты услуг узлов, голосования в развитии компании или получения доступа к премиальным фичам без каких-либо ограничений.
Скорее всего, эта компания, как и Chainlink, станет одной из основополагающих для разработки приложений, игр и других программ в web3.
Чуть больше можно прочитать об ANKR в статье Binance по ссылке тут.
#ankr
👍2
Ретроспектива пройденного
На данный момент мы прошли еще один большой пласт обучения блокчейн разработке. Я собрал весь пройденный материал в удобный навигатор, чтобы было проще ориентироваться на канале.
Также напоминаю, что действует поиск по хештегам в постах. Так вы сможете найти примеры функций, типов данных или другую информацию о Solidity и блокчейн разработке.
Теоретическая часть
Что нужно для изучения Solidity. Часть 1
Что нужно для изучения Solidity. Часть 2
Что такое IPFS?
Что такое Uniswap?
Что такое Pancake (PancakeSwap)?
Оракулы и chainlink
Soulboud токены
Что такое flashloan?
Что такое ANKR?
Goerly faucets
Как получить тестовые Link токены
Практическая часть
Использование openzeppelin в своих проектах
Подключение openzeppelin
Начало работы с Git и GitHub
Кратко по подготовке папки и проекта к Git
Кратко о TheGraph
Начало работы с TheGraph. Серия из 3 постов
Chainlink
Курс на Chainlink
Chainlink Data Feeds. Серия из 7 постов
Chainlink VRF. Серия из 8 постов
Chainlink Connect to API. Серия из 7 постов
Chainlink Automation / Keeper. Серия из 4 постов
Chainlink NodeJS IPFS External Adapter
Дополнительно
Информация о стандартах ERC через #erc
Перевод bytes32 в string
Популярные ошибки в Solidity
Немного об xNFT
Более того, напоминаю, что вы всегда можете задавать вопросы в чатах:
Чат от канала - https://news.1rj.ru/str/+CqKZNgqZ640wNDdi
Чат от лектора - https://news.1rj.ru/str/joinchat/MxYT6-01eeA1NTYy
Далее мы будем рассматривать создание токенов, аудит и работу с биржами!
Приятного обучения!
На данный момент мы прошли еще один большой пласт обучения блокчейн разработке. Я собрал весь пройденный материал в удобный навигатор, чтобы было проще ориентироваться на канале.
Также напоминаю, что действует поиск по хештегам в постах. Так вы сможете найти примеры функций, типов данных или другую информацию о Solidity и блокчейн разработке.
Теоретическая часть
Что нужно для изучения Solidity. Часть 1
Что нужно для изучения Solidity. Часть 2
Что такое IPFS?
Что такое Uniswap?
Что такое Pancake (PancakeSwap)?
Оракулы и chainlink
Soulboud токены
Что такое flashloan?
Что такое ANKR?
Goerly faucets
Как получить тестовые Link токены
Практическая часть
Использование openzeppelin в своих проектах
Подключение openzeppelin
Начало работы с Git и GitHub
Кратко по подготовке папки и проекта к Git
Кратко о TheGraph
Начало работы с TheGraph. Серия из 3 постов
Chainlink
Курс на Chainlink
Chainlink Data Feeds. Серия из 7 постов
Chainlink VRF. Серия из 8 постов
Chainlink Connect to API. Серия из 7 постов
Chainlink Automation / Keeper. Серия из 4 постов
Chainlink NodeJS IPFS External Adapter
Дополнительно
Информация о стандартах ERC через #erc
Перевод bytes32 в string
Популярные ошибки в Solidity
Немного об xNFT
Более того, напоминаю, что вы всегда можете задавать вопросы в чатах:
Чат от канала - https://news.1rj.ru/str/+CqKZNgqZ640wNDdi
Чат от лектора - https://news.1rj.ru/str/joinchat/MxYT6-01eeA1NTYy
Далее мы будем рассматривать создание токенов, аудит и работу с биржами!
Приятного обучения!
👍4
Чем займемся дальше?
Привет всем! Это была интересная теоретическая неделя, где мы рассмотрели кучу новой информации. Надеюсь посты про ERC не сильно достали вас, сам уже понял, что 27 штук это было крайне много.
Хотел бы озвучить дальнейшие планы.
Сегодня подумываю посмотреть код непередаваемых NFT токенов или soulbound NFT. Не знаю почему, но эта тема давно сидит у меня в голове и хочется уже разобраться с этим.
На следующей неделе мы займемся Uniswap. Пока не представляю, сколько это может занять, учитывая опыт с chainlink. Планирую выделить неделю.
Затем думаю взять несколько уроков по аудиту смарт контрактов и проблемам безопасности.
И уже после этого, я нашел несколько уроков, где показывают как на реакте создать dapp.
По soulbound: я нашел хороший репо на GitHub, где представлена реализация. Если разберусь, то сделаю пост разбор позже сегодня, если же нет - выложу сам репо и опишу проблемы, которые у меня возникали.
Приятной пятницы и новых знаний!
Привет всем! Это была интересная теоретическая неделя, где мы рассмотрели кучу новой информации. Надеюсь посты про ERC не сильно достали вас, сам уже понял, что 27 штук это было крайне много.
Хотел бы озвучить дальнейшие планы.
Сегодня подумываю посмотреть код непередаваемых NFT токенов или soulbound NFT. Не знаю почему, но эта тема давно сидит у меня в голове и хочется уже разобраться с этим.
На следующей неделе мы займемся Uniswap. Пока не представляю, сколько это может занять, учитывая опыт с chainlink. Планирую выделить неделю.
Затем думаю взять несколько уроков по аудиту смарт контрактов и проблемам безопасности.
И уже после этого, я нашел несколько уроков, где показывают как на реакте создать dapp.
По soulbound: я нашел хороший репо на GitHub, где представлена реализация. Если разберусь, то сделаю пост разбор позже сегодня, если же нет - выложу сам репо и опишу проблемы, которые у меня возникали.
Приятной пятницы и новых знаний!
👍1
Создание soulbound NFT. Часть 1
Как я понял, единого стандарта ERC для подобных токенов пока нет. Поэтому я взял пример создание токена из этого репозитария на Github. Вы можете скачать его к себе в папку, выполнив команду в консоли:
git clone https://github.com/dappuniversity/Soul-Bound-token
Мне он понравился большим количеством проверок и достойной реализацией. Поэтому давайте рассмотрим его подробнее.
Библиотека Counters
Она создает счетчики, которые можно уменьшать, увеличивать или обнулять. Используется для отслеживания количества элементов в mapping, ids в ERC721 или подсчете id запросов.
Uint value специально размещен в struct, так как не должен быть доступен сторонним пользователям.
Библиотека Strings
Представлены три функции для перевода: из uint в string, из uint в hash, из uint в hash с фиксированной длинной.
Абстрактный контракт Context
В данном случае используется, как промежуточный контракт для выполнения контекста основного контракта. Можно представить его как контракт-библиотеку, из которого просто берутся функции.
Библиотеке Address
Возвращает true, если аккаунт, куда мы пересылаем токены является контрактом. Однако здесь стоит пройтись по функциям внимательнее.
Функция isContract() поверяет является ли аккаунт смарт контрактом с помощью знакомой нам функции "account.code.length > 0". Т.е. если возвращается true, то мы имеем дело с контрактом, если false - с аккаунтом.
Однако, есть исключения. Эта функция может вернуть false для следующих типов адресов:
- учетные записи, принадлежащие внешним пользователям, EOA;
- контракт в конструкторе;
- адрес, где будет создаваться контракт;
- адрес, где был создан контракт ранее, то теперь уничтожен;
Также не следует полагаться на эту функцию для защиты от атак flash loan.
Функция sendValue() призвана заместить внутреннюю функцию Solidity transfer(), где предполагается лимит газа и откат из-за потенциальных ошибок.
Тут нужно быть внимательным и перед (bool, success) создать свою защиту от reentrancy!
Функция functionCall() - более защищенная версия низкоуровневой функции call в Solidity. Дальнейшие функции, которая она вызывает просто дополняются проверками на ошибки при разных обстоятельствах.
#soulbound #nft #token
Как я понял, единого стандарта ERC для подобных токенов пока нет. Поэтому я взял пример создание токена из этого репозитария на Github. Вы можете скачать его к себе в папку, выполнив команду в консоли:
git clone https://github.com/dappuniversity/Soul-Bound-token
Мне он понравился большим количеством проверок и достойной реализацией. Поэтому давайте рассмотрим его подробнее.
Библиотека Counters
Она создает счетчики, которые можно уменьшать, увеличивать или обнулять. Используется для отслеживания количества элементов в mapping, ids в ERC721 или подсчете id запросов.
Uint value специально размещен в struct, так как не должен быть доступен сторонним пользователям.
Библиотека Strings
Представлены три функции для перевода: из uint в string, из uint в hash, из uint в hash с фиксированной длинной.
Абстрактный контракт Context
В данном случае используется, как промежуточный контракт для выполнения контекста основного контракта. Можно представить его как контракт-библиотеку, из которого просто берутся функции.
Библиотеке Address
Возвращает true, если аккаунт, куда мы пересылаем токены является контрактом. Однако здесь стоит пройтись по функциям внимательнее.
Функция isContract() поверяет является ли аккаунт смарт контрактом с помощью знакомой нам функции "account.code.length > 0". Т.е. если возвращается true, то мы имеем дело с контрактом, если false - с аккаунтом.
Однако, есть исключения. Эта функция может вернуть false для следующих типов адресов:
- учетные записи, принадлежащие внешним пользователям, EOA;
- контракт в конструкторе;
- адрес, где будет создаваться контракт;
- адрес, где был создан контракт ранее, то теперь уничтожен;
Также не следует полагаться на эту функцию для защиты от атак flash loan.
Функция sendValue() призвана заместить внутреннюю функцию Solidity transfer(), где предполагается лимит газа и откат из-за потенциальных ошибок.
Тут нужно быть внимательным и перед (bool, success) создать свою защиту от reentrancy!
Функция functionCall() - более защищенная версия низкоуровневой функции call в Solidity. Дальнейшие функции, которая она вызывает просто дополняются проверками на ошибки при разных обстоятельствах.
#soulbound #nft #token
👍4
Создание soulbound NFT. Часть 2
Интерфейс IERC721Receiver
Его мы разбирали в одном из предыдущих уроков. И нужен для того, чтобы проверить, может ли сторонний контракт принимать наш NFT.
Интерфейс IERC165
И его мы тоже разбирали на "дне стандартов". Нужен для того, чтобы узнать поддерживает ли контракт какой-либо интерфейс.
Абстрактный contract ERC165 is IERC165
Если контракт хочет поддерживать ERC165, то он должен наследовать и переписать функцию supportsInterface() из данного контракта.
Интерфейс IERC721 is IERC165
Стандартная реализация. Ее мы подробно рассматривали ранее в урока про создание NFT.
Интерфейс IERC721Metadata is IERC721
Добавление метаданных к NFT: имени, символа и url.
Контракт ERC721 is Context, ERC165, IERC721, IERC721Metadata
Создание токена NFT, включая метаданные.
Абстрактный contract ERC721URIStorage is ERC721
Управление url нашего NFT.
#soulbound #nft #token
Интерфейс IERC721Receiver
Его мы разбирали в одном из предыдущих уроков. И нужен для того, чтобы проверить, может ли сторонний контракт принимать наш NFT.
Интерфейс IERC165
И его мы тоже разбирали на "дне стандартов". Нужен для того, чтобы узнать поддерживает ли контракт какой-либо интерфейс.
Абстрактный contract ERC165 is IERC165
Если контракт хочет поддерживать ERC165, то он должен наследовать и переписать функцию supportsInterface() из данного контракта.
Интерфейс IERC721 is IERC165
Стандартная реализация. Ее мы подробно рассматривали ранее в урока про создание NFT.
Интерфейс IERC721Metadata is IERC721
Добавление метаданных к NFT: имени, символа и url.
Контракт ERC721 is Context, ERC165, IERC721, IERC721Metadata
Создание токена NFT, включая метаданные.
Абстрактный contract ERC721URIStorage is ERC721
Управление url нашего NFT.
#soulbound #nft #token
👍1
Создание soulbound NFT. Часть 3
Далее идет наш контракт UniversityDegree is ERC721URIStorage.
Создаем переменную owner и два mapping: personToDegree, со сиском тех, кто получил свой токен, issuedDegrees, для проверки был ли выдан токен данному пользователю.
Подключаем библиотеку Counters для отслеживания новой переменной _tokenIds.
Незабываем про модификатор onlyOwner. А также в конструкторе передаем имя токена и его символ в контракт ERC721.
Функция checkDegreeOfPerson() возвращает токен пользователя, а issueDegree() добавляет пользователя к исполненным выдачам.
Функция claimDegree() позволяет пользователю забирать свои NFT. Она проверяет был ли уже ранее выдан токен, увеличивает id нового токена, минтит NFT и прикрепляет к нему ссылку, а также прикрепляет данный NFT к пользователю и добавляет его в issuedDegrees.
Достаточно простой контракт. Однако, где же здесь souldbound? На вид представлено достойное создание обычного NFT. А вся соль в следующем.
В стандарте ERC721 есть функция safeTransferFrom(), которая и отвечает за возможность передачи NFT другим пользователям. Удалив ее, мы фактически сделаем NFT привязанным к конкретному адресу.
Этот контракт можно сразу поместить в Ремикс и задеплоить. Я бы еще порекомендовал удалить все комментарии автора.
Когда будете сами экспериментировать с данным контрактом, то не забудьте изменить имя и символ токена на свои, а также при запросе токена в функции claimDegree() указать ссылку на картинку своего NFT.
Как быстро загрузить картинку для NFT в IPFS, я расскажу в следующем посте.
#soulbound #nft #token
Далее идет наш контракт UniversityDegree is ERC721URIStorage.
Создаем переменную owner и два mapping: personToDegree, со сиском тех, кто получил свой токен, issuedDegrees, для проверки был ли выдан токен данному пользователю.
Подключаем библиотеку Counters для отслеживания новой переменной _tokenIds.
Незабываем про модификатор onlyOwner. А также в конструкторе передаем имя токена и его символ в контракт ERC721.
Функция checkDegreeOfPerson() возвращает токен пользователя, а issueDegree() добавляет пользователя к исполненным выдачам.
Функция claimDegree() позволяет пользователю забирать свои NFT. Она проверяет был ли уже ранее выдан токен, увеличивает id нового токена, минтит NFT и прикрепляет к нему ссылку, а также прикрепляет данный NFT к пользователю и добавляет его в issuedDegrees.
Достаточно простой контракт. Однако, где же здесь souldbound? На вид представлено достойное создание обычного NFT. А вся соль в следующем.
В стандарте ERC721 есть функция safeTransferFrom(), которая и отвечает за возможность передачи NFT другим пользователям. Удалив ее, мы фактически сделаем NFT привязанным к конкретному адресу.
Этот контракт можно сразу поместить в Ремикс и задеплоить. Я бы еще порекомендовал удалить все комментарии автора.
Когда будете сами экспериментировать с данным контрактом, то не забудьте изменить имя и символ токена на свои, а также при запросе токена в функции claimDegree() указать ссылку на картинку своего NFT.
Как быстро загрузить картинку для NFT в IPFS, я расскажу в следующем посте.
#soulbound #nft #token
👍1
Создание soulbound NFT. Часть 4
Pinata - это служба хостинга NFT, которая использует IPFS. Вы можете загрузить свои картинки и потом использовать ссылку с ipfs для минта NFT.
Pinata доступна по этой ссылке.
В бесплатной версии можно загрузить до 100 файлов и не более на 1 Gb.
После регистрации вы попадаете в личный кабинет. Там нужно нажать на кнопку "Upload+" и выбрать нужный файл. Через пару секунд он отобразиться в кабинете.
Ссылку на него можно получить, нажав на глазик рядом с названием картинки. Откроется другое окно и вы скопируете ссылку.
Все легко и просто. Не зря он стал одним из самых популярных сервисов для хранения NFT.
#soulbound #nft #token #pinata
Pinata - это служба хостинга NFT, которая использует IPFS. Вы можете загрузить свои картинки и потом использовать ссылку с ipfs для минта NFT.
Pinata доступна по этой ссылке.
В бесплатной версии можно загрузить до 100 файлов и не более на 1 Gb.
После регистрации вы попадаете в личный кабинет. Там нужно нажать на кнопку "Upload+" и выбрать нужный файл. Через пару секунд он отобразиться в кабинете.
Ссылку на него можно получить, нажав на глазик рядом с названием картинки. Откроется другое окно и вы скопируете ссылку.
Все легко и просто. Не зря он стал одним из самых популярных сервисов для хранения NFT.
#soulbound #nft #token #pinata
👍1