Работа с блокчейном Binance Smart Chain (BSC). Какой кошелек выбрать? :: РБК.Крипто

mnhxzagvjfgmoccgbzmdbk Обзоры
Содержание
  1. Что это за приложение?
  2. Что понадобится для создания коллекции
  3. За что нужно будет платить
  4. Что такое nft
  5. Что дальше?
  6. @enableautoconfiguration
  7. Actuator
  8. Auto-configuration report
  9. Binance chain wallet
  10. Di контейнер
  11. Klever
  12. Mathwallet
  13. Metamask
  14. Spring boot
  15. Spring: вопросы к собеседованию
  16. Trust wallet
  17. Автоконфигурация
  18. Будущее nft
  19. Зачем nft покупателю
  20. Зачем nft художнику
  21. Как jwt защищает наши данные?
  22. Как загрузить первую работу и создать nft-токен
  23. Как зарегистрироваться на сайте opensea
  24. Как купить nft на opensea.io
  25. Как продать nft на opensea
  26. Как работает nft
  27. Как создать и оформить коллекцию
  28. Как создать коллекцию токенов nft на сайте opensea
  29. Как художнику себя обезопасить
  30. Класс demoapplication
  31. Контекст
  32. Конфигурация
  33. Краткое резюме
  34. Кто использует nft
  35. Нужно ли удалять config apk?
  36. Погружение в hello world
  37. Полезные ссылки
  38. Проблемы nft
  39. Продажа по фиксированной цене
  40. Продажа через аукцион
  41. Резюме
  42. Сканирование компонентов
  43. Структура jwt
  44. Условия и порядок регистрации бинов
  45. Шаг 3. создаем signature
  46. Шаг 4. теперь объединим все три jwt компонента вместе
  47. Шаг 5. проверка jwt
  48. В заключение
  49. Узнайте больше о Huawei

Что это за приложение?

Config APK или configAPK — является частью названия пакета android.autoinstalls.config и отвечает за настройку приложений при первой загрузке устройства. Таким образом, это необходимый компонент, и его не следует трогать. Наиболее часто программка встречается в Самсунгах.

Сам по себе, конфигапк является исполняемым файлом и работает в фоне. Связан он с процедурой автоматической установки и первоначальной настройки системных программ при первом включении аппарата.

В случае сброса устройства и последующего восстановления, это приложение снова будет выполнять первоначальную надстройку в Андроиде. Файл весит очень мало (~20 КБ), но хранит достаточно важные конфигурации.

Что понадобится для создания коллекции

Для того, чтобы зайти на площадку и зарегистрировать первую коллекцию, Вам понадобится:

ETH-кошелек — по умолчанию OpenSea предлагает использовать кошелек MetaMask, который является расширением Chrome. Но вы также можете выбрать любой другой из тех, которые предлагает сайт (CoinBase Wallet, WalletConnect, Formatic и др.).

Для оформления профиля:

  • Имя — придумайте себе звучное имя-бренд.
  • Обложка — это может быть баннер png с несколькими объектами из вашей коллекции. Оптимальные размеры баннера — 1400х400 px.
  • Аватар — квадратная картинка png размером 100х100 px.

Для оформления коллекции:

  • Название — обычно это одно-два слова, передающие смысл коллекции (Zombie, CryptoSergs, Cryptopunks…).
  • Логотип — квадратная картинка размером 350х350 px.
  • Краткое описание — до 1000 символов, опишите вашу коллекцию и чем она интересна.
  • Баннер (обложка) — для показа вашей коллекции на страницах OpenSea. Рекомендуемый размер — 600х400 px.
  • Объекты для продажи — это может быть картинка, видео, аудио или модель 3D.
    Допустимые форматы файлов — jpg, png, gif, svg, mp4, webm, mp3, wav, ogg, glb, gltf.
    Максимальный размер — 100 МВ. Все объекты должны быть оригинальными, OpenSea проверяет каждую.

Для образца вы можете посмотреть профили:

  • opensea.io/accounts/CryptoSergs,
  • opensea.io/collection/hashmasks,
  • opensea.io/collection/pepsi-mic-drop

За что нужно будет платить

При продаже по фиксированной стоимости:

Покупатель несет расходы на комиссию в ETH за транзакцию по передаче NFT на его кошелек.

Продавец оплачивает площадке OpenSea 2,5% от цены продажи объекта.

При продаже через аукцион:

Продавец несет расходы на комиссию в ETH за транзакцию по передаче NFT на кошелек покупателя лишь в том случае, если объект продается по стоимости ниже 1 ETH. В остальных случаях оплату комиссии берет на себя OpenSea.

Продавец оплачивает площадке OpenSea 2,5% от цены продажи объекта.

Комиссия за обмен стандартного ETH в «обернутый» WETH:

На OpenSea для расчетов применяется два вида ETH: обычный и «обернутый».

«Обернутый эфир» или WETH – это совместимая с ERC-20 версия эфира. Он нужен для того, чтобы обменять ETH на другие токены, соответствующие стандарту ERC-20. Обертывание ETH не влияет на его стоимость, соотношение остается 1:1.

