Skip to main content

10分钟内在NodeJS中使用Fuel

· 7 min read
fuel

fuelwiki

Fuel 是一个完备的 OP rollup 侧链(目前主攻模块化),目前在以太坊的 Ropsten 和 Görli 测试网运行。

今天我们将介绍如何开始使用 Fuel!

为什么使用 Fuel?

💸 成本:任何 ERC-20 代币或以太坊的交易费用都非常低(每笔交易低于 3500Gwei,在 V1.0 中为 2400Gwei,目前为 21-50,000Gwei)。

⚡ 速度:快速的零交易时间(低于 1.4 秒,平均 0.8 秒)。

🔀 元交易性:以任何 ERC-20 代币或以太坊支付费用。

🛣️ 高吞吐量:可以处理极高的代币和以太坊交易量(即每秒数万次)。

⏩ 生产方向:我们的架构是为验证和使用的大规模容错消费硬件设置而精心设计的,不需要依赖新的密码学、可信设置或昂贵或定制的计算机硬件

🙋 自行开发:在 Apache-2.0 下完全开源

Fuel 是如何工作的?

  • 基本原理: 一个单一的智能合约包含了所有的共识规则,存款和取款系统,用于 Fuel 优化 Rollup 的 Ethereum 侧链

  • 存款: 用户存入资产(即任何 ERC-20 或以太币),然后可以受益于最低的交易成本和快速的确认时间,在任何时候都不会失去保管或控制权

  • 提款: 用户可以在任何时候使用流动性提供者的交换或标准提款(类似于其他 Rollup 系统)进行提款。

  • 转账(交易): 当用户在 Fuel 内部转账时,数据会被我们的聚合器压缩并转储到以太坊上,然而您总是可以自己压缩并发布您自己的交易

  • 密钥: 最好是使用一个二级签名密钥来签署侧链内的转账和提款。资金被存入该签署密钥的地址,然后在 Fuel 内对这些资金进行控制。第三方签名对象也可以使用,比如那些与 MetaMask 互动的对象,但是必须有原始椭圆签名的哈希值。

  • 钱包:Fuel 核心的钱包对象将在你选择的本地键值存储数据库(即索引数据库、本地存储、水平数据库等)中管理用户的可支出投入,输出生产和交易的签署。

Fuel 适合你吗?

  • 是的,它可以适用任何项目:
    • 做交易时需要控制成本或数量
    • 需要快速的交易速度(低于 1.4 秒)
    • 有兴趣建立一个类似 Burner Wallet 的系统
    • 需要在任何 ERC-20 代币之间进行无许可的原子交换项目
    • 最终会想要部署自己的大型汇总系统

NodeJS 入门

本教程将包括:

(1)在 Node 中设置一个持久的燃料钱包,(2)将一些假的 DAI 注入你的钱包,以及(3)进行你的第一次转移。

让我们开始一个新的 Node 项目并安装 Fuel,打开你的终端。

mkdir fuel-example && cd fuel-example

npm start

npm install --save fuel-core

nano index.js

首先让我们(1)导入 fuel-core,(2)设置一个签名密钥,(3)使用 LevelDB 的包装版本设置本地持久化存储,以及(4)一个签名者对象。

注意:我们在整个 Fuel 中大量使用以太坊,这里我们使用其标准化的 SigningKey 对象用于 Fuel rollup 钱包。这个密钥可以被认为是你的 Fuel 密钥,代币可以被存入 Fuel 中。

注意:在生产中,私钥的生成和处理必须以更好的熵和更谨慎的存储方式进行。现在,我们将只使用 DB。

使用 NodeJS 的 Fuel 进行设置、龙头和转移

现在让我们(1)用我们的数据库和签名者设置一个 Fuel 钱包对象,(2)向我们的地址注入一些假 DAI。

注意:每个 IP 只能每隔 10 分钟提取一次假 DAI,所以我们用一个空的 try/catch 来包装提取,以便不超过第一个 10 分钟的窗口。

const wallet = new Wallet({ db, signer });

try { await wallet.faucet(); } catch (e) {}

现在让我们来监听钱包余额的变化;这将激活我们的实时 mempool websocket-based 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!');
})();

现在让我们在 Node 中保存并在本地运行该代码。

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

现在你已经成功地在 Node 中设置了(1)一个本地的燃料钱包,有一个(2)持久的密钥值存储,(3)从龙头收到了一些假的 DAI,并且(4)进行了你的第一次燃料转账。