<?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>how_to_node</title><generator>teletype.in</generator><description><![CDATA[архив гайдов по нодам от @cyberomanov.]]></description><image><url>https://img4.teletype.in/files/3a/2a/3a2aafe6-1be5-4c91-9fe0-67b961cca6df.png</url><title>how_to_node</title><link>https://teletype.in/@cyberomanov</link></image><link>https://teletype.in/@cyberomanov?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/cyberomanov?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/cyberomanov?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Tue, 28 Apr 2026 10:55:08 GMT</pubDate><lastBuildDate>Tue, 28 Apr 2026 10:55:08 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@cyberomanov/quick-0-fees</guid><link>https://teletype.in/@cyberomanov/quick-0-fees?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov</link><comments>https://teletype.in/@cyberomanov/quick-0-fees?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov#comments</comments><dc:creator>cyberomanov</dc:creator><title>Транзакция с 0 fees /// v1.0</title><pubDate>Sat, 17 Dec 2022 11:53:14 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/b1/36/b136f9a9-04b6-4d1d-a473-fad4a93d293e.png"></media:content><category>Immortal Articles</category><description><![CDATA[<img src="https://imgix.ranker.com/list_img_v2/2478/2862478/original/2862478"></img>Отправляем транзакцию в cosmos-based сетях с нулём комиссии на примере Quicksilver.]]></description><content:encoded><![CDATA[
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="OOk2" class="m_original">
      <img src="https://imgix.ranker.com/list_img_v2/2478/2862478/original/2862478" width="937" />
    </figure>
  </section>
  <p id="mG23">Отправляем транзакцию в <em>cosmos-based</em> сетях с нулём комиссии на примере <strong>Quicksilver</strong>.</p>
  <hr />
  <p id="7BmN">Есть токены с генезиса, но они все залоченные, то есть нетрансферабельные.</p>
  <p id="S4JG">Как же оплатить транзакцию того же делегирования, если <strong>Keplr</strong> просит оплатить комиссию трансферабельными токенами, которых у нас попросту не может быть?</p>
  <p id="Bu3x">Гениальный мув от команды <strong>Quicksilver</strong>, похлопаем.</p>
  <p id="Khoq">Решение простое: добавить сеть в кеплер с кастомным рпц, нода которого принимает транзакции с <em>0 fees</em>.</p>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="cDTc" data-align="center"><strong>РЕШЕНИЕ ПРОБЛЕМЫ</strong></p>
  </section>
  <p id="uTQ1">Первым делом импортируем кошель в <strong>Keplr</strong> по мнемонике из тестнета.</p>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Zwy0">Если ваше расширение успело обновиться до <a href="https://github.com/chainapsis/keplr-wallet/releases/tag/v0.11.25" target="_blank">v0.11.25</a> (где подвезли нативную поддержку <strong>Quicksilver</strong> сети), то вам потребуется удалить экстеншн, затем скачать предыдущую версию, <a href="https://github.com/chainapsis/keplr-wallet/releases/tag/v0.11.24" target="_blank">v0.11.24</a>, и установить расширение из <strong>zip</strong>-архива.</p>
    <p id="rMUh">Разумеется, если у вас много импортированных кошельков, то можно воспользоваться другим браузером или другим профилем, чтобы не восстанавливать все кошельки заново.</p>
    <p id="zk8f">К сожалению, если расширение успело обновиться, то удалить дефолтную <strong>Quicksilver</strong> сеть не получится, нужна версия <strong>v0.11.24</strong> или ниже.</p>
  </section>
  <p id="cpCK">Теперь нам нужно добавить сеть <strong>quicksilver-1</strong> в <strong>Keplr</strong>, для этого воспользуемся <a href="https://docs.axelar.dev/resources/keplr#add-your-custom-network" target="_blank">тулзой от акселара</a>. Вставляем в поле конфиг нашего квиксильвера:</p>
  <pre id="k05k">{
    &quot;chainId&quot;: &quot;quicksilver-1&quot;,
    &quot;chainName&quot;: &quot;quicksilver-m&quot;,
    &quot;rpc&quot;: &quot;http://quick.cyberomanov.tech:11241&quot;,
    &quot;rest&quot;: &quot;https://quick.api.m.stavr.tech&quot;,
    &quot;bip44&quot;: {
        &quot;coinType&quot;: 118
    },
    &quot;coinType&quot;: 118,
    &quot;bech32Config&quot;: {
        &quot;bech32PrefixAccAddr&quot;: &quot;quick&quot;,
        &quot;bech32PrefixAccPub&quot;: &quot;quickpub&quot;,
        &quot;bech32PrefixValAddr&quot;: &quot;quickvaloper&quot;,
        &quot;bech32PrefixValPub&quot;: &quot;quickvaloperpub&quot;,
        &quot;bech32PrefixConsAddr&quot;: &quot;quickvalcons&quot;,
        &quot;bech32PrefixConsPub&quot;: &quot;quickvalconspub&quot;
    },
    &quot;currencies&quot;: [
        {
            &quot;coinDenom&quot;: &quot;uqck&quot;,
            &quot;coinMinimalDenom&quot;: &quot;uqck&quot;,
            &quot;coinDecimals&quot;: 6,
            &quot;coinGeckoId&quot;: &quot;unknown&quot;
        }
    ],
    &quot;feeCurrencies&quot;: [
        {
            &quot;coinDenom&quot;: &quot;uqck&quot;,
            &quot;coinMinimalDenom&quot;: &quot;uqck&quot;,
            &quot;coinDecimals&quot;: 6,
            &quot;coinGeckoId&quot;: &quot;unknown&quot;
        }
    ],
    &quot;stakeCurrency&quot;: {
        &quot;coinDenom&quot;: &quot;uqck&quot;,
        &quot;coinMinimalDenom&quot;: &quot;uqck&quot;,
        &quot;coinDecimals&quot;: 6,
        &quot;coinGeckoId&quot;: &quot;unknown&quot;
    },
    &quot;gasPriceStep&quot;: {
        &quot;low&quot;: 0,
        &quot;average&quot;: 0.025,
        &quot;high&quot;: 0.03
    },
    &quot;features&quot;: []
}</pre>
  <p id="btTM">И добавляем сеть в кеплер:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="xDe0" class="m_original">
      <img src="https://img2.teletype.in/files/57/fe/57fe7695-344b-4908-9dab-9b9bcd9e5bf4.png" width="1894" />
    </figure>
    <figure id="vBcM" class="m_custom">
      <img src="https://img3.teletype.in/files/29/3c/293cde38-a40d-4e21-b81a-887cd5d0572b.png" width="318.31858407079653" />
    </figure>
    <p id="vdHP">Не апрувим, а нажимаем <strong>Add chain as suggested:</strong></p>
    <figure id="v6TH" class="m_custom">
      <img src="https://img1.teletype.in/files/cb/c5/cbc5986c-2bcd-4bdf-9dc1-58f149201ba8.png" width="370.1153504880213" />
    </figure>
    <p id="WraS">А теперь апрувим. Если добавилась сеть <strong>Quicksilver</strong>, то удаляем её и начинаем заново процедуру. Нам нужна сеть <strong>quicksilver-m.</strong></p>
    <figure id="YqAH" class="m_original">
      <img src="https://img2.teletype.in/files/9d/83/9d8365db-6925-4191-9d10-e7521ea27bae.png" width="404" />
    </figure>
  </section>
  <p id="flEG">Супер, сеть добавлена. Теперь попробуем заделегировать наши нетрансферабельные токены с <em>0 fees</em>.</p>
  <p id="frrv">Переходим по <a href="https://explorer.stavr.tech/quicksilver-mainnet/staking" target="_blank">ссылке</a> и выбираем любого валидатора. Я показывать буду на своём, делегации приветствуются. Нажимаем <strong>Delegate</strong>:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="CyqO" class="m_custom">
      <img src="https://img4.teletype.in/files/f1/ab/f1ab31ec-ae74-4685-9b93-995f5d9f4a16.png" width="282.99999999999994" />
    </figure>
  </section>
  <p id="AaQf">Затем коннектим кошелёк:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="CtM5" class="m_custom">
      <img src="https://img4.teletype.in/files/77/17/7717ab62-f90d-479c-a354-2c3e74ab5d06.png" width="378.44705882352946" />
    </figure>
    <figure id="X2Cu" class="m_original">
      <img src="https://img2.teletype.in/files/df/97/df97bf3c-1464-46b4-8192-ae3c345d43f7.png" width="2428" />
    </figure>
    <figure id="IWJN" class="m_custom">
      <img src="https://img2.teletype.in/files/d8/99/d8996568-c183-4c6a-b9ec-55d3a946aa32.png" width="328" />
    </figure>
    <figure id="D1go" class="m_original">
      <img src="https://img4.teletype.in/files/fc/ed/fced200c-c209-44dc-8b9c-119f458f1b80.png" width="2334" />
    </figure>
    <figure id="7ZAX" class="m_original">
      <img src="https://img3.teletype.in/files/64/df/64dfaa07-c829-458c-a838-46335facec17.png" width="2418" />
    </figure>
    <figure id="5nD5" class="m_original">
      <img src="https://img4.teletype.in/files/be/10/be102932-4c62-48fb-a9ce-5498ca6f570c.png" width="982" />
    </figure>
  </section>
  <p id="Ozz1">Отлично, аккаунт добавлен. Теперь нужно вернуться на страницу с кнопкой <strong>Delegate</strong> и попытаться заделегировать с <em>0 fees</em>.</p>
  <p id="Z6IV">Обязательно открываем <strong>Advanced</strong> настройки и выставляем <strong>Fee - 0</strong>, <strong>Gas - 250k.</strong></p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="caFc" class="m_custom">
      <img src="https://img1.teletype.in/files/0f/56/0f56b8ef-ff67-47d5-bc02-de19a4ce2ed1.png" width="281" />
    </figure>
    <figure id="DRGm" class="m_custom">
      <img src="https://img2.teletype.in/files/56/71/56712319-9e82-4293-8d00-e1de974d1b12.png" width="434" />
    </figure>
    <figure id="DbH3" class="m_custom">
      <img src="https://img3.teletype.in/files/e0/78/e078cfff-316d-4da0-a59d-9a3f58e67fd2.png" width="297.05882352941177" />
    </figure>
  </section>
  <p id="HPPc"><strong>Обязательно</strong> выбираем <strong>Low</strong>:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="QX5E" class="m_custom">
      <img src="https://img1.teletype.in/files/0f/12/0f12f68d-8685-4818-a81b-05d789370ca5.png" width="301" />
    </figure>
    <figure id="Ihcs" class="m_custom">
      <img src="https://img3.teletype.in/files/e5/e0/e5e024c9-19fe-4523-98d9-762d5e144f8d.png" width="305" />
    </figure>
  </section>
  <p id="c5Md">Возможно, придётся подождать несколько минут, пока транзакция с <em>0 fees</em> (с меньшим приоритетом) долетит до блокчейна, но в итоге мы лутаем транзакцию с<em> 0 fees</em>.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="ieds" class="m_original">
      <img src="https://img3.teletype.in/files/a1/86/a186ccb6-91b1-47d6-951c-2dd1991c86c0.png" width="1706" />
    </figure>
  </section>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="sC41" data-align="center"><strong>БЛАГОДАРНОСТИ</strong></h3>
  </section>
  <p id="amQw">мамичу за то, что родила такого гения.</p>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="vYNR" data-align="center"><strong>ПОЛЕЗНЫЕ РЕСУРСЫ</strong></h3>
  </section>
  <p id="sU81"><a href="https://t.me/how_to_node" target="_blank">@how_to_node</a> - канал, где я выкладываю свои гайды.</p>
  <p id="4AAa"><a href="/WTF_resources">Полезные ресурсы</a>.</p>
  <p id="S63T"><a href="/WTF_donate">Крипто-кошельки автора гайда</a>.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@cyberomanov/bundlr</guid><link>https://teletype.in/@cyberomanov/bundlr?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov</link><comments>https://teletype.in/@cyberomanov/bundlr?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov#comments</comments><dc:creator>cyberomanov</dc:creator><title>Bundlr /// Testnet I</title><pubDate>Tue, 10 May 2022 09:59:03 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/ca/55/ca551f7e-05e5-4ba0-b412-c8f96409baf3.png"></media:content><category>Actual Events</category><description><![CDATA[<img src="https://miro.medium.com/max/1400/0*sCQrOBvLscvJvCaQ"></img>Изучаем Bundlr Network, Arweave и участвуем в первом невознаграждаемом тестнете.]]></description><content:encoded><![CDATA[
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="HIsc" class="m_original">
      <img src="https://miro.medium.com/max/1400/0*sCQrOBvLscvJvCaQ" width="1400" />
    </figure>
  </section>
  <p id="QWwJ">Изучаем <strong>Bundlr Network, Arweave</strong> и участвуем в первом<strong> невознаграждаемом </strong>тестнете<strong>.</strong></p>
  <section>
    <p id="u7Mi">Если вы не знаете, <strong>что такое нода</strong> — читаем <a href="/WTF_node">статью</a>. <br />Если вы не знаете, <strong>где арендовать сервер для ноды</strong> — читаем <a href="/WTF_server">статью</a>. <br />Если вы не знаете, <strong>как подключиться к серверу</strong> — читаем <a href="/WTF_MobaXterm">статью</a>. <br />Если вы всё знаете — открываем <strong>MobaXterm </strong>и создаём сессию.</p>
  </section>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="hq2j" data-align="center">СОДЕРЖАНИЕ</h3>
  </section>
  <ul id="FNwc">
    <li id="rTTX"><a href="#zuAz">Описание проекта</a>:</li>
    <ul id="cljH">
      <li id="Mtc9"><a href="#02d1">Введение в Bundlr Network</a>;</li>
      <li id="BqJn"><a href="#WCDi">Отличия в методике хранения данных между Arweave, IPFS и AWS</a>;</li>
      <li id="gChN"><a href="#P1vY">Зачем нужен Bundlr и как он работает</a>;</li>
      <li id="zjjs"><a href="#wzfn">Партнёры, бэкеры и активности</a>.</li>
    </ul>
    <li id="RFR5"><a href="#EG4a">Нода</a>:</li>
    <ul id="4phl">
      <li id="UQdp"><a href="#EG4a">Установка</a>;</li>
      <ul id="uysw">
        <li id="OpTj"><a href="#YhWC">Ванлайнер от AMB</a>;</li>
        <li id="ZGoa"><a href="#4VXt">Ручная установка</a>.</li>
      </ul>
    </ul>
    <ul id="j9di">
      <li id="v40i"><a href="#y85F">Полезные команды при работе с нодой</a>;</li>
      <li id="vKhT"><a href="#AAYf">Обновление</a>;</li>
      <li id="MfmU"><a href="#t1T9">Перенос и бэкап</a>: пригодится при переезде;</li>
      <li id="U0Mx"><a href="#zofL">Удаление ноды</a>: на будущее.</li>
    </ul>
    <li id="QOOQ"><a href="#sC41">Благодарности</a>.</li>
    <li id="YShM"><a href="#vYNR">Полезные ресурсы на каждый день</a>.</li>
  </ul>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="zuAz" data-align="center"><strong>ОПИСАНИЕ ПРОЕКТА</strong></h3>
    <p id="a1rv" data-align="right"><a href="#hq2j">Содержание</a></p>
  </section>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="02d1" data-align="center"><strong>Введение в Bundlr Network</strong></p>
  </section>
  <p id="img3"><strong>Bundlr</strong> - это layer 2 сеть над <strong>Arweave</strong>, которая позволяет записывать любые данные в децентрализованное хранилище в тысячи раз быстрее, дешевле и удобнее.</p>
  <p id="4c0a">В текущих реалиях довольно трудно представить себе информацию, которая никогда не была подвержена цензуре, редактированию, забыванию или утере.</p>
  <p id="FqHe">Возможно, вы уже хоронили фотографии и документы, забыв оплатить подписку на облако. Или ваш блог был навсегда заблокирован потому что ваши высказывания шли в разрез с ценностями компании.</p>
  <p id="lJGn">Если вы когда-нибудь сравнивали учебники истории в разных странах, вы знаете, что такое переписывание истории. Прикольно было бы иметь первоисточник - истину в первой инстанции, информацию и сведения, которые невозможно переписать, удалить, скрыть или потерять.</p>
  <p id="mTB8">В коллаборации с <strong>Arweave</strong>, <strong>Bundlr</strong> пытается построить удобный и быстрый децентрализованный архив данных, где информация хранится вечно и не может быть отредактирована.</p>
  <p id="bT80">Ключевые особенности в подходе <strong>Bundlr</strong> к хранению данных:</p>
  <ul id="jOfj">
    <li id="hxAu">Данные не хранятся в одном месте, где они подвержены взломам и вредоносным атакам;</li>
    <li id="Ppnw">Данные не принадлежат одному объекту, поэтому нет единого органа, который мог бы изменить данные или заблокировать вам доступ к ним;</li>
    <li id="NOHJ">Данные хранятся вечно, поэтому не могут быть потеряны;</li>
    <li id="9gHj">Данные, загруженные в <strong>Bundlr</strong>, доступны мгновенно и в любой момент времени;</li>
    <li id="1rRs">Инфраструктура проста и интуитивно понятна в своём использовании;</li>
    <li id="zNWw"><strong>Bundlr</strong> позволяет оплачивать комиссии за транзакции в <a href="https://docs.bundlr.network/docs/currencies" target="_blank">разных</a> криптовалютах.</li>
  </ul>
  <p id="Njc3">Решение <strong>Bundlr</strong> бесконечно масштабируемо и уже поддерживает такие сети, как: <strong>Solana</strong>, <strong>Ethereum</strong>, <strong>Polygon</strong> и <strong>Avalanche</strong>.</p>
  <p id="5era"><strong>Bundlr</strong> создаёт самый безопасный, быстрый, удобный и долговечный способ хранения данных.</p>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="WCDi" data-align="center"><strong>Отличия в методике хранения данных между Arweave, IPFS и AWS.</strong></p>
  </section>
  <p id="SrwP"><strong>Amazon Web Services</strong> (AWS) - облачная платформа, насчитывающая миллионы клиентов, включая самые быстрорастущие стартапы, крупнейшие предприятия и ведущие государственные учреждения.</p>
  <p id="A8Ag">Простыми словами, это <strong>большое централизованное хранилище данных, подверженное постоянным атакам, манипуляциям и утечкам</strong>.</p>
  <p id="dEsh">Главная проблема <strong>AWS</strong> в том, что данные могут быть навсегда потеряны: специально (если не оплачивать подписку) или случайно (в случае выхода оборудования из строя).</p>
  <hr />
  <p id="Mbmy"><strong>InterPlanetary File System</strong> (IPFS) - одноранговая <strong>децентрализованная</strong> файловая система с открытым исходным кодом.</p>
  <p id="S0Xi">Вроде бы всё хорошо: децентрализация и безопасность. Но и такая система не безупречна. <strong>IPFS</strong> <strong>не хранит информацию вечно</strong>.</p>
  <p id="470K">Ноды, хранящие данные, не заинтересованы в вечном хранении данных и в конечном итоге сталкиваются с ограничением в пропускной способности: заканчивается место на жёстком диске. Запускается процесс, так называемый <em>Garbage Collection</em> (Сборкой Мусора), в процессе которого удаляются данные, которые система считает не такими уж и важными.</p>
  <p id="Q6SS">Один из популярных среди нодраннеров сервисов, использующих и предоставляющих доступ к ETH и IPFS, является <a href="https://infura.io/" target="_blank">Infura</a>.</p>
  <p id="EAIz">Загвоздка в том, что если данные не были использованы в течение 6 месяцев, то данные безвозвратно удаляются системой сборки мусора:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="4j1T" class="m_original">
      <img src="https://miro.medium.com/max/1400/0*j1jqqpeF7ft-f6fe" width="1400" />
    </figure>
  </section>
  <hr />
  <p id="G9sE"><strong>Arweave</strong> - <strong>единственное децентрализованное решение для вечного хранения данных.</strong></p>
  <p id="koNF">Суть её в том, что данные не хранятся у одного человека или компании, а распределены по узлам. Это гарантирует безопасность, достоверность и выживаемость данных.</p>
  <p id="YG9O">Когда данные загружаются в <strong>Arweave</strong>, узлы получают награду за хранение данных, поэтому не возникает риска их утери.</p>
  <p id="11Fc">Поскольку ваши данные хранятся на нескольких узлах, даже если один из узлов будет удален из сети, остальные узлы гарантируют, что ваши данные по-прежнему доступны.</p>
  <p id="skvo">Этот способ так же не бесплатен. Если вы хотите загрузить данные в <strong>Arweave</strong> и сохранить их навсегда, вам потребуется заплатить комиссию за транзакцию.</p>
  <p id="Dq3P">Комиссия высчитывается по формуле, которую придумали умные люди и описали в <a href="https://www.arweave.org/yellow-paper.pdf" target="_blank">жёлтой бумаге Arweave.</a></p>
  <p id="ruCo">Значительную роль играет вес загружаемых данных. Навечно сохранить какую-нибудь статью будет стоить дешевле, чем трёх-часовое интервью моргенштурма у дудя, что, в принципе, логично и обосновано в той самой желтоватой бумаге.</p>
  <p id="asrt"><em>One-time-payment</em> и ваши данные никогда не будут удалены или утеряны, но всегда будут доступны в любой момент времени.</p>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="P1vY" data-align="center"><strong>Зачем нужен Bundlr и как он работает?</strong></p>
  </section>
  <p id="zx1F"><strong>Bundlr</strong> подключает быструю мультичейновую поддержку <strong>Arweave</strong>, обеспечивая нативную поддержку в различных блокчейнах.</p>
  <p id="t6Wo">Это позволяет пользователям оплачивать загрузку данных различными токенами, такими как ETH, SOL, MATIC, DOT и многими другими.</p>
  <p id="BDos">Также решение увеличивает скорость загрузки информации в <strong>Arweave</strong> примерно в 4000 раз, и данные мгновенно становятся доступными для пользователей.</p>
  <p id="uJxc">Уже сейчас <strong>Bundlr</strong> обрабатывает более 90% всех загрузок данных в <strong>Arweave</strong>.</p>
  <hr />
  <p id="RA8C">Сеть состоит из:</p>
  <p id="3mN6">- <strong>Bundlers</strong>: ноды-работяги, которые собирают несколько транзакций на layer 2 в одну большую транзакцию (bundle) и записывают метод оплаты комиссии (SOL, MATIC, BNB и другие);</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="oJQA">Каждый бандлер обладает запасом токенов <strong>AR</strong>, чтобы оплачивать комиссию за загрузку данных в <strong>Arweave</strong> нативным токеном. Но пользователю не обязательно оплачивать комиссию в <strong>AR</strong>.</p>
  </section>
  <p id="k3SU">- <strong>Bundles</strong>: пакеты транзакций на layer 2, которые были собраны бандлером и должны быть отправлены в основную сеть;</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Ymns">Каждый бандл собирается в течение 2 минут, после чего улетает в <strong>Arweave</strong>.</p>
    <p id="zVwY">Несмотря на то, что бандл собирается в течение некоторого времени после обработки транзакции, данные доступны моментально по причине того, что <strong>Bundlr</strong> выступает в качестве кэширующего слоя до того времени, как данные запишутся в основную сеть.</p>
  </section>
  <p id="IFKD">- <strong>Validators</strong>: ноды-наблюдатели, которые следят за тем, чтобы каждая транзакция из бандла успешно и в срок достигла основной сети;</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="SZQr">После того, как транзакция пользователя была обработана <strong>Bundlr</strong>&#x27;ером, пользователь получает чек, подписанный тремя валидаторами.</p>
    <p id="DOAg">Чек подтверждает, что данные будут записаны в основную сеть к определённому времени.</p>
    <p id="FqU7">Валидатор получает часть комиссии за то, что подтверждает выполнение транзакции.</p>
    <p id="ljqZ">Хоть чек и подписывается тремя валидаторами, для подтверждения транзакции достаточно согласия одного.</p>
  </section>
  <p id="Q1FJ">- <strong>Gateways</strong>: ноды-библиотекари, которые присваивают индексы бандлам, чтобы при необходимости быстро получать данные из <strong>Arweave</strong> блокчейна.</p>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="wzfn" data-align="center"><strong>Партнёры, бэкеры и активности</strong></p>
  </section>
  <p id="Hk6C">Плотная разработка проекта началась в мае 2021 года в сотрудничестве с <strong>Arweave</strong>.</p>
  <p id="RGk6">Менее чем за год <strong>Bundlr</strong> заключила партнерские отношения с ведущими сетями, такими как <strong>Polygon</strong>, <strong>Boba Network,</strong> <strong>Arbitrum, ZKSynk, Avalanche, Ethereum, Binance SC, Polkadot, Solana</strong>, чтобы предложить разработчикам легкий доступ к <strong>Arweave</strong>.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="VmFO" class="m_original">
      <img src="https://miro.medium.com/max/1400/0*g1CNkFbr4AL-Cg77" width="1400" />
    </figure>
  </section>
  <p id="3Emd">Проект также сотрудничает с ведущими рынками NFT, такими как <strong>Metaplex</strong> и <strong>Salsa</strong>, чтобы они могли хранить важные данные, такие как метаданные NFT, в <strong>Arweave</strong>, а также с <strong>Ethsign, Mintbase, Olta, FormFunction</strong> и <strong>KYVE</strong>.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="XNOM" class="m_original">
      <img src="https://miro.medium.com/max/1400/0*ntI_7w-Kf62zPYfF" width="1400" />
    </figure>
  </section>
  <blockquote id="E3Kn"><em>“Цель <strong>Bundler</strong> - реализовать масс-адопшн <strong>Arweave. </strong>Технология <strong>Arweave</strong> потрясающая, но ей нужно стать более удобной в использовании. С помощью нашей технологии, мы позволяем этому сбыться. Существует так много возможностей для вечного хранения данных в Web3 и мы воодушевлены помочь росту популярности и доступности <strong>Arweave</strong>.&quot; </em></blockquote>
  <blockquote id="T3Xd" data-align="right"><a href="https://www.linkedin.com/in/josh-benaron/" target="_blank">Josh Benaron</a>, фаундер и CEO <strong>Bundlr Network</strong>.</blockquote>
  <p id="lYys">Количество данных, загруженных на <strong>Arweave</strong>, выросло более чем на 450% после запуска <strong>Bundlr Network</strong>.</p>
  <p id="Euos">В ходе сида 4 мая собрали $5,200,000 от <strong>Hypersphere Ventures</strong>, <strong>arweave.org</strong>, <strong>Permanent Ventures</strong>, <strong>Framework, OpenSea Ventures</strong> и <strong>Race Capital</strong>.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="ydQC" class="m_original">
      <img src="https://miro.medium.com/max/1400/0*gGHqS419studXjGG" width="1400" />
    </figure>
  </section>
  <hr />
  <p id="5zzn">Сейчас проходит девнет, после чего запланирован тестнет и, собственно, инсентив.</p>
  <p id="W8nr">Можно подписаться на все соц. сети и поиграться с <a href="https://demo.bundlr.network/" target="_blank">девнет-веб-интерфейсом</a>.</p>
  <p id="jEIb">Как таковой &quot;ноды&quot; на данный момент нет, но в ближайшем будущем обещают активности.</p>
  <hr />
  <p id="9f51" data-align="center"><a href="https://medium.com/bundlr-network" target="_blank">Blog</a> | <a href="https://docs.bundlr.network/" target="_blank">Docs</a> | <a href="https://github.com/Bundlr-Network" target="_blank">GitHub</a> | <a href="https://bundlr.network/" target="_blank">WebSite</a> | <a href="https://twitter.com/BundlrNetwork" target="_blank">Twitter</a> | <a href="https://discord.com/invite/xwsTEZv6DU" target="_blank">Discord</a> | <a href="https://t.me/bundlr" target="_blank">Telegram</a> | <a href="https://t.me/bundlr_cis" target="_blank">Chat_RU</a></p>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="EG4a" data-align="center">НОДА</h3>
    <p id="NGwa" data-align="right"><a href="#hq2j">Содержание</a></p>
  </section>
  <p id="c0pb">Требования по железу:</p>
  <p id="wpVa">Официальные требования: <strong>4 CPU </strong>x<strong> 8 GB RAM </strong>x<strong> 250 GB SSD</strong> - Ubuntu 20.04.<br />Субъективные наблюдения: <strong>2 CPU </strong>x<strong> 4 GB RAM </strong>x<strong> 250 GB SSD</strong> - Ubuntu 20.04.</p>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="YhWC" data-align="center"><strong>Ванлайнер от</strong> <a href="https://amb.place/" target="_blank">AMB.place</a></p>
  </section>
  <p id="dJWo">Для лентяев/опытных пользователей <a href="https://amb.place/" target="_blank">AMB.place</a> подготовили однострочник. Это <em>bash</em>-скрипт, который выполняет почти всю установку за вас.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="731q">При возникновении вопросов, пингуйте <a href="https://t.me/kallen_cc" target="_blank">@kallen_cc</a> в телеграме.</p>
  </section>
  <pre data-lang="shell" id="uiXj"># фрилайнер на самом деле
curl -s https://raw.githubusercontent.com/Kallen-c/Bundlr/main/Bundlr.sh &gt; bundlr.sh &amp;&amp; \
chmod +x bundlr.sh &amp;&amp; \
bash bundlr.sh</pre>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="4VXt" data-align="center"><strong>Ручная установка</strong></p>
  </section>
  <pre data-lang="shell" id="aIVw"># обновляем &#x27;базу данных&#x27;, обновляем дистрибутив
sudo apt-get update &amp;&amp; sudo apt-get upgrade -y</pre>
  <pre data-lang="shell" id="WuNq"># скачиваем необходимые зависимости одной командой
sudo apt-get install curl wget git jq libpq-dev libssl-dev \
build-essential pkg-config openssl ocl-icd-opencl-dev \
libopencl-clang-dev libgomp1 -y</pre>
  <pre id="WuNq" data-lang="shell"># устанавливаем &#x27;docker&#x27; и &#x27;docker-compose&#x27; одной командой
. &lt;(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/installers/docker.sh)</pre>
  <pre id="WuNq" data-lang="shell"># устанавливаем &#x27;rust&#x27; одной командой
curl https://sh.rustup.rs -sSf | sh -s -- -y</pre>
  <pre id="WuNq" data-lang="shell"># проверяем версию &#x27;cargo&#x27; одной командой
source &quot;$HOME/.cargo/env&quot; &amp;&amp; \
echo -e &quot;\n$(cargo --version).\n&quot;</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="F9z3" class="m_original">
      <img src="https://img3.teletype.in/files/e7/05/e70518b1-8c7b-46c1-a7a2-f1bdd27e8930.png" width="786" />
    </figure>
  </section>
  <pre id="WuNq" data-lang="shell"># устанавливаем &#x27;nodejs&#x27; и &#x27;npm&#x27; одной командой
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash - &amp;&amp; \
sudo apt-get install nodejs -y &amp;&amp; \
echo -e &quot;\nnodejs &gt; $(node --version).\nnpm  &gt;&gt;&gt; v$(npm --version).\n&quot;</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="D41f" class="m_original">
      <img src="https://img1.teletype.in/files/c1/16/c11689fa-e7e5-44bf-bbf7-ceda60e14e78.png" width="638" />
    </figure>
  </section>
  <pre id="WuNq" data-lang="shell"># создаём каталог &#x27;bundlr&#x27; и переходим в него одной командой
mkdir $HOME/bundlr; cd $HOME/bundlr</pre>
  <pre id="WuNq" data-lang="shell"># клонируем репозиторий &#x27;validator-rust&#x27; одной командой
