# Fuel в NodeJS менее чем за 10 минут

By [klif](https://paragraph.com/@klifentro) · 2022-11-30

---

> Настройка, сбор и передача с помощью Fuel с NodeJS

[Fuel](https://github.com/FuelLabs/fuel-core) - полный оптимистичный сайдчейн, в настоящее время работает в тестовых сетях на Ethereum [Ropsten](https://ropsten.etherscan.io/address/0x2FA75F4a4F86b84E9568B4bf20a6B5466d5Bd9c1) и [Görli](https://goerli.etherscan.io/address/0x4E49185B26E93c94f243E0C64eEfE33Aa980e42c).

> Сегодня мы пройдёмся по началу работы с Fuel!

Зачем использовать Fuel?
------------------------

*   **💸 _Стоимость_:** чрезвычайно низкие комиссии за транзакции для любых токенов ERC-20 или эфира (ниже 3500 газа за транзакцию, до 2400 в первой версии против на текущий момент ~ 21–50 000 газа);
    
*   **⚡ _Скорость_:** быстрая нулевая конфигурация времени транзакций (менее 1,4 с, в среднем 0,8 с);
    
*   _🔀_ **_Мета-транзакция:_** оплата комиссий любым токеном ERC-20 или эфиром;
    
*   **🛣️ _Высокая пропускная способность_:** может обрабатывать чрезвычайно большие объемы транзакций с токенами и эфиром (например, десятки тысяч в секунду);
    
*   **⏩ _Направление производства_:** наша архитектура тщательно разработана для крупномасштабных отказоустойчивых настроек потребительского оборудования как для проверки, так и для использования, без какой-либо зависимости от новой криптографии, надежных настроек или дорогого или специализированного вычислительного оборудования;
    
*   **🙋 Создать _свой собственный_:** полностью открытый исходный код под Apache-2.0.
    

Как работает Fuel?
------------------

*   **_Основы_:** один смарт-контракт содержит все правила консенсуса, системы ввода и вывода средств для сайдчейна Ethereum в Fuel Optimistic Rollup;
    
*   **_Депозит_:** пользователи вносят активы (например, любой ERC-20 или эфир), которые затем могут извлечь выгоду из минимальных транзакционных издержек и быстрого времени подтверждения без потери хранения или контроля в любое время;
    
*   **_Вывод_:** пользователи могут выводить в любое время, используя обмен поставщика ликвидности или стандартный вывод (аналогично другим накопительным системам);
    
*   **_Переводы_:** когда пользователи переводят в Fuel, данные сжимаются нашим агрегатором и выгружаются в Ethereum, однако вы всегда можете сжать и опубликовать свою собственную транзакцию самостоятельно;
    
*   **_Ключи_:** предпочтительно, чтобы вторичный ключ подписи использовался для подтверждения переводов и вывода в сайдчейне. Средства начисляются на адрес этого подписанного ключа, который затем контролирует эти средства в Fuel. Также можно использовать сторонние подписывающие объекты, например те, которые взаимодействуют с MetaMask, однако должна быть доступна необработанная эллиптическая подпись хэшей;
    
*   **_Wallet_:** объект основного кошелька Fuel будет управлять расходуемыми входами пользователя в локальной базе данных хранилища ключей и значений по вашему выбору (то есть index db, локальное хранилище, уровень db и т. д.), производством вывода и подписанием транзакций.
    

Подходит ли вам Fuel?
---------------------

**Да, если вы любой проект:**

*   когда при выполнении транзакций, вы **чувствительны к стоимости или объему;**
    
*   которому требуется **быстрая скорость подтверждения (менее 1,4 секунды);**
    
*   заинтересованный в создании **системы, подобной Burner Wallet;**
    
*   для которого требуются атомарные обмены без разрешения между **любыми токенами ERC-20;**
    
*   который в конечном итоге хочет **_развернуть собственную крупномасштабную накопительную систему._**
    

Начало работы в NodeJS
----------------------

**В этом руководстве рассматриваются:**

1.  настройка постоянного Fuel кошелька в Node;
    
2.  подключение поддельного DAI к вашему кошельку;
    
3.  выполнение вашего первого перевода.
    

**Давайте начнем новый проект Node и установим Fuel, откройте ваш терминал:**

    mkdir fuel-example && cd fuel-example
    
    npm init
    
    npm install --save fuel-core
    
    nano index.js
    

**Сначала давайте:**

1.  импортируем основу Fuel;
    
2.  настроим ключ подписи;
    
3.  настроим локальное постоянное хранилище, используя обернутую версию LevelDB и объект Signer.
    

> Примечание: мы активно используем эфир в Fuel и здесь мы используем его стандартизированный подписывающий ключ для накопительного кошелька Fuel. Этот ключ можно рассматривать как ваш Fuel ключ, где токены могут быть внесены в Fuel.
> 
> Примечание: в рабочей среде генерация и обработка закрытых ключей должны выполняться с большей энтропией (беспорядок) и с большей осторожностью при хранении. Пока мы будем использовать только DB.

[https://gist.github.com/SilentCaesar/549dcfc59ad839b29ee717d8651a14a1#file-getting\_started\_with\_fuel\_in\_nodejs\_partial-js](https://gist.github.com/SilentCaesar/549dcfc59ad839b29ee717d8651a14a1#file-getting_started_with_fuel_in_nodejs_partial-js)

_LevelDB с основой Fuel в NodeJS_

**Теперь давайте:**

1.  настроим объект Fuel кошелька с нашей DB и подписывающим;
    
2.  направим на наш адрес какой-нибудь поддельный DAI.
    

> Примечание: вы можете запускать поддельный DAI только каждые 10 минут с одного IP-адреса, поэтому мы оборачиваем сбор в пустой try/catch (пробывать/украсть), чтобы не выбрасывать за пределы первого 10-минутного окна.

    const wallet = new Wallet({ db, signer });
    
    try { await wallet.faucet(); } catch (e) {}
    

Теперь давайте послушаем изменения в балансе нашего кошелька. Это активирует нашу живую систему pubsub на основе веб-сокетов мемпула.

> Примечание: прослушивание сработает при любом изменении баланса кошелька. Это включает в себя суммы кранов, переводы, ввод и вывод.

    await wallet.listen(async () => {
        console.log('Balance update in transit',
       utils.formatEther(await wallet.balance(wallet.tokens.fakeDai)));
    });
    

Теперь давайте сделаем перевод 1,5 фальшивых DAI на наш собственный счет, чтобы проверить перевод.

    await wallet.transfer(utils.parseEther(‘1.5’), wallet.tokens.fakeDai, wallet.address);
    
    console.log('You transfered 1.5 Fake Dai to yourself, congrats!');
    
    })(); // finish async method
    

Теперь давайте сохраним и запустим код локально в Node.

    // cntrl + x then y then enter
    
    node index.js
    

**Теперь вы успешно настроили:**

1.  локальный кошелек Fuel в Node с
    
2.  постоянным хранилищем значений ключей;
    
3.  получили поддельный DAI от крана;
    
4.  сделали свой первый перевод Fuel!
    

Пожалуйста, подпишитесь на нас в Twitter [@FuelLabs\_](https://twitter.com/fuellabs_), [@IAmNickDodson](https://twitter.com/IAmNickDodson) или дайте нам [звезду на Github или](https://github.com/fuellabs/fuel-core) подпишитесь!

Нашу кодовую базу можно найти здесь: [https://github.com/FuelLabs/fuel-core](https://github.com/FuelLabs/fuel-core)

**Весь код этого руководства можно найти в Gist здесь:** [https://gist.github.com/SilentCicero/fb854c440dbc615df6ff419f2c33bd06 .](https://gist.github.com/SilentCicero/fb854c440dbc615df6ff419f2c33bd06)

> P.S. Далее мы продемонстрируем, как можно использовать Fuel в браузере.

**_Фин._**

---

*Originally published on [klif](https://paragraph.com/@klifentro/fuel-nodejs-10)*