За конвертацию одной монеты в другую также необходимо платить комиссию. При этом ее размер одинаковый, как если бы вы обменяли 10 эфиров или 1. Поэтому лучше сделать один обмен на крупную сумму.

Комиссия за создание смарт-контракта (единоразово):

Площадка OpenSea децентрализована. Это значит, что она не хранит токены пользователей (они хранятся на их личных кошельках MetaMask).

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

Если ранее вы не совершали ни одной сделки на OpenSea, этот смарт-контракт отсутствует. Чтобы его создать, нужно совершить две нулевые транзакции. За них нужно будет заплатить комиссию от 100 долларов и выше.

После того, как ваш личный смарт-контракт будет создан, в дальнейшем вы сможете бесплатно публиковать свои работы на продажу.

Что такое nft

Автор – bloodynik_art

Что дальше?

Подумаем о безопасности и добавим Refresh Token. Смотрите следующую мою статью на эту тему.

@enableautoconfiguration

Эта аннотация включает автоконфигурацию. И здесь, пожалуй, ключевой момент в развенчании магии Spring. Вот как объявлена эта аннотация:

...
@Import(EnableAutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
...
}

Т.е. это самый обычный импорт конфигурации, про который мы говорили выше. Класс же EnableAutoConfigurationImportSelector (и его преемник в Spring Boot 1.5 — AutoConfigurationImportSelector) это просто конфигурация, которая добавит несколько бинов в контекст. Однако, у этого класса есть одна тонкость — он не объявляет бины сам, а использует так называемые фабрики.

Класс EnableAutoConfigurationImportSelector смотрит в файл spring.factories и загружает оттуда список значений, которые являются именами классов (авто)конфигураций, которые Spring Boot импортирует.

Кусочек файла spring.factories (он находится в папке META-INF внутри spring-boot-autoconfigure.<version>.jar), который нам сейчас нужен это:

Actuator

Spring Boot Actuator это мощный инструмент диагностики работающего приложения, который умеет давать много полезной аналитики (более того, набор этих метрик можно легко расширять из приложения).

Auto-configuration report

В случае, когда что-то идет не так, Spring Boot позволяет запустить диагностику автоконфигурации и посмотреть, какие именно бины были созданы. Чтобы увидеть эту информацию, нужно запустить приложение с ключом –debug.

java -jar my-app.jar --debug

В ответ Spring выдаст детальный Auto-configuration report:

=========================
AUTO-CONFIGURATION REPORT
=========================

Positive matches:
-----------------

DataSourceAutoConfiguration matched:
  - @ConditionalOnClass found required classes 'javax.sql.DataSource', 'org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType'; @ConditionalOnMissingClass did not find unwanted class (OnClassCondition)

DataSourceAutoConfiguration#dataSourceInitializer matched:
  - @ConditionalOnMissingBean (types: org.springframework.boot.autoconfigure.jdbc.DataSourceInitializer; SearchStrategy: all) did not find any beans (OnBeanCondition)

...

Negative matches:
-----------------

ActiveMQAutoConfiguration:
  Did not match:
     - @ConditionalOnClass did not find required classes 'javax.jms.ConnectionFactory', 'org.apache.activemq.ActiveMQConnectionFactory' (OnClassCondition)
...

Строчка в Positive / Negative matches будет для каждой примененной автоконфигурации, более того, Boot сообщит, почему тот или иной бин был создан (т.е. укажет, какие из условий регистрации были выполнены).

Binance chain wallet

Binance Chain Wallet — официальный криптовалютный кошелек для доступа к Binance Smart Chain. Это простой вариант для хранения токенов и работы с некоторыми приложениям в BSC через расширение в браузере. Надстройку можно установить в Chrome, Firefox и Brave. Удобный интерфейс и простота в использовании позволяют легко начать работу с блокчейном даже новичкам.

К этому кошельку можно привязать уже существующий аккаунт Binance, с помощью Wallet Direct, и можно будет не копировать адреса при транзакциях между ними. На официальном сайте биржи Binance есть подробные инструкции по настройкам и работе с кошельком.

Binance Chain Wallet похож на другие браузерные криптовалютные кошельки, такие как MetaMask или TrustWallet. В нем можно легко и быстро производить обмен BNB на другие токены, создавать собственные NFT. Кошелек взаимодействует с приложениями DАpps (например, PancakeSwap) в сети Binance Smart Chain. Это дает возможность участия в стейкинге, фарминге и свопах.

Di контейнер

Ключевой и фундаментальный механизм Spring. Внешне очень простой, но внутри он предоставляет очень много механизмов для тонкой настройки зависимостей. По сути, любое приложение Спринг — это набор бинов, связанных вместе через DI контейнер.

Очень часто при обсуждении Spring звучит аргумент, что его можно легко заменить на любой леговесный DI контейнер (Guice, например) и получить то же самое, но легче и проще. И здесь очень важно понять — ценность Spring DI не в самом факте его наличия, а в его фундаментальности.