git clone \
--recurse-submodules https://github.com/Bundlr-Network/validator-rust.git</pre>
  <pre id="WuNq" data-lang="shell"># генерируем &#x27;wallet.json&#x27; одной командой
cd $HOME/bundlr/validator-rust &amp;&amp; \
cargo run --bin wallet-tool create &gt; wallet.json</pre>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="1qjF" class="m_original">
      <img src="https://img1.teletype.in/files/8d/ac/8dac60cc-d002-4dc0-bf94-5c14a18a5d2e.png" width="1674" />
    </figure>
    <p id="CWHb">Многочисленные <strong>warning</strong> - нормально, игнорируем.</p>
  </section>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="aynX">Обязательно делаем бэкап сгенерированного кошелька по пути:</p>
    <p id="OUEz"><strong>$HOME/bundlr/validator-rust/wallet.json<br /><br /></strong>Это не команда для исполнения, а путь к файлу, который нужно скачать с сервера в укромное место.</p>
  </section>
  <pre id="WuNq" data-lang="shell"># выводим адрес одной командой
cd $HOME/bundlr/validator-rust &amp;&amp; \
cargo run --bin wallet-tool show-address \
--wallet wallet.json | jq &quot;.address&quot; | tr -d &#x27;&quot;&#x27;</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="zutW" class="m_original">
      <img src="https://img1.teletype.in/files/42/7e/427efac5-ca78-40dc-b262-b07911a5aeb3.png" width="1186" />
    </figure>
    <p id="jGdU">Предпоследняя строка - ваш адрес. В моём случае: <strong>erjX8M5...FwM</strong>.</p>
  </section>
  <p id="HPPC">Переходим на <a href="https://bundlr.network/faucet" target="_blank">страницу с краном</a> и запрашиваем токены на только что сгенерированный кошелёк.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="2l8W" class="m_original">
      <img src="https://img1.teletype.in/files/8c/ae/8caed348-569d-462f-bf7d-13086a5bd53c.png" width="1892" />
    </figure>
    <figure id="xjR4" class="m_original">
      <img src="https://img2.teletype.in/files/97/1f/971f9268-d6a5-4969-9a65-63ecd91710c0.png" width="1158" />
    </figure>
    <figure id="vwxb" class="m_original">
      <img src="https://img3.teletype.in/files/a8/eb/a8eb4066-bb89-4b08-87ea-be27d46032aa.png" width="1850" />
    </figure>
    <figure id="WrJz" class="m_original">
      <img src="https://img3.teletype.in/files/2c/02/2c029e01-e94c-4a7f-8cdd-0333feb33318.png" width="1770" />
    </figure>
  </section>
  <p id="CJZl">Создаём некоторые переменные. </p>
  <p id="jRqC">Первая переменная - порт, на котором будет работать нода. По стандарту - 80-ый, но я укажу кастомный, поскольку дефолтный может быть занят каким-то другим процессом.</p>
  <pre id="Lrwk" data-lang="bash"># создаём переменную с портом
PORT=2109</pre>
  <p id="ZnUg">Создаём вторую переменную с адресом нашего кошелька (мы генерировали его в прошлом пункте).</p>
  <pre id="6bkr" data-lang="bash"># создаём переменную с адресом, используйте адрес своего кошелька
# например, ADDRESS=erjX8M5_PUGEOQN0sFY6_cQqLOUl4x7iHEnfXFIyFwM
ADDRESS=erj...FwM</pre>
  <pre id="6bkr" data-lang="bash"># сохраняем наши переменные
echo &quot;export BUNDLR_PORT=&quot;${PORT}&quot;&quot; &gt;&gt; $HOME/.bash_profile
echo &quot;export BUNDLR_ADDRESS=&quot;${ADDRESS}&quot;&quot; &gt;&gt; $HOME/.bash_profile</pre>
  <pre id="6bkr" data-lang="bash"># чтобы переменные загрузились, необходимо перезагрузить &#x27;.bash_profile&#x27;
source $HOME/.bash_profile</pre>
  <pre id="6bkr" data-lang="bash"># проверим значения переменных
echo -e &quot;\nport &gt;&gt;&gt;&gt; ${BUNDLR_PORT}.\naddress &gt; ${BUNDLR_ADDRESS}.\n&quot;</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="mOpS" class="m_original">
      <img src="https://img2.teletype.in/files/1c/34/1c34e088-a5f5-4fc1-bf14-3b28553d9e62.png" width="1766" />
    </figure>
  </section>
  <pre id="xq7u" data-lang="shell"># создаём &#x27;.env&#x27; одной командой, ничего не трогая
sudo tee &lt;&lt;EOF &gt;/dev/null $HOME/bundlr/validator-rust/.env
PORT=${BUNDLR_PORT}
VALIDATOR_KEY=./wallet.json
BUNDLER_URL=https://testnet1.bundlr.network
GW_WALLET=./wallet.json
GW_CONTRACT=RkinCLBlY4L5GZFv8gCFcrygTyd5Xm91CzKlR6qxhKA
GW_ARWEAVE=https://arweave.testnet1.bundlr.network
EOF</pre>
  <pre id="xq7u" data-lang="shell"># проверяем актуальность
cat $HOME/bundlr/validator-rust/.env</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="xgrC" class="m_original">
      <img src="https://img2.teletype.in/files/9c/12/9c129974-90df-40fc-8246-3928ae53d4c6.png" width="1586" />
    </figure>
  </section>
  <pre id="nqXu" data-lang="bash"># поднимаем &#x27;docker-compose&#x27; в фоне
cd $HOME/bundlr/validator-rust &amp;&amp; \
docker-compose up -d</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="Bsws" class="m_original">
      <img src="https://img4.teletype.in/files/f6/82/f68244e5-8604-48f9-9486-b63562502ad5.png" width="2216" />
    </figure>
    <p id="1LMt">Начинается билд. Он может продлиться 5-30 минут в зависимости от мощностей сервера.</p>
    <figure id="GPoX" class="m_original">
      <img src="https://img1.teletype.in/files/08/e7/08e7865b-c5c0-4e1a-9cbf-6ed380a67db1.png" width="1660" />
    </figure>
  </section>
  <pre id="nqXu" data-lang="bash"># наблюдаем логи &#x27;docker-compose&#x27; одной командой
cd $HOME/bundlr/validator-rust &amp;&amp; \
docker-compose logs -f --tail 10</pre>
  <p id="jqq3">Насколько я понимаю, так выглядят адекватные логи:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="MIUr" class="m_original">
      <img src="https://img1.teletype.in/files/c6/4b/c64ba866-21b0-4472-b91b-410b8a04a16b.png" width="2984" />
    </figure>
  </section>
  <p id="VeKE">Закрываем логи с помощью <strong>Ctrl + C</strong> и едем дальше.</p>
  <pre id="xq7u" data-lang="shell"># билдим &#x27;testnet-cli&#x27; одной командой
cd $HOME/bundlr/validator-rust &amp;&amp; \
npm i -g @bundlr-network/testnet-cli</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="RY2d" class="m_original">
      <img src="https://img1.teletype.in/files/c6/b9/c6b900de-71d4-477d-a3b8-f30df03c0960.png" width="2608" />
    </figure>
  </section>
  <pre id="6bkr" data-lang="bash"># проверяем баланс кошелька одной командой
cd $HOME/bundlr/validator-rust &amp;&amp; \
testnet-cli balance ${BUNDLR_ADDRESS}</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="AdSJ" class="m_original">
      <img src="https://img2.teletype.in/files/9e/16/9e1646b2-4c7f-4074-8068-473a509a9e3c.png" width="1336" />
    </figure>
    <p id="yzOE">Баланс в очень много нулей обозначает то, что сейчас вы можете зарегистрировать валидатора.</p>
  </section>
  <pre id="FHkN" data-lang="bash"># присоединяемся к сети одной командой, ничего не трогая
cd $HOME/bundlr/validator-rust &amp;&amp; \
testnet-cli join RkinCLBlY4L5GZFv8gCFcrygTyd5Xm91CzKlR6qxhKA \
-w ./wallet.json \
-u &quot;http://$(wget -qO- eth0.me):${BUNDLR_PORT}&quot; \
-s 25000000000000</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="xfkb" class="m_original">
      <img src="https://img1.teletype.in/files/c6/4a/c64a46e7-0980-44db-8858-d9efcc2b82aa.png" width="1296" />
    </figure>
    <p id="gPgH">Теперь снова проверяем баланс и наблюдаем его полное отсутствие, что в очередной раз доказывает нам то, что мы всё сделали правильно:</p>
    <figure id="tiqk" class="m_original">
      <img src="https://img1.teletype.in/files/8b/dc/8bdced65-d49f-45a1-8e1e-b11e4255524a.png" width="1222" />
    </figure>
  </section>
  <p id="LT6H">Теперь мы можем перейти в <a href="https://bundlr.network/explorer/Ry2bDGfBIvYtvDPYnf0eg_ijH4A1EDKaaEEecyjbUQ4" target="_blank">эксплорер</a> и найти своего валидатора:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="pbMQ" class="m_original">
      <img src="https://img2.teletype.in/files/9a/00/9a009fc1-5d7b-494e-8468-d79aa5836780.png" width="2510" />
    </figure>
    <p id="tdlI">Есть вероятность, что валидатор появляется в эксплорере в начале следующей эпохи. Каждая эпоха длится примерно 30 минут.</p>
    <p id="cKZS">Возможно, придётся подождать несколько десятков минут перед тем, как валидатор отобразится в эксплорере.</p>
  </section>
  <p id="8u97">Вот и всё. В ближайших тестнетах подвезут стейкинг и другие тулсы!</p>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="y85F" data-align="center"><strong>Полезные команды</strong></p>
  </section>
  <pre id="7bMv" data-lang="bash"># рестарт докера одной командой
cd $HOME/bundlr/validator-rust &amp;&amp; \
docker-compose restart</pre>
  <pre id="7bMv" data-lang="bash"># остановка докера одной командой
cd $HOME/bundlr/validator-rust &amp;&amp; \
docker-compose stop</pre>
  <pre id="7bMv" data-lang="bash"># запуск докера одной командой
cd $HOME/bundlr/validator-rust &amp;&amp; \
docker-compose up -d</pre>
  <pre id="7bMv" data-lang="bash"># удаление докера одной командой
cd $HOME/bundlr/validator-rust &amp;&amp; \
docker-compose down -v</pre>
  <pre id="7bMv" data-lang="bash"># просмотр логов докера
cd $HOME/bundlr/validator-rust &amp;&amp; \
docker-compose logs -f --tail 10</pre>
  <pre id="7bMv" data-lang="bash"># посмотреть адрес кошелька #1
cd $HOME/bundlr/validator-rust &amp;&amp; \
cargo run --bin wallet-tool show-address \
--wallet wallet.json | jq &quot;.address&quot; | tr -d &#x27;&quot;&#x27;</pre>
  <pre id="7bMv" data-lang="bash"># посмотреть адрес кошелька #2
echo ${BUNDLR_ADDRESS}</pre>
  <pre id="7bMv" data-lang="bash"># посмотреть баланс кошелька
cd $HOME/bundlr/validator-rust &amp;&amp; \
testnet-cli balance ${BUNDLR_ADDRESS}</pre>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="AAYf" data-align="center"><strong>Обновление</strong></p>
  </section>
  <pre id="Vg6r" data-lang="bash"># обновляемся одной командой
cd $HOME/bundlr/validator-rust &amp;&amp; \
git pull origin master &amp;&amp; \
docker-compose up --build -d</pre>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="t1T9" data-align="center"><strong>Перенос и бэкап</strong></p>
  </section>
  <p id="uJAm">Для успешного бэкапа нам необходимо выкачать с сервера файл <strong>wallet.json</strong>. Для успешного переноса валидатора - просто выполняем установку на новом сервере с нуля, но при этом вместо генерации нового кошелька, подсовываем старый <strong>wallet.json</strong>.</p>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="zofL" data-align="center"><strong>Удаление ноды</strong></p>
  </section>
  <pre id="kqcf" data-lang="bash"># останавливаем и удаляем контейнер
cd $HOME/bundlr/validator-rust &amp;&amp; \
docker-compose down -v</pre>
  <pre id="kqcf" data-lang="bash"># удаляем каталог &#x27;bundlr&#x27;
rm -Rvf $HOME/bundlr</pre>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="sC41" data-align="center"><strong>БЛАГОДАРНОСТИ</strong></h3>
    <p id="CWHR" data-align="right"><a href="#hq2j">Содержание</a></p>
  </section>
  <p id="amQw">мамичу за то, что родила такого гения.</p>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="vYNR" data-align="center"><strong>ПОЛЕЗНЫЕ РЕСУРСЫ</strong></h3>
    <p id="elSw" data-align="right"><a href="#hq2j">Содержание</a></p>
  </section>
  <p id="sU81"><a href="https://t.me/how_to_node" target="_blank">@how_to_node</a> - канал, где я выкладываю свои гайды.</p>
  <p id="4AAa"><a href="/WTF_resources">Полезные ресурсы</a>.</p>
  <p id="S63T"><a href="/WTF_donate">Крипто-кошельки автора гайда</a>.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@cyberomanov/subspace</guid><link>https://teletype.in/@cyberomanov/subspace?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov</link><comments>https://teletype.in/@cyberomanov/subspace?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov#comments</comments><dc:creator>cyberomanov</dc:creator><title>Subspace /// Gemini-3c</title><pubDate>Sun, 03 Apr 2022 13:11:27 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/56/ce/56cebb04-71f2-4e02-a179-9ac95692b471.png"></media:content><category>Actual Events</category><description><![CDATA[<img src="https://img2.teletype.in/files/1d/03/1d03c3bb-8da8-4a6a-bcce-000dd699af80.png"></img>Устанавливаем фармер Subspace для участия в открытом тесте без наград Gemini-3c.]]></description><content:encoded><![CDATA[
  <section>
    <figure id="54D9" class="m_original">
      <img src="https://img2.teletype.in/files/1d/03/1d03c3bb-8da8-4a6a-bcce-000dd699af80.png" width="1534" />
    </figure>
  </section>
  <p id="tK6V">Устанавливаем фармер <strong>Subspace</strong> для участия в открытом тесте без наград <strong>Gemini-3c</strong>.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="wr38">Если вы не знаете, <strong>что такое нода</strong> — читаем <a href="/WTF_node">статью</a>. <br />Если вы не знаете, <strong>где арендовать сервер для ноды</strong> — читаем <a href="/WTF_server">статью</a>. <br />Если вы не знаете, <strong>как подключиться к серверу</strong> — читаем <a href="/WTF_MobaXterm">статью</a>. <br />Если вы всё знаете — открываем <strong>MobaXterm </strong>и создаём сессию.</p>
  </section>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="tXns" data-align="center"><strong>СОДЕРЖАНИЕ</strong></h3>
  </section>
  <p id="D1P6"><a href="#jw6A">Описание проекта</a>: несколько слов о проекте, условия участия в ивенте.</p>
  <p id="oPvA"><a href="#b5bO">Нода</a>:</p>
  <ul id="Bcku">
    <li id="DvJK"><a href="#sIGZ">Установка ноды</a>;</li>
    <li id="fB9Z"><a href="#EUuF">Polkadot wallet</a>;</li>
    <li id="1aXa"><a href="#3uOB">Инициализация</a>;</li>
    <li id="zoTA"><a href="#mDfs">Сервисный файл</a>;</li>
    <li id="rrGP"><a href="#nhWP">Телеметрия и TSSC</a>.</li>
  </ul>
  <p id="uAX5"><a href="#yRT0">Полезные вещи</a>:</p>
  <ul id="elMk">
    <li id="K5NY"><a href="#yRT0">Полезные команды при работе с нодой</a>;</li>
    <li id="Oaee"><a href="#Fenr">Обновление</a>;</li>
    <li id="fuWc"><a href="#1tYC">Перенос и бэкап</a>: пригодится при переезде;</li>
    <li id="3kgs"><a href="#OdyQ">Удаление ноды</a>: на будущее.</li>
  </ul>
  <p id="4IaS"><a href="#sC41">Благодарности</a>.</p>
  <p id="SDnK"><a href="#vYNR">Полезные ресурсы на каждый день</a>.</p>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="jw6A" data-align="center">ОПИСАНИЕ ПРОЕКТА</h3>
    <p id="Giat" data-align="right"><a href="#tXns">Содержание</a></p>
  </section>
  <p id="SmxC"><strong>Subspace Network</strong> - сеть, позволяющая разработчикам очень просто и быстро развёртывать децентрализованные Web3-приложения, которые, в свою очередь, могут автоматически масштабироваться при необходимости.</p>
  <p id="GXpC">Полная интеграция с <strong>Polkadot &amp; Kusama</strong>, в ближайшем будущем и с <strong>EVM.</strong></p>
  <p id="Duee"><strong>Subspace</strong> работает на блокчейне первого уровня, созданном для решения таких фундаментальных проблем, как: экология, централизация и отсутствие масштабируемости.</p>
  <p id="gRiN">Эти проблемы позволяет решить свежая реализация <strong>proof-of-capacity</strong> (PoC). Знакомые нам аналоги на <strong>PoC</strong>: C<em>hia, Spacemesh, Filecoin.</em></p>
  <p id="qTi7">Вводим новое понятие - <strong>дилемма фермера.</strong> Более подробно почитать о проблеме можно <a href="https://assets.website-files.com/61526a2af87a54e565b0ae92/617759c00edd0e3bd279aa29_Subspace_%20A%20solution%20to%20the%20farmer%27s%20dilemma.pdf" target="_blank">тут</a>, но грубый смысл в том, что, невозможно бесконечно хранить бесконечное количество данных. когда-нибудь придётся чем-то пожертвовать: децентрализацией или “качеством” данных.</p>
  <p id="v1YD"><strong>Subspace</strong> считает, что его аналоги вообще не решают дилемму фермера: кто-то слишком централизован, кто-то не умеет в масштабирование, а кто-то вообще файлкойн.</p>
  <p id="Ji0r">Так как же <strong>Subspace</strong> решает задачу?</p>
  <p id="CHco"><strong>Subspace</strong> работает на основе консенсуса <strong>proof-of-archive-storage</strong> (PoAS) или “доказательство хранения архивной истории блокчейна”.</p>
  <p id="HUBL"><strong>Фермеры</strong> <strong>сабспейса</strong> (не майнеры, кстати) <strong>хранят столько уникальных сегментов истории блокчейна, сколько позволяет их дисковое пространство.</strong> хранят историю коллективно, что позволяет им работать как единый распределенный архивный узел.</p>
  <p id="eANO">Фермеру не обязательно содержать 2 тонны ссд, чтобы хранить всю историю блокчейна. Фермер может хранить лишь сегмент/ы.</p>
  <p id="uatp">Чем больше фермер выделяет пространства, тем больший шанс он имеет быть выбранным для создания блока.</p>
  <p id="wI0k">Работает интересный механизм наград: <em>больше фермеров в сети &gt; дороже транзакция &gt; больше прибыль для фермера. </em>Обусловлено это тем, что новая информация должна храниться на большем количестве дисков.</p>
  <p id="JOUt">Вводим ещё одно умное словосочетание: <strong>блокчейн-трилемма</strong>.</p>
  <p id="HDtr">Это термин, придуманный Виталиком Бутериным для описания задачи создания масштабируемого, децентрализованного и безопасного блокчейна, в котором утверждается, что только две из этих трёх функций могут быть одновременно реализованы.</p>
  <p id="hWfp"><strong>Subspace</strong> предлагает следующее решение: разделить консенсус и вычисления.</p>
  <p id="ZEOo">Фармер собирает потенциально валидные транзакции в букет и отправляет их на проверку и завершение исполнителю. Исполнители - это отдельный класс узлов, поддерживающий полное состояние блокчейна. Фермер и исполнитель делят награду за обработку транзакции.</p>
  <p id="07K6">Исполнитель выбирается на основе его доли: <em>больше стейк &gt; чаще избирается для завершения блока &gt; больше награда.</em></p>
  <p id="HMUc">Каждый может стать фермером и собирать блоки, предоставив своё свободное дисковое пространство. Но для того, чтобы подписывать и завершать их нужно быть выбранным исполнителем.</p>
  <p id="aAtp"><strong>Инвесторы:</strong> более $37kk от Coinbase, IOSG, Republic, Crypto.com, Alameda, Pantera, Hypersphere, Bixin, Vendetta, NGC, Gate и других.</p>
  <hr />
  <p data-align="center" id="FYQ1"><a href="https://medium.com/subspace-network" target="_blank">Medium</a> | <a href="https://github.com/subspace" target="_blank">GitHub</a> | <a href="https://subspace.network/" target="_blank">WebSite</a> | <a href="https://twitter.com/NetworkSubspace" target="_blank">Twitter</a> | <a href="https://discord.com/invite/K56A6xrdw9" target="_blank">Discord</a> | <a href="https://t.me/subspace_network" target="_blank">Telegram</a> | <a href="https://t.me/subspace_cis" target="_blank">Ru_Telegram</a></p>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="b5bO" data-align="center">НОДА</h3>
    <p id="Kvi1" data-align="right"><a href="#tXns">Содержание</a></p>
  </section>
  <p id="c0pb">Требования по железу:</p>
  <p id="wpVa">Официальные требования: <strong>4 CPU </strong>x<strong> 4 GB RAM </strong>x<strong> 50 GB SSD</strong> - Ubuntu 20.04.</p>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="sIGZ" data-align="center"><strong>Установка</strong></p>
  </section>
  <pre data-lang="shell" id="11B6"># обновляем &#x27;базу данных&#x27;, обновляем дистрибутив
sudo apt-get update &amp;&amp; sudo apt-get upgrade -y</pre>
  <pre data-lang="shell" id="4Nre"># скачиваем необходимые зависимости одной командой
sudo apt-get install wget jq ocl-icd-opencl-dev \
libopencl-clang-dev libgomp1 ocl-icd-libopencl1 -y</pre>
  <pre data-lang="shell" id="1XCb"># скачиваем исполняемые файлы и выводим их версии одной командой
