<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>w3bAMA</title>
        <link>https://paragraph.com/@w3bama</link>
        <description>undefined</description>
        <lastBuildDate>Tue, 21 Apr 2026 05:28:36 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>w3bAMA</title>
            <url>https://storage.googleapis.com/papyrus_images/623a64d9fba91c9ce1614dbb5ee5c59741c73df5e860f69457dd7921cc03fd7c.png</url>
            <link>https://paragraph.com/@w3bama</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Создание и деплой контракта через truffle на примере zkEVM]]></title>
            <link>https://paragraph.com/@w3bama/truffle-zkevm</link>
            <guid>iI34wFC82OcuMi2psAhp</guid>
            <pubDate>Tue, 21 Mar 2023 18:06:40 GMT</pubDate>
            <description><![CDATA[Подготовься:• Обнови системуapt update &#x26;&#x26; apt upgrade -y • Подкинь пакетовsudo apt install build-essential apt-transport-https lsb-release ca-certificates curl gnupg • Добавь репо ноджсcurl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash - • Установи nodejs• Обнови npm (по желанию)npm install -g npm@9.6.2 • Проверьnode -v npm -v • Установи трюфельnpm install -g truffle • Создай папку с проектом и перейди в нееmkdir truffleProject &#x26;&#x26; cd truffleProject • Установи do...]]></description>
            <content:encoded><![CDATA[<h3 id="h-podgotovsya" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Подготовься:</h3><p>• Обнови систему</p><pre data-type="codeBlock" text="apt update &amp;&amp; apt upgrade -y
"><code>apt update <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> apt upgrade <span class="hljs-operator">-</span>y
</code></pre><p>• Подкинь пакетов</p><pre data-type="codeBlock" text="sudo apt install build-essential apt-transport-https lsb-release ca-certificates curl gnupg
"><code>sudo apt install build<span class="hljs-operator">-</span>essential apt<span class="hljs-operator">-</span>transport<span class="hljs-operator">-</span>https lsb<span class="hljs-operator">-</span>release ca<span class="hljs-operator">-</span>certificates curl gnupg
</code></pre><p>• Добавь репо ноджс</p><pre data-type="codeBlock" text="curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
"><code>curl <span class="hljs-operator">-</span>sL https:<span class="hljs-comment">//deb.nodesource.com/setup_16.x | sudo -E bash -</span>
</code></pre><p>• Установи nodejs</p><pre data-type="codeBlock" text="apt install nodejs
"><code></code></pre><p>• Обнови npm (по желанию)</p><pre data-type="codeBlock" text="npm install -g npm@9.6.2
"><code>npm install -g npm<span class="hljs-keyword">@9</span>.6.2
</code></pre><p>• Проверь</p><pre data-type="codeBlock" text="node -v
npm -v
"><code>node <span class="hljs-operator">-</span>v
npm <span class="hljs-operator">-</span>v
</code></pre><p>• Установи трюфель</p><pre data-type="codeBlock" text="npm install -g truffle
"><code>npm install <span class="hljs-operator">-</span>g truffle
</code></pre><p>• Создай папку с проектом и перейди в нее</p><pre data-type="codeBlock" text="mkdir truffleProject &amp;&amp; cd truffleProject
"><code><span class="hljs-built_in">mkdir</span> truffleProject &#x26;&#x26; <span class="hljs-built_in">cd</span> truffleProject
</code></pre><p>• Установи dotenv</p><pre data-type="codeBlock" text="npm install dotenv
"><code></code></pre><p>• Повели трюфелю создать необходимую структур каталогов</p><pre data-type="codeBlock" text="truffle init
"><code>truffle <span class="hljs-keyword">init</span>
</code></pre><p>• Установи пакет кошеля</p><pre data-type="codeBlock" text="npm install @truffle/hdwallet-provider
"><code>npm install @truffle<span class="hljs-operator">/</span>hdwallet<span class="hljs-operator">-</span>provider
</code></pre><p>• Создай файл .env</p><pre data-type="codeBlock" text="touch .env
"><code><span class="hljs-built_in">touch</span> .<span class="hljs-built_in">env</span>
</code></pre><p>• Если есть ГУИ - делай как я в видосе, если нет - то открывай командой</p><pre data-type="codeBlock" text="nano .env
"><code>nano .env
</code></pre><p>и вставляй следующий текст поменяв данные на свои.</p><pre data-type="codeBlock" text="INFURA_API_KEY = &quot;https://goerli.infura.io/v3/&lt;Your-API-Key&gt;&quot;
MNEMONIC = &quot;&lt;Your-MetaMask-Secret-Recovery-Phrase&gt;&quot;
"><code><span class="hljs-attr">INFURA_API_KEY</span> = <span class="hljs-string">"https://goerli.infura.io/v3/&#x3C;Your-API-Key>"</span>
<span class="hljs-attr">MNEMONIC</span> = <span class="hljs-string">"&#x3C;Your-MetaMask-Secret-Recovery-Phrase>"</span>
</code></pre><p>жми <strong>ctrl + s, ctrl + x</strong></p><h3 id="h-sozdaem-kontrakt" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Создаем контракт</h3><p>• Создай файл</p><pre data-type="codeBlock" text="touch contracts/Demo.sol
"><code>touch contracts<span class="hljs-operator">/</span>Demo.sol
</code></pre><p>• Копируй туда текст либо с помощью GUI,</p><pre data-type="codeBlock" text="pragma solidity &gt;=0.5.8;

contract Demo {
    event Echo(string message);

    function echo(string calldata message) external {
        emit Echo(message);
    }
}
"><code><span class="hljs-meta"><span class="hljs-keyword">pragma</span> <span class="hljs-keyword">solidity</span> >=0.5.8;</span>

<span class="hljs-class"><span class="hljs-keyword">contract</span> <span class="hljs-title">Demo</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">event</span> <span class="hljs-title">Echo</span>(<span class="hljs-params"><span class="hljs-keyword">string</span> message</span>)</span>;

    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">echo</span>(<span class="hljs-params"><span class="hljs-keyword">string</span> <span class="hljs-keyword">calldata</span> message</span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span> </span>{
        <span class="hljs-keyword">emit</span> Echo(message);
    }
}
</code></pre><p>либо открыв в nano (после редактирования сохраняем с помощью <strong>ctrl + s, ctrl + x</strong>)</p><pre data-type="codeBlock" text="nano contracts/Demo.sol
"><code>nano contracts<span class="hljs-operator">/</span>Demo.sol
</code></pre><h3 id="h-konfig-tryufelya" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Конфиг трюфеля</h3><p>• Открывай файл <strong>truffle-config.js</strong> (либо с помощью графики либо с помощью nano, думаю ты уже разобрался как работает nano) и копируй туда следующее:</p><pre data-type="codeBlock" text="require(&apos;dotenv&apos;).config();
const HDWalletProvider = require(&apos;@truffle/hdwallet-provider&apos;);
const { INFURA_API_KEY, MNEMONIC } = process.env;

module.exports = {
  networks: {
    development: {
      host: &quot;127.0.0.1&quot;,
      port: 8545,
      network_id: &quot;*&quot;
    },
    goerli: {
      provider: () =&gt; new HDWalletProvider(MNEMONIC, INFURA_API_KEY),
      network_id: &apos;59140&apos;,
      gas: 4465030
    }
  }
};
"><code><span class="hljs-built_in">require</span>(<span class="hljs-string">'dotenv'</span>).config();
const HDWalletProvider <span class="hljs-operator">=</span> <span class="hljs-built_in">require</span>(<span class="hljs-string">'@truffle/hdwallet-provider'</span>);
const { INFURA_API_KEY, MNEMONIC } <span class="hljs-operator">=</span> process.env;

module.exports <span class="hljs-operator">=</span> {
  networks: {
    development: {
      host: <span class="hljs-string">"127.0.0.1"</span>,
      port: <span class="hljs-number">8545</span>,
      network_id: <span class="hljs-string">"*"</span>
    },
    goerli: {
      provider: () <span class="hljs-operator">=</span><span class="hljs-operator">></span> <span class="hljs-keyword">new</span> HDWalletProvider(MNEMONIC, INFURA_API_KEY),
      network_id: <span class="hljs-string">'59140'</span>,
      <span class="hljs-built_in">gas</span>: <span class="hljs-number">4465030</span>
    }
  }
};
</code></pre><p><em>Почти готово, осталось скомпилить и задеплоить</em></p><p>• Скомпилить</p><pre data-type="codeBlock" text="truffle compile
"><code>truffle <span class="hljs-built_in">compile</span>
</code></pre><p>Ты должен увидеть нечто подобное</p><pre data-type="codeBlock" text="Compiling your contracts...
===========================
&gt; Compiling ./contracts/Demo.sol
&gt; Artifacts written to /Users/myuser/truffleProject/build/contracts
&gt; Compiled successfully using:
   - solc: 0.5.16+commit.9c3226ce.Emscripten.clang
"><code>Compiling your contracts...
<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span>
<span class="hljs-operator">></span> Compiling ./contracts<span class="hljs-operator">/</span>Demo.sol
<span class="hljs-operator">></span> Artifacts written to <span class="hljs-operator">/</span>Users<span class="hljs-operator">/</span>myuser<span class="hljs-operator">/</span>truffleProject<span class="hljs-operator">/</span>build<span class="hljs-operator">/</span>contracts
<span class="hljs-operator">></span> Compiled successfully <span class="hljs-keyword">using</span>:
   <span class="hljs-operator">-</span> <span class="hljs-title">solc</span>: 0.5.16<span class="hljs-operator">+</span><span class="hljs-title">commit</span>.9<span class="hljs-title">c3226ce</span>.<span class="hljs-title">Emscripten</span>.<span class="hljs-title">clang</span>
</code></pre><p>• Создай деплоймент скрипт</p><pre data-type="codeBlock" text="touch migrations/1_deploy_contract.js
"><code>touch migrations<span class="hljs-operator">/</span>1_deploy_contract.js
</code></pre><p>и скопируй в него текст</p><pre data-type="codeBlock" text="const Demo_Contract = artifacts.require(&quot;Demo&quot;);

module.exports = function(deployer) {
  deployer.deploy(Demo_Contract);
};
"><code>const Demo_Contract <span class="hljs-operator">=</span> artifacts.require(<span class="hljs-string">"Demo"</span>);

module.exports <span class="hljs-operator">=</span> <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">deployer</span>) </span>{
  deployer.deploy(Demo_Contract);
};
</code></pre><p><strong>Ты готов</strong> • Деплой</p><pre data-type="codeBlock" text="truffle migrate --network goerli
"><code>truffle migrate <span class="hljs-operator">-</span><span class="hljs-operator">-</span>network goerli
</code></pre><p>Результат должен быть таким</p><pre data-type="codeBlock" text="...
Starting migrations...
======================
&gt; Network name:    &apos;goerli&apos;
&gt; Network id:      5
&gt; Block gas limit: 30000000 (0x1c9c380)


1_deploy_contract.js
====================

   Deploying &apos;Demo&apos;
   ----------------
   &gt; transaction hash:    0xafb1fa110d77f1447434418539e3fd36a97c0f948cc83e793fa394c882a1fab1
   &gt; Blocks: 3            Seconds: 29
   &gt; contract address:    0x4Ee0845a9eBfB04Bcc225b70Dc78c4789C61c64E
   &gt; block number:        7588035
   &gt; block timestamp:     1663126548
   &gt; account:             0x9cE564c7d09f88E7d8233Cdd3A4d7AC42aBFf3aC
   &gt; balance:             0.088395204941580514
   &gt; gas used:            123421 (0x1e21d)
   &gt; gas price:           4.303203766 gwei
   &gt; value sent:          0 ETH
   &gt; total cost:          0.000531105712003486 ETH

   &gt; Saving artifacts
   -------------------------------------
   &gt; Total cost:     0.000531105712003486 ETH

Summary
=======
&gt; Total deployments:   1
&gt; Final cost:          0.000531105712003486 ETH
"><code>...
Starting migrations...
<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span>
<span class="hljs-operator">></span> Network name:    <span class="hljs-string">'goerli'</span>
<span class="hljs-operator">></span> Network id:      <span class="hljs-number">5</span>
<span class="hljs-operator">></span> Block gas limit: <span class="hljs-number">30000000</span> (<span class="hljs-number">0x1c9c380</span>)


1_deploy_contract.js
<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span>

   Deploying <span class="hljs-string">'Demo'</span>
   <span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span>
   <span class="hljs-operator">></span> transaction hash:    <span class="hljs-number">0xafb1fa110d77f1447434418539e3fd36a97c0f948cc83e793fa394c882a1fab1</span>
   <span class="hljs-operator">></span> Blocks: <span class="hljs-number">3</span>            Seconds: <span class="hljs-number">29</span>
   <span class="hljs-operator">></span> <span class="hljs-class"><span class="hljs-keyword">contract</span> <span class="hljs-title"><span class="hljs-keyword">address</span></span>:    0<span class="hljs-title">x4Ee0845a9eBfB04Bcc225b70Dc78c4789C61c64E</span>
   > <span class="hljs-title"><span class="hljs-built_in">block</span></span> <span class="hljs-title">number</span>:        7588035
   > <span class="hljs-title"><span class="hljs-built_in">block</span></span> <span class="hljs-title">timestamp</span>:     1663126548
   > <span class="hljs-title">account</span>:             0<span class="hljs-title">x9cE564c7d09f88E7d8233Cdd3A4d7AC42aBFf3aC</span>
   > <span class="hljs-title">balance</span>:             0.088395204941580514
   > <span class="hljs-title">gas</span> <span class="hljs-title">used</span>:            123421 (<span class="hljs-params"><span class="hljs-number">0x1e21d</span></span>)
   > <span class="hljs-title">gas</span> <span class="hljs-title">price</span>:           4.303203766 <span class="hljs-title"><span class="hljs-literal">gwei</span></span>
   > <span class="hljs-title">value</span> <span class="hljs-title">sent</span>:          0 <span class="hljs-title">ETH</span>
   > <span class="hljs-title">total</span> <span class="hljs-title">cost</span>:          0.000531105712003486 <span class="hljs-title">ETH</span>

   > <span class="hljs-title">Saving</span> <span class="hljs-title">artifacts</span>
   -------------------------------------
   > <span class="hljs-title">Total</span> <span class="hljs-title">cost</span>:     0.000531105712003486 <span class="hljs-title">ETH</span>

<span class="hljs-title">Summary</span>
=======
> <span class="hljs-title">Total</span> <span class="hljs-title">deployments</span>:   1
> <span class="hljs-title">Final</span> <span class="hljs-title">cost</span>:          0.000531105712003486 <span class="hljs-title">ETH</span>
</span></code></pre><p>** Заклаймь статью<br>**</p><p>Залетай в <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="">телегу</a> ;)</p>]]></content:encoded>
            <author>w3bama@newsletter.paragraph.com (w3bAMA)</author>
        </item>
    </channel>
</rss>