Все библиотеки в экосистеме Spring, по сути, просто регистрируют свои бины в этом контейнере (включая и сам Spring) — и через иньекцию зависимостей разработчики приложения смогут получить нужные компоненты. Простой пример: при использовании Spring Security OAuth если сконфигурить параметры OAuth в application.properties, то Spring Security предоставит бин OAuth2RestTemplate который мы можем просто заинжектить в своем коде.

И этот бин при обращении к внешнему API будет знать, куда и как пойти, чтобы получить OAuth токен, как его обновлять, в какое место нашего запроса его добавлять и т.п. Так вот ценность DI тут в том, что это просто механизм общения между нашим кодом и Spring Security.

Еще один очень важный момент, который многие упускают при обсуждении DI контейнера, это то, что использование инъекции зависимостей не подразумевает создания интерфейсов для каждого компонента. Это очень простая мысль, но я много раз видел, что из-за своей простоты она не всегда очевидна.

Более того, создание интерфейса, если у него лишь одна реализация — считается плохой практикой. Т.е. классы вполне могут сами по себе быть объектами DI. Более того, отсутствие интерфейса даже не мешает их мокать в тестах, т.к. Mockito, например, вполне умеет мокать классы.

Klever

Klever — это простой децентрализованный криптокошелек, поддерживающий сеть BSC с октября 2020 года. Он также позволяет пользователям полностью контролировать свои закрытые ключи и покупать криптовалюту в приложении с помощью кредитной или дебетовой карты.

Интересная особенность кошелька — это своп, как основной вариант обмена монет. Он позволяет пользователям напрямую обменивать одну монету или токен на другую, с одной цепочки блоков на другую (например, BTC на TRX или ETH) безопасно, конфиденциально и быстро.

Также Klever может похвастаться технологией шифрования высокого уровня, которая помогает предотвратить кражу, такую как взлом, подмена номера SIM-карты и других методов обмана пользователей.

Mathwallet

MathWallet — это некастодиальный мультивалютный и мультиплатформенный кошелек, работающий с большинством блокчейнов. Особенность кошелька — поддержка всех существующих сегодня криптовалют. Если какой-то монеты нет в списке, можно добавить ее самостоятельно.

MathWallet очень удобен, потому как им можно пользоваться и как расширением для браузера, как веб-кошельком или через приложение для устройств iOS и Android. Он обеспечивает большую гибкость и его можно использовать на нескольких устройствах.

Компания сама не выпускает аппаратные криптокошельки, но сотрудничает со всемирно известными производителями Ledger и WOOKONG Bio, устройства которых поддерживают MathWallet.

— Суд в России признал криптовалюту платежным средством

— Праздник пиццы. Как это связано с биткоином и 18 млрд рублей

— Terra проверят на мошенничество и майнинг в Китае. Главные новости недели

— Прокуратура Южной Кореи проверит Terra на признаки финансовой пирамиды

— Суд в России признал криптовалюту платежным средством

Больше новостей о криптовалютах вы найдете в нашем телеграм-канале РБК-Крипто.

Metamask

Основной сетью кошелька Metаmask является Ethereum. Но к нему можно подключать самые разные блокчейны, и сделать это довольно просто. Достаточно в настройках добавить новую сеть, введя нужные параметры. Все данные для настройки есть в открытом доступе на сайте Binance. Там же размещен подробная инструкция по подключению кошелька к сети BSC.

Сильными сторонами кошелька Metamask можно назвать безопасность и простоту транзакций, возможность хранить NFT и крипто-коллекционные предметы, оплачивать покупку криптовалюты прямо с банковской карты.

Metamask — это некастодиальный кошелек, то есть приватные ключи хранятся на устройстве пользователя. Кошельком можно пользоваться с помощью расширения для браузера или скачав мобильное приложение.

Spring boot

Теперь переходим к следующей части. Допустим, нам надо сконфигурить подключение к MySQL базе данных. Если мы хотим использовать Spring Data JPA с Hibernate в качестве провайдера, нам потребуется сконфигурировать несколько бинов — EntityManagerFactory (основной класс JPA)

, DataSource для подключения непосредственно к базе через JDBC драйвер и т.п. Но с другой стороны, если мы это делаем каждый раз и, по сути, делаем одно и то же — почему бы это не автоматизировать? Скажем, если мы указали строку подключения к базе и добавили зависимость на MySQL драйвер — почему бы чему-то автоматически не создать все нужные бины для работы с MySQL?

Spring: вопросы к собеседованию

image
Этот небольшой список вопросов даст вам понимание самых важных концепций Spring, а так же поможет подготовится к собеседованию

6 В чём разница между @Component, @Service и @Repository аннотациями?

Хочу поблагодарить пользователя хабра jd2050, за помощь с переводом.

Trust wallet

Trust Wallet является частью экосистемы Binance с 2022 года. Он входит в число самых простых в использовании мобильных кошельков.Кошелек децентрализован. Вы контролируете свои приватные ключи и можете пользоваться полной свободой действий в отношении своей криптовалюты.

Этот кошелек поддерживает стейкинг для многих криптовалют, включая Tezos, Tron и другие, а также имеет встроенные шлюзы для оплаты картой, то есть криптовалюту тут тоже можно купить прямо в нем.

