<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Solidity Ru</title><generator>teletype.in</generator><description><![CDATA[заходи к нам в телеграмм https://t.me/Solidityru]]></description><image><url>https://img3.teletype.in/files/aa/c0/aac05399-8723-4c7e-b99a-ccc5e4e88402.png</url><title>Solidity Ru</title><link>https://teletype.in/@solidityru</link></image><link>https://teletype.in/@solidityru?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=solidityru</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/solidityru?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/solidityru?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Sat, 04 Apr 2026 09:40:06 GMT</pubDate><lastBuildDate>Sat, 04 Apr 2026 09:40:06 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@solidityru/6NI2XJeHNHt</guid><link>https://teletype.in/@solidityru/6NI2XJeHNHt?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=solidityru</link><comments>https://teletype.in/@solidityru/6NI2XJeHNHt?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=solidityru#comments</comments><dc:creator>solidityru</dc:creator><title>IDE</title><pubDate>Fri, 16 Sep 2022 14:59:51 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/c7/b3/c7b311d7-e83d-4c9b-a5a8-a4c49cbd1b96.png"></media:content><category>Step1</category><description><![CDATA[<img src="https://img2.teletype.in/files/15/ad/15ad96a8-95d1-4b08-964d-6e97b5903a2d.jpeg"></img>Интегрированная среда разработки]]></description><content:encoded><![CDATA[
  <figure id="rX0P" class="m_original">
    <img src="https://img2.teletype.in/files/15/ad/15ad96a8-95d1-4b08-964d-6e97b5903a2d.jpeg" width="1125" />
  </figure>
  <p id="wJvj">Интегрированная среда разработки</p>
  <p id="xF3Q">Интегрированная среда разработки, ИСP (англ. Integrated development environment — IDE), также единая среда разработки, ЕСР — комплекс программных средств, используемый программистами для разработки программного обеспечения и приложений.</p>
  <p id="bdXv">Первой задачей разработчика на его пути создания приложения является написание основной логики, которая обычно вводится в интегрированную среду разработки. Общая цель и главное преимущество IDE - повышение производительности разработчиков. IDE повышают производительность за счет сокращения времени настройки, увеличения скорости выполнения задач разработки, поддержания разработчиков в актуальном состоянии и стандартизации процесса разработки. Когда речь заходит о solidity, первая IDE, которая приходит на ум, - это Remix.</p>
  <p id="CgEw">Remix</p>
  <p id="FuQc">Remix, ранее известный как Browser-Solidity, представляет собой веб-среду IDE, специально предназначенную для solidity и среды разработки Ethereum.</p>
  <p id="orTC">Плюсы:</p>
  <p id="ZRnK">• Скомпилируйте код с использованием последних версий компилятора</p>
  <p id="QuNg">• Развертывание и запуск смарт-контракта в настраиваемых средах, таких как виртуальная машина JavaScript или внедренный Web3.js поставщик услуг.</p>
  <p id="59IG">• Позволяет импортировать код из GitHub и Swarm</p>
  <p id="3ifM">Минусы:</p>
  <p id="p2RW">• Трудно понять новичкам</p>
  <p id="hkPx">ETHFiddle</p>
  <p id="NNpd">Помимо Remix, есть еще одна браузерная среда IDE, которая отлично подходит, но для других целей. Этот называется Ethfiddle и отлично подходит для представления кода. В то время как remix обеспечивает гибкость тестирования нашего кода в различных сетях и средах, ethfiddle предназначен для совместного использования вашего кода в презентации благодаря своим простым функциям встраивания.</p>
  <p id="VyG0">Плюсы:</p>
  <p id="iUFI">• Простота встраивания и обмена функциями</p>
  <p id="nDDB">Минусы:</p>
  <p id="1jx3">• Медленная и не такие многофункциональная, как Remix</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@solidityru/eXpIeXa29s9</guid><link>https://teletype.in/@solidityru/eXpIeXa29s9?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=solidityru</link><comments>https://teletype.in/@solidityru/eXpIeXa29s9?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=solidityru#comments</comments><dc:creator>solidityru</dc:creator><title>Package Managers</title><pubDate>Mon, 05 Sep 2022 08:24:37 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/5b/ca/5bcaf884-4c2c-40f3-b9a0-35ccedd58d56.png"></media:content><category>Step2</category><description><![CDATA[<img src="https://img4.teletype.in/files/31/b0/31b021df-02bb-4213-9be4-985a5fa4cd4e.jpeg"></img>Node.js – один из самых популярных языков программирования, раскачивающий индустрию разработки программного обеспечения во всем мире.]]></description><content:encoded><![CDATA[
  <figure id="Gl5i" class="m_original">
    <img src="https://img4.teletype.in/files/31/b0/31b021df-02bb-4213-9be4-985a5fa4cd4e.jpeg" width="1125" />
  </figure>
  <p id="PCrk">Node.js – один из самых популярных языков программирования, раскачивающий индустрию разработки программного обеспечения во всем мире.</p>
  <p id="AX6N">При разработке и использовании приложений Node.js одним из распространенных программ, на которые разработчики и обычные пользователи всегда будут полагаться, является менеджер пакетов (Package Managers).</p>
  <p id="tpjf">Менеджер пакетов Node.js взаимодействует с онлайн-репозиториями пакетов (которые содержат библиотеки, приложения и связанные с ними пакеты Node.js) и помогает во многих отношениях, включая установку пакетов и управление зависимостями.</p>
  <p id="puKJ">Некоторые менеджеры пакетов также имеют компоненты управления проектами.</p>
  <p id="MWF1">Например, если вы пишете веб-приложение и понимаете, что в общедоступном репозитории уже существует бесплатная внешняя библиотека, реализующая определенные функции в вашем приложении, вы можете использовать менеджер пакетов, чтобы установить его в своей системе в каталоге приложений и интегрировать в него. это с вашим приложением.</p>
  <p id="uGIQ">Менеджер пакетов также помогает указать библиотеку как зависимость для вашего приложения, так что любая система, в которой установлено приложение, будет также установлена ​​библиотека, чтобы приложение работало должным образом.</p>
  <p id="UY2D">Давайте рассмотрим лучшие менеджеры пакетов Node.js:</p>
  <p id="gQxi">1. npm</p>
  <p id="vs0a">npm – это сочетание многих вещей – менеджер пакетов Node, реестр npm и клиент командной строки npm.</p>
  <p id="jR10">Во-первых, npm – это кроссплатформенный менеджер пакетов Node.js, который был разработан для того, чтобы помочь разработчикам JavaScript легко делиться своим кодом в виде пакетов.</p>
  <p id="Aa1P">Для установки и публикации пакетов разработчики используют клиент командной строки с именем npm, который также используется для управления версиями и зависимостями.</p>
  <p id="KU8X">npm также является безопасным онлайн-репозиторием для публикации проектов Node.js с открытым исходным кодом, таких как библиотеки и приложения.</p>
  <p id="Oljb">Это один из самых популярных и крупнейших реестров программного обеспечения с открытым исходным кодом в Интернете.</p>
  <p id="ofDx">Вы можете использовать его бесплатно, так как есть опция, которая позволяет вам создавать публичные пакеты, публиковать обновления, проверять ваши зависимости и т.д.Также есть два платных варианта – npm Pro, для получения преимуществ (напр. Частные репозитории) и npm Enterprise, который позволяет им разрабатывать внутренние пакеты, которые не являются общедоступными.</p>
  <p id="fIYE">Клиент командной строки npm распространяется с пакетом Node.js, это означает, что когда вы устанавливаете Node.js в вашей системе Linux, вы также автоматически устанавливаете npm.</p>
  <p id="yzl3">Интересно, что npm используется для установки всех других менеджеров пакетов Node.js, описанных ниже.</p>
  <p id="htQy">npm также поддерживает безопасность JavaScript, интегрируя npm со сторонними инструментами, такими как системы CI / CD (Continuous Integration / ContinuousDelivery) и многое другое.</p>
  <p id="inFj">2. Yarn</p>
  <p id="fCCB">Yarn - это система упаковки программного обеспечения, разработанная в 2016 году Facebook для Node.js. Yarn, являющийся альтернативой менеджеру пакетов npm, был создан в результате совместной работы Facebook, Exponent (ныне Expo.dev), Google и Tilde(компании, стоящей за Ember.js) для решения проблем согласованности, безопасности и производительности с большими кодовыми базами.</p>
  <p id="gm0U">Сравнение с npm:</p>
  <p id="OfP8">• Yarn может устанавливать пакеты из локального кэша.</p>
  <p id="XGY5">• Yarn сильно связывает версии пакета.</p>
  <p id="ACJf">• Yarn использует контрольную сумму для обеспечения целостности данных, в то время как npm использует SHA-512 для проверки целостности данных загружаемых пакетов.</p>
  <p id="g5JM">• Yarn устанавливает пакеты параллельно, в то время как npm устанавливает по одному пакету за раз.</p>
  <p id="q52r">3. pnpm</p>
  <p id="2p9J">pnpm – это быстрый, эффективный с точки зрения дискового пространства менеджер пакетов с открытым исходным кодом.</p>
  <p id="uF1N">Он кроссплатформенный, работает на Linux, Windows и macOS.</p>
  <p id="UWRP">В отличие от npm и yarn, которые создают плоский каталог node_modules, pnpm работает немного иначе: он создает неплоский макет node_modules, который использует символические ссылки для создания вложенной структуры зависимостей.</p>
  <p id="ZupQ">Файлы внутри node_modules связаны из единого адресно-ориентированного репозитория.</p>
  <p id="n14S">Этот подход эффективен тем, что позволяет экономить гигабайты дискового пространства.</p>
  <p id="Ejw7">Важно отметить, что pnpm может легко использоваться в различных приложениях CI, таких как Travis, Semaphore, AppVeypr и Sail CI. И вы можете настроить свой проект так, чтобы другие пользователи могли использовать только pnpm, но не другие менеджеры пакетов Node.js, описанные выше, например, когда кто-то пытается запустить «npm install» или «yarn install».</p>
  <p id="thzj">pnpm также поддерживает алиасы, которые позволяют устанавливать пакеты с пользовательскими именами, завершение табуляции в командной строке, и использует файл блокировки pnpm-lock.yaml.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@solidityru/AdHRtYvkEy8</guid><link>https://teletype.in/@solidityru/AdHRtYvkEy8?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=solidityru</link><comments>https://teletype.in/@solidityru/AdHRtYvkEy8?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=solidityru#comments</comments><dc:creator>solidityru</dc:creator><title>ERC-20/721</title><pubDate>Sat, 30 Jul 2022 07:36:22 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/ea/22/ea22a99d-84b3-4607-9311-1ffdb175d227.png"></media:content><category>Step1</category><description><![CDATA[<img src="https://img1.teletype.in/files/c7/45/c74588aa-7285-4c53-ab8b-f9b5f4aeeaba.jpeg"></img>Запуск Ethereum в 2015 ознаменовал начало новой эры для блокчейна.
До этого времени полезность блокчейна была ограничена криптовалютами, Ethereum  же открыл множество возможностей с помощью
новой технологии смарт-контрактов.
Все токены работают по одному стандарту, что позволяет им работать на блокчейне Ethereum.
ERC 20 — один из наиболее широко используемых стандартов
для смарт-контрактов на платформе Ethereum.  Тот факт, что
почти все токены Ethereum выпущены по одному стандарту,
приносит огромные преимущества пользователям экосистемы
Ethereum.  Это означает, что токены ERC 20 совместимы друг с
другом и с любым поддерживаемым контрактом, биржей, рынком
или кошельком. Стандартизация делает токены удобными и широкоиспользуемыми.]]></description><content:encoded><![CDATA[
  <figure id="AjmG" class="m_retina">
    <img src="https://img1.teletype.in/files/c7/45/c74588aa-7285-4c53-ab8b-f9b5f4aeeaba.jpeg" width="562.5" />
  </figure>
  <p id="f0lp">Запуск Ethereum в 2015 ознаменовал начало новой эры для блокчейна.<br />До этого времени полезность блокчейна была ограничена криптовалютами, Ethereum  же открыл множество возможностей с помощью<br />новой технологии смарт-контрактов.<br />Все токены работают по одному стандарту, что позволяет им работать на блокчейне Ethereum.<br />ERC 20 — один из наиболее широко используемых стандартов<br />для смарт-контрактов на платформе Ethereum.  Тот факт, что<br />почти все токены Ethereum выпущены по одному стандарту,<br />приносит огромные преимущества пользователям экосистемы<br />Ethereum.  Это означает, что токены ERC 20 совместимы друг с<br />другом и с любым поддерживаемым контрактом, биржей, рынком<br />или кошельком. Стандартизация делает токены удобными и широкоиспользуемыми.</p>
  <p id="gGNd">ERC-20 вводит стандарт для взаимозаменяемых токенов, другими словами, у них есть свойство, которое делает каждый токен точно таким же (по типу и значению), что и другой токен. Например, токен ERC-20 действует так же, как ETH, а это означает, что 1 токен всегда будет равен всем другим токенам. ERC-20 расшифровывается как Ethereum Request For Comments, число 20 – уникальный идентификатор, отличающий стандарт от других. ERC токены – это цифровые активы, разработанные, выпущенные и используемые точно так же, как биткоин, за исключением того, что они работают исключительно на блокчейне Ethereum. Эти токены в основном используют определенный смарт-контракт, который отслеживает транзакции этого токена.</p>
  <p id="tBTz">ERC-20 популярны не просто так, и вот несколько факторов, которые делают их интересными:</p>
  <p id="ypj5">Удобство. Токены ERC-20 просты и легки в использовании. Потому что это Ethereum смарт-контракты пишутся на языке программирования Solidity. Он похож на JavaScript. Кроме того, разработчики могут также кодировать смарт-контракты с помощью языка программирования Vyper, похожего на Python.<br />Гибкая настройка. В зависимости от бизнес-логики и взаимодействия пользователей токены ERC-20 можно настраивать. Возможно включить такие функции, как автоматическое пополнение газа для будущих транзакций, замораживание и размораживание токена, добавление в центральный монетный двор для изменения токенов в обращении и многое другое.<br />План разработки. Стандарт ERC-20 дает разработчикам ясный план, который позволяет им создавать новые токены без особых усилий.<br />Стандартизация токенов. Ethereum предоставляет характеристики токена, которые включают правила взаимодействия между различными токенами и правила покупки токенов. С помощью универсального стандарта пользователи могут переводить новые токены на кошелек и сразу же выставлять их на биржу.<br />Ликвидность. Если проекты, основанные на Ethereum, активны и взаимодействуют друг с другом, это привлекается больше проектов и пользователей в сеть Ethereum. Существует также такое решение, как Uniswap, конвертация токенов ERC-20 с ним стала еще проще.<br />Популярность и распространенность. ERC-20, как и его токены, узнаваемы на большинстве бирж и кошельков. Это происходит главным образом из-за универсального протокола, который может быть адаптирован для разнообразных обменов. Кроме того, его взаимозаменяемость делает его идеальным для торговых приложений.<br />Снижение уровня мошенничества. Все транзакции должны быть одобрены, а общее количество токенов упрощает процесс проверки, это гарантирует отсутствие дубликатов токенов в обращении.</p>
  <p id="b5Fl">Основные методы смарт-контракта ERC20 токена:<br />function name() public view returns (string) - присвоить название токена.<br />function symbol() public view returns (string) - присвоить символ токена.<br />function decimals() public view returns (uint8) - присвоить количество запятых токену.<br />function totalSupply() public view returns (uint256) - узнать максимальное количество токена.<br />function balanceOf(address _owner) public view returns (uint256 balance) - проверить баланс определенного адреса.<br />function transfer(address _to, uint256 _value) public returns (bool success) - сделать перевод токена с кошелька отправителя на кошелек получателя.<br />function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) - сделать перевод токена с одного кошелька на другой, если первый разрешил.<br />function approve(address _spender, uint256 _value) public returns (bool success) - разрешить контракту/адресу тратить определенное количество токенов.<br />function allowance(address _owner, address _spender) public view returns (uint256 remaining) - количество разрешенных к трате токенов.</p>
  <p id="1IJn"><br />Помимо ERC-20, существует еще несколько стандартов токенов ERC. Хотя они в чем-то схожи, у каждого из них определенная цель. Возьмем для примера ERC-721.</p>
  <p id="WBLj">Токены ERC-721 не являются взаимозаменяемыми. Это означает, что каждый токен уникален и редок, таким образом закрепляется его ценность. Функции также подчеркивают ценность токена. Например, Ethereum DApp(такие как CryptoKitties) ценится определенными лимитами, которые сохраняют стоимость. Этот тип токена помогает предотвратить подделки. Он также внушает больше доверия владельцу инвестиций.<br />Чтобы узнать о  ERC-721 стандарте или NFT </p>
  <p id="er8y">- оставайтесь подписанным на Solidity RU в телеграмм!<br /></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@solidityru/Hj1yoV0xM9f</guid><link>https://teletype.in/@solidityru/Hj1yoV0xM9f?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=solidityru</link><comments>https://teletype.in/@solidityru/Hj1yoV0xM9f?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=solidityru#comments</comments><dc:creator>solidityru</dc:creator><title>Smart contracts – фундамент блокчейн индустрии.</title><pubDate>Fri, 15 Jul 2022 07:20:54 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/e1/36/e136f734-454e-4367-bcdb-ff2c6267fca9.png"></media:content><category>Step1</category><description><![CDATA[<img src="https://img2.teletype.in/files/9e/1c/9e1c4aca-7444-495c-a39a-628517f92fda.jpeg"></img>Если ранее мы рассматривали вводные в блокчейн индустрию пункты, то сейчас мы будем разбираться с, не побоюсь этого слова, самой важной частью блокчейна – со смарт контрактами! Смарт-контракт имеет говорящее название – “умный контракт”. Это компьютерная программа, которая отслеживает и обеспечивает исполнение обязательств. Стороны прописывают в нем условия сделки и санкции за их невыполнение, ставят цифровые подписи. Умный контракт самостоятельно определяет, все ли исполнено, и принимает решение: завершить сделку и выдать требуемое (деньги, акции, недвижимость), наложить на участников штраф или пеню, закрыть доступ к активам. На данный момент смарт-контракты функционируют только внутри блокчейна, не имея полноценного доступа...]]></description><content:encoded><![CDATA[
  <figure id="Z5rg" class="m_retina">
    <img src="https://img2.teletype.in/files/9e/1c/9e1c4aca-7444-495c-a39a-628517f92fda.jpeg" width="562.5" />
  </figure>
  <p id="d2Be">Если ранее мы рассматривали вводные в блокчейн индустрию пункты, то сейчас мы будем разбираться с, не побоюсь этого слова, самой важной частью блокчейна – со смарт контрактами! <br /> Смарт-контракт имеет говорящее название – “умный контракт”. Это компьютерная программа, которая отслеживает и обеспечивает исполнение обязательств. Стороны прописывают в нем условия сделки и санкции за их невыполнение, ставят цифровые подписи. Умный контракт самостоятельно определяет, все ли исполнено, и принимает решение: завершить сделку и выдать требуемое (деньги, акции, недвижимость), наложить на участников штраф или пеню, закрыть доступ к активам. <br /><br /> На данный момент смарт-контракты функционируют только внутри блокчейна, не имея полноценного доступа к внешнему миру, потому их возможности во многом ограничены замкнутой системой блокчейна, но не смотря на это создаются сложнейшие системы, основанные именно на смарт-контрактах (dex, de-fi, dao, dapps и т.д.). </p>
  <p id="BQzY"> <strong>Несмотря на это, смарт-контракты немного интегрируются в наш мир:</strong></p>
  <p id="BC9K">Самый яркий пример — сделка Альфа-Банка, S7 Airlines и оператора авиатопливного рынка «Газпромнефть-Аэро» в 2018 году. Они заключили смарт-контракт на оплату топлива при заправке воздушных судов без предоплаты и банковских гарантий.</p>
  <p id="YU1S">В контракте была записана информация о стоимости и объёме топлива, необходимого для заправки самолетов. После запроса на заправку воздушного судна заявка отправлялась в Альфа-банк, где происходило резервирование суммы, необходимой для стандартной заправки одного самолета. Банк моментально подтверждал получение заявки, и заправка судна начиналась. </p>
  <p id="D08b">Средства списывались со счёта после окончания заправки, а необходимые документы отправлялись всем сторонам — участникам сделки.</p>
  <p id="hy5f">Более того, смарт-контракты внедряются и в другие сферы:</p>
  <p id="XkEU">Смарт-контракты в сфере кредитования</p>
  <p id="FtkC">Смарт-контракты в избирательных процессах</p>
  <p id="Femw">Смарт-контракты в сфере аренды</p>
  <p id="76JK">Смарт-контракты в азартных играх</p>
  <p id="hEpN">И это только малая часть того, где они могут реально использоваться!</p>
  <p id="kF5H"> <strong>Но как же создаются эти смарт контракты?</strong></p>
  <p id="vGzK">Смарт-контракты Ethereum разрабатываются на одном из языков, спроектированных для трансляции в байт-код виртуальной машины Ethereum — Solidity (похож на Си или JavaScript), Vyper и Serpent (похожи на Python), LLL (низкоуровневая версия Лисп), Mutan (основан на Go) .</p>
  <p id="jkfb">Для того, чтобы умные контракты могли существовать, требуются определенные условия:</p>
  <ol id="z5ao">
    <li id="KvhR">Использование широко распространенных методов электронной подписи на основе публичных и приватных ключей (асимметричное шифрование).</li>
    <li id="syrg">Существование открытых, децентрализованных и доверительных сторонам контракта баз данных для исполняемых транзакций, работа которых полностью исключает человеческий фактор. Как пример: блокчейн в Bitcoin.</li>
    <li id="KMwy">Децентрализация среды исполнения умного контракта. Как пример: Ethereum, Codius, Counterparty.</li>
    <li id="F4Zp">Достоверность источника цифровых данных. Как пример: корневые центры сертификации SSL в базах современных интернет-браузеров</li>
  </ol>
  <p id="8YJG">Знание языка solidity и понимание принципов блокчейна позволит вам создавать смарт-контракты. А получив достаточно практики вы сможете устроиться востребованным блокчейн разработчиком.</p>
  <p id="ZWc1">Изучить Solidity вы можете используя эти ресурсы:<br /> <a href="https://docs.microsoft.com/ru-ru/learn/modules/blockchain-learning-solidity/" target="_blank"><strong>https://docs.microsoft.com/ru-ru/learn/modules/blockchain-learning-solidity/</strong></a> <a href="https://wizard.openzeppelin.com/" target="_blank"><strong>https://wizard.openzeppelin.com/</strong></a></p>
  <p id="qUeN"><a href="https://cryptozombies.io/ru/" target="_blank">https://cryptozombies.io/ru/</a></p>
  <p id="kVwD"><a href="https://www.youtube.com/c/IlyaBodrovKrukowski" target="_blank">https://www.youtube.com/c/IlyaBodrovKrukowski</a></p>
  <p id="GypQ"><a href="https://solidity-by-example.org/" target="_blank">https://solidity-by-example.org/</a></p>
  <p id="YaqW">Откуда была взята информация:<br /> <a href="https://secretmag.ru/enciklopediya/chto-takoe-stagnaciya-obyasnyaem-prostymi-slovami.htm" target="_blank">https://secretmag.ru/enciklopediya/chto-takoe-stagnaciya-obyasnyaem-prostymi-slovami.htm</a><br /> <a href="https://vc.ru/crypto/373518-chto-takoe-smart-kontrakty-na-blokcheyne" target="_blank">https://vc.ru/crypto/373518-chto-takoe-smart-kontrakty-na-blokcheyne</a> <br /> <a href="https://gb.ru/posts/solidity" target="_blank">https://gb.ru/posts/solidity</a> <br /> <a href="https://intellect.icu/solidity-yazyk-programmirovaniya-samovypolnyayushhikhsya-kontraktov-dlya-ethereum-osnovy-8782" target="_blank">https://intellect.icu/solidity-yazyk-programmirovaniya-samovypolnyayushhikhsya-kontraktov-dlya-ethereum-osnovy-8782</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@solidityru/lLuY4DjAlw6</guid><link>https://teletype.in/@solidityru/lLuY4DjAlw6?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=solidityru</link><comments>https://teletype.in/@solidityru/lLuY4DjAlw6?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=solidityru#comments</comments><dc:creator>solidityru</dc:creator><title>HTTP/HTTPS/RPC/REST</title><pubDate>Tue, 12 Jul 2022 11:48:56 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/ff/1b/ff1b8371-b510-4483-b77e-7a62e43c60f6.png"></media:content><category>Step1</category><description><![CDATA[<img src="https://img1.teletype.in/files/c0/2d/c02d2d99-e865-4f7c-9472-11c03ab6b728.jpeg"></img>HTTP/HTTPS/RPC/REST]]></description><content:encoded><![CDATA[
  <figure id="Qnsh" class="m_original">
    <img src="https://img1.teletype.in/files/c0/2d/c02d2d99-e865-4f7c-9472-11c03ab6b728.jpeg" width="1125" />
  </figure>
  <p id="NWYS">HTTP/HTTPS/RPC/REST</p>
  <p id="bje7">Мир стремится к совершенствованию технологий. Сначала был web1 – это одностраничные, статичные сайты. Они были примитивными и простыми, но это была новейшая технология. Далее web1 сменился на web2 – многостраничные сайты со сложным интерфейсом и необычными видами. Web2 стал неотъемлемой частью нашей жизни – он повсюду! Жизнь без него не кажется нам возможной, но мир меняется. Приходит новый вид интернета – web3.  Web1 использовал HTTP, web2 использует HTTPS, но что будет дальше? Чтобы понять что будет дальше, надо понять что есть сейчас. Именно об этом будет статья.</p>
  <p id="Adpf">HTTP / HTTPS:<br /> HTTPS и HTTP – два протокола, с помощью которых передается информация в Интернете. Они предназначены для передачи текстовых данных между клиентом и сервером, а главное различие между ними – в наличии и отсутствии шифрования передаваемых данных.</p>
  <p id="Mwrj">HTTP (от англ. HyperText Transfer Protocol) ― это протокол передачи данных в интернете. С его помощью браузер получает информацию от сервера и показывает пользователю контент. Это первый протокол, который создали для работы в веб-пространстве.</p>
  <p id="xfPK">HTTPS (от англ. HyperText Transfer Protocol Secure) ― защищённый протокол передачи данных в интернете. Это тот же протокол HTTP, но защищенный SSL-сертификатом.</p>
  <p id="hplN">На данный момент HTTP является устаревшим протоколом передачи данных, так как мир заботится о конфеденциальности личной информации пользователей. Протокол HTTP не обеспечивает защиту передаваемых данных — любая личная информация может быть перехвачена злоумышленниками, поэтому браузеры предупреждают об опасности страниц, использующих протокол HTTP</p>
  <p id="jlRZ">Преимущества HTTPS</p>
  <ol id="trLo">
    <li id="ScL0">Безопасность. Ни вам, ни посетителям сайта не надо беспокоится о личных данных: номер карты, паспортные данные, история браузера под защитой.</li>
    <li id="vB0L">Положительно влияет на SEO-оптимизацию. Поисковые системы больше доверяют сайтам, которые работают по защищенному соединению. Они выше ранжируются в поисковой выдаче, чем незащищенные сайты.</li>
    <li id="pAhM">Вызывает доверие у посетителей. Пользователям важно, чтобы их личная информация не попала к третьи лицам, поэтому чаще выбирают сайты, которые работают по HTTPS-протоколу.</li>
    <li id="ePH4">RPC / REST:</li>
    <li id="FqFx">API (Application Programming Interface — программный интерфейс приложения, или интерфейс программирования приложений) — специальный протокол для взаимодействия компьютерных программ, который позволяет использовать функции одного приложения внутри другого.</li>
    <li id="8ZWz">RPC:<br /> Удаленный вызов процедуры (Remote Procedure Call)  —  это спецификация, которая позволяет удаленно выполнять функцию в другом контексте. RPC расширяет понятие локального вызова процедуры, но помещает его в контекст HTTP API.<br /> Клиент вызывает удаленную процедуру, сериализует параметры и дополнительную информацию в сообщении и отправляет это сообщение на сервер. Получив сообщение, сервер десериализует его содержимое, выполняет запрошенную операцию и отправляет результат обратно клиенту. Стаб сервера и стаб клиента берут на себя сериализацию и десериализацию параметров.</li>
    <li id="8RDz">Простота и понятность взаимодействий. RPC использует GET для получения информации и POST для всего остального. Механика взаимодействия между сервером и клиентом сводится к вызову конечной точки и получению ответа.</li>
  </ol>
  <p id="ZdwF">Легкость добавления функций. Получив новое требование для API, мы можем легко добавить другую конечную точку, выполняющую это требование: 1) написать новую функцию и перебросить ее на конечную точку, и 2) теперь клиент может попасть в эту конечную точку и получить информацию, соответствующую заданному требованию.</p>
  <p id="k7qq">Высокая производительность. Легкие полезные нагрузки легко распределяются по сети, обеспечивая высокую производительность, что важно для общих серверов и параллельных вычислений, выполняемых в сетях рабочих станций. RPC способен оптимизировать сетевой уровень и сделать его очень эффективным в ситуации, когда различные сервисы каждый день обмениваются тоннами сообщений.</p>
  <ol id="H6KE">
    <li id="RVGx">REST API:</li>
  </ol>
  <p id="v0hj">Самый популярный подход на данный момент. Используется такими поставщиками API, как, например, Google, Twitter и GitHub.</p>
  <p id="UjSz">Когда мы говорим про REST, мы говорим про ресурсы. Ресурс — это объект, который может быть идентифицирован, назван, адресован или обработан в сети. REST представляет данные как ресурсы и использует стандартные HTTP-методы для представления транзакций создания, чтения, обновления и удаления этих ресурсов, то есть стандартные CRUD операции. По сути, все бизнес-сущности, которыми оперирует сервис, могут быть определены как ресурсы.</p>
  <p id="aNby">Основной принцип REST в том, что операции-функции резко ограничили и оставили только набор операций CRUD: Create — Read — Update — Delete. В этой модели все операции всегда применяются к некоторым данным. Имеющихся в CRUD операций достаточно для большей части приложений. Так как REST технологии в большинстве случаев подразумевают использование протокола HTTP, то команды CRUD отразились на команды HTTP (Post — Get — Put — Delete). Постоянно утверждается, что REST не обязательно привязан к HTTP. Но на практике повсеместно используется отражение сигнатур операций на синтаксис HTTP команд.</p>
  <p id="j6pB">Ссылки для изучения:</p>
  <p id="B2Qz"><a href="https://docs.microsoft.com/ru-ru/azure/rtos/netx-duo/netx-duo-web-http/chapter1" target="_blank">https://docs.microsoft.com/ru-ru/azure/rtos/netx-duo/netx-duo-web-http/chapter1</a><br /> <a href="https://journal.sweb.ru/article/v-chem-razlichiya-mezhdu-http-i-https" target="_blank">https://journal.sweb.ru/article/v-chem-razlichiya-mezhdu-http-i-https</a></p>
  <p id="ZxzE"><a href="https://habr.com/ru/post/264181/" target="_blank">https://habr.com/ru/post/264181/</a></p>
  <p id="uIFs"><a href="https://tproger.ru/articles/vybor-request-response-paradigmy-api-rest-rpc-ili-graphql/" target="_blank">https://tproger.ru/articles/vybor-request-response-paradigmy-api-rest-rpc-ili-graphql/</a> <br /> <a href="https://selectel.ru/blog/http-https/" target="_blank">https://selectel.ru/blog/http-https/</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@solidityru/DwksPoSVoDe</guid><link>https://teletype.in/@solidityru/DwksPoSVoDe?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=solidityru</link><comments>https://teletype.in/@solidityru/DwksPoSVoDe?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=solidityru#comments</comments><dc:creator>solidityru</dc:creator><title>Git hosting</title><pubDate>Fri, 08 Jul 2022 17:34:20 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/4f/50/4f50efac-7f6f-47cc-b23f-d9d6025668d5.png"></media:content><category>Step1</category><description><![CDATA[<img src="https://img4.teletype.in/files/b6/21/b62154b8-d906-450c-be2a-1badac814776.jpeg"></img>Git hosting: No longer a pain in the ass. В программировании очень важно сохранять проекты, особенно их работающие версии. Одной из самых крупных back up площадок является GitHub. Например, вы легко можете найти на гитхабе дистрибутивы линукса или даже целые сети, например ethereum. Но помимо таких масштабных проектов необходимо так же сохранять и малые программы. Ниже я расскажу историю из моего опыта. Однажды мне нужно было выпустить токен и расписать к нему web-часть, используя библиотеку web3. Я несколько дней мучался с решением этой задачи, но уже приблизился к её решению, а потом... БАЦ! Я сделал! Я тут же пошел к менеджеру, чтобы сказать, что мы готовы показать заказчику рабочую версию страницы, нооо.... Пока я говорил с ним...]]></description><content:encoded><![CDATA[
  <figure id="iFJC" class="m_original">
    <img src="https://img4.teletype.in/files/b6/21/b62154b8-d906-450c-be2a-1badac814776.jpeg" width="1125" />
  </figure>
  <p id="9SSO">Git hosting: No longer a pain in the ass.<br />В программировании очень важно сохранять проекты, особенно их работающие версии. Одной из самых крупных back up площадок является GitHub. Например, вы легко можете найти на гитхабе дистрибутивы линукса или даже целые сети, например ethereum. Но помимо таких масштабных проектов необходимо так же сохранять и малые программы. Ниже я расскажу историю из моего опыта.<br />Однажды мне нужно было выпустить токен и расписать к нему web-часть, используя библиотеку web3. Я несколько дней мучался с решением этой задачи, но уже приблизился к её решению, а потом... БАЦ! Я сделал!<br />Я тут же пошел к менеджеру, чтобы сказать, что мы готовы показать заказчику рабочую версию страницы, нооо.... Пока я говорил с ним... В моей деревне выключили электроэнергию... На 1.5 дня...<br />Шла презентация, решения не было, объяснить специфичный код менеджеру я тоже не мог и знаете что? - Я гений! Я не сделал back up, я не сохранил рабочую версию! В итоге, директор тянул презентацию как мог, но спустя 3 часа мы так и не смогли настроить сайт... Презентация прошла не самым лучшим образом, но я запомнил этот урок: ВСЕГДА! ВСЕГДА! ВСЕГДА! ДЕЛАЙ ЧЁРТОВЫ БЕКАПЫ!<br />“Git hosting: No longer a pain in the ass.” - именно такой слоган сформировался в сообществе программистов в 2005 и последующих годах, когда Git дополнился целым хостингом под названием GitHub. GitHub - крупнейший веб-сервис для хостинга IT-проектов и их совместной разработки. Веб-сервис основан на системе контроля версий Git. Слоган сервиса — «Social Coding» — на русский можно перевести как «Пишем код вместе». На футболках же печатают совсем другую фразу: «Fork you!» («Ветвить тебя!»). С одной стороны, она созвучна с англоязычным ругательством и намекает на неформальную атмосферу. С другой, эти слова напоминают, что создавать новые форки с Git можно легко и безболезненно — традиционно, к созданию веток разработчики проектов с открытым исходным кодом относятся негативно — а также созвучна названию одной из возможностей GitHub — очереди форков.<br />Независимо от выбранного языка или направления разработки, код, который пишет программист, остаётся обычным текстом, записанным в множестве файлов на диске. Эти файлы регулярно добавляются, удаляются и изменяются. Некоторые из них могут содержать сотни строчек кода, а другие тысячи. Файлы в тысячу строк кода — вполне нормальное явление в программировании. Пока проект состоит из пары-тройки файлов, его разработка не создаёт никаких сложностей. Программист пишет код, запускает его и радуется жизни. Клиент доволен, заказчик тоже. С ростом кодовой базы появляются определённые неудобства, которые затем превращаются в реальные проблемы:<br />• Как не потерять файлы с исходным кодом?<br />• Как защититься от случайных исправлений и удалений?<br />• Как отменить изменения, если они оказались некорректными?<br />• Как одновременно поддерживать рабочую версию и разработку новой? • Как сохранить рабочую версию кода?<br />Эти проблемы очень остры в разработке приложений, но... Все эти задачи решает git. Именно поэтому умение работать с ним, знание его является обязательным при трудоустройстве в 99% компаний. Но вопрос: как его изучить? Какие команды необходимо знать? Ниже я оставлю полезные ссылки для изучения git, а так же оставлю основные команды.<br />Ссылки для изучения:</p>
  <p id="JkvP">https://openbase.com/js/simple-git https://docs.github.com/en https://git-scm.com/doc<br />Основные команды:<br />git config --global user.name username - ввести имя юзера (из гита)<br />git config --global user.email ...gmail.com - задать почту юзера (из гита)<br />git init - иницилизировать гит-проект<br />git remote add origin https://github.com/repository.git - добавить проект, созданный на гитхабе git add . - добавляет все обновлённые файлы в коммит<br />git commit -m &#x27;description&#x27; - создаёт описание для коммита<br />git pull - получить изменения других пользователей репозитория<br />git push -u origin master (пишется 1 раз после создания проекта) - закидывает комит на гитхаб далее просто git push<br />git clone https://github.com/... - клонировать репозиторий</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@solidityru/x_E7Uy0PsAk</guid><link>https://teletype.in/@solidityru/x_E7Uy0PsAk?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=solidityru</link><comments>https://teletype.in/@solidityru/x_E7Uy0PsAk?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=solidityru#comments</comments><dc:creator>solidityru</dc:creator><title>JavaScript</title><pubDate>Mon, 04 Jul 2022 09:03:48 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/0a/d8/0ad87e1d-c15f-443f-a6a0-108e54316e95.png"></media:content><category>Step1</category><description><![CDATA[<img src="https://img4.teletype.in/files/36/cc/36cc6939-fe5f-4224-b46e-e194a26981d1.jpeg"></img>JavaScript – язык программирования, который всегда был востребован в области фронтенд разработки. Ни одно web 2.0 приложение не могло существовать без JS. Он заставляет картинки двигаться, оживать анимации. Несмотря на это, у языка будто не было будущего. Тогда появился Node.js. Node.js – это программная платформа, основанная на движке V8, превращающая JavaScript из узкоспециализированного языка в язык общего назначения. С его появлением, JS стал использоваться в разработке backend части. Конечно, он уступает многим backend языкам программирования, но, всё же, идеально подходит для решения многих задач. Казалось бы – это весь потолок, но нет! Наступает эра web 3.0. Новейшая технология человечества! Web 3.0 — это грядущее третье...]]></description><content:encoded><![CDATA[
  <section style="background-color:hsl(hsl(0, 0%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="P7iL" class="m_original">
      <img src="https://img4.teletype.in/files/36/cc/36cc6939-fe5f-4224-b46e-e194a26981d1.jpeg" width="1125" />
    </figure>
  </section>
  <p id="4zah">JavaScript – язык программирования, который всегда был востребован в области фронтенд разработки. Ни одно web 2.0 приложение не могло существовать без JS. Он заставляет картинки двигаться, оживать анимации. Несмотря на это, у языка будто не было будущего.<br />Тогда появился Node.js. Node.js – это программная платформа, основанная на движке V8, превращающая JavaScript из узкоспециализированного языка в язык общего назначения. С его появлением, JS стал использоваться в разработке backend части. Конечно, он уступает многим backend языкам программирования, но, всё же, идеально подходит для решения многих задач. Казалось бы – это весь потолок, но нет!<br />Наступает эра web 3.0. Новейшая технология человечества! Web 3.0 — это грядущее третье поколение Интернета, в котором веб-сайты и приложения смогут обрабатывать информацию почти как человек, с помощью таких технологий, как машинное обучение (ML), большие данные, технологии децентрализованного реестра (DLT) и др. Первоначально изобретатель Всемирной паутины Тим Бернерс-Ли называл Web 3.0 семантической паутиной, а фокус технологии был сосредоточен на создании более автономного, интеллектуального и открытого Интернета. Но будет ли в этом интернете место для JavaScript?<br />Как ни странно, на данный момент JavaScript один из самых востребованных языков в области блокчейна. Разработчики, знающие теорию блокчейна, работающие с библиотеками web3.js и ethers.js на рынке блокчейна требуются постоянно. Данные библиотеки могут производить всевозможные действия, обращения со смарт-контрактами. Именно они, на данный момент, дают языку третье дыхание, новую жизнь в новом направлении,в новом поколении интернета!<br />Знание JS приближает вас к профессии блокчейн разработчика.<br />Но что делать, если вы хотите двигаться в этом направлении, но не знаете с чего начать? Конечно же изучать JavaScript!<br />Я изучил базу JS за неделю по видео, ссылки на которые я прикреплю. Так же прикреплю другие полезные ресурсы, речь о которых шла в этом посте!<br />https://learn.javascript.ru – Полезный учебник по jJS (почти документация) https://www.youtube.com/watch?v=Bluxbh9CaQ0 – Курс Владилена Минина на 6 часов https://www.youtube.com/watch?v=CxgOKJh4zWE – Курс Богдана Сташчука на 11 часов. https://web3js.readthedocs.io/en/v1.7.4/ - web3.js documentation<br />https://docs.ethers.io/v5/ - ethers.js documentation</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@solidityru/C-Htenie-kontrakta-05-09</guid><link>https://teletype.in/@solidityru/C-Htenie-kontrakta-05-09?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=solidityru</link><comments>https://teletype.in/@solidityru/C-Htenie-kontrakta-05-09?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=solidityru#comments</comments><dc:creator>solidityru</dc:creator><title>Чтение контракта</title><pubDate>Wed, 18 May 2022 12:38:37 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/1f/01/1f01f953-f2de-4485-bd0f-87b541502d0b.png"></media:content><description><![CDATA[<img src="https://img2.teletype.in/files/d9/07/d9078ff7-341d-4ef8-8455-24c7b28d54b8.jpeg"></img>Для того, чтобы получить информацию из функции определенного контракта вам нужно узнать 3 вещи.]]></description><content:encoded><![CDATA[
  <figure id="RK8n">
    <img src="https://img2.teletype.in/files/d9/07/d9078ff7-341d-4ef8-8455-24c7b28d54b8.jpeg" />
  </figure>
  <p id="iQ4m">Для того, чтобы получить информацию из функции определенного контракта вам нужно узнать 3 вещи.</p>
  <ol id="iYVb">
    <li id="AFZH">Адрес контракта</li>
    <li id="TYfX">Методанные контракта</li>
    <li id="V0OO">Название функции которую хотите прочесть.</li>
  </ol>
  <p id="Vmjb">Для подключения мы будем использовать JavaScript и подключаться к BSC testnet. создаем два файла</p>
  <ol id="JLIt">
    <li id="rUb5">ReadContract.js</li>
  </ol>
  <p id="XeeH">2. Meta.js</p>
  <p id="rwGa">ReadContract.js</p>
  <blockquote id="RYJ0">import meta from &quot;./Meta.js&quot;</blockquote>
  <blockquote id="tYMD">document.addEventListener(&quot;DOMContentLoaded&quot;, () =&gt; {</blockquote>
  <blockquote id="yAM0">document.getElementById(&quot;<strong>Название кнопки</strong>&quot;).addEventListener(&quot;click&quot;, async () =&gt; {</blockquote>
  <blockquote id="KIro">if (typeof web3 !== &#x27;undefined&#x27;) {</blockquote>
  <blockquote id="NTnm">web3 = new Web3(web3.currentProvider);</blockquote>
  <blockquote id="Bq7Y">} else {web3 = new Web3(new Web3.providers.HttpProvider(&quot;https://bsc-dataseed1.binance.org:443&quot;));</blockquote>
  <blockquote id="n0vg">}</blockquote>
  <blockquote id="0rlR">const contractAddress = &#x27;<strong>Адрес контракта</strong>&#x27;; /////////</blockquote>
  <blockquote id="LjMj">const contract = new web3.eth.Contract(meta,contractAddress)</blockquote>
  <blockquote id="p8bC">const _Read = await contract.methods.<strong>Название функции</strong> ().call()</blockquote>
  <blockquote id="zD75">console.log(_Read)</blockquote>
  <blockquote id="LrcH">})</blockquote>
  <p id="Szqd">Meta.js</p>
  <blockquote id="CbQz">export default <strong>Методанные контракта</strong></blockquote>
  <p id="2nIa">Где взять методанные контракта ?<br />Переходим в BSCSCAN по номеру контракта <br />Переходим в контракт и листаем до контракт API <br />Нажимаем Экспорт API , а далее Формат RAW/TEXT</p>
  <figure id="FLt2">
    <img src="https://img3.teletype.in/files/6f/8d/6f8d4517-ad8b-4754-9a51-756d300fa4e0.jpeg" />
  </figure>
  <p id="JXHh">Все что откроется копируем и вставляем в Meta.js после команды export default</p>
  <p id="ect1">Намерено упущен HTML , но с этим думаю вы разберетесь )</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@solidityru/Deploing-ERC-20-tokena-s-pomoshchyu-Hard-Hat-12-14</guid><link>https://teletype.in/@solidityru/Deploing-ERC-20-tokena-s-pomoshchyu-Hard-Hat-12-14?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=solidityru</link><comments>https://teletype.in/@solidityru/Deploing-ERC-20-tokena-s-pomoshchyu-Hard-Hat-12-14?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=solidityru#comments</comments><dc:creator>solidityru</dc:creator><title>Деплоинг ERC20 токена с помощью HardHat</title><pubDate>Wed, 18 May 2022 12:40:00 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/68/b2/68b26c36-78a3-4654-aa82-fda2c94fa7fe.png"></media:content><description><![CDATA[<img src="https://img4.teletype.in/files/f4/8f/f48f6152-cda9-44cb-ace0-dc2e0cf5136e.jpeg"></img>В этой статье задиплоим и автоматически опубликуем код ERC20 токена]]></description><content:encoded><![CDATA[
  <figure id="02XO">
    <img src="https://img4.teletype.in/files/f4/8f/f48f6152-cda9-44cb-ace0-dc2e0cf5136e.jpeg" />
  </figure>
  <p id="UpuE">В этой статье задиплоим и автоматически опубликуем код ERC20 токена</p>
  <ol id="4Tmq">
    <li id="9CoB">Для работы потребуется Node.js. <a href="https://nodejs.org/en/download/" target="_blank">Скачайте</a> его если его нет .</li>
  </ol>
  <p id="Ku2L">Открываем терминал вписываем</p>
  <pre id="KgfA">   
mkdir hardhat-tutorial
cd hardhat-tutorial
npm init --yes
npm install --save-dev hardhat
</pre>
  <p id="aQjJ">hardhat-tutorial в данном случае имя папки в которой будет храниться наш токен. Называем так как считаем нужным.</p>
  <p id="WSHm">2. После загрузки заходим в папку которую мы создали .</p>
  <blockquote id="dfT2">Нам потребуются проверять наличие папок команда -</blockquote>
  <pre id="M2zg">ls
</pre>
  <blockquote id="hzWW">Открытие папок команда -</blockquote>
  <pre id="igRL">cd имя_папки
</pre>
  <p id="8nHJ">Прописываем:</p>
  <pre id="j7AS">npx hardhat
</pre>
  <p id="Nm2x">Откроется следующее:</p>
  <pre id="NmGr">$ npx hardhat
888    888                      888 888               888
888    888                      888 888               888
888    888                      888 888               888
8888888888  8888b.  888d888 .d88888 88888b.   8888b.  888888
888    888     &quot;88b 888P&quot;  d88&quot; 888 888 &quot;88b     &quot;88b 888
888    888 .d888888 888    888  888 888  888 .d888888 888
888    888 888  888 888    Y88b 888 888  888 888  888 Y88b.
888    888 &quot;Y888888 888     &quot;Y88888 888  888 &quot;Y888888  &quot;Y888

Welcome to Hardhat v2.0.0

? What do you want to do? …
  Create a sample project
❯ Create an empty hardhat.config.js
  Quit
</pre>
  <p id="QXg4">Мне нужно создать обычный проект поэтому Create a sample project</p>
  <p id="Q5lK">Отвечаем на пару: Выбор корневой папки и тд.</p>
  <p id="RQuJ">Дожидаемся загрузки.</p>
  <p id="KMs4">3. В папке с токеном открываем папку Hardhad.config.js</p>
  <p id="VyTp">Прописываем:</p>
  <pre id="7Brz">vim hardhat.config.js
</pre>
  <p id="t3hZ">Откроется пустой файл , в нем прописываем:</p>
  <p id="fR4T">require(&quot;@nomiclabs/hardhat-waffle&quot;);</p>
  <p id="lBWo">require(&quot;@nomiclabs/hardhat-etherscan&quot;);</p>
  <p id="mf49">task(&quot;accounts&quot;, &quot;Prints the list of accounts&quot;, async (taskArgs, hre) =&gt; {</p>
  <p id="COTl">const accounts = await hre.ethers.getSigners();</p>
  <p id="8Zgy">for (const account of accounts) {</p>
  <p id="C0J4">console.log(account.address);</p>
  <p id="7uBC">}</p>
  <p id="s2sk">});</p>
  <p id="leSB">module.exports = {</p>
  <p id="VbI6">defaultNetwork: &quot;ropsten&quot;,</p>
  <p id="Px2M">networks: {</p>
  <p id="93U3">hardhat: {</p>
  <p id="vRlg">},</p>
  <p id="P2HJ">ropsten: {</p>
  <p id="HQPe">url: &quot;https://eth-ropsten.alchemyapi.io/сдесь тво ссылка&quot;,</p>
  <p id="omkj">accounts: [&quot;секретный ключ кашелька ( первый кашелек будет диплоить контракт) &quot;,&quot;секретный ключ &quot;,&quot;секретный ключ&quot;]</p>
  <p id="u2XV">}</p>
  <p id="hZyv">},</p>
  <p id="AtSY">solidity: &quot;0.8.4&quot;,</p>
  <p id="O99a">etherscan: {</p>
  <p id="5sNB">apiKey:&quot;код etherscan&quot;</p>
  <p id="T64r">}</p>
  <p id="Ooha">};</p>
  <p id="eTl2">4. Создаем скрипт который задиплоит наш контракт. В той же папочке с токеном открываем папку scripts. Создаем в ней файл deploy.js</p>
  <pre id="ApMe">vim deploy.js
</pre>
  <p id="1OZS">В файле прописываем</p>
  <p id="F8B9">async function main() {</p>
  <p id="6DWq">const [deployer] = await ethers.getSigners();</p>
  <p id="qk78">console.log(&quot;Deploying contracts with the account:&quot;, deployer.address);</p>
  <p id="ZGG4">console.log(&quot;Account balance:&quot;, (await deployer.getBalance()).toString());</p>
  <blockquote id="ylrW">//У меня контракт назывался AuraToken вам нужно заменить на свой.</blockquote>
  <p id="rZoY">const AuraToken = await ethers.getContractFactory(&quot;AuraToken&quot;);</p>
  <p id="WqJN">const auraToken = await AuraToken.deploy();</p>
  <p id="jzXe">console.log(&quot;AuraToken address:&quot;, auraToken.address);</p>
  <p id="9ZcS">}</p>
  <p id="a9If">main()</p>
  <p id="K6et">.then(() =&gt; process.exit(0))</p>
  <p id="2G06">.catch((error) =&gt; {</p>
  <p id="3DoC">console.error(error);</p>
  <p id="01aa">process.exit(1);</p>
  <p id="gfxe">});</p>
  <p id="9icH">5. Пишем сам контракт erc-20 токена <br />П папке нашего токена есть папка contracts в ней создаем файл контракта к примеру я свой назову AuraToken.sol</p>
  <pre id="6HBk">vim AuraToken.sol 
</pre>
  <blockquote id="55oe">прописываем erc-20 токен в созданый файл . <br />Ниже приведен код меняем нужные значения и сохраняем.</blockquote>
  <p id="1VnU">//// SPDX-License-Identifier: Unlicensed</p>
  <p id="rvAF">pragma solidity 0.8.4;</p>
  <p id="aw1q">contract AuraToken {</p>
  <p id="SnJA">string private _name = &quot;AuraToken&quot;;</p>
  <p id="uHjv">string private _symbol = &quot;AR&quot;;</p>
  <p id="NDvD">uint8 private _decimals = 2;</p>
  <p id="iXzG">uint256 private _totalSupply=0;</p>
  <p id="8KDC">uint256 private _MAX_SUPPLY = 21000 *10**_decimals;</p>
  <p id="Ay12">uint256 public price= 1100000000000;</p>
  <p id="Lik3">address payable owner;</p>
  <p id="VK4g">mapping (address =&gt; uint256) private _balanceOf;</p>
  <p id="ksh6">mapping (address =&gt; mapping(address =&gt; uint256)) private _allowances;</p>
  <p id="e2kG">event Transfer(address indexed _from, address indexed _to, uint256 _value);</p>
  <p id="Tqak">event Approval (address indexed _owner, address indexed _spender, uint256 _value);</p>
  <p id="HIVm">event Buy(address indexed _buyer, uint256 _value);</p>
  <p id="cLUz">//проверка максимального количество которое можно выпустить</p>
  <p id="Gkxs">function MAX_SUPPLY () public view returns (uint256){</p>
  <p id="QeXP">return _MAX_SUPPLY;</p>
  <p id="Mslb">}</p>
  <p id="0Olo">//продажа токенов</p>
  <p id="4rkm">function buy() public payable {</p>
  <p id="mZM7">uint256 amount= (msg.value / price) * 10**_decimals;</p>
  <p id="rNw5">uint256 sum = _totalSupply + amount;</p>
  <p id="D2zu">require(sum&lt;=_MAX_SUPPLY,&quot;You cannot buy more than the maximum number of tokens is 21000 pieces&quot;); <br />_balanceOf[msg.sender] +=amount;</p>
  <p id="rMGX">_totalSupply += amount;</p>
  <p id="8j4W">emit Buy(msg.sender, amount);</p>
  <p id="WzkW">emit Transfer(address(0),msg.sender,amount);</p>
  <p id="XYpw">}</p>
  <p id="wmb1">// снять со счета</p>
  <p id="tKn3">function withdraw() public {</p>
  <p id="MSy5">owner.transfer(address(this).balance);</p>
  <p id="AaOd">}</p>
  <p id="ATlL">//разрушить</p>
  <p id="QHT5">function destroy() public {</p>
  <p id="NkC1">require(msg.sender ==owner, &quot;Only owner can call this function&quot;);</p>
  <p id="Dop6">selfdestruct(owner);</p>
  <p id="YYLE">}</p>
  <p id="cZxO">//позволяет прочесть имя</p>
  <p id="u7eJ">function name () public view returns (string memory){</p>
  <p id="9hNG">return _name;</p>
  <p id="NSnL">}</p>
  <p id="chnK">//позволяет прочесть тикер токена</p>
  <p id="aInx">function symbol() public view returns (string memory){</p>
  <p id="mHOI">return _symbol;</p>
  <p id="cgPf">}</p>
  <p id="PZXZ">//определяет количество знаков после запятой, в данном случает два знака</p>
  <p id="LPy7">function decimals() public view returns(uint8){</p>
  <p id="HkYl">return _decimals;</p>
  <p id="Md0w">}</p>
  <p id="qy6p">//количество токенов которое может быть выпущено</p>
  <p id="f2ir">function totalSupply() public view returns(uint256){</p>
  <p id="cYKx">return _totalSupply;</p>
  <p id="mC48">}</p>
  <p id="WNtL">//получение баланса пользователя</p>
  <p id="fScC">function balanceOf (address _owner) public view returns (uint256){</p>
  <p id="clPw">return _balanceOf[_owner];</p>
  <p id="dGkJ">}</p>
  <p id="fxJC">//передача токенов (кому и количества токенов)</p>
  <p id="bSL5">function transfer(address _to, uint256 _value) public returns (bool){</p>
  <p id="tlhH">_balanceOf[msg.sender] -= _value;</p>
  <p id="hQ8k">_balanceOf[_to] += _value;</p>
  <p id="40aQ">emit Transfer(msg.sender, _to, _value);</p>
  <p id="RSEV">return true;</p>
  <p id="yI6W">}</p>
  <p id="W7rM">//возможность доверить определенное количество токенов</p>
  <p id="XDti">function approve (address _spender, uint256 _value) public returns (bool){</p>
  <p id="yQJD">_allowances[msg.sender][_spender] = _value;</p>
  <p id="X4Qf">emit Approval (msg.sender,_spender, _value);</p>
  <p id="YbDn">return true;</p>
  <p id="wTdc">}</p>
  <p id="8pbY">function allowance (address _owner, address _spender) public view returns (uint256 remaining){</p>
  <p id="CKvO">return _allowances[_owner][_spender];</p>
  <p id="LURX">}</p>
  <p id="Dsv3">//передавать с определенного кошелька кем то (как трансфер но нужно проверять позволи ли переводить)</p>
  <p id="vGsI">function transferFrom (address _from, address _to, uint256 _value) public returns (bool){</p>
  <p id="zg9S">require(_allowances[_from][msg.sender]&gt;=_value, &quot;You are not allowed to spend this emount of token&quot;);</p>
  <p id="aPRn">_balanceOf[_from] -= _value;</p>
  <p id="UrIJ">_balanceOf[_to] += _value;</p>
  <p id="Pzbb">_allowances[_from][msg.sender] -= _value;</p>
  <p id="IRPO">emit Transfer (_from, _to, _value);</p>
  <p id="y7Gn">return true;</p>
  <p id="moWh">}</p>
  <p id="z9XR">}</p>
  <p id="S8aB">6. Устанавливаем библиотеку @nomiclabs/hardhat-etherscan для автоматической верификации кода на Etherscan.</p>
  <pre id="CcmE">npm install @nomiclabs/hardhat-etherscan
</pre>
  <p id="mEw7">Ожидаем загрузку.</p>
  <p id="n0ai">7. Диплоим контракт</p>
  <pre id="Zrap">npx hardhat deploy.js

</pre>
  <p id="VsOH">эту команду следует использовать из папки scripts либо прописать путь.</p>
  <pre id="xx6E">8. Верифицируем код 
npx hardhat verify &quot;адрес контракта&quot; 
</pre>
  <figure id="VYMM">
    <img src="https://img3.teletype.in/files/ae/e8/aee80ad6-3e73-4aaf-8e1e-a6a2acf1761b.jpeg" />
  </figure>

]]></content:encoded></item></channel></rss>