# Fuel в NodeJS менее чем за 10 минут **Published by:** [klif](https://paragraph.com/@klifentro/) **Published on:** 2022-11-30 **URL:** https://paragraph.com/@klifentro/fuel-nodejs-10 ## Content Настройка, сбор и передача с помощью Fuel с NodeJSFuel - полный оптимистичный сайдчейн, в настоящее время работает в тестовых сетях на Ethereum Ropsten и Görli.Сегодня мы пройдёмся по началу работы с 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В этом руководстве рассматриваются:настройка постоянного Fuel кошелька в Node;подключение поддельного DAI к вашему кошельку;выполнение вашего первого перевода.Давайте начнем новый проект Node и установим Fuel, откройте ваш терминал:mkdir fuel-example && cd fuel-example npm init npm install --save fuel-core nano index.js Сначала давайте:импортируем основу Fuel;настроим ключ подписи;настроим локальное постоянное хранилище, используя обернутую версию LevelDB и объект Signer.Примечание: мы активно используем эфир в Fuel и здесь мы используем его стандартизированный подписывающий ключ для накопительного кошелька Fuel. Этот ключ можно рассматривать как ваш Fuel ключ, где токены могут быть внесены в Fuel. Примечание: в рабочей среде генерация и обработка закрытых ключей должны выполняться с большей энтропией (беспорядок) и с большей осторожностью при хранении. Пока мы будем использовать только DB.https://gist.github.com/SilentCaesar/549dcfc59ad839b29ee717d8651a14a1#file-getting_started_with_fuel_in_nodejs_partial-js LevelDB с основой Fuel в NodeJS Теперь давайте:настроим объект Fuel кошелька с нашей DB и подписывающим;направим на наш адрес какой-нибудь поддельный 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 Теперь вы успешно настроили:локальный кошелек Fuel в Node спостоянным хранилищем значений ключей;получили поддельный DAI от крана;сделали свой первый перевод Fuel!Пожалуйста, подпишитесь на нас в Twitter @FuelLabs_, @IAmNickDodson или дайте нам звезду на Github или подпишитесь! Нашу кодовую базу можно найти здесь: https://github.com/FuelLabs/fuel-core Весь код этого руководства можно найти в Gist здесь: https://gist.github.com/SilentCicero/fb854c440dbc615df6ff419f2c33bd06 .P.S. Далее мы продемонстрируем, как можно использовать Fuel в браузере.Фин. ## Publication Information - [klif](https://paragraph.com/@klifentro/): Publication homepage - [All Posts](https://paragraph.com/@klifentro/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@klifentro): Subscribe to updates