Есть расширение для браузеров и приложения для мобильных телефонов. Инструкцию по настройке в сети BSC также можно найти на сайте.

Автоконфигурация

Важное понятие Spring Boot это автоконфигурация. По сути, это просто набор конфигурационных классов, которые создают и регистрируют определенные бины в приложении. По большому счету, даже сам Embedded Servlet Container — это просто еще один бин, который можно сконфигурировать! Пара важных моментов, которые важно знать об автоконфигурации:

Будущее nft

Токены могут навсегда изменить систему, по которой работают авторские права на цифровой контент, и защитить крипто-картины и видео от незаконного копирования. Также NFT сильно облегчит тяготы с авторскими правами для музыкантов и позволит стриминговым сервисам быстрее лицензировать фильмы и сериалы.

В целом операции с NFT-токенами проходят гораздо быстрее, чем операции с физическими предметами, что тоже положительно сказывается на процессе реализации. Пользователям будет проще поддерживать любимых авторов, не прибегая к использованию сторонних ресурсов и систем. При этом они получат эксклюзивные права на владение купленным крипто-артом.

Зачем nft покупателю

NFT-токены позволяют аудитории поддерживать финансово любимого автора и дают пользователям право на использование цифрового контента, будь то размещение в социальных сетях, использование в качестве аватара и так далее. К тому же, произведения с прикреплённым NFT — своего рода коллекционный актив, ценность которого может со временем повышаться или падать.

Если к такому токену привязана картина, существующая всего в одном экземпляре — его ценность будет максимально высокой. Яркий пример — коллаж от Beeple, о котором говорилось ранее.

Зачем nft художнику

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

По версии CoinDesk, за февраль 2021-го пользователи потратили около 100 миллионов долларов на крипто-товары, не существующие физически. Благодаря этому многие художники без мирового имени стали зарабатывать гораздо больше. Например, арт-директор Halo Infinite Николя Бувье продал свой крипто-арт почти за 35 тысяч долларов, а бывший художник DC Хосе Дельбо заработал около двух миллионов долларов на рисунках Чудо-женщины.

Как jwt защищает наши данные?

Очень важно понимать, что использование JWTНЕ скрывает и не маскирует данные автоматически. Причина, почему JWT используются — это проверка, что отправленные данные были действительно отправлены авторизованным источником.

Как было продемонстрировано выше, данные внутри JWT закодированы и подписаны, обратите внимание, это не одно и тоже, что зашифрованы. Цель кодирования данных — преобразование структуры. Подписанные данные позволяют получателю данных проверить аутентификацию источника данных.

Таким образом закодирование и подпись данных не защищает их. С другой стороны, главная цель шифрования — это защита данных от неавторизованного доступа. Для более детального объяснения различия между кодированием и шифрованием, а также о том, как работает хеширование, смотрите эту статью.

Как загрузить первую работу и создать nft-токен

Теперь вы можете загрузить в созданную вами тему ваш творческий объект и создать NFT-токен.

Как зарегистрироваться на сайте opensea

Зайдите на официальный сайт opensea.io. В верхнем правом углу нажмите на кошелек.

Подключите свой МетаМаск (или любой другой кошелек на выбор).

Таким образом вы попали на страницу вашего профиля на сайте OpenSea.

Теперь установите красивую обложку, свой аватар, измените имя. Оформление вашего профиля — как витрина магазина. Она должна привлекать к вам покупателей. Поэтому заранее продумайте ее вид.

Как купить nft на opensea.io

При покупке NFT важно учитывать блокчейн, на котором он создан. От этого будет зависеть размер комиссии при покупке: в сети Polygon самая низкая комиссия, в сети Ethereum — самая высокая (от $100 и выше).

На площадке существует три вида монет, за которые можно приобрести объект. Вы их увидите рядом с ценой объекта Current Price.

Работа с блокчейном Binance Smart Chain (BSC). Какой кошелек выбрать? :: РБК.Крипто

Наведите на значок курсор мыши и увидите подсказку.:

  • ETH на Polygon (MATIC) — значок синего цвета;
  • ETH на Ethereum — серый;
  • WETH («обернутый эфир») — бордовый.

«Обернутый эфир» или WETH – это совместимая с ERC-20 версия эфира. Он нужен для того, чтобы обменять ETH на другие токены, соответствующие стандарту ERC-20. Обертывание ETH не влияет на его стоимость, соотношение остается 1:1.

Вы можете купить NFT двумя способами:

Вот и все – вы приобрели NFT на OpenSea! Теперь пришло время просмотретьвашу новую покупку. Просто зайдите в свой профиль, и объект будет доступен дляпросмотра.

Как продать nft на opensea

Теперь все готово для того, чтобы показать свое творение пользователям.

Для того, чтобы выставить токен NFT на продажу, нужно выполнить следующие действия:

1. Перейдите в коллекцию и нажмите на картинку, которую хотите продать.

2. В правом верхнем углу нажмите на синюю кнопку Sell.

Работа с блокчейном Binance Smart Chain (BSC). Какой кошелек выбрать? :: РБК.Крипто

3. На выбор предлагается две формы продажи (за ETH):

  • Fixed Price — по фиксированной цене.
  • Timed Auction — через аукцион.