mkdir $HOME/subspace &gt;/dev/null 2&gt;&amp;1 &amp;&amp; \
cd $HOME/subspace &amp;&amp; \
VER=$(wget -qO- https://api.github.com/repos/subspace/subspace-cli/releases | jq &#x27;.[] | select(.prerelease==false) | select(.draft==false) | .html_url&#x27; | grep -Eo &quot;v[0-9]*.[0-9]*.[0-9]*&quot; | head -n 1) &amp;&amp; \
wget https://github.com/subspace/subspace-cli/releases/download/${VER}/subspace-cli-ubuntu-x86_64-v3-${VER} -qO subspace; \
sudo chmod 777 * &amp;&amp; \
if [[ $(./subspace -h) == &quot;&quot; ]]; then
  echo -e &quot;\n\ndat sh*t is broken, ping @cyberomanov.\n\n&quot;
else
  sudo mv * /usr/local/bin/ &amp;&amp; \
  echo -e &quot;\n\nrelease &gt;&gt; ${VER}.\n\n&quot;
fi &amp;&amp; \
cd $HOME &amp;&amp; \
rm -Rvf $HOME/subspace &gt;/dev/null 2&gt;&amp;1</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="puoz" class="m_original">
      <img src="https://img3.teletype.in/files/2e/c8/2ec87ecd-2e90-4cb4-891f-eeb1f65133be.png" width="2592" />
    </figure>
    <p id="oSsR">Или</p>
    <figure id="U6sY" class="m_original">
      <img src="https://img1.teletype.in/files/01/91/01912331-a227-47be-ba6c-ba992676b52c.png" width="2598" />
    </figure>
  </section>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="EUuF" data-align="center"><strong>Polkadot wallet</strong></p>
  </section>
  <p id="bUi2">Теперь нам нужен кошелёк. Переходим на <a href="https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Feu-0.gemini-3c.subspace.network%2Fws#/accounts" target="_blank">дашборд Subspace Gemini 3c</a> и копируем адрес нашего кошелька. </p>
  <p id="A6o0">Если по каким-то причинам у вас ещё нет кошелька полькусамы, нужно скачать <a href="https://polkadot.js.org/extension/" target="_blank">polkadot.js</a> расширение и сгенерировать кошелёк там.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="DYuf" class="m_original">
      <img src="https://img4.teletype.in/files/f4/2d/f42d62ae-d262-43f1-8449-96df4ad5e97c.png" width="1420" />
    </figure>
  </section>
  <p id="Wu5G">На этот адрес мы будем фармить <strong>TSSC</strong> токены, как доказательство участия в тестнете.</p>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="3uOB" data-align="center"><strong>Инициализация</strong></p>
  </section>
  <pre id="xbPs" data-lang="bash"># инициализируемся
subspace init</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="xXJy" class="m_original">
      <img src="https://img3.teletype.in/files/66/b6/66b6819f-792c-4029-929b-6ee10b813cc0.png" width="1910" />
    </figure>
    <ol id="gTvV">
      <li id="aFyg">Вводим кошелёк из прошлого пункта;</li>
      <li id="IbAG">Вводим желаемый никнейм;</li>
      <li id="D0pF">Путь к плотам я оставил по дефолту (просто нажать Enter);</li>
      <li id="5gap">Размер плота выставил 100 GB, но это индивидуально;</li>
      <li id="5YOQ">Сеть оставил по дефолту (просто нажать Enter).</li>
    </ol>
  </section>
  <p id="dbf8">После данного шага по пути<strong> <em>/root/.config/subspace-cli/settings.toml</em> </strong>появится конфигурационный файл, который можно отредактировать ручками, если очень хочется:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="E8Ua" class="m_original">
      <img src="https://img4.teletype.in/files/70/08/7008ac11-3c21-4dbc-8b82-56fcdf8c6eb6.png" width="1604" />
      <figcaption>конфиг может отличаться от версии к версии.</figcaption>
    </figure>
  </section>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="mDfs" data-align="center"><strong>Сервисный файл</strong></p>
  </section>
  <pre id="AvbW" data-lang="bash"># фиксим журнал
sudo tee &lt;&lt;EOF &gt;/dev/null /etc/systemd/journald.conf
Storage=persistent
EOF</pre>
  <pre id="AvbW" data-lang="bash"># рестартим журнал
sudo systemctl restart systemd-journald</pre>
  <pre data-lang="bash" id="6lsV"># создаём файл сервиса для запуска ноды
sudo tee &lt;&lt;EOF &gt;/dev/null /etc/systemd/system/subspaced.service
[Unit]
Description=Subspace Node
After=network.target
[Service]
Type=simple
User=$USER
ExecStart=$(which subspace) farm -v
Restart=always
RestartSec=3
LimitNOFILE=1024000
[Install]
WantedBy=multi-user.target
EOF</pre>
  <pre id="5Wa9" data-lang="bash"># запускаем ноду
sudo systemctl daemon-reload &amp;&amp; \
sudo systemctl enable subspaced &amp;&amp; \
sudo systemctl restart subspaced</pre>
  <pre id="ZMTA" data-lang="bash"># проверяем логи
sudo journalctl -fu subspaced --no-hostname -o cat</pre>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="nhWP" data-align="center"><strong>Телеметрия и TSSC</strong></p>
  </section>
  <p id="QWhS">За синхронизацией можно следить в прямом эфире с помощью команды:</p>
  <pre id="YUyP" data-lang="bash">sudo journalctl -fu subspaced -o cat | grep -E &quot;best&quot;</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="6Opo" class="m_original">
      <img src="https://img1.teletype.in/files/43/b9/43b9fda6-c4b5-464c-a42e-712503d8740c.png" width="2804" />
    </figure>
  </section>
  <p id="9uZo">Ещё можно наблюдать синхронизацию в <a href="https://telemetry.subspace.network/#list/0xab946a15b37f59c5f4f27c5de93acde9fe67a28e0b724a43a30e4fe0e87246b7" target="_blank">телеметрии</a>, но она часто отваливается.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="XWDO" class="m_original">
      <img src="https://img1.teletype.in/files/4e/7d/4e7df19e-141c-4ec2-b2d6-d6aa8216e86d.png" width="2858" />
    </figure>
  </section>
  <p id="i1ZT"> &quot;Идеальную&quot; высоту можно найти в <a href="https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Feu-0.gemini-2a.subspace.network%2Fws#/explorer" target="_blank">экслорере</a>.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="mAEz" class="m_original">
      <img src="https://img1.teletype.in/files/c4/9e/c49e97a2-24d2-4ef0-b694-e6b442cd26d7.png" width="488" />
    </figure>
  </section>
  <p id="X4dD">После завершения синхронизации ноды, фармер начнёт продуцировать блоки и получать за это награду. Если баланс кошелька увеличивается - всё работает отлично.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="3q2f" class="m_original">
      <img src="https://img2.teletype.in/files/1e/3a/1e3a3302-bfdc-442e-a8d5-e152aaed6622.png" width="206" />
    </figure>
  </section>
  <p id="cHvh">Вот и всё. Фармим <strong>TSSC</strong> и ждём окончания <s>инсентивайза</s> стресс-теста.</p>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="yRT0" data-align="center">ПОЛЕЗНЫЕ КОМАНДЫ</h3>
    <p id="NpKt" data-align="right"><a href="#tXns">Содержание</a></p>
  </section>
  <pre id="ETpn" data-lang="bash"># пезапуск фармера и ноды
sudo systemctl restart subspaced</pre>
  <pre id="ETpn" data-lang="bash"># остановка фармера и ноды
sudo systemctl stop subspaced</pre>
  <pre id="7yPu" data-lang="bash"># проверяем логи
sudo journalctl -fu subspaced --no-hostname -o cat</pre>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="Fenr" data-align="center">ОБНОВЛЕНИЕ</h3>
    <p id="nMop" data-align="right"><a href="#tXns">Содержание</a></p>
  </section>
  <pre id="txAf" data-lang="bash"># останавливаем сервисы ноды и фармера
sudo systemctl stop subspaced</pre>
  <pre id="9rvc" data-lang="bash"># чистим данные старой сети одной командой
# только, если ушли в форк или хотите начать синхронизацию с нуля
subspace wipe &amp;&amp; rm -Rvf $HOME/.local/share/subspace-cli/node/chains/*</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="imKM" class="m_original">
      <img src="https://img3.teletype.in/files/ea/03/ea03fd22-8aa2-4236-9330-508fa00aa2ca.png" width="2142" />
    </figure>
  </section>
  <p id="Qnfl">Пробегаемся по <a href="#b5bO">установке с самого начала</a>.</p>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="1tYC" data-align="center">ПЕРЕНОС И БЭКАП</h3>
    <p id="Q7L7" data-align="right"><a href="#tXns">Содержание</a></p>
  </section>
  <p id="KNOT">Бэкапа, как такового, нет. Просто устанавливаем ноду на новом сервере, указывая старый адрес для фарма. Вот и всё.</p>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="OdyQ" data-align="center">УДАЛЕНИЕ</h3>
    <p id="VJsH" data-align="right"><a href="#tXns">Содержание</a></p>
  </section>
  <p id="6DCM">Если вы вдруг разочаровались в проекте и хотите удалить его с сервера, то можно просто разрушить/удалить сервер из личного кабинета хостинга.</p>
  <p id="BjUe">Это сработает, если на сервере нет других важных нод. В случае, если вы хотите оставить сервер, но удалить конкретную ноду - приступаем к её удалению:</p>
  <pre data-lang="bash" id="F08X"># останавливаем и отключаем сервис ноды одной командой
sudo systemctl stop subspaced &amp;&amp; \
sudo systemctl disable subspaced</pre>
  <pre id="F08X" data-lang="bash"># удаляем остаточные файлы
rm -Rvf $HOME/.local/share/subspace* \
$HOME/.config/subspace* \
/usr/local/bin/subspace</pre>
  <pre data-lang="bash" id="3fU9"># удаляем файл сервиса и перезагружаем демона одной командой
sudo rm -v /etc/systemd/system/subspaced.service &amp;&amp; \
sudo systemctl daemon-reload</pre>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="sC41" data-align="center"><strong>БЛАГОДАРНОСТИ</strong></h3>
    <p id="CWHR" data-align="right"><a href="#tXns">Содержание</a></p>
  </section>
  <p id="amQw">мамичу за то, что родила такого гения.</p>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="vYNR" data-align="center"><strong>ПОЛЕЗНЫЕ РЕСУРСЫ</strong></h3>
    <p id="elSw" data-align="right"><a href="#tXns">Содержание</a></p>
  </section>
  <p id="sU81"><a href="https://t.me/how_to_node" target="_blank">@how_to_node</a> - канал, где я выкладываю свои гайды.</p>
  <p id="4AAa"><a href="/WTF_resources">Полезные ресурсы</a>.</p>
  <p id="S63T"><a href="/WTF_donate">Крипто-кошельки автора гайда</a>.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@cyberomanov/pontem</guid><link>https://teletype.in/@cyberomanov/pontem?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov</link><comments>https://teletype.in/@cyberomanov/pontem?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov#comments</comments><dc:creator>cyberomanov</dc:creator><title>Pontem /// v1.0</title><pubDate>Fri, 26 Nov 2021 07:57:09 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/ec/10/ec103733-dca7-4de8-966b-d28e79df784b.png"></media:content><category>Ended Events</category><description><![CDATA[<img src="https://assets-global.website-files.com/60c9fb02ebcd0d67d7ca048a/615c72e5b6261a95708196c6_Pontem%20Explainedassetsatlaunch.png"></img>Устанавливаем ноду Pontem для участия в открытом тесте сети.]]></description><content:encoded><![CDATA[
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="Epze" class="m_original">
      <img src="https://assets-global.website-files.com/60c9fb02ebcd0d67d7ca048a/615c72e5b6261a95708196c6_Pontem%20Explainedassetsatlaunch.png" width="1200" />
    </figure>
  </section>
  <p id="IDjf">Устанавливаем ноду <strong>Pontem </strong>для участия в открытом тесте сети.</p>
  <section>
    <p id="GZ8m">Если вы не знаете, <strong>что такое нода</strong> — читаем <a href="/WTF_node">статью</a>. <br />Если вы не знаете, <strong>где арендовать сервер для ноды</strong> — читаем <a href="/WTF_server">статью</a>. <br />Если вы не знаете, <strong>как подключиться к серверу</strong> — читаем <a href="/WTF_MobaXterm">статью</a>. <br />Если вы всё знаете — открываем <strong>MobaXterm </strong>и создаём сессию.</p>
  </section>
  <figure id="GETY" class="m_custom">
    <img src="https://img3.teletype.in/files/6e/b7/6eb72bd2-4a8e-4bdc-bdd4-1714e38ba7b8.png" width="700" />
  </figure>
  <ul id="Rryf">
    <li id="AEgZ"><a href="#rzV9">Описание проекта</a>: несколько слов о проекте, условия участия в ивенте.</li>
    <li id="nLO4"><a href="#fOyb">Требования к железу</a>: рекомендуемые технические параметры сервера.</li>
    <li id="R8R6"><a href="#p88m">Установка</a></li>
    <ul id="SPTU">
      <li id="n504"><a href="#p88m">Кран</a>: запрашиваем токены для теста;</li>
      <li id="Gwoq"><a href="#16U3">Установка</a>: скачиваем и настраиваем ПО;</li>
      <li id="oS0R"><a href="#LgRK">Кошелёк</a>: регистрируем аккаунт Nimbus;</li>
    </ul>
    <ul id="p6PS">
      <li id="TKEK"><a href="#LHXC">Нода</a>: запускаем ноду в докере;</li>
      <li id="ovLf"><a href="#jXT0">Коллатор</a>: создаём валидатора;</li>
      <li id="ySwa"><a href="#ztUU">Номинатор</a>: делегируем токены коллатору.</li>
    </ul>
    <li id="5SiI"><a href="#yK3h">Полезные вещи</a></li>
    <ul id="elMk">
      <li id="K5NY"><a href="#yK3h">Полезные команды при работе с нодой</a>;</li>
    </ul>
    <ul id="wOHF">
      <li id="fuWc"><a href="#6Mla">Перенос и бэкап</a>: пригодится при переезде;</li>
      <li id="3kgs"><a href="#fJH9">Удаление ноды</a>: на будущее.</li>
    </ul>
    <li id="ZNnG"><a href="#cFtd">Благодарности</a></li>
    <li id="bUoX"><a href="#kY7a">Полезные ресурсы на каждый день</a></li>
  </ul>
  <figure id="rzV9" class="m_custom" data-caption-align="right">
    <img src="https://img2.teletype.in/files/90/d1/90d1989f-13e9-4c6b-84e0-f9216166f5de.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="botY"><strong>Pontem </strong>- это мост между регулируемым и нерегулируемым мирами, который позволит обмениваться ценностями между ними.</p>
  <p id="YeYg">Что делает <strong>Pontem</strong>, так это соединяет <strong>Diem </strong>(проект, поддерживаемый компанией <strong>Meta</strong> (в прошлом: <strong>Facebook</strong>)с 3,1 миллиардом пользователей) и децентрализованный мир, включая традиционные крипторынки.</p>
  <p id="zLqi">Сеть поможет пользователям <strong>Diem </strong>получить доступ к таким инструментам, как финансы, средства безопасности и даже игры.</p>
  <p id="aOYk"><strong>Pontem </strong>стремится соединить виртуальную машину <strong>Move</strong>, язык и сообщество, созданные блокчейн-проектом <strong>Diem </strong>с &quot;разрешениями&quot; (permissioned) <strong>Facebook</strong>, с экосистемой блокчейна &quot;без разрешений&quot; (permissionless) через <strong>Polkadot</strong>.</p>
  <p id="SCEK">Язык <strong>Move </strong>и виртуальная машина <strong>Move </strong>- это безопасные, готовые для использования технологии, которые обеспечивают функциональность блокчейна, такую как платежи и смарт-контракты.</p>
  <p id="xMHq">В отличие от других проектов блокчейна первого уровня, которые сосредоточены на разработке с использованием такого языка, как <strong>Solidity</strong>, <strong>Pontem </strong>- первый проект, который привнес технологию <strong>Facebook Move </strong>в &quot;разрешенную&quot; криптометавселенную, позволяя новым и крипто-нативным проектам создавать, тестировать и развертывать приложения на блокчейне <strong>Diem Facebook</strong>.</p>
  <p id="tAjL"><strong>Pontem </strong>обладает уникальным потенциалом создания инфраструктуры для поддержки миллиардов пользователей, которые впервые в жизни откроют для себя удивительные возможности криптовалюты с помощью финансовых услуг, предоставляемых экосистемой <strong>Diem Facebook</strong>, но также захотят подключиться к криптовселенной &quot;без разрешений&quot;.</p>
  <p id="HocN">Таким образом, <strong>Pontem </strong>станет привлекательным вариантом для команд разработчиков, предоставляя им инструменты для создания приложений для большого потока пользователей, привлеченных в криптометавселенную <strong>Facebook </strong>и ассоциацией <strong>Diem</strong>, которая будет обеспечивать ценность сети <strong>Pontem</strong>.</p>
  <hr />
  <p id="RWmn"><strong>Backers</strong>: Animoca, Delphi, Mechanism, Morningstar, CMS, Alameda, GBIC, Kenetic, Spartan, NGC, Skynet, Momentum6, Genesis Block, AU21, Altonomy, Avalanche, Taureon и ещё около 10 фондов.</p>
  <hr />
  <p id="kEnk"><strong>Pontem </strong>будет награждать активных валидаторов (коллаторов), а также делегаторов, которые вложили свои монеты в ноды активных коллаторов. </p>
  <p id="RK9i">Если вам интересно стать валитором в основной сети - Kusama, можно заполнить <a href="https://forms.gle/kG218wjfJAAUguSn6" target="_blank">форму интереса</a>.</p>
  <p id="TQ9x">Стать участником тестнета можно двумя способами: </p>
  <ul id="Z0J3">
    <li id="BmQL">делегировать токены активным коллаторам и получать тестовые награды (фантики) за делегирование;</li>
    <li id="cSo5">запустить собственного коллатора (валидатора) и получать награды (фантики) за валидирование.</li>
  </ul>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="lgtn">Можно стать либо номинатором (делегировать через интерфейс), либо быть коллатором (запускать ноду). Одновременно нельзя держать ноду и делегировать кому-то с одного аккаунта.</p>
  </section>
  <hr />
  <p id="I4iM" data-align="center"><a href="https://pontem.medium.com/" target="_blank">Medium</a> | <a href="https://docs.pontem.network/02.-getting-started/getting_started" target="_blank">Docs</a> | <a href="https://github.com/pontem-network" target="_blank">GitHub</a> | <a href="https://pontem.network/" target="_blank">WebSite</a> | <a href="https://twitter.com/PontemNetwork" target="_blank">Twitter</a> | <a href="https://discord.gg/Pw4T9WbJDt" target="_blank">Discord</a> | <a href="https://t.me/pontemnetworkchat" target="_blank">Telegram</a> | <a href="https://t.me/pontem_RU" target="_blank">RU_Chat</a></p>
  <figure id="fOyb" class="m_custom" data-caption-align="right">
    <img src="https://img2.teletype.in/files/1e/68/1e68921d-fab9-40ff-8b0d-aea35411decd.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="TKmO">Официальные требования: <strong>4 CPU </strong>x<strong> 8 GB RAM </strong>x<strong> 100 GB SSD</strong> - Ubuntu 20.04.</p>
  <p id="MaxK">Субъективные наблюдения: <strong>2 CPU </strong>x<strong> 4 GB RAM </strong>x<strong> 100 GB SSD</strong> - Ubuntu 20.04.</p>
  <figure id="p88m" class="m_original" data-caption-align="right">
    <img src="https://img3.teletype.in/files/ad/1b/ad1bd431-7d35-4d26-af5d-3386beae0aa8.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="xHjF">Прежде всего, нам нужно запросить токены. </p>
  <p id="taI5">Для этого переходим на <a href="https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Ftestnet.pontem.network%2Fws#/accounts" target="_blank">страницу дашборда Pontem</a>. Подключаем расширение <a href="https://polkadot.js.org/extension/" target="_blank">polkadot.js</a> и копируем свой адрес, на которые хотим запросить токены:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="P5Z4" class="m_original">
      <img src="https://img4.teletype.in/files/3c/bc/3cbcf8de-346e-4976-86f5-8c4ed2ec2f11.png" width="493" />
    </figure>
  </section>
  <p id="skLG">После того, как адрес получен - переходим в <a href="https://t.me/pontem_faucet_bot" target="_blank">телеграм бота</a> и запрашиваем токены:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="YRqV" class="m_original">
      <img src="https://img1.teletype.in/files/4a/c6/4ac6a576-a6fb-4dc9-8839-2411577dd73b.png" width="1000" />
    </figure>
  </section>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="PCZg">На текущий момент, чтобы стать коллатором, нужно 1000 монет. </p>
    <p id="7wPC">Бот выдаёт по 1100 монет.</p>
  </section>
  <p id="CbD8">Сначала я покажу, как создать собственного коллатора, после чего мы будем делегировать ПОНТы на чужих валидаторов.</p>
  <figure id="16U3" class="m_original" data-caption-align="right">
    <img src="https://img4.teletype.in/files/b0/38/b038e266-b2e4-40e4-9776-dc557f1e5f17.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <pre data-lang="shell" id="vdnO"># обновляем &#x27;базу данных&#x27;, обновляем дистрибутив
$ sudo apt-get update &amp;&amp; sudo apt-get upgrade -y</pre>
  <pre data-lang="shell" id="gOaB"># скачиваем докер одной командой
$ sudo apt-get install curl gnupg apt-transport-https ca-certificates \
lsb-release -y &amp;&amp; curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg &amp;&amp; \
echo &quot;deb [arch=$(dpkg --print-architecture) \
signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable&quot; \
| sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null &amp;&amp; \
sudo apt-get update &amp;&amp; \
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
# если не работает команда, гуглите &#x27;how to install docker on ubuntu&#x27;</pre>
  <pre data-lang="shell" id="T8C6"># скачиваем &#x27;docker-compose&#x27; одной командой
$ sudo curl -L &quot;https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)&quot; -o /usr/local/bin/docker-compose &amp;&amp; \
sudo chmod +x /usr/local/bin/docker-compose &amp;&amp; docker-compose --version</pre>
  <pre id="cTFP" data-lang="bash"># клонируем репозиторий одной командой
$ git clone https://github.com/pontem-network/bootstrap.git pontem-bootstrap &amp;&amp; \
cd ~/pontem-bootstrap &amp;&amp; cp .env.testnet .env</pre>
  <pre id="cTFP" data-lang="bash"># вставляем в &#x27;конфиг&#x27; свой никнейм
$ nano ~/pontem-bootstrap/.env</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="Qls0" class="m_original">
      <img src="https://img2.teletype.in/files/18/b7/18b7aac2-c2cc-4043-a76e-7d40430a829b.png" width="916" />
    </figure>
  </section>
  <pre id="cTFP" data-lang="bash"># билдим
$ cd ~/pontem-bootstrap &amp;&amp; docker-compose build</pre>
  <figure id="LgRK" class="m_original" data-caption-align="right">
    <img src="https://img4.teletype.in/files/f8/68/f868dcce-fcba-478b-bb09-7c6c0e6bf769.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="aUag">Генерируем новый кошелёк <strong>Nimbus </strong>и сохраняем весь вывод команды.</p>
  <pre id="APpG" data-lang="bash">$ cd ~/pontem-bootstrap &amp;&amp; \
docker-compose run pontem-node pontem key generate --scheme sr25519</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="PPoC" class="m_original">
      <img src="https://img2.teletype.in/files/97/8b/978b39af-8220-48f3-ad59-d52790cbda37.png" width="1150" />
    </figure>
  </section>
  <p id="2gNa">Теперь привязываем ключи к ноде.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="9wER">Копируем команду в текстовый редактор, меняем условную переменную <strong>&lt;your_mnemonic&gt; </strong>на вашу мнемонику из первого пункта.</p>
    <p id="D2od">Затем вставляем команду из редактора в терминал.</p>
    <p id="OwJn">Пример правильно заполненной команды на скриншоте.</p>
  </section>
  <pre id="RzpU" data-lang="bash">$ cd ~/pontem-bootstrap &amp;&amp; \
docker-compose run pontem-node pontem key insert \
--suri &quot;&lt;your_mnemonic&gt;&quot; --keystore-path /opt/pontem/keys --key-type nmbs</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="yxjw" class="m_original">
      <img src="https://img3.teletype.in/files/6a/67/6a677c00-0eb5-4787-b592-59556280a482.png" width="1504" />
    </figure>
  </section>
  <p id="Qx0N">Выводим ключи на экран, чтобы сделать бэкап. Сохраняем весь вывод команды.</p>
  <pre id="LEox" data-lang="bash">$ cd ~/pontem-bootstrap &amp;&amp; \
docker-compose run pontem-node pontem key inspect \
--keystore-path /opt/pontem/keys &quot;&lt;you_mnemonic&gt;&quot;</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="lv9e" class="m_original">
      <img src="https://img2.teletype.in/files/10/d1/10d166a0-f523-4e36-bbdb-861922c07359.png" width="1248" />
    </figure>
  </section>
  <figure id="LHXC" class="m_original" data-caption-align="right">
    <img src="https://img1.teletype.in/files/08/d6/08d66f31-bf77-42b8-9aa6-981304935d40.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <pre data-lang="bash" id="sAa5"># запуск &#x27;pontem-node&#x27;
$ cd ~/pontem-bootstrap &amp;&amp; docker-compose up -d</pre>
  <p id="iPo3">Если увидели такую ошибку:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="kQEv" class="m_original">
      <img src="https://img3.teletype.in/files/a4/1d/a41d4f9e-d2bb-4523-aac2-263efc324496.png" width="1193" />
    </figure>
  </section>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="XY8s">Редактируем порты только тогда, когда выбило ошибку. </p>
    <p id="tD3v">Если всё нормально, порты не трогаем!</p>
  </section>
  <p id="XhWo">Открываем файл конфига и редактируем порты.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="RtJb">Дело в том, что у меня уже стоит другой контейнер с другой нодой на данном сервере. </p>
    <p id="VKFe">Так как 2 контейнера не могут использовать одни и те же порты, придётся их развести.</p>
    <p id="MGZp">В моём случае я произвёл следующие замены в файле по пути <strong>$HOME/pontem-bootstrap/docker-compose.yml</strong>:</p>
    <ul id="tR0V">
      <li id="kHV0">9934 &gt; 8934</li>
      <li id="rCwj">9945 &gt; 8945</li>
      <li id="TKU5">30333 &gt; 30833</li>
      <li id="xxuS">30334 &gt; 30834</li>
      <li id="5hn1">9933 &gt; 9833</li>
      <li id="84z3">9944 &gt; 9844</li>
    </ul>
    <p id="iBM8">По какому принципу я выбирал новые значения? Ни по какому, можно указывать любые свободные порты.</p>
  </section>
  <pre id="dUfL" data-lang="bash">$ nano $HOME/pontem-bootstrap/docker-compose.yml</pre>
  <p id="lNn5">Теперь контейнер успешно создался.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="a7lS" class="m_original">
      <img src="https://img1.teletype.in/files/02/f2/02f2fefc-39ab-40d9-9eb8-160f8d92e0ac.png" width="922" />
    </figure>
  </section>
  <p id="wA00">Посмотрим его логи:</p>
  <pre id="dVyJ" data-lang="bash">$ cd ~/pontem-bootstrap &amp;&amp; docker-compose logs -f --tail 10</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="OusQ" class="m_original">
      <img src="https://img1.teletype.in/files/0e/fa/0efac8bc-6652-46dc-92fa-3a4b57b43fa3.png" width="1158" />
    </figure>
    <figure id="G3Js" class="m_original">
      <img src="https://img4.teletype.in/files/b1/61/b16131a1-51b2-4253-af24-d144b49139b6.png" width="2031" />
    </figure>
  </section>
  <p id="jtTf">Узнать последний блок можно в <a href="https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Ftestnet.pontem.network%2Fws#/explorer" target="_blank">эксплорере</a>:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="LaVu" class="m_original">
      <img src="https://img4.teletype.in/files/b1/37/b1373b6f-4b9c-4ca2-8eb2-4f52ecb4f8a7.png" width="617" />
    </figure>
  </section>
  <p id="d8z0">Пример рабочих логов после синхронизации:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="7Qmg" class="m_original">
      <img src="https://img1.teletype.in/files/4a/ff/4affa9dc-c659-434d-b2ae-b29ad1d12ac5.png" width="2198" />
    </figure>
  </section>
  <p id="8kiR">Perfect!</p>
  <figure id="jXT0" class="m_original" data-caption-align="right">
    <img src="https://img1.teletype.in/files/84/ee/84ee4728-e5bf-4b42-a8a9-6182a903ef18.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="oeSP">Можно стать либо номинатором (делегировать через интерфейс), либо быть коллатором (запускать ноду). Одновременно нельзя держать ноду и делегировать кому-то с одного аккаунта.</p>
  </section>
  <p id="zjRD">Переходим на <a href="https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Ftestnet.pontem.network%2Fws#/accounts" target="_blank">сайт</a> и теперь будем работаем с дашбордом польки.</p>
  <p id="e9B2">Во вкладке <strong>Developer </strong>будем использовать следующиеинструменты: </p>
  <ul id="Cxoy">
    <li id="s5vl"><strong><a href="https://polkadot.js.org/apps/?rpc=wss://testnet.pontem.network/ws#/extrinsics" target="_blank">Extrinsics</a></strong>: здесь будем создавать коллатора, делегировать токены.</li>
    <li id="4ffP"><strong><a href="https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Ftestnet.pontem.network%2Fws#/chainstate" target="_blank">Chain State</a></strong>: а здесь будем запрашивать данные о блокчейне.</li>
  </ul>
  <hr />
  <p id="ePZk">Первым делом, связываем аккаунт из расширения (я надеюсь, вы уже установили <a href="https://polkadot.js.org/extension/" target="_blank">polkadot.js</a> и имеете личный кошелёк) и свой публичный ключ.</p>
  <p id="0BBp">Открываем <a href="https://polkadot.js.org/apps/?rpc=wss://testnet.pontem.network/ws#/extrinsics" target="_blank">Extrinsics</a> и выбираем <strong>authorMapping, addAssociation(author_id)</strong> и вставляем свой публичный ключ, который мы сохраняли раннее, в соответствующее поле.</p>
  <p id="uK4J">Подробнее на скриншоте:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="0VQ8" class="m_original">
      <img src="https://img3.teletype.in/files/a4/ff/a4ff6cd1-4efc-4625-a4d6-3f567b743fce.png" width="1240" />
    </figure>
  </section>
  <p id="s2Wr">Подтверждаем транзакцию. С баланса спишется 1 <strong>PONT </strong>и небольшая комиссия за транзакцию.</p>
  <p id="F4My">Теперь запрашиваем данные об уже созданных коллаторах.</p>
  <p id="fgor">Переходим в <a href="https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Ftestnet.pontem.network%2Fws#/js" target="_blank">JavaScript</a> и &quot;выполняем&quot; следующий код (предварительно удалив дефолтный, разумеется):</p>
  <pre id="1SRX">const candidatePool = await api.query.parachainStaking.candidatePool();
console.log(&#x60;Candidate pool size is: ${candidatePool.length}&#x60;);</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="42ZU">Чтобы &quot;выполнить&quot; код, нужно нажать белую стрелочку в фиолетовом круге посередине.</p>
  </section>
  <p id="2XVu">Вот так должно выглядеть: </p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="coiT" class="m_original">
      <img src="https://img3.teletype.in/files/6c/3b/6c3ba59d-98e9-4fe0-a01e-7dfb99d5d840.png" width="1229" />
    </figure>
  </section>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="cMs1">Запомните своё значение. В моём случае, 20.</p>
  </section>
  <p id="CMX4">Возвращаемся к <a href="https://polkadot.js.org/apps/?rpc=wss://testnet.pontem.network/ws#/extrinsics" target="_blank">Extrinsics</a> и выбираем <strong>parachainStaking</strong>, <strong>joinCandidates(bond, candidate_count). </strong></p>
  <p id="M12y">Вставляем своё значение <strong>PONT</strong>, которое хотите заделегировать в своего коллатора. Минимум 1000 токенов. </p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Po8c">1000 токенов = 10000000000000 в формате u64.</p>
  </section>
  <p id="rUBk">В поле <strong>canditate_count </strong>вставляем своё значение из прошлого пункта. Для меня это 20.</p>
  <p id="XKWX">Пример на скриншоте. Подписываем транзакцию:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="pRtP" class="m_original">
      <img src="https://img1.teletype.in/files/4f/ae/4fae5171-9d33-4ae3-89aa-54c21546cb86.png" width="1713" />
    </figure>
  </section>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="QK8I" class="m_original">
      <img src="https://img1.teletype.in/files/04/79/047926cb-73f8-412a-a2d4-9cba12ae07c3.png" width="365" />
    </figure>
    <p id="n2im">Если встретили эту ошибку, просто увеличьте на 1 своё значение кандидатов. </p>
    <p id="zC16">Между получением значения кандидатов и отправлением транзакции, образуется время, в которое кто-то другой может стать кандидатом. </p>
    <p id="3IOc">Поэтому выбивает ошибку, что слишком маленькое число кандидатов. Просто за это время кандидатов стало больше.</p>
  </section>
  <p id="h8p9">Как только ваш коллатор окажется в числе первых, вы станете активным и начнёте генерировать блоки и, соответственно, получать реварды.</p>
  <p id="0zHC">Реварды будут начисляться прямо на кошелёк.</p>
  <hr />
  <p id="wobT">Как проверить, всё ли прошло удачно?</p>
  <p id="LjFA">Переходим в <a href="https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Ftestnet.pontem.network%2Fws#/chainstate" target="_blank">Chain State</a>, выбираем <strong>parachainStaking</strong>, затем <strong>candidatePool </strong>(чтобы посмотреть весь список, включая активных и неактивных) или <strong>selectedCandidates </strong>(чтобы увидеть список только активных коллаторов).</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Xj9f">Чтобы выполнить запрос нужно нажать белый плюсик в фиолетовом круге.</p>
  </section>
  <p id="hXi4">Пример на скриншоте:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="evSS" class="m_original">
      <img src="https://img1.teletype.in/files/c5/c9/c5c9c23d-eede-4db9-9d3a-8233d02880af.png" width="1693" />
    </figure>
  </section>
  <p id="hDm0">Теперь просто ищем свой адрес, с которого отправляли транзакции по созданию коллатора.</p>
  <p id="TcEx">С большим количеством полезных запросов можно ознакомиться в соответствующем разделе <a href="https://docs.pontem.network/03.-staking/collator" target="_blank">официальной документации</a>.</p>
  <p id="bc5E">После того, как вас добавили в активные коллаторы, нода начнёт принимать участие в консесусе. Доказательство тому можно лицезреть в логах контейнера:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="zyDK" class="m_original">
      <img src="https://img4.teletype.in/files/74/ca/74ca99f5-2630-4f54-93de-c6e0b37d4b8c.png" width="1280" />
    </figure>
  </section>
  <figure id="ztUU" class="m_original" data-caption-align="right">
    <img src="https://img2.teletype.in/files/1f/77/1f77fe7e-090f-456f-8c4e-18d558d79103.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="zuXQ">Можно стать либо номинатором (делегировать через интерфейс), либо быть коллатором (запускать ноду). Одновременно нельзя держать ноду и делегировать кому-то с одного аккаунта.</p>
  </section>
  <p id="ONxV">В этом разделе попробуем делегировать свои токены в уже активного коллатора, чтобы получать награды за делегирование.</p>
  <p id="vk0J">Переходим в <a href="https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Ftestnet.pontem.network%2Fws#/chainstate" target="_blank">Chain State</a>, выбираем <strong>parachainStaking</strong>, затем <strong>selectedCandidates </strong>(чтобы увидеть список только активных коллаторов).</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="25aF" class="m_original">
      <img src="https://img4.teletype.in/files/bd/29/bd293c2f-fd67-4e6b-b98e-33bb39bf2ccc.png" width="1701" />
    </figure>
  </section>
  <p id="6dsA">Выбираем любого понравившегося и копируем его адрес.</p>
  <p id="nkY0">Теперь переходим на <a href="https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Ftestnet.pontem.network%2Fws#/js" target="_blank">JavaScript</a> и выполняем следующий код, чтобы получить количество номинаторов у выбранного коллатора:</p>
  <pre id="3eUr">const collatorAccount = &#x27;COLLATOR_ADDRESS&#x27;;
const collatorInfo = await api.query.parachainStaking.collatorState2(collatorAccount);
console.log(&#x27;Nominators count: &#x27; + collatorInfo.toHuman()[&quot;nominators&quot;].length);</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="mNaU">Вместо <strong>COLLATOR_ADDRESS</strong> вставляем адрес выбранного нами коллатора.</p>
    <p id="55P5">Пример на скриншоте.</p>
  </section>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="4aL6" class="m_original">
      <img src="https://img1.teletype.in/files/4c/b0/4cb01d1f-9357-4ce9-8e9c-751489be70a1.png" width="1739" />
    </figure>
  </section>
  <p id="9diL">В моём случае, результат: 0.</p>
  <p id="DaEs">На этой же странице выполняем следующий код, чтобы получить количество номинированных нами коллаторов:</p>
  <pre id="lyhf">const yourNominatorAccount = &#x27;YOUR_ADDRESS_HERE&#x27;;
const nominatorInfo = await api.query.parachainStaking.nominatorState2(yourNominatorAccount);
console.log(&#x27;Nominations: &#x27; + nominatorInfo.toHuman()[&quot;nominations&quot;].length);</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Ph2g">Вместо <strong>YOUR_ADDRESS_HERE</strong> вставляем свой адрес, с которого хотите номинировать. </p>
    <p id="lika">Пример на скриншоте.</p>
  </section>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="idvH" class="m_original">
      <img src="https://img4.teletype.in/files/7c/b0/7cb024e8-7639-4073-8c35-a0b164f3d84e.png" width="1730" />
    </figure>
  </section>
  <p id="jEwI">Так как я номинирую в первый раз, у меня выбивает ошибку. Это нормально, значит, моё значение: снова 0.</p>
  <p id="AHEH">Теперь приступаем к стейкингу. Переходим к <a href="https://polkadot.js.org/apps/?rpc=wss://testnet.pontem.network/ws#/extrinsics" target="_blank">Extrinsics</a>, выбираем <strong>parachainStaking </strong>&gt; <strong>nominate(collator, amount, collatorNominatorCount, nominationCount)</strong>.</p>
  <p id="oUAI">В поле <strong>collator </strong>вставляем адрес выбранного коллатора, в <strong>amount </strong>- количество <strong>PONT</strong>, в <strong>collatorNominatorCount </strong>- результат из первого запроса, в <strong>nominationCount </strong>- результат из второго запроса.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="66Wc">100 токенов = 1000000000000 в формате u64.</p>
  </section>
  <p id="VYZy">Пример на скриншоте:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="eGlo" class="m_original">
      <img src="https://img3.teletype.in/files/ed/f5/edf59926-842e-4caf-aef3-5163905c651e.png" width="1718" />
    </figure>
  </section>
  <p id="BXVK">Подписываем транзакцию. Вот и всё.</p>
  <p id="tJ2g">Чтобы застейкать больше или меньше, используем соответствующие запросы:</p>
  <ul id="Uueo">
    <li id="3KUQ">nominatorBontMore</li>
    <li id="4VSr">nominatorBondLess</li>
  </ul>
  <p id="Andp">Чтобы забрать свой стейк у коллатора, выполняем запрос:</p>
  <ul id="9pJG">
    <li id="39S3">revokeNomination</li>
  </ul>
  <p id="stake-more-or-less.">С большим количеством полезных запросов можно ознакомиться в соответствующем разделе <a href="https://docs.pontem.network/03.-staking/collator" target="_blank">официальной документации</a>.</p>
  <p id="cfmd"></p>
  <figure id="yK3h" class="m_custom" data-caption-align="right">
    <img src="https://img1.teletype.in/files/8e/a7/8ea78cb3-b463-402d-a250-61327a36e888.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <pre data-lang="bash" id="4hPB"># посмотреть логи контейнера
$ cd ~/pontem-bootstrap &amp;&amp; docker-compose logs -f --tail 10</pre>
  <pre id="4hPB" data-lang="bash"># рестартануть контейнер
$ cd ~/pontem-bootstrap &amp;&amp; docker-compose restart</pre>
  <pre id="4hPB" data-lang="bash"># стопнуть контейнер
$ cd ~/pontem-bootstrap &amp;&amp; docker-compose stop</pre>
  <figure id="6Mla" class="m_custom" data-caption-align="right">
    <img src="https://img4.teletype.in/files/fb/9f/fb9fc170-d5ae-47d9-8296-d5abb2c16625.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="KNOT">Про перенос я написал <a href="/moving">полноценную статью</a>. Читаем внимательно и вдумчиво.</p>
  <p id="UwW1">Конкретно в случае Pontem, нам нужно удалить текущий контейнер со старого сервера и запустить новый контейнер на тех же ключах, что и старый.</p>
  <figure id="fJH9" class="m_custom" data-caption-align="right">
    <img src="https://img3.teletype.in/files/a3/be/a3be0848-c9c7-481e-aee1-0bbb8a2d3be2.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="6DCM">Если вы вдруг разочаровались в проекте и хотите удалить его с сервера, то можно просто разрушить/удалить сервер из личного кабинета хостинга.</p>
  <p id="BjUe">Это сработает, если на сервере нет других важных нод. В случае, если вы хотите оставить сервер, но удалить конкретную ноду - приступаем к её удалению:</p>
  <pre data-lang="bash" id="mjqL"># получаем ID контейнера и отключаем его
$ docker ps
$ docker stop &lt;ID&gt; &amp;&amp; docker rm &lt;ID&gt;</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="fuTD" class="m_original">
      <img src="https://img2.teletype.in/files/99/28/99289121-0859-47fe-812e-0aa1322bbbad.png" width="920" />
    </figure>
    <figure id="Jyk3" class="m_original">
      <img src="https://img1.teletype.in/files/89/5f/895f298b-d6ca-40b3-92d2-8216ee7484e6.png" width="734" />
    </figure>
  </section>
  <pre data-lang="bash" id="QScx"># получаем ID образа и удаляем образ
$ docker images
$ docker rmi &lt;ID&gt; --force</pre>
  <section>
    <figure id="70UA" class="m_original">
      <img src="https://img3.teletype.in/files/a9/ee/a9ee8984-067f-4980-8800-8e04eb1880dc.png" width="880" />
    </figure>
    <figure id="hSMd" class="m_original">
      <img src="https://img4.teletype.in/files/35/44/354483f2-0b4d-4cc6-91da-7881f797c1c6.png" width="894" />
    </figure>
  </section>
  <pre data-lang="bash" id="QjO6"># удаляем каталог
$ sudo rm -Rvf $HOME/pontem-bootstrap</pre>
  <figure id="cFtd" class="m_custom" data-caption-align="right">
    <img src="https://img1.teletype.in/files/86/ef/86ef470d-eaa8-4f3d-a986-4fd888334fb2.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="rjco">мамичу за то, что родила такого гения.</p>
  <p id="4m3t"><a href="https://t.me/saltedsanya" target="_blank">@saltedsanya</a> за помощь с гайдом.</p>
  <figure id="kY7a" class="m_custom" data-caption-align="right">
    <img src="https://img1.teletype.in/files/80/94/8094f1ca-b7d6-495c-b03f-332d2acbea2f.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="1w0H"><a href="https://t.me/how_to_node" target="_blank">@how_to_node</a> - канал, где я выкладываю свои гайды.</p>
  <p id="i6bu"><a href="/@cyberomanov/WTF_resources">Полезные ресурсы</a>.</p>
  <p id="nR2t"><a href="/@cyberomanov/WTF_donate">Крипто-кошельки автора гайда</a>.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@cyberomanov/gentx</guid><link>https://teletype.in/@cyberomanov/gentx?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov</link><comments>https://teletype.in/@cyberomanov/gentx?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov#comments</comments><dc:creator>cyberomanov</dc:creator><title>How To GENTX /// v1.0</title><pubDate>Wed, 17 Nov 2021 19:16:06 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/a5/00/a500aa5b-5d3e-49cb-bda2-261f5349f659.png"></media:content><category>Immortal Articles</category><description><![CDATA[<img src="https://cs11.pikabu.ru/post_img/2020/04/30/10/1588266690127712315.jpg"></img>Отправляем gentx на примере Olympus. ]]></description><content:encoded><![CDATA[
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="euUW" class="m_original">
      <img src="https://cs11.pikabu.ru/post_img/2020/04/30/10/1588266690127712315.jpg" width="700" />
    </figure>
  </section>
  <p id="jVkW">Отправляем <strong>gentx </strong>на примере <strong>Olympus</strong>. </p>
  <section>
    <p id="uEa2">Если вы не знаете, <strong>что такое нода</strong> — читаем <a href="/WTF_node">статью</a>. <br />Если вы не знаете, <strong>где арендовать сервер для ноды</strong> — читаем <a href="/WTF_server">статью</a>. <br />Если вы не знаете, <strong>как подключиться к серверу</strong> — читаем <a href="/WTF_MobaXterm">статью</a>. <br />Если вы всё знаете — открываем <strong>MobaXterm </strong>и создаём сессию.</p>
  </section>
  <figure id="tBXT" class="m_custom">
    <img src="https://img3.teletype.in/files/6e/b7/6eb72bd2-4a8e-4bdc-bdd4-1714e38ba7b8.png" width="700" />
  </figure>
  <ul id="V0I6">
    <li id="GqAg"><a href="#lF9O">Установка</a>: устанавливаем необходимую ноду.</li>
    <li id="Nsba"><a href="#RPBG">Gentx</a>: создаём <strong>gentx</strong>.</li>
    <li id="XHBK"><a href="#FejK">Github</a>: отправляем <strong>pull request</strong>.</li>
    <li id="BOqS"><a href="#k9CY">Благодарности</a></li>
    <li id="xZ7E"><a href="#u1jH">Полезные ресурсы на каждый день</a></li>
  </ul>
  <figure id="lF9O" class="m_original" data-caption-align="right">
    <img src="https://img4.teletype.in/files/b0/38/b038e266-b2e4-40e4-9776-dc557f1e5f17.png" width="700" />
    <figcaption><a href="#tBXT">Содержание</a></figcaption>
  </figure>
  <p id="3au6">Немного подготавливаем сервер. Подразумевается установка на чистый сервер.</p>
  <pre id="Qt9b" data-lang="bash"># обновляем &#x27;базу данных&#x27;, обновляем дистрибутив 
$ sudo apt-get update &amp;&amp; sudo apt-get upgrade -y</pre>
  <pre id="Qt9b" data-lang="bash"># устанавливаем необходимые пакеты, если необходимо
$ sudo apt install curl tar wget clang pkg-config libssl-dev \
jq build-essential git make ncdu -y</pre>
  <pre id="Qt9b" data-lang="bash"># устанавливаем &#x27;go&#x27;, если это необходимо
$ wget https://golang.org/dl/go1.17.2.linux-amd64.tar.gz; \
rm -rv /usr/local/go 2&gt;/dev/null; \
tar -C /usr/local -xzf go1.17.2.linux-amd64.tar.gz &amp;&amp; \
rm -v go1.17.2.linux-amd64.tar.gz &amp;&amp; \
echo &quot;export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin&quot; \
&gt;&gt; ~/.bash_profile &amp;&amp; \
source ~/.bash_profile &amp;&amp; \
go version</pre>
  <p id="KkKs">Уставляем необходимую нам ноду.</p>
  <pre id="Qt9b" data-lang="bash"># устанавливаем нужную ноду
$ cd &amp;&amp; \
rm -Rvf $HOME/evmos 2&gt;/dev/null; \
git clone https://github.com/tharsis/evmos.git &amp;&amp; \
cd $HOME/evmos &amp;&amp; \
make install &amp;&amp; \
cd</pre>
  <pre id="Qt9b" data-lang="bash"># удаляем старый генезис. если нода не &#x27;evmos&#x27; - редактируйте команду
$ rm $HOME/.evmosd/config/genesis.json 2&gt;/dev/null</pre>
  <pre id="Qt9b" data-lang="bash"># восстанавливаем ключи из прошлого тестнета, либо генерим новые
# БЕЗ &lt; &gt;, ЛАДНО?
$ evmosd keys add &lt;nickname&gt; --recover
$ evmosd keys add &lt;nickname&gt;</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="64FA" class="m_original">
      <img src="https://img2.teletype.in/files/56/8e/568e6fdc-ab01-4e78-bff0-2f2246701ca5.png" width="1679" />
    </figure>
  </section>
  <figure id="RPBG" class="m_original" data-caption-align="right">
    <img src="https://img4.teletype.in/files/b4/d3/b4d334e7-6933-459e-8a31-2eb1e637e705.png" width="700" />
    <figcaption><a href="#tBXT">Содержание</a></figcaption>
  </figure>
  <p id="Tvqs">Создаём <strong>gentx</strong>.</p>
  <pre id="Qt9b" data-lang="bash"># инициализируем ноду. если нода не &#x27;evmos&#x27; - редактируйте команду
# БЕЗ &lt; &gt;, ЛАДНО?
$ evmosd init &lt;nickname&gt; --chain-id=evmos_9000-2</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="LPHn" class="m_original">
      <img src="https://img1.teletype.in/files/c1/02/c1021d4e-faf2-421e-b0b5-30529cbd70aa.png" width="2260" />
    </figure>
  </section>
  <pre id="Qt9b" data-lang="bash"># добавляем генезис аккаунт. если нода не &#x27;evmos&#x27; - редактируйте команду
# БЕЗ &lt; &gt;, ЛАДНО?
$ evmosd add-genesis-account \
$(evmosd keys show &lt;nickname&gt; -a) 1000000000000aphoton</pre>
  <pre id="Qt9b" data-lang="bash"># удаляем возможный старый &#x27;gentx&#x27;
$ rm -Rvf $HOME/.evmosd/config/gentx</pre>
  <pre id="Qt9b" data-lang="bash"># генерация gentx. если нода не &#x27;evmos&#x27; - редактируйте команду
# БЕЗ &lt; &gt;, ЛАДНО?
$ evmosd gentx &lt;nickname&gt; 1000000000000aphoton \
--commission-rate=0.1 \
--commission-max-rate=1 \
--commission-max-change-rate=0.1 \
--pubkey $(evmosd tendermint show-validator) \
--chain-id=evmos_9000-2</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="IbLZ" class="m_original">
      <img src="https://img4.teletype.in/files/f3/72/f3725ac9-1d03-4edd-9e13-7a43d499cff9.png" width="1228" />
    </figure>
  </section>
  <p id="950G">Выводим на экран <strong>gentx</strong>. Если нода не <strong>evmos </strong>- редактируем пути под себя.</p>
  <pre id="8KP6">$ cat $HOME/.evmosd/config/gentx/&#x60;ls $HOME/.evmosd/config/gentx/&#x60;</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="MeN8" class="m_original">
      <img src="https://img1.teletype.in/files/80/66/8066f89a-4b8c-407c-aed1-2bf142ede494.png" width="2259" />
    </figure>
  </section>
  <p id="2kEe">Копируем и сохраняем в текстовый файл на ПК.</p>
  <figure id="FejK" class="m_original" data-caption-align="right">
    <img src="https://img2.teletype.in/files/de/0c/de0c8aae-a8c8-4b0e-be39-2231856be254.png" width="700" />
    <figcaption><a href="#tBXT">Содержание</a></figcaption>
  </figure>
  <p id="cnN1">Теперь заходим на <a href="http://github.com" target="_blank">гитхаб</a> и логинимся в аккаунт. </p>
  <p id="3Dt7">Открываем репозиторий нужного нам тестнета и форкаем репозиторий.</p>
  <p id="Xiqq">В моём случае, это эвмос: <a href="https://github.com/tharsis/testnets" target="_blank">https://github.com/tharsis/testnets</a>.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="1H8i" class="m_original">
      <img src="https://img2.teletype.in/files/12/97/1297b466-a6e8-41ac-abcb-2f96b8ab0dfd.png" width="1014" />
    </figure>
  </section>
  <p id="I5kK">В открывшемся форке переходим по папкам в нужную нам. Для каждого проекта &quot;нужная папка&quot; уникальна и указана в официальной документации.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="3Cd0">Под &quot;нужная папка&quot; я подразумеваю папку, куда нужно залить свою <strong>gentx</strong>.</p>
  </section>
  <p id="QTiQ">В моём случае, это <strong>testnets-1/olympus_mons/gentxs/:</strong></p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="bcZL" class="m_original">
      <img src="https://img3.teletype.in/files/a2/e9/a2e9d221-34e6-41ac-80de-68295af7775e.png" width="1024" />
    </figure>
  </section>
  <p id="IetY">Добавляем новый файл:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="2Ety" class="m_original">
      <img src="https://img1.teletype.in/files/87/ad/87ad7588-c578-4cf2-91d4-25b8167c71d9.png" width="1029" />
    </figure>
  </section>
  <p id="VVCi">В названии файла пишем, собственно, название файла.</p>
  <p id="ahEP">Для каждого тестнета требования к названию уникальны. Конкретно в моём случае, я должен назвать файл по следующему примеру: <strong>&lt;moniker&gt;.json</strong></p>
  <p id="jzXA">Так я и делаю. При создании <strong>gentx </strong>в терминале я обозвал моникер, как <strong>test</strong>, название файла указываю соответствующее. Это <strong>важно</strong>.</p>
  <p id="gElF">В содержимое файла вставляем последний вывод терминала и название коммита указываем: <strong>ADD &lt;moniker&gt; gentx. </strong>Выглядеть должно так:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="S4RE" class="m_original">
      <img src="https://img1.teletype.in/files/c8/97/c897f451-424e-4891-b681-3b127cf27e21.png" width="1041" />
    </figure>
    <figure id="7q5I" class="m_original">
      <img src="https://img1.teletype.in/files/c0/a6/c0a6b5a0-b152-4278-ab0e-f129f3789624.png" width="1028" />
    </figure>
  </section>
  <p id="us6h">Теперь нажимаем на &quot;<strong>Commit new file</strong>&quot;. Выглядит это у меня следующим образом. </p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="eImR" class="m_original">
      <img src="https://img1.teletype.in/files/49/0b/490b3405-7171-4fa7-b889-53515778ab87.png" width="1031" />
    </figure>
  </section>
  <p id="wxdl">Теперь отправим сам пул реквест: <strong>Contribute &gt; Open pull request:</strong></p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="L6Ie" class="m_original">
      <img src="https://img2.teletype.in/files/dd/6c/dd6cbcaf-5c32-41ca-8f51-20e9c1d9cff3.png" width="1024" />
    </figure>
    <figure id="XTtq" class="m_original">
      <img src="https://img1.teletype.in/files/86/4b/864b459c-5700-40a7-9c28-b7c750a5886a.png" width="1085" />
    </figure>
    <figure id="0LaZ" class="m_original">
      <img src="https://img4.teletype.in/files/78/c8/78c8f3e2-10f8-49d0-857f-5567c6b31188.png" width="1081" />
    </figure>
  </section>
  <p id="c7Ef">Ваш пул должен появиться в главном репозитории, во вкладке <strong>Pull requests</strong>:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="lVXL" class="m_original">
      <img src="https://img2.teletype.in/files/d8/47/d8470266-2641-4a57-be57-0a1d5f77ae9c.png" width="586" />
    </figure>
  </section>
  <p id="MjVT">Вот и всё. Основные моменты описал. </p>
  <p id="5SL0">Если у вас возникают трудности при таких простых манипуляциях - задумайтесь, а оно вам надо? </p>
  <p id="x7yZ">Если надо, тогда долбите. Рано или поздно получится. Главное не сдаваться, если сильно хочется. </p>
  <p id="007L">Взаимодействие с гитхабом очень востребовано. Важно уметь работать с ним.</p>
  <figure id="k9CY" class="m_custom" data-caption-align="right">
    <img src="https://img1.teletype.in/files/86/ef/86ef470d-eaa8-4f3d-a986-4fd888334fb2.png" width="700" />
    <figcaption><a href="#tBXT">Содержание</a></figcaption>
  </figure>
  <p id="4DJE">мамичу за то, что родила такого гения.</p>
  <figure id="u1jH" class="m_custom" data-caption-align="right">
    <img src="https://img1.teletype.in/files/80/94/8094f1ca-b7d6-495c-b03f-332d2acbea2f.png" width="700" />
    <figcaption><a href="#tBXT">Содержание</a></figcaption>
  </figure>
  <p id="Cg1O"><a href="https://t.me/how_to_node" target="_blank">@how_to_node</a> - канал, где я выкладываю свои гайды.</p>
  <p id="602p"><a href="https://cyberomanov.tech/WTF_resources" target="_blank">Полезные ресурсы</a>.</p>
  <p id="GYtw"><a href="https://cyberomanov.tech/WTF_donate" target="_blank">Крипто-кошельки автора гайда</a>.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@cyberomanov/IDEP</guid><link>https://teletype.in/@cyberomanov/IDEP?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov</link><comments>https://teletype.in/@cyberomanov/IDEP?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov#comments</comments><dc:creator>cyberomanov</dc:creator><title>IDEP /// v2.0</title><pubDate>Sun, 17 Oct 2021 00:59:46 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/02/81/02818d6b-526a-42ab-b991-67c1f07d696a.jpeg"></media:content><category>Too Late</category><description><![CDATA[<img src="https://img2.teletype.in/files/9d/e8/9de8abf0-3dce-491f-8b3d-bcafca05d40b.png"></img>Устанавливаем ноду IDEP для участия в SanfordV2.]]></description><content:encoded><![CDATA[
  <section>
    <figure id="nPkC" class="m_original">
      <img src="https://img2.teletype.in/files/9d/e8/9de8abf0-3dce-491f-8b3d-bcafca05d40b.png" width="1910" />
    </figure>
  </section>
  <p id="IDjf">Устанавливаем ноду <strong>IDEP </strong>для участия в <strong>SanfordV2</strong>.</p>
  <section>
    <p id="GZ8m">Если вы не знаете, <strong>что такое нода</strong> — читаем <a href="/@cyberomanov/WTF_node">статью</a>. <br />Если вы не знаете, <strong>где арендовать сервер для ноды</strong> — читаем <a href="/@cyberomanov/WTF_server">статью</a>. <br />Если вы не знаете, <strong>как подключиться к серверу</strong> — читаем <a href="/@cyberomanov/WTF_MobaXterm">статью</a>. <br />Если вы всё знаете — открываем <strong>MobaXterm </strong>и создаём сессию.</p>
  </section>
  <figure id="GETY" class="m_custom">
    <img src="https://img3.teletype.in/files/6e/b7/6eb72bd2-4a8e-4bdc-bdd4-1714e38ba7b8.png" width="700" />
  </figure>
  <ul id="Rryf">
    <li id="AEgZ"><a href="#qJPJ">Описание проекта</a>: несколько слов о проекте, условия участия в ивенте.</li>
    <li id="nLO4"><a href="#fOyb">Требования к железу</a>: рекомендуемые технические параметры сервера.</li>
    <li id="R8R6"><a href="#r6Rp">Установка</a></li>
    <ul id="SPTU">
      <li id="n504"><a href="#r6Rp">Нода</a>: скачиваем и настраиваем ноду;</li>
      <li id="oS0R"><a href="#fhjO">Кошелёк</a>: регистрируем аккаунт;</li>
      <li id="C4WE"><a href="#vPXj">Кран</a>: запрашиваем тестовые токены;</li>
      <li id="TKEK"><a href="#0DPq">Валидатор</a>: создаём валидатора;</li>
    </ul>
    <li id="5SiI"><a href="#R8n9">Полезные вещи</a></li>
    <ul id="elMk">
      <li id="K5NY"><a href="#R8n9">Полезные команды</a> при работе с нодой;</li>
      <li id="gjYp"><a href="#OeBS">Ределегация</a>: выводим реварды за стейкинг и ределегируем их.</li>
      <li id="jJSj"><a href="#tVcn">Идентификация</a>: делаем валидатора уникальным;</li>
      <li id="Oaee"><a href="#NLRG">Обновление</a>;</li>
    </ul>
    <ul id="wOHF">
      <li id="fuWc"><a href="#6Mla">Перенос и бэкап</a>: пригодится при переезде;</li>
      <li id="3kgs"><a href="#fJH9">Удаление ноды</a>: на будущее.</li>
    </ul>
    <li id="ZNnG"><a href="#cFtd">Благодарности</a></li>
    <li id="bUoX"><a href="#kY7a">Полезные ресурсы на каждый день</a></li>
  </ul>
  <figure id="qJPJ" class="m_original" data-caption-align="right">
    <img src="https://img2.teletype.in/files/19/82/1982211d-2729-405d-9545-1dd5170a5f7c.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="SRUZ"><strong>IDEP </strong>- это блокчейн<strong> NFT2.0</strong>, который фокусируется на децентрализованных цифровых медиа. Он построен с использованием механизма консенсуса <strong>Tendermint </strong>и <strong>Cosmos SDK</strong>. </p>
  <p id="2CSI">Основное видение <strong>IDEP </strong>состоит в том, чтобы стать первой платформой AR  (дополненной реальности) для цифровых медиа глобального масштаба, использующей <strong>PoS Tendermint</strong>. </p>
  <p id="o48E">Сеть <strong>IDEP </strong>делает это возможным за счет создания слоя <strong>AR </strong>на основе геолокации, который легко интегрируется с мобильными устройствами и умными очками. </p>
  <p id="rJpW"><strong>AR IDEP</strong> - новый стандарт в области дополненной реальности. </p>
  <p id="LIY8">Модули сети <strong>IDEP </strong>будут иметь полную интеграцию и нативное использование <strong>AR</strong>. Кроме того, поскольку слой <strong>AR</strong> настолько тесно интегрирован с сетью, он сможет использоваться остальной частью экосистемы <strong>Cosmos </strong>и более широким сообществом блокчейнов. </p>
  <p id="umL4">Протокол связи между блокчейнами, <strong>IBC</strong>, приведет к захватывающему сотрудничеству и примерам использования, основанным на технологии <strong>AR IDEP</strong>. </p>
  <p id="ZM7x">Сеть <strong>IDEP </strong>придерживается философии с открытым исходным кодом, приглашая все сообщество <strong>IDEP </strong>внести свой вклад в развитие сети, создавая самодостаточную децентрализованную платформу.</p>
  <p id="fs3L"><strong>IDEP </strong>запустится с 3 основными базовыми моделями экосистемы:</p>
  <ul id="rekf">
    <li id="ztLx"><em>Uptake</em>: платформа следующего поколения NFT2.0;</li>
    <li id="n6hV"><em>IDENTITY</em>: гиперрасширяемый сетевой профиль;</li>
    <li id="rlBr"><em>IDEP-Swap</em>: рынок цифровых активов. </li>
  </ul>
  <p id="9PpX">Сейчас множество блокчейнов являются &quot;общими&quot; сетями, с отсутствием целенаправленности, узкой специализизации. </p>
  <p id="DW6B"><strong>IDEP </strong>считает это проблемой. Архитектура должна быть адаптирована для создания экосистемы, которая наилучшим образом подходит для развития конкретного сообщества.</p>
  <p id="jMUf">Сеть <strong>IDEP </strong>является частью <strong>Cosmos</strong>, что подразумевает нативную поддержку <strong>IBC</strong>.</p>
  <p id="8Km1"><strong>IDEP </strong>полностью интегрировал виртуальную машину <strong>Ethereum </strong>(<strong>EVM</strong>) в свою архитектуру. Используя <strong>EVM </strong>в качестве основы, вся база знаний <strong>Ethereum </strong>напрямую применима к <strong>IDEP </strong>- разработчики могут использовать все инструменты, которые уже созданы для экосистемы <strong>Ethereum</strong>. </p>
  <p id="ReJV">Это позволяет существующим проектам из индустрии <strong>NFT </strong>и цифровых медиа легко переходить с <strong>Ethereum </strong>на <strong>IDEP</strong>, чтобы воспользоваться преимуществами высокой скорости транзакций, безопасности и низких сборов за газ. </p>
  <p id="uiJK">В конечном счете, это позволит проектам сотрудничать с другими проектами, ориентированными на цифровой контент, в одной экосистеме.</p>
  <p id="2TY6"><strong>$IDEP</strong> - это собственный, нативный токен сети <strong>IDEP</strong>. Подробная информация о токеномике представлена <a href="https://medium.com/idep-network/idep-network-tokenomics-c05babc463b7" target="_blank">здесь</a>.</p>
  <p id="7lN0"><strong>Roadmap</strong>:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="ehqJ" class="m_original">
      <img src="https://docs.idep.network/assets/images/roadmap_paper-884d62fd01f109139dc5cd0cd4a055d0.png" width="1036" />
    </figure>
  </section>
  <hr />
  <p id="j0uA">Текущая фаза тестнета является стимулируемой (оплачиваемой). </p>
  <p id="R3eY">За награды могут бороться только участники дискорда с ролью <strong>Testnet-Sanford</strong>.</p>
  <p id="090c">Если у вас нет такой роли - нет смысла ставить ноду.</p>
  <hr />
  <p id="I4iM" data-align="center"><a href="https://medium.com/idep-network" target="_blank">Medium</a> | <a href="https://docs.idep.network/" target="_blank">Docs</a> | <a href="https://github.com/IDEP-network" target="_blank">GitHub</a> | <a href="https://idep.network/" target="_blank">WebSite</a> | <a href="https://twitter.com/idepnetwork" target="_blank">Twitter</a> | <a href="https://discord.com/invite/Jrarctk4hG" target="_blank">Discord</a> | <a href="https://t.me/IDEPNetwork" target="_blank">Telegram</a> | <a href="https://t.me/IDEP_RU" target="_blank">RU_Chat</a></p>
  <figure id="fOyb" class="m_custom" data-caption-align="right">
    <img src="https://img2.teletype.in/files/1e/68/1e68921d-fab9-40ff-8b0d-aea35411decd.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="TKmO">Официальные требования: <strong>4 CPU </strong>x<strong> 8 GB RAM </strong>x<strong> 1 TB SSD</strong> - Ubuntu 20.04.</p>
  <p id="MaxK">Субъективные наблюдения: <strong>2 CPU </strong>x<strong> 4 GB RAM </strong>x<strong> 200 GB SSD</strong> - Ubuntu 20.04.</p>
  <figure id="r6Rp" class="m_custom" data-caption-align="right">
    <img src="https://img4.teletype.in/files/b0/38/b038e266-b2e4-40e4-9776-dc557f1e5f17.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <pre data-lang="shell" id="JhZa"># обновляем &#x27;базу данных&#x27;, обновляем дистрибутив
$ sudo apt-get update &amp;&amp; sudo apt-get upgrade -y</pre>
  <pre data-lang="shell" id="1U8q"># скачиваем необходимые зависимости
$ sudo apt-get install git curl build-essential gcc jq -y</pre>
  <pre data-lang="bash" id="WgFZ"># устанавливаем &#x27;go&#x27; одной командой
$ wget https://golang.org/dl/go1.17.5.linux-amd64.tar.gz; \
rm -rv /usr/local/go; \
tar -C /usr/local -xzf go1.17.5.linux-amd64.tar.gz &amp;&amp; \
rm -v go1.17.5.linux-amd64.tar.gz &amp;&amp; \
echo &quot;export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin&quot; &gt;&gt; ~/.bash_profile &amp;&amp; \
source ~/.bash_profile &amp;&amp; \
go version</pre>
  <pre data-lang="bash" id="XeUr"># клонируем репозиторий
$ git clone https://github.com/IDEP-network/SanfordV2.git &amp;&amp; \
sudo cp SanfordV2/iond /usr/local/bin/</pre>
  <pre data-lang="bash" id="h6i1"># выдаём права на исполнение
$ sudo chmod a+x /usr/local/bin/iond</pre>
  <pre id="h6i1" data-lang="bash"># устанавливаем &#x27;wasmvm&#x27; одной командой
$ cd &amp;&amp; \
go get -u github.com/CosmWasm/wasmvm@v1.0.0-beta4 &amp;&amp; \
cd $HOME/go/pkg/mod/github.com/\!cosm\!wasm/wasmvm@v1.0.0-beta4/api &amp;&amp; \
chmod +x libwasmvm.so &amp;&amp; \
mv libwasmvm.so /usr/lib/ &amp;&amp; \
cd</pre>
  <pre data-lang="bash" id="vZhF"># проверяем работоспособность
$ iond -h</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="MnoM" class="m_original">
      <img src="https://img2.teletype.in/files/1b/fd/1bfdc2b0-ea4b-48ec-93fd-f412a67c44ac.png" width="923" />
    </figure>
  </section>
  <p id="m2cZ">Если всё прошло успешно, тогда переходим к инициализации ноды.</p>
  <p id="n6E7">Первым делом добавим наш никнейм, который будет в дальнейшем использоваться в качестве названия кошелька, в систему, как переменную.</p>
  <section>
    <p id="zqrW">Замените условную переменную <strong>&lt;nickname&gt;</strong> на желаемый никнейм, раскрывая кавычки.</p>
  </section>
  <pre data-lang="bash" id="hFe4"># например, &quot;export NICKNAME=&quot;cyberomanov&quot;&quot; 
$ echo &quot;export NICKNAME=&quot;&lt;nickname&gt;&quot;&quot; &gt;&gt; ~/.bash_profile</pre>
  <pre data-lang="bash" id="GMmv"># чтобы переменная загрузилась, необходимо перезагрузить &#x27;.bash_profile&#x27; 
$ source ~/.bash_profile</pre>
  <pre data-lang="bash" id="ouQB"># проверим значение переменной, выведя её на экран
$ echo $NICKNAME</pre>
  <section>
    <figure id="sZsU" class="m_custom">
      <img src="https://img1.teletype.in/files/0a/a1/0aa12a1a-e213-4eb7-a513-c017bc881a85.png" width="792" />
    </figure>
  </section>
  <p id="SGDp">Инициализируем ноду.</p>
  <pre data-lang="bash" id="ZNQq">$ rm ~/.ion/config/genesis.json; \
iond init $NICKNAME --chain-id SanfordNetworkV2</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="D2Is" class="m_original">
      <img src="https://img2.teletype.in/files/12/d3/12d323db-5def-4170-93f2-60805846bcff.png" width="920" />
    </figure>
  </section>
  <pre id="sVsE" data-lang="bash"># удаляем старый файл генезиса и скачиваем новый одной командой
$ rm $HOME/.ion/config/genesis*; \
wget -O $HOME/.ion/config/genesis.json &quot;https://raw.githubusercontent.com/IDEP-network/SanfordV2/master/genesis.json&quot;</pre>
  <pre id="sVsE" data-lang="bash"># определяем моникер в файле конфига одной командой
$ sed -i.bak -e &quot;s/^moniker *=.*/moniker = \&quot;$NICKNAME\&quot;/&quot; \
$HOME/.ion/config/config.toml</pre>
  <pre id="sVsE" data-lang="bash"># добавляем сиды в файл конфига одной командой
$ sed -i.bak -e &quot;s/^seeds *=.*/seeds = \
\&quot;4f32b91384999069bdfdbc82b7725866f1c37cbb@142.93.121.105:26656\&quot;/&quot; \
$HOME/.ion/config/config.toml</pre>
  <pre id="sVsE" data-lang="bash"># включаем прунинг одной командой
$ pruning=&quot;custom&quot; &amp;&amp; \
pruning_keep_recent=&quot;100&quot; &amp;&amp; \
pruning_keep_every=&quot;5000&quot; &amp;&amp; \
pruning_interval=&quot;10&quot; &amp;&amp; \
sed -i -e &quot;s/^pruning *=.*/pruning = \&quot;$pruning\&quot;/&quot; $HOME/.ion/config/app.toml &amp;&amp; \
sed -i -e &quot;s/^pruning-keep-recent *=.*/pruning-keep-recent = \&quot;$pruning_keep_recent\&quot;/&quot; $HOME/.ion/config/app.toml &amp;&amp; \
sed -i -e &quot;s/^pruning-keep-every *=.*/pruning-keep-every = \&quot;$pruning_keep_every\&quot;/&quot; $HOME/.ion/config/app.toml &amp;&amp; \
sed -i -e &quot;s/^pruning-interval *=.*/pruning-interval = \&quot;$pruning_interval\&quot;/&quot; $HOME/.ion/config/app.toml</pre>
  <pre data-lang="bash" id="CVsc"># создаём файл сервиса для запуска ноды
$ sudo tee &lt;&lt;EOF &gt;/dev/null /etc/systemd/system/iond.service
[Unit]
Description=IDEP
After=network-online.target
[Service]
User=$USER
ExecStart=$(which iond) start
Restart=always
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF</pre>
  <pre data-lang="bash" id="z1Tw"># включаем сервис &#x27;idepd&#x27; одной командой
$ sudo systemctl daemon-reload &amp;&amp; \
sudo systemctl enable iond &amp;&amp; sudo systemctl restart iond</pre>
  <pre data-lang="bash" id="6zTV"># проверяем логи
$ sudo journalctl -u iond -f -o cat</pre>
  <p id="CuHC">Ждём, пока нода найдёт рабочие пиры и начнёт синхронизацию.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="GLX5" class="m_original">
      <img src="https://img3.teletype.in/files/a0/46/a046e240-84f3-448f-a4d8-1cde64eaf6e2.png" width="1569" />
    </figure>
  </section>
  <pre id="GKmq" data-lang="bash"># настраиваем сеть и ноду &#x27;по умолчанию&#x27;
$ iond config chain-id SanfordNetworkV2
$ iond config node &#x60;cat &quot;$HOME/.ion/config/config.toml&quot; \
| grep -oPm1 &quot;(?&lt;=^laddr = \&quot;)([^%]+)(?=\&quot;)&quot;&#x60;</pre>
  <pre id="5mjA" data-lang="bash"># проверяем конфиг
$ iond config</pre>
  <pre data-lang="bash" id="1cIe"># получаем высоту блоков нашей ноды
$ iond status 2&gt;&amp;1 | jq .&quot;SyncInfo&quot;.&quot;latest_block_height&quot;</pre>
  <pre data-lang="bash" id="dmKh"># получаем статус синхронизации ноды
$ iond status 2&gt;&amp;1 | jq .&quot;SyncInfo&quot;.&quot;catching_up&quot;

# &#x27;true&#x27; - нода синхронизируется, &#x27;false&#x27; - нода синхронизирована</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="oDBW" class="m_original">
      <img src="https://img4.teletype.in/files/b3/9c/b39c9dae-79db-485b-8e20-98fe8316bcb1.png" width="793" />
    </figure>
  </section>
  <figure id="fhjO" class="m_custom" data-caption-align="right">
    <img src="https://img4.teletype.in/files/f8/68/f868dcce-fcba-478b-bb09-7c6c0e6bf769.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="oTWq">Создаём новый кошелёк, как просит команда. </p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="XrLb">Если спросят, перезаписать ли старый кошелёк - удостоверьтесь, что сохранили от него мнемонику.</p>
    <p id="Zz3z">После чего подтверждаем перезапись.</p>
  </section>
  <pre data-lang="bash" id="HZfD"># выполняем команду создания кошелька
$ iond keys add $NICKNAME

# либо восстанавливаем старый по мнемонике (не рекомендуется)
$ iond keys add $NICKNAME --recover</pre>
  <section>
    <figure id="E2Re" class="m_original">
      <img src="https://img1.teletype.in/files/8d/e8/8de8864c-6a0f-46ef-acc0-e463bf1c14d5.png" width="917" />
    </figure>
  </section>
  <section>
    <p id="ma2b">Не забываем записать мнемонику - это <strong>единственный</strong> способ восстановить кошелёк.</p>
  </section>
  <figure id="vPXj" class="m_custom" data-caption-align="right">
    <img src="https://img3.teletype.in/files/ad/1b/ad1bd431-7d35-4d26-af5d-3386beae0aa8.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="lXMX">Чтобы запросить токены на адрес, необходимо, прежде всего, этот адрес узнать.</p>
  <p id="tq12">Если вы сделали бэкап ключей, как я просил - можете скопировать адрес оттуда.</p>
  <p id="MdMm">Для остальных выполняем команду:</p>
  <pre data-lang="bash" id="Qpou">$ iond keys list</pre>
  <p id="9vJZ">Копируем адрес, вставляем его в дискорд <strong>#confirm-wallet</strong> и ждём, пока команда начислит токены.</p>
  <section>
    <figure id="Spcz" class="m_original">
      <img src="https://img4.teletype.in/files/39/c0/39c0e9af-8a59-4299-b22d-b53d36d03aa3.png" width="514" />
    </figure>
  </section>
  <p id="oKlQ">Посмотреть баланс из терминала можно только после полной синхронизации ноды:</p>
  <section>
    <p id="JhyI">Замените условную переменную <strong>&lt;address&gt;</strong> на idepxxx, раскрывая кавычки.</p>
  </section>
  <pre data-lang="bash" id="5oWQ"># проверяем баланс из командной строки
$ iond query bank balances &lt;address&gt;</pre>
  <section>
    <figure id="XxrT" class="m_original">
      <img src="https://img3.teletype.in/files/2d/6a/2d6aa303-4119-4007-9d01-45623bacbed4.png" width="921" />
    </figure>
  </section>
  <figure id="0DPq" class="m_original" data-caption-align="right">
    <img src="https://img3.teletype.in/files/e4/32/e432392d-ec81-4b5b-91d0-4766e424b2b8.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="FgbU">Отправляем транзакцию создания валидатора после полной синхронизации:</p>
  <pre data-lang="bash" id="K2V6">$ iond tx staking create-validator \
--amount 10000000000idep \
--commission-max-change-rate 0.01 \
--commission-max-rate 0.2 \
--commission-rate 0.1 \
--from &quot;$NICKNAME&quot; \
--min-self-delegation 1 \
--moniker &quot;$NICKNAME&quot; \
--pubkey $(iond tendermint show-validator)</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="6EDI" class="m_original">
      <img src="https://img1.teletype.in/files/48/f9/48f98659-2b3c-40fe-9142-159891be80e2.png" width="920" />
    </figure>
  </section>
  <p id="nez8">Посмотрим информацию о валидаторе:</p>
  <pre data-lang="bash" id="FAZQ">$ iond query staking \
validator $(iond keys show $NICKNAME --bech=val -a)</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="y6cC" class="m_original">
      <img src="https://img2.teletype.in/files/90/fd/90fd26f3-9300-4e48-8f1b-31c04f1c2450.png" width="754" />
    </figure>
  </section>
  <figure id="R8n9" class="m_custom" data-caption-align="right">
    <img src="https://img1.teletype.in/files/8e/a7/8ea78cb3-b463-402d-a250-61327a36e888.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="C03z">Несколько команд для удобной работы с нодой.</p>
  <pre data-lang="bash" id="853H"># получаем высоту блоков нашей ноды
$ iond status 2&gt;&amp;1 | jq .&quot;SyncInfo&quot;.&quot;latest_block_height&quot;</pre>
  <pre data-lang="bash" id="NJOs"># получаем статус синхронизации ноды
$ iond status 2&gt;&amp;1 | jq .&quot;SyncInfo&quot;.&quot;catching_up&quot;

# &#x27;true&#x27; - нода синхронизируется, &#x27;false&#x27; - нода синхронизирована</pre>
  <pre data-lang="bash" id="5uNy"># посмотреть информацию о валидаторе
$ iond query staking \
validator $(iond keys show $NICKNAME --bech=val -a)</pre>
  <pre id="5uNy" data-lang="bash"># локальный эксплорер
$ iond q staking validators \
-o json --limit=1000 \
| jq &#x27;.validators[] | select(.status==&quot;BOND_STATUS_BONDED&quot;)&#x27; \
| jq -r &#x27;.tokens + &quot; - &quot; + .description.moniker&#x27; | sort -gr | nl</pre>
  <pre data-lang="bash" id="OoTn"># выйти из &#x27;тюрьмы&#x27;
$ iond tx slashing unjail \
--gas=&quot;auto&quot; \
--gas-prices=&quot;0.5idep&quot; \
--gas-adjustment=1.5 \
--from=$NICKNAME</pre>
  <pre data-lang="bash" id="NOI9"># перезапустить сервис с нодой
$ sudo systemctl restart iond</pre>
  <pre data-lang="bash" id="QxJL"># остановить сервис с нодой
$ sudo systemctl stop iond</pre>
  <pre data-lang="bash" id="lVdY"># проверить логи ноды
$ sudo journalctl -u iond -f -o cat</pre>
  <figure id="OeBS" class="m_custom" data-caption-align="right">
    <img src="https://img4.teletype.in/files/b1/3a/b13a6b0d-36ee-44b2-bccd-10163f81d7de.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="DUQo">План работы: выводим реварды за активное валидирование, проверяем баланс, ределегируем собранную награду снова на своего валидатора.</p>
  <pre data-lang="bash" id="Rx2x"># вывести реварды за стейкинг для последующей ределегации
$ iond tx distribution withdraw-all-rewards -y \
--gas=&quot;auto&quot; \
--gas-adjustment=1.5 \
--gas-prices=&quot;0.5idep&quot; \
--from=$NICKNAME</pre>
  <section>
    <figure id="oo5M" class="m_original">
      <img src="https://img1.teletype.in/files/82/9a/829a7d72-1cbb-4bc4-8427-3cb902919ef2.png" width="921" />
    </figure>
  </section>
  <pre data-lang="bash" id="bhx5"># проверяем новый баланс на аккаунтах
$ iond query bank balances &lt;address&gt;</pre>
  <section>
    <p id="r9dg">Где <strong>&lt;address&gt; </strong>- адрес, с которого производилось создание валидатора.</p>
    <figure id="XqEH" class="m_original">
      <img src="https://img2.teletype.in/files/58/af/58af25c2-e76c-447f-b4a5-1d869b8f4105.png" width="920" />
    </figure>
    <p id="Z0NL">В <strong>amount </strong>показывает весь свободный баланс. Не советую делегировать весь баланс, помните, что каждая транзакция имеет комиссию.</p>
  </section>
  <pre data-lang="bash" id="y1KD"># добавляем свой &#x27;operator-address&#x27; в переменные
$ echo &quot;export OPERATOR=&quot;$(iond query staking \
validator $(iond keys show $NICKNAME --bech=val -a) \
| grep &quot;valoper&quot; | awk &#x27;{print $2}&#x27;)&quot;&quot; &gt;&gt; ~/.bash_profile</pre>
  <pre data-lang="bash" id="cquu"># чтобы переменная загрузилась, необходимо перезагрузить &#x27;.bash_profile&#x27; 
$ source ~/.bash_profile</pre>
  <pre data-lang="bash" id="2ltb"># проверим значение переменной, выведя её на экран
$ echo $OPERATOR</pre>
  <pre id="2ltb" data-lang="bash"># делегируем токены на своего валидатора
$ iond tx staking delegate $OPERATOR &quot;100000000idep&quot; -y \
--gas=&quot;auto&quot; \
--gas-adjustment=1.5 \
--gas-prices=&quot;0.5idep&quot; \
--from=$NICKNAME</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="QAQV"><strong>&quot;100000000idep&quot;</strong> - 1 токен.<br />Меняем только значение &quot;<strong>100000000idep</strong>&quot; на своё.</p>
    <figure id="p5Tr" class="m_original">
      <img src="https://img2.teletype.in/files/11/78/1178854f-10b4-4f51-900a-98fe85acc5c5.png" width="922" />
    </figure>
  </section>
  <p id="nez8">Посмотрим информацию о валидаторе:</p>
  <pre data-lang="bash" id="vK1u">$ iond query staking \
validator $(iond keys show $NICKNAME --bech=val -a)</pre>
  <section>
    <figure id="B7yQ" class="m_original">
      <img src="https://img3.teletype.in/files/ed/cb/edcbfb4b-9327-450d-9cd5-e30ad277d1bd.png" width="760" />
    </figure>
  </section>
  <figure id="tVcn" class="m_custom" data-caption-align="right">
    <img src="https://img4.teletype.in/files/b7/eb/b7ebf872-8fe4-44b0-a685-e416a514211f.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="5TCq">Добавим аватар и немного описания нашему валидатору.</p>
  <section>
    <p id="uBK9">Советую сначала скопировать команду в блокнот, отредактировать, а затем вставлять в терминал.</p>
  </section>
  <pre data-lang="bash" id="fLn9">$ iond tx staking edit-validator -y \
--moniker=&quot;new node nickname&quot; \
--website=&quot;https://t.me/nickname&quot; \
--identity=&quot;1A1A2B2B3C3C4D4D&quot; \
--details=&quot;any details&quot; \
--gas=&quot;auto&quot; \
--gas-adjustment=&quot;1.5&quot; \
--gas-prices=&quot;0.5idep&quot; \
--from=$NICKNAME</pre>
  <section>
    <p id="w8Uu">Если вы не знаете, что такое <strong>identity </strong>и где его получить - посмотрите на <a href="/@letskynode/OmniFlix#mktv">пример из статьи @letskynode</a>.</p>
  </section>
  <section>
    <figure id="3yfq" class="m_original">
      <img src="https://img4.teletype.in/files/f8/51/f8518781-3368-4e4b-990a-bc715e632daf.png" width="879" />
    </figure>
  </section>
  <p id="c7CL">На данный момент у блокчейна нет своего эксплорера, обещают добавить в течение ближайших недель. </p>
  <p id="w7vk">Посмотрим информацию о валидаторе:</p>
  <pre data-lang="bash" id="o0NA">$ iond query staking \
validator $(iond keys show $NICKNAME --bech=val -a)</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="CfBH" class="m_original">
      <img src="https://img3.teletype.in/files/e4/e7/e4e7d6ac-9a49-476d-ab49-6fe51e093ca5.png" width="766" />
    </figure>
  </section>
  <figure id="NLRG" class="m_original" data-caption-align="right">
    <img src="https://img3.teletype.in/files/24/78/24787619-a7d5-479c-992f-276dc5ff2713.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="5KMb">Первым делом бэкапим файл по пути <strong>~/.ion/config/priv_validator_key.json</strong> и файлы ключей: <strong>9ef0xxxxxx.address, wallet.info, keyhash</strong>. На всякий случай.</p>
  <pre id="aDVC" data-lang="bash"># удаляем мусор
$ sudo systemctl stop iond &amp;&amp; \
iond unsafe-reset-all &amp;&amp; \
rm -Rvf ~/testnet-binaries/ ~/incentivized-testnet/</pre>
  <p id="cHUa">И начинаем установку с нуля.</p>
  <figure id="6Mla" class="m_custom" data-caption-align="right">
    <img src="https://img4.teletype.in/files/fb/9f/fb9fc170-d5ae-47d9-8296-d5abb2c16625.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="KNOT">Про перенос я написал <a href="/@cyberomanov/moving">полноценную статью</a>. Читаем внимательно и вдумчиво.</p>
  <figure id="fJH9" class="m_custom" data-caption-align="right">
    <img src="https://img3.teletype.in/files/a3/be/a3be0848-c9c7-481e-aee1-0bbb8a2d3be2.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="6DCM">Если вы вдруг разочаровались в проекте и хотите удалить его с сервера, то можно просто разрушить/удалить сервер из личного кабинета хостинга.</p>
  <p id="BjUe">Это сработает, если на сервере нет других важных нод. В случае, если вы хотите оставить сервер, но удалить конкретную ноду - приступаем к её удалению:</p>
  <pre data-lang="bash" id="L9VR"># останавливаем и отключаем сервис ноды
$ sudo systemctl stop iond &amp;&amp; sudo systemctl disable iond</pre>
  <section>
    <p id="XJmx">Не забудьте сделать бэкап каталога <strong>$HOME/.ion</strong>, даже если хотите удалить ноду с сервера.</p>
  </section>
  <pre data-lang="bash" id="dRBi"># удаляем каталоги и исполняемые файлы
$ sudo rm -Rvf $HOME/.ion/ /usr/bin/iond $HOME/SanfordV2/</pre>
  <pre data-lang="bash" id="YwpS"># удаляем файлы сервиса и перезагружаем демона одной командой
$ sudo rm -v /etc/systemd/system/iond.service \
&amp;&amp; sudo systemctl daemon-reload</pre>
  <figure id="cFtd" class="m_custom" data-caption-align="right">
    <img src="https://img1.teletype.in/files/86/ef/86ef470d-eaa8-4f3d-a986-4fd888334fb2.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="rjco">мамичу за то, что родила такого гения.</p>
  <p id="2iI5"><a href="https://t.me/mzonder" target="_blank">@mzonder</a>.</p>
  <figure id="kY7a" class="m_custom" data-caption-align="right">
    <img src="https://img1.teletype.in/files/80/94/8094f1ca-b7d6-495c-b03f-332d2acbea2f.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="1w0H"><a href="https://t.me/how_to_node" target="_blank">@how_to_node</a> - канал, где я выкладываю свои гайды.</p>
  <p id="i6bu"><a href="/@cyberomanov/WTF_resources">Полезные ресурсы</a>.</p>
  <p id="nR2t"><a href="/@cyberomanov/WTF_donate">Крипто-кошельки автора гайда</a>.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@cyberomanov/KYVE</guid><link>https://teletype.in/@cyberomanov/KYVE?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov</link><comments>https://teletype.in/@cyberomanov/KYVE?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov#comments</comments><dc:creator>cyberomanov</dc:creator><title>KYVE /// v2.0</title><pubDate>Thu, 07 Oct 2021 13:27:35 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/b4/bd/b4bd924e-6ff2-4276-b00f-da7f44db963c.png"></media:content><category>Ended Events</category><description><![CDATA[<img src="https://img4.teletype.in/files/ba/99/ba999de5-911e-41f0-b423-adfb16220662.png"></img>Участвуем в публичном тестнете KYVE Network.]]></description><content:encoded><![CDATA[
  <section>
    <figure id="PWqA" class="m_original">
      <img src="https://img4.teletype.in/files/ba/99/ba999de5-911e-41f0-b423-adfb16220662.png" width="887" />
    </figure>
  </section>
  <p id="QWwJ">Участвуем в публичном тестнете <strong>KYVE</strong> <strong>Network</strong>.</p>
  <section>
    <p id="u7Mi">Если вы не знаете, <strong>что такое нода</strong> — читаем <a href="/WTF_node">статью</a>. <br />Если вы не знаете, <strong>где арендовать сервер для ноды</strong> — читаем <a href="/WTF_server">статью</a>. <br />Если вы не знаете, <strong>как подключиться к серверу</strong> — читаем <a href="/WTF_MobaXterm">статью</a>. <br />Если вы всё знаете — открываем <strong>MobaXterm </strong>и создаём сессию.</p>
  </section>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="hq2j" data-align="center">СОДЕРЖАНИЕ</h3>
  </section>
  <ul id="FNwc">
    <li id="rTTX"><a href="#zuAz">Описание проекта</a>.</li>
    <li id="QgcX"><a href="#XWju">Участие</a>:</li>
    <ul id="2rMU">
      <li id="d9lB"><a href="#XWju">Кран: Arweave + Korellia</a><a href="#yqLV">;</a></li>
    </ul>
    <ul id="x7W8">
      <li id="MimK"><a href="#BSBJ">Нода: kysor</a><a href="#5ePz">;</a></li>
    </ul>
    <ul id="C8oP">
      <li id="5rGY"><a href="#GwrY">Полезные команды</a>;</li>
      <li id="CROR"><a href="#gWPh">Удаление ноды</a>;</li>
    </ul>
    <li id="QOOQ"><a href="#sC41">Благодарности</a>.</li>
    <li id="YShM"><a href="#vYNR">Полезные ресурсы на каждый день</a>.</li>
  </ul>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="zuAz" data-align="center"><strong>ОПИСАНИЕ ПРОЕКТА</strong></h3>
    <p id="a1rv" data-align="right"><a href="#hq2j">Содержание</a></p>
  </section>
  <p id="vbTM"><strong>KYVE </strong>- децентрализованный протокол архивирования данных. Это протокол нового поколения, который стандартизирует, валидирует и хранит потоки данных.</p>
  <p id="hcbI">Основная проблема текущих блокчейнов - постоянно растущее количество информации. Чем больше информации хранится в блокчейне, тем дороже и сложнее с ней взаимодействовать. <strong>KYVE </strong>позволяет хранить и доставать информацию из блокчейнов моментально. А это, в свою очередь, помогает и упрощает работу приложениям при взаимодействии с данными блокчейнов.</p>
  <p id="HYzf">Платформа сжимает любой настраиваемый поток данных в легко извлекаемые &quot;моментальные снимки&quot;. В тандеме с <strong>Arweave </strong>для создания постоянных резервных копий, KYVE обеспечивает долговечность этих данных с течением времени.</p>
  <p id="0ZOZ">Благодаря своей масштабируемости, постоянности и доступности, <strong>Arweave </strong>является идеальным решением для хранения данных.</p>
  <p id="Utn8">Тем не менее, доступность данных не равнозначна достоверности данных. <br />Поэтому мы рассматриваем <strong>KYVE </strong>и <strong>Arweave </strong>как связку: в то время как <strong>KYVE </strong>обеспечивает надежную достоверность данных, <strong>Arweave</strong>, напротив, фокусируется на доступности данных (воспроизводимости).</p>
  <p id="3Amc">Когда блокчейн создает блок, эта информация является общедоступной. <strong>KYVE </strong>извлекает эти данные через узлы блокчейна, валидирует (проверяет достоверность) и сохраняет информацию с помощью <strong>Arweave</strong>.</p>
  <p id="CCws">Архитектура <strong>KYVE </strong>полностью децентрализована и состоит из двух основных компонентов: пулы и загрузчики с валидаторами.</p>
  <hr />
  <p id="37k0"><strong>Пулы</strong>. Пул - этоавтономная система управления, которая занимается проверкой &quot;качества работы загрузчиков и валидаторов&quot; или &quot;нарушениями контракта”.</p>
  <p id="CzQH">Пулы можно описать как отдельные объекты, расположенные вокруг определенных источников данных. Они могут быть созданы кем угодно, настроены для извлечения данных из любого места и организации повседневных операций между участниками сети.</p>
  <p id="PXtp">Перед пулом стоит 2 задачи: получить информацию из источника (в нашем случае, из блокчейна) и проверить информацию на достоверность.</p>
  <p id="V3Lv">Функциональность управления обеспечивается путем размещения токена <strong>$KYVE</strong>, гарантируя, что участники ведут себя в соответствии с целями сети.</p>
  <hr />
  <p id="I3bM"><strong>Валидаторы и загрузчики</strong>. Это вычислительный уровень, который позволяет участникам запускать настраиваемые узлы. В обмен на $KYVE узлы выполняют различные задачи. Эти узлы проверяют, стандартизируют и архивируют потоки данных.</p>
  <p id="MWw5"><strong>Загрузчик (Uploader)</strong>: Для каждого пула выбирается только один загрузчик. <br />Загрузчики извлекают данные из источника, выполняют инструкции, которые могут включать вычислительный этап, и записывают эти данные в <strong>Arweave</strong>.</p>
  <p id="Ddih">Если валидаторы обнаружат, что загрузчик нарушает их условия, доля загрузчика уменьшается - происходит слешинг и на место загрузчика выбирается валидатор.<br />То же самое произойдёт, если узел загрузчика по какой-либо причине был отключен.</p>
  <p id="6gB5"><strong>Валидатор (Validator)</strong>: проверяет информацию, загруженную загрузчиком на достоверность.</p>
  <p id="0RIn">Когда информация получена и проверена, на арену выходит <strong>Arweave</strong>, который обеспечивает безопасное и надёжное хранение данных, а также моментальный доступ к информации.</p>
  <hr />
  <p id="ykEs">Каждый пул принимает форму децентрализованной автономной организации (<strong>DAO</strong>), которая работает на <strong>SmartWeave</strong>, языке смарт-контрактов <strong>Arweave</strong>.</p>
  <p id="ks7E">Операторы узлов являются синонимами участников пула, которые организованы в получение потоков данных, выполнение вычислений на них и запись результатов в <strong>Arweave</strong>.</p>
  <p id="xcED">Если соблюдены определенные критерии, пулы также распределяют токены <strong>$KYVE</strong> среди назначенных загрузчиков и валидаторов.</p>
  <p id="u72s">Теперь узлы, желающие присоединиться к сети блокчейна и синхронизироваться с ее последним состоянием, могут сделать это на порядок быстрее, чем раньше.</p>
  <p id="M6sD">Операторам больше не нужно извлекать блоки один за другим; вместо этого потоки данных сокращаются в моментальные снимки с гарантированной доступностью.</p>
  <hr />
  <p id="fEm6"><strong>Backers</strong>: Coinbase, CMS, Mechanism, Distributed Global, Solana, Hypersphere, Permanent, 4SV, Volt, Compute, Ternary, Avalanche, Zee Prime, Mina, Moonbeam, Near, Interchain, Ava и ещё 7 &quot;скрытых&quot; инвесторов.</p>
  <hr />
  <p id="RdIK"><strong>Roadmap</strong>: </p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="7KcW" class="m_original">
      <img src="https://img4.teletype.in/files/33/b4/33b42ff9-60d7-49e3-9d9d-e7f0a4a50989.png" width="2428" />
    </figure>
  </section>
  <hr />
  <p data-align="center" id="tJBj"><a href="https://blog.kyve.network/" target="_blank">Blog</a> | <a href="https://docs.kyve.network/" target="_blank">Docs</a> | <a href="https://github.com/KYVENetwork" target="_blank">GitHub</a> | <a href="https://www.kyve.network/" target="_blank">WebSite</a> | <a href="https://twitter.com/KYVENetwork" target="_blank">Twitter</a> | <a href="https://discord.gg/SZT9uUQk" target="_blank">Discord</a> | <a href="https://t.me/kyvenet" target="_blank">Telegram</a> | <a href="https://t.me/KYVE_CIS" target="_blank">Chat_RU</a></p>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="XWju" data-align="center"><strong>FAUCET</strong></p>
    <p id="3cPc" data-align="right"><a href="#hq2j">Содержание</a></p>
  </section>
  <p id="Bcww">Первым делом, мы, конечно, должны привязать кошелёк к <a href="https://app.kyve.network/#/" target="_blank">app.kyve.network</a>. Открываем <a href="https://app.kyve.network/#/" target="_blank">DApp</a>, чтобы подключить свой <a href="https://www.keplr.app/" target="_blank">Keplr</a>:</p>
  <section>
    <figure id="egD4" class="m_custom">
      <img src="https://img2.teletype.in/files/d6/1f/d61f31c5-d3c4-420b-abea-23af413ecfac.png" width="309" />
    </figure>
  </section>
  <p id="SWyC">Разрешаем сайту получить доступ к кошельку и добавить в него сеть <strong>Kaon/Korellia</strong>, кликнув на <strong>Approve</strong>:</p>
  <section>
    <figure id="npT0" class="m_custom">
      <img src="https://img2.teletype.in/files/d3/a8/d3a889a4-d29a-4c7f-8c5e-eb6307e919fe.png" width="256" />
    </figure>
  </section>
  <p id="eQfU">Отлично, кошелёк подключился.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="vVoN" class="m_original">
      <img src="https://img2.teletype.in/files/10/75/10756530-3fff-4544-884c-0c3a1c410690.png" width="1106" />
    </figure>
  </section>
  <p id="PEM3">Предлагаю запросить тестовые токены в <a href="https://app.kyve.network/#/faucet" target="_blank">кране</a>, которые нам в будущем в любом случае понадобятся.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="LZZe">Краны работают почти стабильно. Иногда токены доходят долго, иногда не доходят. Наберитесь терпения и не спамьте в чатах и дискордах.</p>
  </section>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="GeGv" class="m_original">
      <img src="https://img3.teletype.in/files/aa/56/aa566d70-f6c3-46a3-aa4a-8966b6d908e2.png" width="2728" />
    </figure>
  </section>
  <p id="q5MJ">Нажимаем на <strong>Share on twitter, </strong>твиттер сразу предложит отправить твит:</p>
  <section>
    <figure id="udPW" class="m_custom">
      <img src="https://img2.teletype.in/files/58/e7/58e776e9-fce4-4edd-8799-018ba7060dd3.png" width="1812" />
    </figure>
    <figure id="GC8J" class="m_custom">
      <img src="https://img3.teletype.in/files/a6/19/a619a48d-7c3f-4ad1-bb15-930b1d622992.png" width="1170" />
    </figure>
  </section>
  <p id="DtKx">После отправки твита, копируем ссылку на свой пост и вставляем её в соответствующее поле на сайте. Нажимаем <strong>Claim your tokens</strong> и решаем капчу:</p>
  <section>
    <figure id="Cj0w" class="m_custom">
      <img src="https://img2.teletype.in/files/d7/19/d7193b6b-eb33-40b8-a9b1-4922f1c0c2ac.png" width="366.2442396313364" />
    </figure>
    <figure id="abaY" class="m_custom">
      <img src="https://img3.teletype.in/files/64/e7/64e72567-95e7-4cbb-87db-b7eac7229cdf.png" width="370" />
    </figure>
  </section>
  <p id="Yz1l">Теперь открываем <strong>Keplr</strong> и выбираем сеть <strong>Korellia</strong>, которая была добавлена автоматически:</p>
  <section>
    <figure id="x3sn" class="m_custom">
      <img src="https://img4.teletype.in/files/f5/7d/f57ded8d-f03f-4323-b2e6-03b9d42db4ab.png" width="332.5793103448276" />
    </figure>
  </section>
  <p id="E8r7">И наблюдаем наш баланс:</p>
  <section>
    <figure id="Rnl6" class="m_custom">
      <img src="https://img4.teletype.in/files/3c/ee/3ceecb5b-79fe-480c-a1c3-5bf8248e256e.png" width="317" />
    </figure>
  </section>
  <p id="WPQr">Ещё можно воспользоваться <a href="https://app.kyve.network/#/faucet" target="_blank">колесом фортуны</a>, где заработаем от 1 до 10 токенов:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="q6L6" class="m_custom">
      <img src="https://img2.teletype.in/files/d3/7e/d37e4392-5fc1-4661-a7ab-30366643327d.png" width="294.58974358974365" />
    </figure>
  </section>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Yu4a" data-align="center"><strong>ARWEAVE</strong></p>
  </section>
  <p id="sIUq">One more thing: нам нужно несколько десятых токена<strong> AR</strong> и <strong>arweave.json</strong>. Это файл, содержащий приватные ключи от кошелька <strong>Arweave</strong>. </p>
  <p id="MDpn">Если до сих пор у вас нет arweave-кошелька, то переходим на <a href="https://faucet.arweave.net/" target="_blank">сайт</a>, где мы сгенерируем аккаунт и сразу запросим на него пару копеек.</p>
  <section>
    <p id="YnBv">Кран работает с перебоями, поэтому я просто купил пару копеек <strong>AR</strong> на бинансе (<a href="https://www.coingecko.com/en/coins/arweave#markets" target="_blank">список бирж</a>) и скинул их на кошелёк, но можно попробовать запросить <strong>AR</strong> с крана.</p>
  </section>
  <p id="NSg8">Нажимаем <strong>Continue</strong>:</p>
  <section>
    <figure id="71u4" class="m_custom">
      <img src="https://img1.teletype.in/files/84/9b/849b383d-8e6c-495a-b9fe-2a6c97482c41.png" width="498.6791666666669" />
    </figure>
  </section>
  <p id="TUce">И скачиваем ключи. Сохраните <strong>arweave.json</strong> в надёжное место, этот файл нам ещё понадобится:</p>
  <section>
    <figure id="A1wl" class="m_custom">
      <img src="https://img4.teletype.in/files/72/c3/72c33e71-40cf-42d5-9a16-b26dfd734e7d.png" width="677" />
    </figure>
  </section>
  <p id="7Nrt">Нажимаем <strong>Open tweet pop-up</strong>, чтобы запросить токены и отправляем твит:</p>
  <section>
    <figure id="Is9u" class="m_custom">
      <img src="https://img1.teletype.in/files/81/63/81635b69-5528-4a95-92e7-556179f25feb.png" width="434" />
    </figure>
    <figure id="COM6" class="m_custom">
      <img src="https://img2.teletype.in/files/9f/3e/9f3ee276-3751-453e-816c-89723b7a83c0.png" width="422" />
    </figure>
    <figure id="Hs76" class="m_custom">
      <img src="https://img2.teletype.in/files/d5/36/d53647b8-14b3-4d10-b15b-e5ecb693896e.png" width="422" />
      <figcaption>Скриншот из расширения <a href="https://chrome.google.com/webstore/detail/arweave/iplppiggblloelhoglpmkmbinggcaaoc/related?hl=en-GB" target="_blank">Arweave</a>.</figcaption>
    </figure>
  </section>
  <p id="bkCN">Итого у вас должно быть:</p>
  <ul id="XX6v">
    <li id="FGVZ">Токены <strong>KYVE</strong> на кошельке <strong>Keplr</strong> и мнемоника от этого кошелька;</li>
    <li id="c0pH">Токены <strong>AR</strong> на кошельке <strong>Arweave</strong> и файл с ключами от этого кошелька<strong>.</strong></li>
  </ul>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="5ePz" data-align="center"><strong>НОДА</strong></h3>
    <p id="BSBJ" data-align="right"><a href="#hq2j">Содержание</a></p>
  </section>
  <p id="waVo">Валидатором можно стать, запустив ноду и застейкав на себя токены.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="lbgB">Имейте в виду, что для того, чтобы быть активным валидатором, необходимо быть в ТОР-50 по стейку в своём пуле.</p>
    <p id="ujZI">То же касается и регистрации валидатора. Вы не сможете его создать, если селфстейк будет меньше, чем у ТОР-50 валидатора в конкретном пуле.</p>
    <p id="oxdj">Если ваш стейк перестал входить в ТОР-50, ваши токены возвращаются на баланс и нода перестаёт голосовать.</p>
  </section>
  <hr />
  <p id="8ahY">Требования по железу:</p>
  <p id="twGf">Официальные требования: <strong>1 CPU </strong>x<strong> 4 GB RAM </strong>x<strong> 20 GB SSD</strong> - Ubuntu 20.04.<br />Субъективные наблюдения: <strong>1 CPU </strong>x<strong> 2 GB RAM </strong>x<strong> 40 GB SSD</strong> - Ubuntu 20.04.</p>
  <hr />
  <p id="FNct">Самое время выбрать пул, в котором вы хотите стать валидатором. Список пулов доступен в разделе <a href="https://app.kyve.network/#/" target="_blank">Pools</a>:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="Pgcy" class="m_original">
      <img src="https://img1.teletype.in/files/4d/3f/4d3f82c5-e109-4499-ab72-f2ca6f579d36.png" width="2696" />
    </figure>
  </section>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="9IF4">Пул может выходить в статус <strong>Paused</strong>. Такое происходит, когда в коде находятся ошибки и недоработки, это нормально для тестнета.</p>
    <p id="tOEn">В случае, если ваш пул ушёл на паузу, вы можете перепрыгнуть в другой пул, либо ожидать, пока включат ваш.</p>
  </section>
  <pre data-lang="bash" id="p2iA"># обновляем &#x27;базу данных&#x27;
sudo apt-get update &amp;&amp; sudo apt-get upgrade -y</pre>
  <pre data-lang="bash" id="aG0j"># скачиваем необходимые пакеты
sudo apt-get install curl build-essential git jq unzip -y</pre>
  <pre id="aG0j" data-lang="bash"># скачиваем &#x27;kysor&#x27;
wget https://github.com/KYVENetwork/kyvejs/releases/download/%40kyve%2Fkysor%401.0.0-beta.7/kysor-linux-x64.zip &amp;&amp; \
unzip kysor-linux-x64.zip &amp;&amp; \
mv kysor-linux-x64 kysor &amp;&amp; \
chmod +x kysor &amp;&amp; \
mv kysor /usr/bin/kysor &amp;&amp; \
rm kysor-linux-x64.zip*</pre>
  <pre id="aG0j" data-lang="bash"># инициализируем &#x27;kysor&#x27;
kysor init -d \
--chain-id korellia \
--rpc &quot;https://rpc.korellia.kyve.network&quot; \
--rest &quot;https://api.korellia.kyve.network&quot;</pre>
  <hr />
  <p id="MwwG">Теперь нам нужно загрузить <strong>arweave.json</strong> (<a href="#KXGn">мы генерировали его здесь</a>) на сервер, в каталог <strong><code>$HOME/.kysor/</code></strong>.</p>
  <section>
    <p id="O9Fa">Обязательно переименуйте файл <strong>arweave-key-8qi2faiF4.json</strong> в <strong>arweave.json</strong>.</p>
  </section>
  <p id="QZyP">Можно отправить файл на сервер с помощью инструментов программы <strong>Mobaxterm/Termius</strong>, но я воспользуюсь <strong>SCP</strong>:</p>
  <pre data-lang="shell" id="Rjdq"># выполняем команду на локальном пк
scp path/myfile user@8.8.8.8:/full/path/to/new/location/</pre>
  <pre data-lang="shell" id="tLjS"># в моём случае команда выглядит так
scp /Users/cyber/Downloads/arweave.json root@8.8.8.8:/root/.kysor/</pre>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Az9I">Если у вас уже имеется файл в каталоге <strong>$HOME/</strong>, его можно просто переместить в нужную директорию следующей командой:</p>
    <pre id="eCaz" data-lang="bash">mv $HOME/arweave.json $HOME/.kysor/</pre>
  </section>
  <hr />
  <p id="mXRk">Сейчас нужно создать <strong><em>valaccount</em></strong> - это кошелёк, на котором нужно хранить несколько десятков <strong>$KYVE</strong> для оплаты комиссий за транзакции валидатора.</p>
  <p id="gJnu">Этот <strong><em>valaccount</em></strong> будет храниться на сервере и подписывать транзакции.</p>
  <p id="H6wu">Если раньше мы валидировали и стейкали с одного кошелька, то теперь эти функции разделены, чтобы на сервере не хранить мнемонику с миллионами токенов.</p>
  <p id="vCkg">Стейкать мы будем из &quot;браузера&quot; и хранить средства на отдельном кошельке, который не будет задействоваться на сервере.</p>
  <p id="a4Mj">Если вы знакомы с полькадот-экосистемой, то можно провести аналогию со стэшем и контроллером:</p>
  <ul id="wSnz">
    <li id="X021">Стэш - основной адрес, который не участвует в валидировании -&gt; не хранится на сервере;</li>
    <li id="HvMw">Контроллер - дополнительный кошелёк, который чисто подписывает транзакции -&gt; хранится на сервере.</li>
  </ul>
  <pre id="mXRk" data-lang="bash"># создаём &#x27;valaccount&#x27;
kysor valaccounts create \
--name &lt;pool_name&gt; \
--pool &lt;N&gt; \
--storage-priv &quot;$(cat ~/.kysor/arweave.json)&quot; \
--metrics</pre>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="FztN">Если вы переносите ноду с сервера на сервер, то восстанавливаем раннее сгенерированный <strong><em>valaccount</em></strong> следующей командой:</p>
  </section>
  <pre id="ZKgF" data-lang="bash"># восстанавливаем &#x27;valaccount&#x27;
kysor valaccounts create \
--name &lt;pool_name&gt; \
--pool &lt;N&gt; \
--storage-priv &quot;$(cat ~/.kysor/arweave.json)&quot; \
--recover</pre>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="9Xyp">После чего вводим мнемонику. Если ставите в первый раз - выполняем команду без флага <strong><em>--recover</em></strong>.</p>
  </section>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="43YJ">Где:</p>
    <p id="bhQJ"><strong><em>&lt;pool_name&gt;</em></strong> - название будущего <em>valaccount</em>. рекомендуется называть так же, как и называется пул, для простоты понимания;<br /><br /><em><strong>&lt;N&gt;</strong> </em>- номер пула, который можно найти на странице конкретного пула в адресной строке браузера или в описанных параметрах.</p>
    <figure id="2HX0" class="m_custom">
      <img src="https://img1.teletype.in/files/02/51/025135a7-f3a3-4094-9ee4-528154926f15.png" width="415" />
    </figure>
  </section>
  <p id="t80s">То есть, если я хочу запустить протокольную ноду биткоина, то для меня команда будет выглядеть следующим образом:</p>
  <pre id="CBr2" data-lang="bash"># создаём &#x27;valaccount&#x27;
kysor valaccounts create \
--name bitcoin \
--pool 3 \
--storage-priv &quot;$(cat ~/.kysor/arweave.json)&quot; \
--metrics</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="YrfQ" class="m_custom">
      <img src="https://img4.teletype.in/files/36/43/3643fcb7-37f4-4009-8df9-e5ad9d4979dd.png" width="503" />
    </figure>
  </section>
  <p id="8dOY">Теперь поменяем порт, на котором лежат метрики ноды, чтобы на всякий случай:</p>
  <pre data-lang="bash" id="m3zj"># идём в каталог с конфигами
cd ~/.kysor/valaccounts/</pre>
  <pre id="m3zj" data-lang="bash"># выводим на экран все конфиги
ls</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="3alD" class="m_original">
      <img src="https://img2.teletype.in/files/14/a5/14a53da8-e498-42ff-8267-a85fafb87ec4.png" width="686" />
    </figure>
  </section>
  <p id="EZrU">В моём случае конфиг называется <strong><em>bitcoin.toml</em></strong>. Открываем файл и редактируем порт:</p>
  <pre data-lang="bash" id="UbYZ">nano bitcoin.toml</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="t3ja" class="m_custom">
      <img src="https://img3.teletype.in/files/6a/14/6a146c4e-b262-40e2-82f0-6dc47085c029.png" width="329" />
    </figure>
  </section>
  <p id="2rdh">Я выбрал значение <strong>10001</strong>. Можете выбрать любой порт из возможных и открытых. В случае, если я захочу поставить на этот же сервер вторую протокольную ноду, скажем, <strong><em>Avalanche</em></strong>, я установлю её на <strong>10002</strong> порт и так далее.</p>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Gew9">Неплохо было бы сохранить мнемонику только что сгенерированного <em>valaccount</em>. Её можно увидеть в том же <em>config.toml</em> файле, где меняем порт.</p>
  </section>
  <pre id="m3zj" data-lang="bash"># создаём файл сервиса для запуска &#x27;kysor&#x27;
tee &lt;&lt;EOF &gt; /dev/null /etc/systemd/system/bitcoind.service
[Unit]
Description=KYVE Protocol
After=network-online.target
[Service]
User=$USER
ExecStart=$(which kysor) start \\
--valaccount bitcoin
Restart=always
RestartSec=3
LimitNOFILE=infinity
[Install]
WantedBy=multi-user.target
EOF</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="SJVB">Где меняем:</p>
    <p id="Ltv1"><em><strong>bitcoind.service</strong> -&gt; на название своего пула;</em></p>
    <p id="gROT"><em><strong>--valaccount bitcoin </strong>-&gt; на название своего valaccount.</em></p>
  </section>
  <pre data-lang="bash" id="6kJq"># запускаем ноду со своим названием сервисного файла
sudo systemctl daemon-reload &amp;&amp; \
sudo systemctl enable bitcoind &amp;&amp; \
sudo systemctl restart bitcoind</pre>
  <pre data-lang="bash" id="Orqu"># проверяем логи
sudo journalctl -u bitcoind -f -o cat</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="UWK2" class="m_original">
      <img src="https://img3.teletype.in/files/26/ce/26ce0b34-7485-467e-9c28-6cee9ea02577.png" width="1592" />
    </figure>
  </section>
  <p id="aBmF">Если вчитаться, то логи сервиса просят нас присоединиться к пулу, поскольку мы этого ещё не сделали. Приступим.</p>
  <p id="qYZj">Открываем <a href="https://app.kyve.network/" target="_blank">app.kyve.network</a>, убеждаемся, что включен мод эксперта:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="O1IP" class="m_custom">
      <img src="https://img3.teletype.in/files/6b/83/6b832ffc-a2fd-4f34-8ced-6e1e55321765.png" width="263" />
    </figure>
  </section>
  <p id="oszn">Переходим на <a href="https://app.kyve.network/#/validators?status=1" target="_blank">страницу валидаторов</a> и нажимаем на <strong><em>Become a validator</em></strong>:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="MZSt" class="m_custom">
      <img src="https://img4.teletype.in/files/bb/6c/bb6c6251-d6ce-49d5-a502-2dc170ac4566.png" width="443" />
    </figure>
  </section>
  <p id="gw69">Прокликиваем и читаем предложенный нам текст:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="OJrc" class="m_custom">
      <img src="https://img2.teletype.in/files/d6/38/d638125f-c9e2-4e6c-aa7c-d506958308ff.png" width="355.3083164300203" />
    </figure>
  </section>
  <p id="OxYU">Вписываем желаемое количество токенов, которое хотите внести в качестве селф-стейка:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="Euca" class="m_custom">
      <img src="https://img2.teletype.in/files/94/b5/94b59719-f4af-4758-adad-66b58a898208.png" width="365.54279749478076" />
    </figure>
  </section>
  <p id="M0lQ">Подписываем транзакцию и попадаем в личный кабинет нашего валидатора:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="9v2P" class="m_original">
      <img src="https://img3.teletype.in/files/aa/5f/aa5faf48-c042-453c-b192-dd605c427ee9.png" width="2324" />
    </figure>
  </section>
  <p id="ibiB">В разделе <strong><em>Manage Validator</em></strong> можно отредактировать комиссию и описание валидатора:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="lm76" class="m_custom">
      <img src="https://img4.teletype.in/files/f6/4b/f64b9510-5e58-4eec-bbda-468da2921cd9.png" width="264" />
    </figure>
    <figure id="Enju" class="m_custom">
      <img src="https://img2.teletype.in/files/1d/9f/1d9f3f82-6d2a-4d14-9c2e-0cda8a275e66.png" width="399.6506550218341" />
    </figure>
  </section>
  <p id="jlru">После того, как нарядили своего валидатора, можно присоединиться к пулу:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="vgt9" class="m_original">
      <img src="https://img4.teletype.in/files/ff/a4/ffa45fdf-1d98-4521-922c-620c2ee1f224.png" width="2312" />
    </figure>
    <figure id="eqyI" class="m_custom">
      <img src="https://img2.teletype.in/files/1b/19/1b1929ae-8a48-402c-be96-deb997c024ea.png" width="436" />
    </figure>
  </section>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Af4I"><strong><em>valaddress</em></strong> и <em><strong>valname</strong></em> можно найти в логах:</p>
    <figure id="CwVM" class="m_original">
      <img src="https://img1.teletype.in/files/07/6d/076d86ff-05b8-4d81-8ccb-f75cc812f107.png" width="1044" />
    </figure>
  </section>
  <p id="46qA">Как только мы подписали транзакцию после нажатия <strong><em>Join pool</em></strong>, начали бежать логи:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="XtNA" class="m_original">
      <img src="https://img3.teletype.in/files/21/94/21940471-674f-4e29-8078-3b404386783b.png" width="2310" />
    </figure>
  </section>
  <p id="eTbI">Вот и всё. Мы создали и запустили валидатора.</p>
  <p id="mFYu">Следите за балансом <strong><em>valaccount</em></strong> и вовремя пополняйте его, чтобы не угодить в <strong><em>jail</em></strong>:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="UkRu" class="m_original">
      <img src="https://img3.teletype.in/files/e4/48/e4483e92-73a2-4952-865b-606e57c76dd8.png" width="2284" />
    </figure>
  </section>
  <p id="Symk">Если вы хотите запустить несколько протокольных нод с одного сервера и с одного &quot;мастер-адреса&quot;, просто повторяем все действия с <a href="#mXRk">создания <em>valaccount</em></a>:</p>
  <ol id="2EUZ">
    <li id="gaUA">Создаём <em>valaccount</em>;</li>
    <li id="jArf">Меняем порт, на котором висят метрики в новом конфиге;</li>
    <li id="U85u">Создаём новый сервис с новым названием;</li>
    <li id="rCuh">Присоединяемся к новому пулу через сайт.</li>
  </ol>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="GwrY" data-align="center"><strong>ПОЛЕЗНЫЕ КОМАНДЫ</strong></h3>
    <p id="L1TY" data-align="right"><a href="#hq2j">Содержание</a></p>
  </section>
  <pre data-lang="bash" id="VxY2"># пезапуск сервиса
sudo systemctl restart bitcoind</pre>
  <pre data-lang="bash" id="YQGr"># остановка сервиса
sudo systemctl stop bitcoind</pre>
  <pre data-lang="bash" id="SYr5"># проверка лога
sudo journalctl -u bitcoind -f -o cat</pre>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="gWPh" data-align="center"><strong>УДАЛЕНИЕ</strong></h3>
    <p id="z7tH" data-align="right"><a href="#hq2j">Содержание</a></p>
  </section>
  <p id="pjXi">Если вы вдруг разочаровались в проекте и хотите удалить его с сервера, то можно просто разрушить/удалить сервер из личного кабинета хостинга.</p>
  <p id="70te">Это сработает, если на сервере нет других важных нод. В случае, если вы хотите оставить сервер, но удалить конкретную ноду - приступаем к её удалению:</p>
  <pre data-lang="bash" id="kz49"># останавливаем сервис
sudo systemctl stop bitcoind &amp;&amp; \
sudo systemctl disable bitcoind</pre>
  <pre data-lang="bash" id="zK9n"># удаляем остаточные файлы
rm -Rvf /usr/bin/kysor* $HOME/.kysor</pre>
  <pre data-lang="bash" id="VNLK"># удаляем файл сервиса и перезагружаем демона одной командой
sudo rm -v /etc/systemd/system/bitcoind.service; \
sudo systemctl daemon-reload</pre>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="sC41" data-align="center"><strong>БЛАГОДАРНОСТИ</strong></h3>
    <p id="CWHR" data-align="right"><a href="#hq2j">Содержание</a></p>
  </section>
  <p id="amQw">мамичу за то, что родила такого гения.</p>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="vYNR" data-align="center"><strong>ПОЛЕЗНЫЕ РЕСУРСЫ</strong></h3>
    <p id="elSw" data-align="right"><a href="#hq2j">Содержание</a></p>
  </section>
  <p id="ya6z"><a href="https://t.me/kyvecheckerbot" target="_blank">@kyvecheckerbot</a> - бот для слежения за нодой.</p>
  <p id="PmnJ"><a href="https://t.me/KyveProposals" target="_blank">@KyveProposals</a> - канал с уведомлениями о пропозалах.</p>
  <p id="sU81"><a href="https://t.me/how_to_node" target="_blank">@how_to_node</a> - канал, где я выкладываю свои гайды.</p>
  <p id="4AAa"><a href="/WTF_resources">Полезные ресурсы</a>.</p>
  <p id="S63T"><a href="/WTF_donate">Крипто-кошельки автора гайда</a>.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@cyberomanov/grafana</guid><link>https://teletype.in/@cyberomanov/grafana?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov</link><comments>https://teletype.in/@cyberomanov/grafana?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov#comments</comments><dc:creator>cyberomanov</dc:creator><title>Grafana /// v1.0</title><pubDate>Sun, 26 Sep 2021 06:00:28 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/a7/c0/a7c0a9b4-7591-4921-ae53-20c434893686.png"></media:content><category>Immortal Articles</category><description><![CDATA[<img src="https://img4.teletype.in/files/77/42/77425a46-470b-48b6-8772-e810af4ba000.png"></img>В этой статье мы будем добавлять в дашборд графаны свои сервера с нодами, что позволит нам отслеживать нагрузку на железо и вообще красиво так выглядит, как будто хацкер кокой-то.]]></description><content:encoded><![CDATA[
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="JsoO" class="m_original">
      <img src="https://img4.teletype.in/files/77/42/77425a46-470b-48b6-8772-e810af4ba000.png" width="2487" />
    </figure>
  </section>
  <p id="sxjH">В этой статье мы будем добавлять в дашборд графаны свои сервера с нодами, что позволит нам отслеживать нагрузку на железо и вообще красиво так выглядит, как будто хацкер кокой-то.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="uEa2">Если вы не знаете, <strong>что такое нода</strong> — читаем <a href="/WTF_node">статью</a>. <br />Если вы не знаете, <strong>где арендовать сервер для ноды</strong> — читаем <a href="/WTF_server">статью</a>. <br />Если вы не знаете, <strong>как подключиться к серверу</strong> — читаем <a href="/WTF_MobaXterm">статью</a>. <br />Если вы всё знаете — открываем <strong>MobaXterm </strong>и создаём сессию.</p>
  </section>
  <figure id="tBXT" class="m_custom">
    <img src="https://img3.teletype.in/files/6e/b7/6eb72bd2-4a8e-4bdc-bdd4-1714e38ba7b8.png" width="700" />
  </figure>
  <ul id="V0I6">
    <li id="lon3"><a href="#ccd0">А зачем?</a></li>
    <li id="GqAg"><a href="#tN9U">Установка</a></li>
    <ul id="QVCe">
      <li id="Nsba"><a href="#tN9U">Установка node-exporter на сервер с нодой</a></li>
      <li id="Xzq0"><a href="#RhBG">Установка prometheus на сервер-обработчик</a></li>
      <li id="qhnQ"><a href="#3aF5">Установка grafana на сервер-обработчик</a></li>
      <li id="tXBo"><a href="#RPwZ">Импортируем лучший в мире дашборд</a></li>
    </ul>
    <li id="BOqS"><a href="#k9CY">Благодарности</a></li>
    <li id="xZ7E"><a href="#u1jH">Полезные ресурсы на каждый день</a></li>
  </ul>
  <figure id="ccd0" class="m_original" data-caption-align="right">
    <img src="https://img3.teletype.in/files/6d/3d/6d3d9397-52c8-4a17-9b1a-cfe2060f7fa8.png" width="700" />
    <figcaption><a href="#tBXT">Содержание</a></figcaption>
  </figure>
  <p id="wKWH"><strong>Grafana </strong>- это платформа с открытым исходным кодом для визуализации, мониторинга и анализа данных. </p>
  <p id="0Yww"><strong>Grafana </strong>позволяет пользователям создавать дашборды с панелями, каждая из которых отображает определенные показатели.</p>
  <p id="Qg9o">С помощью графаны можно творить действительно волшебные вещи. </p>
  <p id="Ddb7">Например, <a href="https://t.me/razumv" target="_blank">разум</a> (человек, отвечающий за ноды в команде DoubleTop), сделал для своего коммьюнити общий дашборд.</p>
  <p id="Aqb2">С помощью этого дашборда, можно отслеживать полную информацию о сервере не только со стороны железа (нагрузка CPU, RAM и т.п.), но так же и инфу о последнем обработанном блоке вашей ноды.</p>
  <p id="AlNw">Другими словами, можно в режиме реального времени заметить, что сервер нагружен, но вот нода по какой-то причине отстала от сети, даже не включая сервер, а наблюдая красивые графики в браузере. Выглядит примерно так:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="evN9" class="m_original">
      <img src="https://img2.teletype.in/files/9b/2d/9b2d8f2e-8f46-4adb-addd-d702ede69d84.png" width="1843" />
    </figure>
  </section>
  <p id="A8ic">По истине волшебная вещь, но за таким дашбордом - добро пожаловать в 2Top.</p>
  <p id="RQiI">В данной статье я просто не могу объяснить, как добавить мониторинг на таком уровне - я не знаю язык запросов. </p>
  <p id="McT6">Сейчас мы будем настраивать мониторинг серверов на самом простом уровне: нагрузка проца, память, сеть и т.п.</p>
  <p id="oS4H">Это пригодится как минимум тогда, когда вы решаете: а к какому серверу мне подселить очередную ноду? На помощь придут графики и статистика на дистанции, а не в моменте. Это позволит сделать правильный выбор.</p>
  <p id="KkvQ">Или вы можете заметить, что тестнет с каждым днём пожирает всё больше и больше места на диске и заблаговременно докупить дисковое пространство.</p>
  <p id="BJCy">Я надеюсь. Во всяком случае, мы попробуем.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="khPH">Нам будет нужно:</p>
    <ul id="FYuP">
      <li id="Hepe">На сервер с нодой установить <strong>node-exporter</strong> - ПО, которое собирает и экспортирует метрики и статистику о работе железа.</li>
      <li id="rGJe">Арендовать отдельный сервер (1 Core x 1 GB RAM) под ноду-обработчик и установить на новый сервер <strong>Prometheus </strong>и <strong>Grafana</strong>. <br /><strong>Prometheus </strong>подтягивает и аккумулирует данные из <strong>node-exporter</strong>, а <strong>Grafana </strong>их визуализирует.</li>
    </ul>
  </section>
  <figure id="tN9U" class="m_original" data-caption-align="right">
    <img src="https://img1.teletype.in/files/c3/ab/c3abafed-5afa-4c81-b548-d92248b62077.png" width="700" />
    <figcaption><a href="#tBXT">Содержание</a></figcaption>
  </figure>
  <p id="TVow">Открываем сессию с сервером, где установлена какая-нибудь нода, откуда вы хотите получать данные в дашборд и устанавливаем на этот сервер ПО:</p>
  <pre id="kE59" data-lang="bash"># обновляем &#x27;базу данных&#x27;
sudo apt-get update &amp;&amp; sudo apt-get upgrade -y</pre>
  <pre id="kE59" data-lang="bash"># скачиваем &#x27;node_exporter&#x27; и наводим порядок одной командой
cd $HOME &amp;&amp; \
wget https://github.com/prometheus/node_exporter/releases/download/v1.2.0/node_exporter-1.2.0.linux-amd64.tar.gz &amp;&amp; \
tar xvf node_exporter-1.2.0.linux-amd64.tar.gz &amp;&amp; \
rm node_exporter-1.2.0.linux-amd64.tar.gz &amp;&amp; \
sudo mv node_exporter-1.2.0.linux-amd64 node_exporter &amp;&amp; \
chmod +x $HOME/node_exporter/node_exporter &amp;&amp; \
mv $HOME/node_exporter/node_exporter /usr/bin &amp;&amp; \
rm -Rvf $HOME/node_exporter/</pre>
  <pre id="t07O" data-lang="bash"># создаём файл сервиса &#x27;exporterd&#x27;
sudo tee /etc/systemd/system/exporterd.service &gt; /dev/null &lt;&lt;EOF
[Unit]
Description=node_exporter
After=network-online.target
[Service]
User=$USER
ExecStart=/usr/bin/node_exporter
Restart=always
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF</pre>
  <pre id="rtFz" data-lang="bash"># запускаем сервис &#x27;exporterd&#x27; одной командой
sudo systemctl daemon-reload &amp;&amp; \
sudo systemctl enable exporterd &amp;&amp; \
sudo systemctl restart exporterd</pre>
  <pre id="PurX" data-lang="bash"># проверяем логи
sudo journalctl -u exporterd -f</pre>
  <p id="EBkb">В выводе терминала вы увидите нечто подобное:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="IGO7" class="m_original">
      <img src="https://img1.teletype.in/files/c0/f0/c0f09778-2b93-401e-bf4b-c544b7be87e8.png" width="1365" />
    </figure>
  </section>
  <p id="oYXP">Теперь переходим в браузере на своём домашнем устройстве по адресу: <a href="https://<server_IP>:9100" target="_blank">http://&lt;server_IP&gt;:9100/</a>, где <strong>&lt;server_IP&gt;</strong> - IP сервера, на котором установлен <strong>node_exporter</strong>.</p>
  <p id="hUTK">Отобразится <strong>Node Exporter</strong>. Нажимаем <strong>Metrics:</strong></p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="SiEb" class="m_original">
      <img src="https://img1.teletype.in/files/c1/07/c107eac6-1444-41aa-9df5-e43ca06c0192.png" width="460" />
    </figure>
    <figure id="ztV2" class="m_original">
      <img src="https://img1.teletype.in/files/c5/c3/c5c3c86e-b999-4022-a161-f5127a4e764a.png" width="942" />
    </figure>
  </section>
  <p id="ea4K">Здесь мы увидим десять тысяч метрик, которые будут отправляться на ноду-обработчик и в дальнейшем отображаться в графане. Отлично.</p>
  <figure id="RhBG" class="m_original" data-caption-align="right">
    <img src="https://img4.teletype.in/files/3b/5f/3b5fd36b-cf29-4216-aa12-7eafceb37c49.png" width="700" />
    <figcaption><a href="#tBXT">Содержание</a></figcaption>
  </figure>
  <p id="n1YP">Нам потребуется сервер, куда будут отправляться данные для обработки и визуализации со всех наших серверов с нодами.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Tuns">Я возьму сервер с <strong>1 CPU</strong>,<strong> 1 GB RAM </strong>и<strong> 20 GB</strong> памяти на борту. Если этого окажется мало, то в будущем я обновлю требования.</p>
  </section>
  <p id="6vdM">Открываем сессию с нашим новым сервером (нода-обработчик) и устанавливаем необходимое ПО:</p>
  <pre id="bLL7" data-lang="bash"># обновляем &#x27;базу данных&#x27; 
sudo apt-get update &amp;&amp; sudo apt-get upgrade -y</pre>
  <pre id="bLL7" data-lang="bash"># устанавливаем &#x27;prometheus&#x27; одной командой
wget https://github.com/prometheus/prometheus/releases/download/v2.28.1/prometheus-2.28.1.linux-amd64.tar.gz &amp;&amp; \
tar xvf prometheus-2.28.1.linux-amd64.tar.gz &amp;&amp; \
rm prometheus-2.28.1.linux-amd64.tar.gz &amp;&amp; \
mv prometheus-2.28.1.linux-amd64 prometheus</pre>
  <pre id="bLL7" data-lang="bash"># открываем конфиг прометеуса для настройки
nano $HOME/prometheus/prometheus.yml</pre>
  <p id="2SvZ">В графу <strong>tagrets </strong>нам нужно после запятой добавить IP-адрес нашего сервера с нодой, откуда экспортируется статистика. </p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="0HJd">В будущем их можно будет добавить бесконечно много, но сейчас ограничимся одним сервером.</p>
  </section>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="9HFg" class="m_original">
      <img src="https://img3.teletype.in/files/65/7a/657adb08-35fe-40ac-907c-b916dbd36d42.png" width="588" />
    </figure>
  </section>
  <p id="yUeC">Сохраняем изменения и создаём сервис.</p>
  <pre id="Ukky" data-lang="bash"># выдаём права на исполнение
chmod +x $HOME/prometheus/prometheus</pre>
  <pre id="Ukky" data-lang="bash"># создаём файл сервиса &#x27;prometheusd&#x27;
sudo tee /etc/systemd/system/prometheusd.service &gt; /dev/null &lt;&lt;EOF
[Unit]
Description=prometheus
After=network-online.target
[Service]
User=$USER
ExecStart=$HOME/prometheus/prometheus \
--config.file=&quot;$HOME/prometheus/prometheus.yml&quot;
Restart=always
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF</pre>
  <pre id="Ukky" data-lang="bash"># запускаем сервис &#x27;prometheusd&#x27; одной командой
sudo systemctl daemon-reload &amp;&amp; \
sudo systemctl enable prometheusd &amp;&amp; \
sudo systemctl restart prometheusd</pre>
  <pre id="Ukky" data-lang="bash"># проверяем логи
sudo journalctl -u prometheusd -f</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="3Xcq" class="m_original">
      <img src="https://img3.teletype.in/files/e7/d6/e7d60e04-40eb-46a8-a149-7c700298e601.png" width="965" />
    </figure>
  </section>
  <p id="7PxZ">Переходим в браузере на своём домашнем устройстве по адресу: <a href="https://<server_IP>:9100" target="_blank">http://&lt;server_IP&gt;:9090/</a>, где <strong>&lt;server_IP&gt;</strong> - IP сервера, на котором установлен <strong>prometheus</strong>.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="oDCP" class="m_original">
      <img src="https://img2.teletype.in/files/5f/ab/5fab3b28-03e0-44b9-9b8a-547aecf85b9a.png" width="543" />
    </figure>
  </section>
  <p id="kvOE">Переходим в <strong>Status &gt; Targets:</strong></p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="8THs" class="m_original">
      <img src="https://img1.teletype.in/files/47/7f/477fd29f-d241-4017-b889-a107c229cfcd.png" width="237" />
    </figure>
    <figure id="ZTvs" class="m_original">
      <img src="https://img1.teletype.in/files/8f/d8/8fd8f001-e829-4f5d-a8ba-68c314325cf0.png" width="890" />
    </figure>
  </section>
  <p id="Wq0T">Прометеус показывает 2 цели: первая - сервер, где мы устанавливали <strong>node_exporter</strong>, 2 - сам прометеус (localhost). Отлично.</p>
  <figure id="3aF5" class="m_original" data-caption-align="right">
    <img src="https://img4.teletype.in/files/3f/2a/3f2aa2f0-946c-4a33-ae47-cb44b3024662.png" width="700" />
    <figcaption><a href="#tBXT">Содержание</a></figcaption>
  </figure>
  <p id="l5jW">Теперь на этот же сервер с прометеусом мы устанавливаем графану, чтобы как-то визуализировать всю собирающуюся статистику.</p>
  <pre id="uh3M" data-lang="bash"># устанавливаем графану одной командой
sudo apt-get install -y adduser libfontconfig1 &amp;&amp; \
wget https://dl.grafana.com/oss/release/grafana_8.0.6_amd64.deb &amp;&amp; \
sudo dpkg -i grafana_8.0.6_amd64.deb</pre>
  <pre id="uh3M" data-lang="bash"># запускаем сервис &#x27;grafana-server&#x27;
sudo systemctl daemon-reload &amp;&amp; \
sudo systemctl enable grafana-server &amp;&amp; \
sudo systemctl restart grafana-server</pre>
  <pre id="uh3M" data-lang="bash"># смотрим логи
sudo journalctl -u grafana-server -f</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="LQsM" class="m_original">
      <img src="https://img1.teletype.in/files/c7/9a/c79a2691-14c7-4042-90bd-5745c9eec726.png" width="1647" />
    </figure>
  </section>
  <p id="nfFx">Переходим в браузере на своём домашнем устройстве по адресу: <a href="https://<server_IP>:9100" target="_blank">http://&lt;server_IP&gt;:3000/</a>, где <strong>&lt;server_IP&gt;</strong> - IP сервера, на котором установлен <strong>prometheus </strong>и <strong>grafana</strong>.</p>
  <p id="pDN6">Если всё прошло удачно, нас встречает приветственное окно графаны:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="vTAj" class="m_original">
      <img src="https://img2.teletype.in/files/58/4c/584c9869-4b4a-47a9-ae92-4d20757fddd0.png" width="529" />
    </figure>
  </section>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Ykmx">Пароль: <strong>admin<br /></strong>Логин: <strong>admin</strong></p>
  </section>
  <p id="DZr8">Теперь задаём собственный пароль:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="77vq" class="m_original">
      <img src="https://img3.teletype.in/files/67/cc/67cc3de7-fcfa-4a4d-86bb-a1c3ce70561d.png" width="509" />
    </figure>
  </section>
  <p id="r9kc">Следующим шагом станет добавление <strong>Data Sources.</strong> Выбираем <strong>Prometheus:</strong></p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="88AA" class="m_original">
      <img src="https://img2.teletype.in/files/d5/07/d5078028-06de-4bb9-b424-53399969a611.png" width="1280" />
    </figure>
    <figure id="oi7d" class="m_original">
      <img src="https://img2.teletype.in/files/de/b0/deb02033-2854-44e4-9f49-932ec533c3d7.png" width="1301" />
    </figure>
  </section>
  <p id="p4VX">Указываем в графе <strong>URL </strong>адрес к своему серверу с прометеусом и графаной:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="bggS" class="m_original">
      <img src="https://img3.teletype.in/files/ef/bc/efbc2032-7da9-4271-a149-b4ba3b28a8d0.png" width="658" />
    </figure>
  </section>
  <p id="eVNV">После чего нажимаем <strong>Save &amp; test</strong>. </p>
  <p id="SGRA">Если всё настроили правильно - отобразится зелёная галочка:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="HfcS" class="m_original">
      <img src="https://img2.teletype.in/files/d5/7f/d57f0d16-0de7-4c34-bfc4-1e17816728dd.png" width="276" />
    </figure>
  </section>
  <p id="PEEI">Теперь нам нужно импортировать дашборд, чтобы наконец-то увидеть графики:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="FY7W" class="m_original">
      <img src="https://img3.teletype.in/files/26/06/2606413e-d16a-4897-9fff-c3e42b300c7f.png" width="190" />
    </figure>
    <figure id="1hhO" class="m_original">
      <img src="https://img4.teletype.in/files/f0/e6/f0e6142f-576f-48e9-a314-84b93511f732.png" width="638" />
    </figure>
  </section>
  <p id="N6VT">Чтобы импортировать дашборд по <strong>ID</strong>, нам, прежде всего, этот <strong>ID </strong>нужно узнать.</p>
  <p id="EOe3">Переходим к <a href="https://grafana.com/grafana/dashboards" target="_blank">каталогу дашбордов</a> и выбираем любой понравившийся.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="NhiM">К сожалению, не все дашборды из каталога будут работать, но, если потрудиться, то можно найти рабочие решения. Далее в статье я представлю свой дашборд.</p>
    <p id="Vufg">Для примера я укажу ID - <strong>1860</strong>.</p>
  </section>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="U8qm" class="m_original">
      <img src="https://img1.teletype.in/files/0c/4d/0c4d6b62-58d5-4039-bca8-8ceb2f72b779.png" width="639" />
    </figure>
  </section>
  <p id="lrX4">Выбираем имя для дашборда и источник прометеуса:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="4MeJ" class="m_original">
      <img src="https://img4.teletype.in/files/b0/fa/b0faaf7b-f229-496f-beb2-ebcdaad1c240.png" width="635" />
    </figure>
  </section>
  <p id="23Lm">И вот уже начинают заполняться некоторые графики и панели:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="RZ3T" class="m_original">
      <img src="https://img3.teletype.in/files/62/46/6246fd66-3b63-4a70-80fc-6ae82c3aa845.png" width="2480" />
    </figure>
  </section>
  <p id="B41l">Уже выглядит неплохо, правда? </p>
  <p id="gQw6">Но как добавить в один дашборд несколько нод? Ведь не интересно создавать для каждой ноды отдельный дашборд в отдельной вкладке - это не удобно.</p>
  <figure id="RPwZ" class="m_original" data-caption-align="right">
    <img src="https://img4.teletype.in/files/b2/17/b2171bf0-809e-4ad9-8f2c-a32adff386d5.png" width="700" />
    <figcaption><a href="#tBXT">Содержание</a></figcaption>
  </figure>
  <p id="s5dO">Я решил не показывать весь процесс настройки своего дашборда. Я нашёл классный трафарет в каталоге, но пока довёл его до ума прошёл не один час. Запечатлеть все мои действия в статье не представляется возможным.</p>
  <p id="BsLB">Но зато я создал 2 темплейта для коммьюнити, возможно вам понравится.</p>
  <p id="xowj">Выглядят они вот так:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="6FVB" class="m_original">
      <img src="https://img2.teletype.in/files/da/2d/da2d07d6-1b5b-4ec4-a568-64d13393bcf2.png" width="2490" />
    </figure>
    <figure id="Vxc8" class="m_original">
      <img src="https://img2.teletype.in/files/5d/e4/5de45136-d5bf-4458-8a06-a8f803b22d69.png" width="2487" />
    </figure>
  </section>
  <p id="hvBh">Как вы могли заметить, я добавил возможность получать общую статистику со всех добавленных нод в виде таблицы. Как по мне, это супер удобно. У нас будет только 1 дашборд для всех нод:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="V1yt" class="m_original">
      <img src="https://img3.teletype.in/files/63/be/63bebb01-6919-4380-b7a0-82e66ec5ce10.png" width="2479" />
    </figure>
  </section>
  <p id="Io1O">Прям по кайфу, реально.</p>
  <p id="qVYI">Плюс к этому, в левом углу есть поле <strong>Node</strong>, в выпадающем списке можно выбрать интересующую ноду и посмотреть её метрики более детально:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="5LKO" class="m_original">
      <img src="https://img2.teletype.in/files/9f/5c/9f5cb924-da24-446e-94df-1f41f7fc527d.png" width="275" />
    </figure>
    <figure id="cmjv" class="m_original">
      <img src="https://img3.teletype.in/files/29/e9/29e9ac5b-9fa1-44cd-a863-b79ce2e660c4.png" width="2472" />
    </figure>
  </section>
  <p id="aCKQ">Пушка, правда? </p>
  <p id="PJuR">Теперь расскажу, как импортировать один из этих дашбордов себе и как добавить несколько нод в таблицу.</p>
  <p id="l2lj">Первым делом, заходим на <a href="https://github.com/cyberomanov/grafana" target="_blank">мой гитхаб</a> и скачиваем архив с двумя json-файлами:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="bphC" class="m_original">
      <img src="https://img2.teletype.in/files/98/e6/98e675f8-f798-4bdb-83d6-b0b4f60ee718.png" width="1176" />
    </figure>
    <figure id="IOou" class="m_original">
      <img src="https://img2.teletype.in/files/d7/cf/d7cf6fcd-4993-44ef-94c6-49e917fe15d8.png" width="170" />
    </figure>
  </section>
  <p id="Zj6o">Затем открываем сессии с нужными нам серверами и устанавливаем на каждый сервер (откуда хотите собирать статистику) <strong>node-exporter</strong> из <a href="#tN9U">соответствующего раздела статьи</a>. </p>
  <p id="WJe3">Проверяем, чтобы экспортёр установился корректно на каждом сервере.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="HGKU">Мы устанавливаем только <strong>node-exporter</strong> и только на те машины, с которых хотим собирать метрики. </p>
    <p id="yQ0A"><strong>Grafana </strong>и <strong>Prometheus </strong>устанавливаем только на один сервер, который мы выделили, как ноду-обработчик.</p>
  </section>
  <p id="BVJk">После того, как экспортёры настроены, открываем файл конфига прометеуса на ноде-обработчике:</p>
  <pre id="rspi" data-lang="bash">nano $HOME/prometheus/prometheus.yml</pre>
  <p id="URTx">Так выглядит мой конфиг:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="PF1f" class="m_original">
      <img src="https://img4.teletype.in/files/71/a5/71a58fc9-031b-4fed-8e44-d8eed7c26d66.png" width="384" />
    </figure>
  </section>
  <p id="wEAy">Нас интересует только раздел <strong>static_configs.</strong></p>
  <p id="qdwr"><strong>targets </strong>- это цель, определённая машина, на которую мы устанавливали ноду-экспортёр и откуда желаем собирать метрики.</p>
  <p id="E77F"><strong>label </strong>- название этого сервера для отображения в графане.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Rk01"><strong>targets: [&lt;IP&gt;:9100]</strong> - меняем только IP.<br /><strong>label: &quot;&lt;label&gt;&quot; </strong>- меняем на своё название сервера.</p>
    <p id="QATX">Строго соблюдаем синтаксис: каждый отступ - 2 пробела. </p>
    <p id="zea5">Не рекомендую исопользовать пробелы в названиях лейблов, у меня так не работало.</p>
  </section>
  <pre id="Uhp1" data-lang="bash"># так будет выглядеть конфиг для одной ноды
global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: &quot;node_exporter&quot;
    static_configs:
    - targets: [&lt;IP&gt;:9100]
      labels:
        label: &quot;&lt;label_1&gt;&quot;
        
# так будет выглядеть конфиг для четырёх нод
global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: &quot;node_exporter&quot;
    static_configs:
    - targets: [&lt;IP-1&gt;:9100]
      labels:
        label: &quot;&lt;label_1&gt;&quot;
    - targets: [&lt;IP-2&gt;:9100]
      labels:
        label: &quot;&lt;label_2&gt;&quot;
    - targets: [&lt;IP-3&gt;:9100]
      labels:
        label: &quot;&lt;label_3&gt;&quot;
    - targets: [&lt;IP-4&gt;:9100]
      labels:
        label: &quot;&lt;label_4&gt;&quot;</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="9eOn">По аналогии можно добавить хоть бесконечность таргетов, главное сохранять синтаксис и отступы.</p>
  </section>
  <p id="QGgR">После того, как настроили конфиг - сохраняем изменения и перезапускаем графану и прометеус:</p>
  <pre id="O572" data-lang="bash">sudo systemctl daemon-reload &amp;&amp; \
sudo systemctl enable grafana-server &amp;&amp; \
sudo systemctl restart grafana-server &amp;&amp; \
sudo systemctl restart prometheusd</pre>
  <p id="wEKr">Возвращаемся в графану и импортируем один из скачанных с гитхаба дашбордов:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="2a2p" class="m_original">
      <img src="https://img3.teletype.in/files/e0/66/e06628e1-b420-4a49-9180-4d0f4ca78140.png" width="198" />
    </figure>
    <figure id="4dvT" class="m_original">
      <img src="https://img4.teletype.in/files/7a/f1/7af19f95-8c9d-4756-9e33-d0599f885d0d.png" width="184" />
    </figure>
    <figure id="Eql9" class="m_original">
      <img src="https://img2.teletype.in/files/d1/cc/d1cc8027-02a8-43f5-83cc-d59781c24906.png" width="397" />
    </figure>
    <figure id="3iJd" class="m_original">
      <img src="https://img4.teletype.in/files/71/ae/71aeb37e-30a8-439b-b04c-45f1a77de465.png" width="641" />
    </figure>
    <figure id="iz4r" class="m_original">
      <img src="https://img2.teletype.in/files/55/b2/55b2babe-9d46-448d-9c83-d362e213a0ea.png" width="2486" />
    </figure>
  </section>
  <p id="5n3d">Вуаля! Выглядит бомбически, мне очень нравится.</p>
  <p id="6JPO">Если вам не нравится форма или размер виджета/панели, можно легко их редактировать: просто потянув за правый нижний угол виджета.</p>
  <p id="yn4v">Например, если у вас много нод в списке и не удобно просматривать список с помощью скрола - просто увеличиваем высоту виджета:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="mddJ" class="m_original">
      <img src="https://img4.teletype.in/files/fe/31/fe314f93-cd43-47fb-96db-3eeafcdaa010.png" width="184" />
    </figure>
    <figure id="CH0I" class="m_original">
      <img src="https://img4.teletype.in/files/f8/37/f837df79-fdda-4413-9e99-021ae71d9d7f.png" width="2490" />
    </figure>
  </section>
  <p id="cOKZ">Главное, нажать на кнопку сохранения в правом верхнем углу страницы, чтобы изменения вступили в силу:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="wIjI" class="m_original">
      <img src="https://img3.teletype.in/files/6d/68/6d686f49-9f0b-4096-a52d-8c53c4393b98.png" width="418" />
    </figure>
  </section>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="VYrV">Возможно, в будущем добавлю ещё несколько вариаций дашбордов, если затянет. Подписываемся на обновления, хаха!</p>
  </section>
  <figure id="k9CY" class="m_custom" data-caption-align="right">
    <img src="https://img1.teletype.in/files/86/ef/86ef470d-eaa8-4f3d-a986-4fd888334fb2.png" width="700" />
    <figcaption><a href="#tBXT">Содержание</a></figcaption>
  </figure>
  <p id="4DJE">мамичу за то, что родила такого гения.</p>
  <figure id="u1jH" class="m_custom" data-caption-align="right">
    <img src="https://img1.teletype.in/files/80/94/8094f1ca-b7d6-495c-b03f-332d2acbea2f.png" width="700" />
    <figcaption><a href="#tBXT">Содержание</a></figcaption>
  </figure>
  <p id="Cg1O"><a href="https://t.me/how_to_node" target="_blank">@how_to_node</a> - канал, где я выкладываю свои гайды.</p>
  <p id="602p"><a href="https://cyberomanov.tech/WTF_resources" target="_blank">Полезные ресурсы</a>.</p>
  <p id="GYtw"><a href="https://cyberomanov.tech/WTF_donate" target="_blank">Крипто-кошельки автора гайда</a>.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@cyberomanov/moving</guid><link>https://teletype.in/@cyberomanov/moving?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov</link><comments>https://teletype.in/@cyberomanov/moving?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov#comments</comments><dc:creator>cyberomanov</dc:creator><title>Перенос Polkadot &amp; Cosmos /// v1.0</title><pubDate>Wed, 22 Sep 2021 16:14:42 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/ec/79/ec797605-e173-4103-9bcf-1bc96ffa5c12.png"></media:content><category>Immortal Articles</category><description><![CDATA[<img src="https://boxit.es/wp-content/uploads/post/jorje/Mudanza-en-invierno.jpg"></img>В этой статье я буду «переносить» ноды, построенные на базе Polkadot и Tendermint, на другие сервера, не теряя валидатора и (практически) не пропуская блоков.]]></description><content:encoded><![CDATA[
  <section>
    <figure id="wJ63" class="m_original">
      <img src="https://boxit.es/wp-content/uploads/post/jorje/Mudanza-en-invierno.jpg" width="800" />
    </figure>
  </section>
  <p id="DhCA">В этой статье я буду «переносить» ноды, построенные на базе <strong>Polkadot </strong>и <strong>Tendermint, </strong>на другие сервера, не теряя валидатора и (практически) не пропуская блоков.</p>
  <p id="JSrp">Проекты на вышеупомянутых сетях «переносятся» по одному и тому же сценарию.</p>
  <p id="1ocx">Если проект использует свой собственный блокчейн — подход будет уникальным от проекта к проекту и лучше уточнять особенности «переезда» в тематическом чате.</p>
  <section>
    <p id="vHwX">Если вы не знаете, <strong>что такое нода</strong> — читаем <a href="/WTF_node">статью</a>. <br />Если вы не знаете, <strong>где арендовать сервер для ноды</strong> — читаем <a href="/WTF_server">статью</a>. <br />Если вы не знаете, <strong>как подключиться к серверу</strong> — читаем <a href="/WTF_MobaXterm">статью</a>. <br />Если вы всё знаете — открываем <strong>MobaXterm </strong>и создаём сессию.</p>
  </section>
  <figure id="tBXT" class="m_custom">
    <img src="https://img3.teletype.in/files/6e/b7/6eb72bd2-4a8e-4bdc-bdd4-1714e38ba7b8.png" width="700" />
  </figure>
  <ul id="FNwc">
    <li id="9mUE"><a href="#EF8B">Polkadot или Cosmos?</a></li>
    <li id="NQXz"><a href="#Ixqg">Перенос</a></li>
    <ul id="6Iwk">
      <li id="TbkV"><a href="#Ixqg">Перенос Polkadot</a></li>
      <li id="XAYA"><a href="#ci3E">Перенос Cosmos</a></li>
    </ul>
    <li id="Z4U7"><a href="#k9CY">Благодарности</a></li>
    <li id="QzTq"><a href="#u1jH">Полезные ресурсы на каждый день</a></li>
  </ul>
  <figure id="EF8B" class="m_original" data-caption-align="right">
    <img src="https://img3.teletype.in/files/29/8f/298f1bb2-5782-4dff-9a9e-cc18d95d08eb.png" width="700" />
    <figcaption><a href="#tBXT">Содержание</a></figcaption>
  </figure>
  <p id="Aw2h">Я не буду углубляться в технические особенности и различия блокчейнов на уровне кода — я в этом не силён, да нам и не нужно. </p>
  <p id="Uzkj">Определить, с каким блокчейном вы работаете, можно посмотрев на команды и инструменты, которыми вы пользуетесь при «поднятии» и «содержании» ноды.</p>
  <hr />
  <p id="qbJZ">Например, отличительной особенностью нод на польке является их телеметрия и дашборд.</p>
  <p id="wveu">Так выглядит дашборд или эксплорер:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="bktG" class="m_original">
      <img src="https://img4.teletype.in/files/7e/af/7eaf4794-90d0-4d19-9de8-b59885df5e5f.png" width="1730" />
    </figure>
    <figure id="MdKN" class="m_original">
      <img src="https://img3.teletype.in/files/ef/51/ef51590b-a905-4c95-a59f-40147b5c0917.png" width="1736" />
    </figure>
  </section>
  <p id="Qhn6">А так телеметрия:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="FGKx" class="m_original">
      <img src="https://img3.teletype.in/files/6b/d4/6bd46b13-3593-493b-a050-b63316f294a3.png" width="1902" />
    </figure>
  </section>
  <p id="fVvl">Если вам знаком данный дизайн, можете приступать к пункту: <a href="#Ixqg">перенос polkadot</a>.</p>
  <hr />
  <p id="piwy">У космоса нет единого эксплорера для всех проектов, как у польки. </p>
  <p id="HqMk">Но зато, все команды, используемые при работе с тендерминтом, практически идентичны.</p>
  <p id="3TWU">Для космоса характерны такие команды, как:</p>
  <pre data-lang="bash" id="FMwW"># отправляем транзакцию создания валидатора
$ rizond tx staking create-validator \
--amount=&quot;7000000uatolo&quot; \
--pubkey=$($HOME/go/bin/rizond tendermint show-validator) \
--moniker=$NICKNAME \
--commission-rate=&quot;0.10&quot; \
--commission-max-rate=&quot;0.20&quot; \
--commission-max-change-rate=&quot;0.01&quot; \
--min-self-delegation=&quot;1&quot; \
--from $NICKNAME&#x27;_keys&#x27; \
--chain-id=groot-011 \
--fees=&quot;1000uatolo&quot;</pre>
  <p id="V6Um">или:</p>
  <pre data-lang="bash" id="WnOB"># получаем высоту блоков нашей ноды
$ stchaincli status 2&gt;&amp;1 | jq .&quot;sync_info&quot;.&quot;latest_block_height&quot;</pre>
  <pre data-lang="bash" id="buY9"># получаем статус синхронизации ноды
$ stchaincli status 2&gt;&amp;1 | jq .&quot;sync_info&quot;.&quot;catching_up&quot;

# &#x27;true&#x27; - нода синхронизируется, &#x27;false&#x27; - нода синхронизирована</pre>
  <p id="KyWL">Если вы узнали эти команды, можно приступать к пункту: <a href="#ci3E">перенос tendermint</a>.</p>
  <figure id="Ixqg" class="m_original" data-caption-align="right">
    <img src="https://img4.teletype.in/files/f9/bf/f9bf68b9-158f-4da5-a4eb-60bff53ffd4f.png" width="700" />
    <figcaption><a href="#tBXT">Содержание</a></figcaption>
  </figure>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="mFlB">Чтобы «перенести» ноду «на польке» на новый сервер, не теряя валидатора, нам нужно будет:</p>
    <ul id="aT4R">
      <li id="8IyF">установить новую ноду (без валидатора) на новом сервере и начать её синхронизацию.</li>
      <li id="papM">дождаться, пока в телеметрии новая нода догонит последний блок.</li>
      <li id="oEAQ">в дашборде тестнета перепривязать сессионые ключи валидатора к новому серверу и выключить старую ноду.</li>
    </ul>
  </section>
  <p id="DNb7">Например, у меня есть функционирующая нода <a href="https://nodes.guru/porta" target="_blank">porta</a>, которую я хочу «перенести» на другой сервер.</p>
  <p id="SCT6">Первое, что нужно сделать — зайти в <strong>Staking &gt; Account actions</strong> и убедиться, что валидатор вообще работает:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="fkO6" class="m_original">
      <img src="https://img3.teletype.in/files/e9/d4/e9d4b9b3-2190-4240-973d-7cbf8743658b.png" width="1130" />
    </figure>
  </section>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Yp64">Важно иметь мнемонику и <strong>json</strong>-файлы от <strong>stash</strong>-аккаунта и <strong>controller</strong>-аккаунта. </p>
    <p id="2qWC">При «переносе» нам они не пригодятся, если данные сохранились в «личном кабинете» на сайте полькадота, но возьмите в привычку: всегда бэкапить абсолютно все мнемоники и <strong>json</strong>-файлы. </p>
    <p id="0S7W">Имея их, можно будет восстановить ноду на любом сервере.</p>
  </section>
  <p id="Dslg">Второе, мы арендуем второй сервер (куда будем «переносить» ноду) и устанавливаем ПО на новый сервер, запускаем узел и начинаем синхронизацию. Можно даже использовать старый никнейм ноды.</p>
  <p id="yTcU">В конечном итоге, у вас должны быть: <strong>старая нода с функционирующим валидатором</strong> и <strong>новая, уже синхронизированная нода без валидатора</strong>. </p>
  <p id="IXyt">Вот так это будет примерно выглядеть в телеметрии:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="w8vZ" class="m_original">
      <img src="https://img4.teletype.in/files/33/ba/33badcee-eb9b-4899-8088-beddc5088dda.png" width="986" />
      <figcaption>скриншот не из порты, у порты нет телеметрии. скриншот для примера.</figcaption>
    </figure>
  </section>
  <p id="wCQr">Теперь мы заходим в <strong>Staking &gt; Account actions</strong>, выбираем своего валидатора и нажимаем на настройки, затем — <strong>Change session keys</strong>:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="nP5x" class="m_original">
      <img src="https://img4.teletype.in/files/f8/07/f8071a01-5f3c-46a3-9b26-5cd97c5a5f90.png" width="1123" />
    </figure>
  </section>
  <p id="ycD1">На новом сервере выполняем команду генерации сессионных ключей:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="hpZk">Возможно, от проекта к проекту, команда будет незначительно отличаться, просто выполните команду, которую выполняли в самый первый раз, когда ставили ноду.</p>
  </section>
  <pre id="z1D7" data-lang="bash">$ curl -H &quot;Content-Type: application/json&quot; \
-d &#x27;{&quot;id&quot;:1, &quot;jsonrpc&quot;:&quot;2.0&quot;, &quot;method&quot;: &quot;author_rotateKeys&quot;, &quot;params&quot;:[]}&#x27; \
http://127.0.0.1:9937 | jq .result | sed &#x27;s/&quot;//g&#x27;</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="ZFPw" class="m_original">
      <img src="https://img4.teletype.in/files/38/fe/38fe1b11-d701-4baa-8180-57e99fe4ba57.png" width="886" />
    </figure>
  </section>
  <p id="1hLw">И вставляем новые ключи в соответствующее поле на сайте:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="Cyg0" class="m_original">
      <img src="https://img3.teletype.in/files/ac/8b/ac8b9669-be35-4f12-8047-e13df7ae4c7a.png" width="1002" />
    </figure>
    <figure id="84Lj" class="m_original">
      <img src="https://img2.teletype.in/files/5b/c8/5bc80dd8-af7d-4e08-8221-aceb19403cdc.png" width="238" />
    </figure>
  </section>
  <p id="9EwO">На скриншоте видно, что транзакция прошла успешно и нода теперь «привязана» к новому серверу. Теперь можно выключить ноду на старом сервере. </p>
  <p id="IJoj">Для меня это:</p>
  <pre id="tmYs" data-lang="bash">$ sudo systemctl stop portad</pre>
  <p id="B9lN">В начале новой эпохи валидатор перестанет валидировать, нужно будет вновь нажать <strong>Validate</strong> в <strong>Staking &gt; Account actions</strong> и заново настроить комиссию:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="aeQ6" class="m_original">
      <img src="https://img2.teletype.in/files/1b/70/1b70ddbe-b832-4e39-9e27-08e79e81aa21.png" width="236" />
    </figure>
    <figure id="X8Q2" class="m_original">
      <img src="https://img3.teletype.in/files/e4/15/e415e0c4-3a6f-4976-b8f8-af45a226c41d.png" width="1059" />
    </figure>
  </section>
  <p id="Cmn6">Теперь валидатор валидирует с нового сервера с новыми ключами:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="ZFgU" class="m_original">
      <img src="https://img1.teletype.in/files/89/1c/891c580c-3de4-48e5-850d-a2fd61aa3870.png" width="561" />
    </figure>
  </section>
  <figure id="ci3E" class="m_original" data-caption-align="right">
    <img src="https://img4.teletype.in/files/bb/21/bb2113d3-b708-43a0-891e-13fbd2642571.png" width="700" />
    <figcaption><a href="#tBXT">Содержание</a></figcaption>
  </figure>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="iEAT">Чтобы «перенести» ноду «на тендерминте» на новый сервер, не теряя валидатора, нам нужно будет:</p>
    <ul id="aT4R">
      <li id="NaFb">установить новую ноду на новом сервере и начать её синхронизацию.</li>
      <li id="LOKv">дождаться, пока новая нода догонит последний блок.</li>
      <li id="yid2">восстановить старые ключи (кошелёк) на новой ноде.</li>
      <li id="QcSx">скопировать 1 файл со старого сервера на новый: <strong>priv_validator_key.json.</strong></li>
      <li id="JH7R">остановить старую ноду и включить новую с подменёнными файлами.</li>
    </ul>
  </section>
  <p id="CDpF">Например, у меня есть функционирующая нода <a href="https://teletype.in/@cyberomanov/stratos" target="_blank">stratos</a>, которую я хочу «перенести» на другой сервер.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="zicc" class="m_original">
      <img src="https://img1.teletype.in/files/4b/d3/4bd3ec4d-1586-4071-adf5-0976d9f33d0a.png" width="1048" />
    </figure>
  </section>
  <p id="TUjL">Первое, мы скачиваем со старого сервера файл, которые находится в следующем каталоге: <strong>$HOME/.&lt;cosmos&gt;/config/</strong> на свой компьютер.</p>
  <p id="P2cj">Нужный нам файл называется: <strong>priv_validator_key.json</strong>.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="J5eq">Название каталога с необходимым нам конфигом будет начинаться с точки и содержать несколько «папок»: <strong>config</strong>, <strong>data</strong>, возможно <strong>keyring-test</strong> или что-то подобное.</p>
    <p id="vF1i">Нам нужно найти в «корневом каталоге» (обычно, <strong>root</strong>)директорию, которая содержит папку <strong>config</strong>, и скачать её себе на ПК.</p>
  </section>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="nD6c" class="m_original">
      <img src="https://img3.teletype.in/files/e0/4c/e04cc3ce-8936-45bb-8625-b71f9a3a6b4f.png" width="144" />
    </figure>
    <figure id="bCNk" class="m_original">
      <img src="https://img2.teletype.in/files/d1/d2/d1d2e613-340b-4970-9c08-e5cc20838c91.png" width="118" />
    </figure>
  </section>
  <p id="IOB1">Скачать файлы можно с помощью инструментов программы <strong>MobaXterm </strong>или <strong>SCP</strong>:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="hk71" class="m_original">
      <img src="https://img1.teletype.in/files/8f/8b/8f8b5618-a03e-4978-a677-c4e111028b0f.png" width="621" />
    </figure>
  </section>
  <p id="kMlY">Теперь мы должны начать установку ноды на новом сервере, настроить конфиги, файлы генезиса и следовать инструкции <strong>вплоть до запуска синхронизации</strong> <strong>ноды и дождаться её полного завершения</strong>.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="RxBR">Создавать валидатора <strong>не нужно</strong>, мы его восстановим. </p>
    <p id="bRwq">Ключи создавать <strong>не нужно</strong>, мы их восстановим.</p>
  </section>
  <p id="4Ii1">В определённый момент у вас будет <strong>всё ещё активный валидатор</strong> на старом сервере и <strong>полностью синхронизированная нода без валидатора</strong> на новом сервере.</p>
  <figure id="CLoD" class="m_original" data-caption-align="right">
    <img src="https://img2.teletype.in/files/1b/5d/1b5ddbb9-39b6-436d-a7a7-bef6efff99c9.png" width="700" />
    <figcaption><a href="#tBXT">Содержание</a></figcaption>
  </figure>
  <p id="HK3N">Теперь восстанавливаем ключи на новом сервере по старой мнемонической фразе. Для стратоса команда имеет вид:</p>
  <pre id="JbzB" data-lang="bash">$ stchaincli keys add --hd-path &quot;m/44&#x27;/606&#x27;/0&#x27;/0/0&quot; \
--keyring-backend=test $NICKNAME --recover</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="XKEp" class="m_original">
      <img src="https://img2.teletype.in/files/91/6a/916aff1a-5f68-46a8-82ed-8d011bed277d.png" width="935" />
      <figcaption>скриншот со старого сервера</figcaption>
    </figure>
    <figure id="uPcu" class="m_original">
      <img src="https://img1.teletype.in/files/c4/6e/c46e1fe1-8e1b-45d6-8a48-097cf978b8df.png" width="1584" />
      <figcaption>скриншот с нового сервера</figcaption>
    </figure>
  </section>
  <p id="ojXn">Стандартный вид команды:</p>
  <pre id="e319" data-lang="bash">$ cosmosd keys add $NICKNAME --recover</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="69pS">Как вы могли заметить, команда для восстановления ключей по мнемонике, идентична с командой для генерации новых ключей, за исключением одного параметра: <strong>--recover</strong>.</p>
  </section>
  <p id="eFG6">Если нет мнемоники, можно перенести следующие файлы со старого сервера на новый:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="VvVM" class="m_original">
      <img src="https://img1.teletype.in/files/c2/3d/c23de974-3345-4be7-870f-0c06019a5ba8.png" width="308" />
    </figure>
    <figure id="puOa" class="m_original">
      <img src="https://img4.teletype.in/files/32/a0/32a0b202-7fba-47c2-9a82-2cc19e7f5f14.png" width="223" />
    </figure>
  </section>
  <p id="5xQo">И положить их в соответствующую директорию: рядом с конфигом или в конкретный каталог keyring-test, например, — одним словом туда, откуда вы их сохранили со старого сервера.</p>
  <figure id="NWRO" class="m_original" data-caption-align="right">
    <img src="https://img3.teletype.in/files/e4/32/e432392d-ec81-4b5b-91d0-4766e424b2b8.png" width="700" />
    <figcaption><a href="#tBXT">Содержание</a></figcaption>
  </figure>
  <p id="mkcU">Настал момент, когда нам <strong>нужно остановить сервисы нод</strong> на каждом из серверов, чтобы не было такой ситуации, что одновременно работают 2 валидатора на одних и тех же ключах.</p>
  <p id="WZgu">Важно убедиться, что старая нода выключена и не обрабатывает блоки. Очень важно.</p>
  <p id="7Aqy">Для меня это:</p>
  <pre id="tAMp" data-lang="bash">$ sudo systemctl stop stratosd</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="DcDD">В этот момент старый валидатор перестанет обрабатывать блоки. </p>
    <p id="Zlw9">Чтобы не угодить в «тюрьму», следующие действия нужно выполнять <strong>быстро</strong>.</p>
  </section>
  <p id="qlCF">На новом сервере, в каталоге <strong>config</strong> мы удаляем файл <strong>priv_validator_key.json</strong>. Можно руками, можно командами:</p>
  <pre id="G3QL" data-lang="bash">$ cd $HOME/.&lt;cosmos&gt;/config/
$ rm -vf priv_validator_key.json</pre>
  <p id="1Sj0">И загружаем скачанный ранее <strong>priv_validator_key.json </strong>на новый сервер, в соответствующую директорию <strong>config.</strong></p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="lPgn">Этими действиями мы «переносим» валидатора на новый сервер, пропуская минимум блоков.</p>
  </section>
  <p id="1p8N">Теперь можно со спокойной душой запускать сервис на новом сервере:</p>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="JUzE"><strong>Важно убедиться, что старая нода выключена и не обрабатывает блоки. Только после этого запускаем новую ноду. </strong></p>
  </section>
  <pre id="Alpr" data-lang="bash"># включаем сервис &#x27;stratosd&#x27; одной командой 
$ sudo systemctl daemon-reload &amp;&amp; \
sudo systemctl enable stratosd &amp;&amp; sudo systemctl restart stratosd</pre>
  <p id="be24">Сейчас нужно наблюдать в эксплорере, прошло ли всё удачно. </p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="nRhL" class="m_original">
      <img src="https://img3.teletype.in/files/63/e3/63e35675-216f-474a-a218-0556f1bff213.png" width="569" />
    </figure>
  </section>
  <p id="wGvV">Как видно на скриншоте, валидатор продолжает обрабатывать блоки, несмотря на то, что первый сервер выключен.</p>
  <p id="lpTG">Также можно проверить состояние валидатора на новом сервере с помощью команды:</p>
  <pre id="RIGG" data-lang="bash">$ stchaincli query staking validator $(stchaincli keys show $NICKNAME \
--bech val --address --keyring-backend test) --trust-node</pre>
  <p id="BmfN">Стандартный вид команды:</p>
  <pre id="Cmo6" data-lang="bash">$ cosmosd query staking \
validator $(cosmosd keys show $NICKNAME --bech val --address)</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="BzRf" class="m_original">
      <img src="https://img2.teletype.in/files/9b/56/9b56b643-48f7-4d33-badc-d93483a2fef9.png" width="954" />
    </figure>
  </section>
  <p id="DH0K">Получилось всё провести быстро и нода даже не успела попасть в тюрьму.</p>
  <p id="yoge">Но если валидатор всё же угодил в неё — нужно соответствующей командой его оттуда вытащить:</p>
  <pre data-lang="bash" id="60Gz"># выйти из &#x27;тюрьмы&#x27;
$ stchaincli tx slashing unjail --from=$NICKNAME \
--chain-id=stratos-testnet-2 \
--keyring-backend=test \
--gas=&quot;auto&quot; \
--gas-prices=&quot;0.5ustos&quot; \
--gas-adjustment=1.5</pre>
  <p id="eTY0">Стандартный вид команды:</p>
  <pre id="rMp5" data-lang="bash">$ cosmosd tx slashing unjail --from=$NICKNAME --chain-id=&lt;chain-id&gt;</pre>
  <figure id="k9CY" class="m_custom" data-caption-align="right">
    <img src="https://img1.teletype.in/files/86/ef/86ef470d-eaa8-4f3d-a986-4fd888334fb2.png" width="700" />
    <figcaption><a href="#tBXT">Содержание</a></figcaption>
  </figure>
  <p id="TVct">мамичу за то, что родила такого гения.</p>
  <p id="o1VK"><a href="https://t.me/napal_ded" target="_blank">@napal_ded</a> за <a href="https://telegra.ph/Pereezd-Omnifliksa-na-novuyu-tachku-bez-popoboli-nu-pochti-09-16" target="_blank">статью про переезд омнифликса</a>. эта статья и натолкнула меня на написание текущего, на мой взгляд, более универсального гайда.</p>
  <p id="qJwZ"><a href="https://t.me/MikhailRadusha" target="_blank">@MikhailRadusha</a> за отчёт по «переносу» порты.</p>
  <figure id="u1jH" class="m_custom" data-caption-align="right">
    <img src="https://img1.teletype.in/files/80/94/8094f1ca-b7d6-495c-b03f-332d2acbea2f.png" width="700" />
    <figcaption><a href="#tBXT">Содержание</a></figcaption>
  </figure>
  <p id="Cg1O"><a href="https://t.me/how_to_node" target="_blank">@how_to_node</a> - канал, где я выкладываю свои гайды.</p>
  <p id="602p"><a href="https://cyberomanov.tech/WTF_resources" target="_blank">Полезные ресурсы</a>.</p>
  <p id="GYtw"><a href="https://cyberomanov.tech/WTF_donate" target="_blank">Крипто-кошельки автора гайда</a>.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@cyberomanov/omniflix</guid><link>https://teletype.in/@cyberomanov/omniflix?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov</link><comments>https://teletype.in/@cyberomanov/omniflix?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=cyberomanov#comments</comments><dc:creator>cyberomanov</dc:creator><title>Omniflix /// v3.0</title><pubDate>Wed, 08 Sep 2021 05:35:39 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/56/1f/561ffade-7c80-4265-a743-3eb41f47416d.png"></media:content><category>Ended Events</category><description><![CDATA[<img src="https://img1.teletype.in/files/84/76/84768602-64b5-4cff-979a-6623176f8cc3.png"></img>Устанавливаем ноду Omniflix для участия в тестнете FlixNet-3.]]></description><content:encoded><![CDATA[
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="8lgf" class="m_original">
      <img src="https://img1.teletype.in/files/84/76/84768602-64b5-4cff-979a-6623176f8cc3.png" width="881" />
    </figure>
  </section>
  <p id="Y5Cy">Устанавливаем ноду <strong>Omniflix</strong> для участия в тестнете <strong>FlixNet-3</strong>.</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Y9Bt">Если вы не знаете, <strong>что такое нода</strong> — читаем <a href="/@cyberomanov/WTF_node">статью</a>. <br />Если вы не знаете, <strong>где арендовать сервер для ноды</strong> — читаем <a href="/@cyberomanov/WTF_server">статью</a>. <br />Если вы не знаете, <strong>как подключиться к серверу</strong> — читаем <a href="/@cyberomanov/WTF_MobaXterm">статью</a>. <br />Если вы всё знаете — открываем <strong>MobaXterm </strong>и создаём сессию.</p>
  </section>
  <figure id="GETY" class="m_original">
    <img src="https://img3.teletype.in/files/6e/b7/6eb72bd2-4a8e-4bdc-bdd4-1714e38ba7b8.png" width="700" />
  </figure>
  <ul id="NsFS">
    <li id="AEgZ"><a href="#j7MY">Краткое описание ивента</a>: несколько слов про ивент, условия участия.</li>
    <li id="nLO4"><a href="#CO6F">Требования к железу</a>: рекомендуемые технические параметры сервера.</li>
    <li id="R8R6"><a href="#QeBm">Установка</a></li>
    <ul id="SPTU">
      <li id="n504"><a href="#QeBm">Нода</a>: скачиваем и настраиваем ноду;</li>
      <li id="MSc2"><a href="#vkWw">Валидатора</a>: создаём файл сервиса и запускаем валидатора.</li>
    </ul>
    <li id="5SiI"><a href="#shK3">Полезные вещи</a></li>
    <ul id="elMk">
      <li id="K5NY"><a href="#shK3">Полезные команды</a> при работе с нодой;</li>
      <li id="fuWc"><a href="#6B1R">Перенос и бэкап</a>: пригодится при переезде;</li>
      <li id="3kgs"><a href="#fJH9">Удаление ноды</a>: на будущее;</li>
    </ul>
  </ul>
  <ul id="EHP3">
    <ul id="8Ffd">
      <li id="Ieze"><a href="#OeBS">Ределегация</a>: выводим реварды за стейкинг и ределегируем их.</li>
    </ul>
  </ul>
  <ul id="wITm">
    <li id="ZNnG"><a href="#hFgi">Благодарности</a></li>
    <li id="bUoX"><a href="#WXC2">Полезные ресурсы на каждый день</a></li>
  </ul>
  <figure id="j7MY" class="m_original" data-caption-align="right">
    <img src="https://img2.teletype.in/files/90/d1/90d1989f-13e9-4c6b-84e0-f9216166f5de.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="IZaF"><strong>Omniflix Network</strong> - это мультимедийная сеть для авторов, позволяющая создавать, распространять и монетизировать мультимедийные активы.</p>
  <hr />
  <p data-align="center" id="IBFH"><a href="https://blog.omniflix.network/" target="_blank">Blog</a> | <a href="https://github.com/OmniFlix/testnets" target="_blank">Docs</a> | <a href="https://github.com/OmniFlix/omniflixhub" target="_blank">GitHub</a> | <a href="https://omniflix.network/" target="_blank">WebSite</a> | <a href="https://twitter.com/OmniFlixNetwork" target="_blank">Twitter</a> | <a href="https://discord.com/invite/JAPr6MzEu7" target="_blank">Discord</a> | <a href="https://t.me/OmniFlixNetwork" target="_blank">Telegram</a></p>
  <figure id="CO6F" class="m_original" data-caption-align="right">
    <img src="https://img2.teletype.in/files/1e/68/1e68921d-fab9-40ff-8b0d-aea35411decd.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="bfdA">Официальные требования: <strong>2 CPU </strong>x<strong> 4 GB RAM </strong>x<strong> 200 GB SSD</strong> - Ubuntu 20.04.</p>
  <p id="MaxK">Субъективные наблюдения: <strong>1 CPU </strong>x<strong> 2 GB RAM </strong>x<strong> 200 GB SSD</strong> - Ubuntu 20.04.</p>
  <figure id="QeBm" class="m_original" data-caption-align="right">
    <img src="https://img4.teletype.in/files/b0/38/b038e266-b2e4-40e4-9776-dc557f1e5f17.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="wNaM">В этом блоке мы скачаем необходимые модули на сервер, установим и инициализируем ноду, а также восстановим ключи.</p>
  <pre data-lang="bash" id="QGHK"># обновляем &#x27;базу данных&#x27; и скачиваем необходимые зависимости 
$ sudo apt-get update &amp;&amp; sudo apt-get upgrade -y
$ sudo apt install curl build-essential git wget jq -y</pre>
  <pre data-lang="bash" id="YgAU"># устанавливаем &#x27;go&#x27; одной командой
$ wget https://golang.org/dl/go1.17.5.linux-amd64.tar.gz; \
rm -rv /usr/local/go; \
tar -C /usr/local -xzf go1.17.5.linux-amd64.tar.gz &amp;&amp; \
rm -v go1.17.5.linux-amd64.tar.gz &amp;&amp; \
echo &quot;export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin&quot; &gt;&gt; ~/.bash_profile &amp;&amp; \
source ~/.bash_profile &amp;&amp; \
go version</pre>
  <p id="5E9n">Отлично, сервер подготовлен. Приступаем к скачиванию необходимых файлов.</p>
  <pre data-lang="bash" id="L9r1"># клонируем и устанавливаем ноду
$ git clone https://github.com/Omniflix/omniflixhub.git &amp;&amp; \
cd omniflixhub &amp;&amp; \
git fetch --all &amp;&amp; \
git checkout v0.3.0 &amp;&amp; \
go mod tidy &amp;&amp; \
make install &amp;&amp; \
cd</pre>
  <pre id="vRd5" data-lang="bash"># проверяем
$ omniflixhubd version</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="pwSE" class="m_original">
      <img src="https://img3.teletype.in/files/e9/4c/e94ccfad-dc1e-4bcb-b0d1-4ffd3385560a.png" width="536" />
    </figure>
  </section>
  <p id="NjQf">Теперь добавим наш никнейм, который будет в дальнейшем использоваться в качестве моникера и названия кошелька, в систему, как переменную.</p>
  <section>
    <p id="zqrW">Замените условную переменную <strong>&lt;nickname&gt;</strong> на желаемый никнейм, раскрывая кавычки.</p>
  </section>
  <pre data-lang="bash" id="eT9j"># например, &quot;export NICKNAME=&quot;cyberomanov&quot;&quot; 
$ echo &quot;export NICKNAME=&quot;&lt;nickname&gt;&quot;&quot; &gt;&gt; ~/.bash_profile </pre>
  <pre data-lang="bash" id="Zzg0"># чтобы переменная загрузилась, необходимо перезагрузить &#x27;.bash_profile&#x27; 
$ source ~/.bash_profile</pre>
  <pre data-lang="bash" id="hKuQ"># проверим значение переменной, выведя её на экран
$ echo $NICKNAME</pre>
  <section>
    <figure id="k0Kg" class="m_original">
      <img src="https://img3.teletype.in/files/24/9a/249a3245-e43e-43ec-ae3a-c84f39adcb4b.png" width="787" />
    </figure>
  </section>
  <hr />
  <p id="Z8G5">Отлично. Приступим к инициализации ноды и генерации ключей.</p>
  <pre data-lang="bash" id="O7Tu"># инициализируем ноду  
$ omniflixhubd init $NICKNAME --chain-id flixnet-3</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="zKWk">Скачиваем каталог <strong>$HOME/.omniflixhub/config/ </strong>себе на ПК, в качестве бэкапа.</p>
  </section>
  <pre data-lang="bash" id="Myp5"># восстанавливаем ключи по мнемонике
$ omniflixhubd keys add $NICKNAME --recover
# либо генерируем новые
$ omniflixhubd keys add $NICKNAME</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="esR0" class="m_original">
      <img src="https://img3.teletype.in/files/e9/86/e986c01d-ee9a-46e7-8971-ae2b13fd58fd.png" width="885" />
    </figure>
  </section>
  <figure id="vkWw" class="m_original" data-caption-align="right">
    <img src="https://img3.teletype.in/files/e4/32/e432392d-ec81-4b5b-91d0-4766e424b2b8.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="37SJ">Переходим к созданию сервиса ноды для запуска валидатора.</p>
  <pre id="ZGiW" data-lang="bash"># скачиваем новый генезис файл
$ curl https://raw.githubusercontent.com/OmniFlix/testnets/main/flixnet-3/genesis.json &gt; ~/.omniflixhub/config/genesis.json</pre>
  <pre data-lang="bash" id="A5P2"># создаём файл сервиса
$ sudo tee /etc/systemd/system/omniflixhubd.service &gt; /dev/null &lt;&lt;EOF
[Unit]
Description=OmniFlixHub Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which omniflixhubd) start
Restart=always
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF</pre>
  <p id="vFEl">Редактируем конфиг, обновляя сиды и пиры.</p>
  <pre data-lang="bash" id="kr59"># создаём временные переменные, где указываем рабочие пиры и сиды
$ seeds=&quot;75a6d3a3b387947e272dab5b4647556e8a3f9fc1@45.72.100.122:26656&quot;

$ peers=&quot;f05968e78c84fd3997583fabeb3733a4861f53bf@45.72.100.120:26656,\
b29fad915c9bcaf866b0a8ad88493224118e8b78@104.154.172.193:26656,\
28ea934fbe330df2ca8f0ddd7a57a8a68c39a1a2@45.72.100.110:26656,\
94326ddc5661a1b571ea10c0626f6411f4926230@45.72.100.111:26656&quot;</pre>
  <pre id="kr59" data-lang="bash"># и выполняем команду по установке новых пиров
$ sed -i.bak -e &quot;s/^seeds *=.*/seeds = \&quot;$seeds\&quot;/; s/^persistent_peers *=.*/persistent_peers = \&quot;$peers\&quot;/&quot; $HOME/.omniflixhub/config/config.toml</pre>
  <pre id="kr59" data-lang="bash"># устанавливаем минимальную цену газа
$ sed -i.bak -e &quot;s/^minimum-gas-prices *=.*/minimum-gas-prices = \&quot;0.001uflix\&quot;/&quot; $HOME/.omniflixhub/config/app.toml</pre>
  <pre data-lang="bash" id="YotS"># &#x27;очищаем кеш&#x27;
$ omniflixhubd unsafe-reset-all</pre>
  <pre data-lang="bash" id="w09S"># обновляем данные о сервисах и запускаем ноду одной командой
$ sudo systemctl daemon-reload &amp;&amp; \
sudo systemctl enable omniflixhubd &amp;&amp; \
sudo systemctl restart omniflixhubd</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="YZfq" class="m_original">
      <img src="https://img3.teletype.in/files/a4/f2/a4f29819-6a06-4936-950a-f2e85a2de218.png" width="2209" />
    </figure>
  </section>
  <pre data-lang="bash" id="eKVm"># проверяем логи
$ sudo journalctl -u omniflixhubd -f -o cat</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="CUFx" class="m_original">
      <img src="https://img4.teletype.in/files/7d/d3/7dd33f5f-ade8-4461-8bae-4c7bcbfa7725.png" width="2115" />
    </figure>
  </section>
  <p id="rgF3">После полной синхронизации создаём валидатора:</p>
  <pre id="eXAS" data-lang="bash">$ omniflixhubd tx staking create-validator \
--amount=1000000uflix \
--pubkey=$(omniflixhubd tendermint show-validator) \
--moniker=&quot;$NICKNAME&quot; \
--chain-id=&quot;flixnet-3&quot; \
--commission-rate=&quot;0.10&quot; \
--commission-max-rate=&quot;0.20&quot; \
--commission-max-change-rate=&quot;0.01&quot; \
--min-self-delegation=&quot;1&quot; \
--gas=&quot;auto&quot; \
--gas-adjustment=&quot;1.2&quot; \
--gas-prices=&quot;0.025uflix&quot; \
--node &#x60;cat &quot;$HOME/.omniflixhub/config/config.toml&quot; \
| grep -oPm1 &quot;(?&lt;=^laddr = \&quot;)([^%]+)(?=\&quot;)&quot;&#x60; \
--from=$NICKNAME</pre>
  <figure id="shK3" class="m_original" data-caption-align="right">
    <img src="https://img1.teletype.in/files/8e/a7/8ea78cb3-b463-402d-a250-61327a36e888.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="C03z">Несколько команд для удобной работы с нодой.</p>
  <pre data-lang="bash" id="87Ms"># получаем высоту блоков нашей ноды
$ omniflixhubd status 2&gt;&amp;1 \
--node &#x60;cat &quot;$HOME/.omniflixhub/config/config.toml&quot; \
| grep -oPm1 &quot;(?&lt;=^laddr = \&quot;)([^%]+)(?=\&quot;)&quot;&#x60; \
| jq .&quot;SyncInfo&quot;.&quot;latest_block_height&quot;</pre>
  <pre data-lang="bash" id="jBrC"># получаем статус синхронизации ноды
$ omniflixhubd status 2&gt;&amp;1 \
--node &#x60;cat &quot;$HOME/.omniflixhub/config/config.toml&quot; \
| grep -oPm1 &quot;(?&lt;=^laddr = \&quot;)([^%]+)(?=\&quot;)&quot;&#x60; \
| jq .&quot;SyncInfo&quot;.&quot;catching_up&quot;
# &#x27;true&#x27; - нода синхронизируется, &#x27;false&#x27; - нода синхронизирована</pre>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="qOU0" class="m_original">
      <img src="https://img3.teletype.in/files/6f/e2/6fe2936a-9a1a-43e7-999e-55db825b2894.png" width="876" />
    </figure>
    <figure id="Scaf" class="m_original">
      <img src="https://img1.teletype.in/files/07/bc/07bcba28-6c94-4b98-a005-13735f017a59.png" width="794" />
    </figure>
  </section>
  <pre data-lang="bash" id="f9LJ"># посмотреть информацию о валидаторе
$ omniflixhubd query staking \
validator $(omniflixhubd keys show $NICKNAME --bech=val -a) \
--node &#x60;cat &quot;$HOME/.omniflixhub/config/config.toml&quot; \
| grep -oPm1 &quot;(?&lt;=^laddr = \&quot;)([^%]+)(?=\&quot;)&quot;&#x60;</pre>
  <pre data-lang="bash" id="zOJD"># локальный эксплорер
$ omniflixhubd q staking validators --node &#x60;cat &quot;$HOME/.omniflixhub/config/config.toml&quot; \
| grep -oPm1 &quot;(?&lt;=^laddr = \&quot;)([^%]+)(?=\&quot;)&quot;&#x60; \
-o json --limit=1000 \
| jq &#x27;.validators[] | select(.status==&quot;BOND_STATUS_BONDED&quot;)&#x27; \
| jq -r &#x27;.tokens + &quot; - &quot; + .description.moniker&#x27; | sort -gr | nl</pre>
  <pre data-lang="bash" id="TjCK"># выйти из &#x27;тюрьмы&#x27;
$ omniflixhubd tx slashing unjail \
--chain-id=&quot;flixnet-3&quot; \
--gas=&quot;auto&quot; \
--gas-prices=&quot;0.025uflix&quot; \
--gas-adjustment=&quot;1.2&quot; \
--node &#x60;cat &quot;$HOME/.omniflixhub/config/config.toml&quot; \
| grep -oPm1 &quot;(?&lt;=^laddr = \&quot;)([^%]+)(?=\&quot;)&quot;&#x60; \
--from=$NICKNAME</pre>
  <pre id="1SaO" data-lang="bash"># перезапустить сервис с нодой
$ sudo systemctl restart omniflixhubd</pre>
  <pre data-lang="bash" id="WMHi"># остановить сервис с нодой
$ sudo systemctl stop omniflixhubd</pre>
  <pre id="UoDh" data-lang="bash"># проверить логи ноды
$ sudo journalctl -u omniflixhubd -f</pre>
  <figure id="6B1R" class="m_original" data-caption-align="right">
    <img src="https://img4.teletype.in/files/fb/9f/fb9fc170-d5ae-47d9-8296-d5abb2c16625.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="TWM2">Про перенос я написал <a href="/@cyberomanov/moving">полноценную статью</a>. Читаем внимательно и вдумчиво.</p>
  <figure id="fJH9" class="m_custom" data-caption-align="right">
    <img src="https://img3.teletype.in/files/a3/be/a3be0848-c9c7-481e-aee1-0bbb8a2d3be2.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="6DCM">Если вы вдруг разочаровались в проекте и хотите удалить его с сервера, то можно просто разрушить/удалить сервер из личного кабинета хостинга.</p>
  <p id="BjUe">Это сработает, если на сервере нет других важных нод. В случае, если вы хотите оставить сервер, но удалить конкретную ноду - приступаем к её удалению:</p>
  <pre data-lang="bash" id="ksFE"># останавливаем и отключаем сервис ноды
$ sudo systemctl stop omniflixhubd &amp;&amp; sudo systemctl disable omniflixhubd</pre>
  <pre data-lang="bash" id="HH7A"># удаляем каталоги с файлами ноды
$ rm -Rvf $HOME/omniflixhub
$ rm -Rvf $HOME/.omniflixhub</pre>
  <pre data-lang="bash" id="k8bA"># удаляем файл сервиса и перезагружаем демона
$ sudo rm -v /etc/systemd/system/omniflixhubd.service 
$ sudo systemctl daemon-reload</pre>
  <figure id="OeBS" class="m_custom" data-caption-align="right">
    <img src="https://img4.teletype.in/files/b1/3a/b13a6b0d-36ee-44b2-bccd-10163f81d7de.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="DUQo">План работы: выводим реварды за активное валидирование, проверяем баланс, ределегируем собранную награду снова на своего валидатора.</p>
  <pre data-lang="bash" id="mZhA"># вывести реварды за стейкинг для последующей ределегации
$ omniflixhubd tx distribution withdraw-all-rewards \
 --gas=&quot;auto&quot; \
 --gas-adjustment=&quot;1.5&quot; \
 --gas-prices=&quot;0.025uflix&quot; \
 --chain-id=flixnet-3 \
 --node &#x60;cat &quot;$HOME/.omniflixhub/config/config.toml&quot; \
| grep -oPm1 &quot;(?&lt;=^laddr = \&quot;)([^%]+)(?=\&quot;)&quot;&#x60; \
 --from=$NICKNAME</pre>
  <section>
    <figure id="J3kI" class="m_original">
      <img src="https://img2.teletype.in/files/dd/d7/ddd77618-1cc2-4bca-b6c3-499df2bc47c3.png" width="1067" />
    </figure>
  </section>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="xe0n">Замените условную переменную <strong>&lt;address&gt;</strong> на ваш omni-адрес, раскрывая кавычки.</p>
  </section>
  <pre data-lang="bash" id="dVOK"># проверяем баланс
$ omniflixhubd query bank balances &lt;address&gt; --denom=&quot;uflix&quot; \
--node &#x60;cat &quot;$HOME/.omniflixhub/config/config.toml&quot; \
| grep -oPm1 &quot;(?&lt;=^laddr = \&quot;)([^%]+)(?=\&quot;)&quot;&#x60;</pre>
  <section>
    <p id="r9dg">Где <strong>&lt;address&gt; </strong>- адрес, с которого производилось создание валидатора.</p>
    <figure id="eJoB" class="m_original">
      <img src="https://img3.teletype.in/files/a8/ed/a8ed1da8-184d-4516-960c-818c58328203.png" width="1061" />
    </figure>
    <p id="Z0NL">В <strong>amount </strong>показывает весь свободный баланс. Не советую делегировать весь баланс, помните, что каждая транзакция имеет комиссию.</p>
  </section>
  <pre data-lang="bash" id="HpJ5"># делегировать токены на своего валидатора
$ omniflixhubd tx staking delegate &lt;operator_address&gt; &quot;1000000uflix&quot; \
 --gas=&quot;auto&quot; \
 --gas-adjustment=1.5 \
 --gas-prices=&quot;0.025uflix&quot; \
 --chain-id=flixnet-3 \
 --node &#x60;cat &quot;$HOME/.omniflixhub/config/config.toml&quot; \
| grep -oPm1 &quot;(?&lt;=^laddr = \&quot;)([^%]+)(?=\&quot;)&quot;&#x60;
 --from=$NICKNAME</pre>
  <section>
    <p id="I5A4">Где <strong>&lt;operator_address&gt;</strong> - адрес для делегации:</p>
    <figure id="Ahas" class="m_original">
      <img src="https://img3.teletype.in/files/ef/c0/efc0d861-b2e6-4feb-ac22-7a28c51c29d5.png" width="732" />
    </figure>
    <p id="i9KY"><strong>&quot;1000000uflix&quot;</strong> - 1 токен.</p>
    <figure id="jufj" class="m_original">
      <img src="https://img1.teletype.in/files/43/f5/43f58304-d3c9-4fcf-8396-39d4fc2dc8e3.png" width="1062" />
    </figure>
    <figure id="mASJ" class="m_original">
      <img src="https://img3.teletype.in/files/aa/92/aa92cb82-592c-46b7-b2ca-3262e5a06a64.png" width="550" />
    </figure>
  </section>
  <p id="HEiL">Проверяем информацию о валидаторе:</p>
  <pre data-lang="bash" id="8ifO">$ omniflixhubd query staking \
validator $(omniflixhubd keys show $NICKNAME --bech=val -a) \
--node &#x60;cat &quot;$HOME/.omniflixhub/config/config.toml&quot; \
| grep -oPm1 &quot;(?&lt;=^laddr = \&quot;)([^%]+)(?=\&quot;)&quot;&#x60;</pre>
  <section>
    <figure id="rV9u" class="m_original">
      <img src="https://img1.teletype.in/files/48/94/48949bea-19b2-4874-9e60-8be8b79ef614.png" width="801" />
    </figure>
  </section>
  <figure id="hFgi" class="m_custom" data-caption-align="right">
    <img src="https://img1.teletype.in/files/86/ef/86ef470d-eaa8-4f3d-a986-4fd888334fb2.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="rEbB">мамичу за то, что родила такого гения.</p>
  <figure id="WXC2" class="m_custom" data-caption-align="right">
    <img src="https://img1.teletype.in/files/80/94/8094f1ca-b7d6-495c-b03f-332d2acbea2f.png" width="700" />
    <figcaption><a href="#GETY">Содержание</a></figcaption>
  </figure>
  <p id="JeHu"><a href="https://t.me/how_to_node" target="_blank">@how_to_node</a> - канал, где я выкладываю свои гайды.</p>
  <p id="sQFi"><a href="/@cyberomanov/WTF_resources">Полезные ресурсы</a>.</p>
  <p id="4Vgy"><a href="/@cyberomanov/WTF_donate">Крипто-кошельки автора гайда</a>.</p>

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