Работа с блокчейном Binance Smart Chain (BSC). Какой кошелек выбрать? :: РБК.Крипто

Рассмотрим каждую отдельно.

Как работает nft

Каждую запись в такой цепочке называют токеном. В открытом блокчейне все токены можно заменить на идентичные, однако в системе NFT этого сделать нельзя. Если у вас есть, например, биткоин — его можно поменять на другой биткоин, идентичный вашему. NFT-токены — уникальные, заменить их невозможно.

Именно благодаря таким токенам любой желающий может легко закрепить права на уникальный цифровой объект — картинку, видео или предмет в игре. Иными словами, NFT позволяет купить не сам товар, а право собственности на него, прикрепив токен с данными о владельце к файлу.

Любой художник, желающий прикрепить токен к своей работе, может использовать площадки OpenSea или Rarible. Примечательно, что OpenSea создает NFT-токены только после того, как на них найдётся покупатель. В таком случае автору не нужно платить комиссию блокчейну Ethereum. Площадка Rarible, наоборот, создает токены сразу после загрузки работы в сервис и берёт с автора комиссию.

Как создать и оформить коллекцию

Чтобы создать коллекцию, перейдите к значку своего профиля в верхнем меню, выберите My Collections. Здесь будут располагаться все ваши коллекции работ.

Работа с блокчейном Binance Smart Chain (BSC). Какой кошелек выбрать? :: РБК.Крипто

Для создания новой темы нажмите на синюю кнопку Create a collection.

Работа с блокчейном Binance Smart Chain (BSC). Какой кошелек выбрать? :: РБК.Крипто

Далее вам необходимо заполнить все поля на английском языке:

  • Logo image — логотип (квадрат размером 350х350 px).
  • Featured image — баннер (обложка) вашей коллекции, который будет демонстрироваться на страницах площадки. Его оптимальный размер составляет 600х400 px.
  • Banner Image — это изображение появится в верхней части страницы вашей коллекции. Не добавляйте слишком много текста в это изображение баннера, так как размеры меняются на разных устройствах. Рекомендуется 1400 x 400 px.
  • Name — введите название коллекции (2-3 слова, передающие смысл).
  • URL — эта ссылка на страницу с вашими работами генерируется автоматически, ее можно размещать в соц.сетях, форумах, на сайтах.
  • Description — опишите тему своих работ (до 1000 символов).
  • Category — выберите категорию, в которую вы хотите добавить коллекцию. Это поможет находить ваши работы пользователям площадки.
  • Links — при желании вы можете указать ссылки на ваш сайт, Дискорд, Инстаграм, Медиум, Телеграм.
  • Creator Earnings («доход автора») — площадка OpenSea от каждой продажи получает 2,5% комиссии. Вы, как автор, также можете получать процент от каждой последующей продажи своих работ (его называют «роялти»). В этом поле вы можете установить процент своей комиссии самостоятельно, но не более 10%. Эта сумма вычитается из окончательной цены продажи и выплачивается ежемесячно на адрес выплаты по вашему выбору.
  • Your payout wallet address — это поле появляется при заполнении поля Creator Earnings. Укажите адрес вашего кошелька для перечисления комиссии.
  • Blockchain — выберите блокчейн, в который вы хотите, чтобы новые элементы из этой коллекции добавлялись по умолчанию (Ethereum, Polygon).
  • Payment tokens — эти токены можно использовать для покупки и продажи ваших работ. Если вы хотите добавить собственный токен сети ERC20, в выпадающем списке выберите подходящий.
  • Display theme — выберите формат показа ваших работ: Padded — для картинок с прозрачным фоном, Contained — подходит для неквадратных изображений, Covered — для квадратных изображений.

После заполнения всех полей нажмите на кнопку Create. Вы увидите созданную вами коллекцию. Чтобы найти ее, перейдите к значку своего профиля в верхнем меню, выберите My Collections.

Работа с блокчейном Binance Smart Chain (BSC). Какой кошелек выбрать? :: РБК.Крипто

Если вы наведете мышкой на баннер — вы увидите три точки:

  • Edit — здесь вы можете отредактировать внесенные настройки.
  • Creator Earnings — история ваших авторских доходов (если вы заполнили процент комиссии).

Иногда площадка будет запрашивать у вас подпись (окно MetaMask справа). Смело подписывайте — так OpenSea идентифицирует пользователей.

Как создать коллекцию токенов nft на сайте opensea

Если у вас уже есть коллекция картинок, вы можете приступать к ее оформлению на площадке OpenSea.

В настоящее время площадка поддерживает две сети блокчейн: Ethereum и Polygon.

Как художнику себя обезопасить

Многие авторы до сих пор борются с мошенниками, доказывают подлинность своих работ и засыпают площадки вроде OpenSea просьбами удалить залитый без их ведома крипто-арт. Чтобы обезопасить себя от подобного, нужно помнить несколько простых правил.

Текст написал Владимир Шумилов, автор в Smirnov School. Мы готовим концепт-художников, левелартистов и 3D-моделеров для игр и анимации. Если придёте к нам на курс, не забудьте спросить о скидке для читателей с DTF.

#разбор#NFT#токены#блокчейн#крипто

Класс demoapplication

Этот класс помечен аннотацией @SpringBootApplication, что является мета-аннотацией, т.е. по сути, является алиасом для нескольких аннотаций:

Т.е. наличие @SpringBootApplication включает сканирование компонентов, автоконфигурацию и показывает разным компонентам Spring (например, интеграционным тестам), что это Spring Boot приложение

Контекст

Представлен интерфейсом ApplicationContext. По сути, представляет собой само приложение Spring. Так же контекст предоставляет возможности реагировать на различные события, которые происходят внутри приложения, управлять жизненным циклом бинов (создавать как синглтон или на каждый запрос, например).

Конфигурация

Итак, если приложение — это набор бинов, чтобы оно заработало нам нужно этот набор описать.

Конфигурация — это просто описание доступных бинов. Spring дает несколько вариантов, как можно описать набор бинов, которые сформируют приложение. Исторический вариант — это через набор xml файлов. В наши дни ему на смену пришли Java аннотации.

Spring Boot построен на аннтациях чуть более, чем полностью и большинство современных библиотек в принципе тоже можно сконфигурить через аннотации. В третьем своем поколении, конфигурация бинов пришла к подходу функциональной регистрации (functional bean registration), которая станет одной из важных новых фич готовящегося к выходу Spring 5.

Типичный класс конфигурации может, выглядеть, например так:

@Configuration
class PaymentsServiceConfiguration {

    @Bean
    public PaymentProvider paymentProvider() {
        return new PayPalPaymentProvider();
    }

    @Bean
    public PaymentService paymentService(PaymentProvider paymentProvider) {
        return new PaymentService(paymentProvider);
    }

}

Эта конфигурация определяет два бина, причем второй зависит от первого. И здесь в игру вступит Spring – когда мы просим предоставить инстанс PaymentProvider — Spring найдет его в контексте и предоставит нам.

Конфигурацию не обязательно описывать в одном огромном файле, можно разбить на несколько и объединять их с помощью @Import аннотаций.

Краткое резюме

В основе “магии” Spring Boot нет ничего магического, он использует совершенно базовые понятия из Spring Framework. В кратком виде процесс можно описать так:

  1. Аннотация @SpringBootApplication включает сканирование компонентов и авто-конфигурацию через аннотацию @EnableAutoConfiguration
  2. @EnableAutoConfiguration импортирует класс EnableAutoConfigurationImportSelector
  3. EnableAutoConfigurationImportSelector загружает список конфигураций из файла META-INF/spring.factories
  4. Каждая конфигурация пытается сконфигурить различные аспекты приложения (web, JPA, AMQP etc), регистрируя нужные бины и используя различные условия (наличие / отсутствие бина, настройки, класса и т.п.)
  5. Созданный в итоге AnnotationConfigEmbeddedWebApplicationContext ищет в том же DI контейнере фабрику для запуска embedded servlet container
  6. Servlet container запускается, приложение готово к работе!

Это может выглядеть сложно, но по большей части разработчикам приложений влезать во внутренности автоконфигурации не нужно, если речь не идет о поддержке авто-конфигурации для своей библиотеке.

Кто использует nft

На данный момент технология может работать с большим количеством видов контента — картинками, видео, анимациями и даже мемами.

Художник из Южной Каролины Майк Винкельман a.k.a Beeple, о котором мы упоминали выше, выставил на аукционе Christie’s огромный коллаж из 5 тысяч цифровых изображений, которые он ежедневно рисовал на протяжении 13 лет.

Так же NFT-токены активно используют в играх с внутренними покупками для того, чтобы подтвердить владение виртуальными предметами — комплектами брони, оружием, зданиями и скинами. Это нужно, в первую очередь, для того, чтобы игроки могли переносить предметы между своими аккаунтами, перепродавать их, а также с помощью токенов заявлять о владении.

Но самый необычный способ использовать NFT-токены продемонстрировала компания Injective Protocol. Она купила работу Morons (White) художника Бэнкси за 95 тысяч долларов и во время трансляции в Твиттере сожгла картину. После этого компания привязала невзаимозаменяемый токен к цифровой версии уничтоженной работы.

Теперь Morons (White) существует только в цифре и принадлежит Injective Protocol. Компания объявила, что пошла на такой шаг для того, чтобы создать из физической работы полноценный крипто-арт, который существует только в цифровом пространстве.

Процесс сожжения.

Помимо картин и музыки, благодаря NFT на аукционе смогли продать и полноценный мем. В прошлом месяце из под молотка ушёл популярный в десятых годах Nyan Cat — пиксельный кот, который летит сквозь космос под веселую чиптюн-мелодию. Мем стоил будущему обладателю около 580 тысяч долларов.

Десятичасовая версия Nyan Cat

Нужно ли удалять config apk?

Ответ на этот вопрос однозначен — удалять эту программку не следует. Производитель не зря добавил эту небольшую службу, так как она выполняет важную роль в момент первого включения или понадобится вам в случае последующих сбросов устройства. Все что вы можете сделать — отключить его.

Некоторые отзывы в Сети утверждают, что программка нагружает их телефон и заметно нагревает его. Конечно же, ConfigAPK работает в фоне, но минимально (как это только возможно) влияет на нагрузку процессора. Поэтому, если вы наткнулись на эту программку в поисках «Что бы удалить, так как телефон виснет?» — вам лучше исследовать и искать проблему в другом месте.

Погружение в hello world

Теперь, имея в запасе базовые теоретические знания, разберем что же происходит при запуске приложения.

Итак, наше приложение включает такой код:

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

  1. 5 Easy Steps to Understanding JSON Web Tokens (JWT)
  2. Securing React Redux Apps With JWT Tokens
  3. Зачем нужен Refresh Token, если есть Access Token?

Проблемы nft

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

Художник Жани Лемерсье даже отменил продажу своей крипто-картины через площадку NiftyGateway. Он заявил, что не будет ничего продавать таким образом, пока не будет решена проблема экологии.

Большинство NFT-токенов связаны с криптовалютой Ethereum. Её сервера, по оценкам экспертов, за год потребляют больше энергии, чем Исландия. Создатели Ethereum уже много лет обещают перейти на более экологичный способ работы, но пока безрезультатно.

Из-за негативного влияния на природу в сети поднялся скандал. Многие пользователи отказывались поддерживать такую систему и активно просили блокчейн-компании приостановить пагубное воздействие.

Сайт ArtStation тоже хотел внедрить технологию NFT. В результате тысячи художников в Твиттере стали угрожать тем, что удалят свои аккаунты с сайта. На фоне скандала представители ArtStation обратились к пользователям и авторам, сообщив, что в ближайшее время не будут использовать NFT-токены.

Сейчас многие блокчейн-компании работают над уменьшением воздействия своих систем на окружающую среду.

Мошенники. После ажиотажа вокруг продажи и покупки крипто-арта многие художники подверглись атакам, в результате которых их работам, находящимся в публичном доступе, незаконно присваивались NFT-коды. Таким образом мошенники присвоили много разных работ, грубо нарушив авторские права. После этого воры стали активно продавать украденные картины.

Это привело к созданию целого движения. Тысячи авторов просили друг друга остерегаться преступников, делились ссылками на их страницы и призывали блокировать тех, кто незаконно добавлял NFT к их твитам.

Продажа по фиксированной цене

Нажмите на поле Fixed Price, оно должно выделиться голубым цветом.

Далее заполните необходимые поля:

Продажа через аукцион

Нажмите на поле Timed Auction, оно должно выделиться голубым цветом.

Далее заполните необходимые поля:

  • Method — есть две разновидности аукциона: Sell to highest bidder (классический, когда покупатели делают ставки. NFT получает пользователь, предложивший наибольшую цену. Торги происходят в WETH), Sell with declining price (установленная вами цена продажи с каждым днем уменьшается до тех пор, пока не найдется покупатель. Торги происходят в ETH).
  • Starting Price — введите стартовую цену (дробное число через точку).
  • Duration — установите продолжительность торгов. Вы можете задать период от одного дня до 6 месяцев. Когда установленное время закончится, ваш NFT получит пользователь, предложивший наибольшую цену. Если не будет ставок, равных или превышающих начальную цену, аукцион завершится без продажи.
  • Include reserve price/Ending price — по желанию в этом поле вы можете указать цену, ниже которой ваша NFT продаваться не будет.
  • Нажмите на синюю кнопку Complete Listing. Здесь вам нужно будет подписать транзакцию в MetaMask и оплатить комиссию.

Работа с блокчейном Binance Smart Chain (BSC). Какой кошелек выбрать? :: РБК.Крипто

Созданный вами ордер на продажу появится в разделе Listings. Если вы захотите его отменить, кликните мышкой по ордеру и нажмите на кнопку Cancel.

Работа с блокчейном Binance Smart Chain (BSC). Какой кошелек выбрать? :: РБК.Крипто

Чуть ниже в разделе Offers вы сможете видеть все предложения от покупателей. Если вы захотите откликнуться на какое-то из них, просто нажмите на этот оффер и подтвердите продажу.

Работа с блокчейном Binance Smart Chain (BSC). Какой кошелек выбрать? :: РБК.Крипто

Резюме

Spring все же остается большим и не самым простым фреймворком, но это цена высокоуровневых абстракций, которые он предоставляет. И хотя знать все тонкости работы фреймворка в ежедневной разработке не нужно, знать, как он работает изнутри, все же, полезно.

Надеюсь, что эта статья помогла понять важность и ценность Spring именно как экосистемы и убрала немного “магичности” в происходящем, особенно при использовании Spring Boot. Мой совет — не бойтесь углубляться в недра фреймворка, читайте исходники и документацию, благо они у Spring-a почти эталонные, на мой взгляд.

Так же стоит отметить, что в готовящемся к выходу в сентябре Spring 5 появится несколько новых концепций, направленных на создание простых приложений, и понижение уровня “магии” (хотя, как мы выяснили, магии там особо и нет). Одна из концепций это Functional Bean Registration, которая позволяет регистрировать бины в контексте с помощью функций, или даже с помощью неплохого DSL на Kotlin (а Spring 5 добавит много хорошего для поддержки Kotlin).

Следующая, но еще более важная вещь, это комбинация Functional Web Framework и WebFlux (reactive web framework), которая позволит создавать веб-приложения вообще без зависимости на Spring MVC и запускать их без сервлет контейнеров.

Сканирование компонентов

Достаточно важный компонент Spring Framework, еще один подход к упрощению конфигурации приложения. Идея очень простая — если мы знаем, что наш класс MyCoolComponent должен регистрировать бин с именем myCoolComponent, зачем каждый раз писать @Bean MyCoolComponent myCoolComponent(dependencies…)

@Component
class MyCoolComponent {
    MyCoolComponent(dependencies...) {
    }
}

и разрешим сканирование компонентов — то Spring сам создаст и зарегистрирует бин с именем myCoolComponent, использовав конструктор класса и заинжектив туда все зависимости.

Со сканированием компонентов надо быть осторожным, т.к. по сути оно неявно меняет контекст приложения. Например, если у нас есть интерфейс и две реализации — и на каждом указан @Component, то при попытке заинжектить зависимость на интерфейс Spring бросит исключение, что есть два бина, которые удовлетворяют запросу.

Структура jwt

JWT состоит из трех частей: заголовок header, полезные данные payload и подпись signature. Давайте пройдемся по каждой из них.

Хедер JWT содержит информацию о том, как должна вычисляться JWT подпись. Хедер — это тоже JSON объект, который выглядит следующим образом:

header = { "alg": "HS256", "typ": "JWT"}

Поле typ не говорит нам ничего нового, только то, что это JSON Web Token. Интереснее здесь будет поле alg, которое определяет алгоритм хеширования. Он будет использоваться при создании подписи. HS256 — не что иное, как HMAC-SHA256, для его вычисления нужен лишь один секретный ключ (более подробно об этом в шаге 3).

Еще может использоваться другой алгоритм RS256 — в отличие от предыдущего, он является ассиметричным и создает два ключа: публичный и приватный. С помощью приватного ключа создается подпись, а с помощью публичного только лишь проверяется подлинность подписи, поэтому нам не нужно беспокоиться о его безопасности.

Условия и порядок регистрации бинов

Логика при регистрации бинов управляется набором @ConditionalOn* аннотаций. Можно указать, чтобы бин создавался при наличии класса в classpath (@ConditionalOnClass), наличии существующего бина (@ConditionalOnBean), отсуствии бина (@ConditionalOnMissingBean) и т.п.

Spring Boot активно использует эти аннотации чтобы оставаться как можно более незаметным и не перекрывать пользовательские конфигурации.

Шаг 3. создаем signature

Подпись вычисляется с использование следующего псевдо-кода:

const SECRET_KEY = 'cAtwa1kkEy'
const unsignedToken = base64urlEncode(header)   '.'   base64urlEncode(payload)
const signature = HMAC-SHA256(unsignedToken, SECRET_KEY)

Алгоритм base64url кодирует хедер и payload, созданные на 1 и 2 шаге. Алгоритм соединяет закодированные строки через точку. Затем полученная строка хешируется алгоритмом, заданным в хедере на основе нашего секретного ключа.

// header eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
// payload eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ
// signature -xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM

Шаг 4. теперь объединим все три jwt компонента вместе

Теперь, когда у нас есть все три составляющих, мы можем создать наш JWT. Это довольно просто, мы соединяем все полученные элементы в строку через точку.

const token = encodeBase64Url(header)   '.'   encodeBase64Url(payload)   '.'   encodeBase64Url(signature)
// JWT Token
// eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM

Вы можете попробовать создать свой собственный JWT на сайте jwt.io.Вернемся к нашему примеру. Теперь сервер аутентификации может слать пользователю JWT.

Шаг 5. проверка jwt

В нашем простом примере из 3 участников мы используем JWT, который подписан с помощью HS256 алгоритма и только сервер аутентификации и сервер приложения знают секретный ключ. Сервер приложения получает секретный ключ от сервера аутентификации во время установки аутентификационных процессов.

Поскольку приложение знает секретный ключ, когда пользователь делает API-запрос с приложенным к нему токеном, приложение может выполнить тот же алгоритм подписывания к JWT, что в шаге 3. Приложение может потом проверить эту подпись, сравнивая ее со своей собственной, вычисленной хешированием.

Если подписи совпадают, значит JWT валидный, т.е. пришел от проверенного источника. Если подписи не совпадают, значит что-то пошло не так — возможно, это является признаком потенциальной атаки. Таким образом, проверяя JWT, приложение добавляет доверительный слой (a layer of trust) между собой и пользователем.

В заключение

Мы прошлись по тому, что такое JWT, как они создаются и как валидируются, каким образом они могут быть использованы для установления доверительных отношений между пользователем и приложением. Но это лишь кусочек пазла большой темы авторизации и обеспечения защиты вашего приложения. Мы рассмотрели лишь основы, но без них невозможно двигаться дальше.

Оцените статью
Huawei Devices
Добавить комментарий