在以太坊和链上应用程序中,web3提供程序是与以太坊节点通信的关键组件。@dexon-foundation/web3-provider-engine是一个npm包,提供了一个灵活的通用web3提供程序框架,可以在任何Ethereum节点上工作。本文将告诉你如何使用@dexon-foundation/web3-provider-engine包。
依赖
在开始使用@dexon-foundation/web3-provider-engine之前,你需要先手动安装一些依赖:
--- ------- --------------- ------------- ---------------- ----------------- ----------------- ----- --- --------------------
这些依赖在我们的应用程序中使用的所有web3实例上都是必需的。
安装
使用下面的命令来安装@dexon-foundation/web3-provider-engine包。
--- ------- --------------------------------------
使用
在你的JavaScript文件中,你可以像下面这样使用@dexon-foundation/web3-provider-engine。
------ ------ ---- ----------------------------------------- ------ -------------- ---- ---------------------------------------- ------ ------------------- ---- --------------------------------------------- ----- ------ - --- --------- ---------------------- ---------------- ------- ---------------------------- ---- ---------------
在这个例子中,我们通过import
语句引入了Engine、RpcSubprovider和ProviderSubprovider,然后创建了一个新的web3 provider engine实例,并通过addProvider()
方法来添加了一个RpcSubprovider,该RpcSubprovider通过infura RPC节点与以太坊ropsten测试网络进行通信。
在我们添加好RpcSubprovider
后,我们需要调用start()
方法开始使用。
例子
让我们来看一个更高级的例子,该例子使用多个子提供程序,并在通信过程中为每个提供程序添加钩子函数。
------ ---- ---- ------- ------ ---------------- ---- ----------------------------- ------ ------ ---- ----------------------------------------- ------ -------------- ---- ---------------------------------------- ------ ---------------- ---- ------------------------------------------ ------ ----------------- ---- -------------------------------------------- ------ ----------------------- ---- -------------------------------------------------- ----- ------------------ - ----------------------------- ----- -------- - ----- -------- ------ ----- ------------------- - -- -- - ----- ------ - --- --------- ----- ----------- - --- ---------------- ------- ------------------ --- ----- ------------- - --- ------------------- ----- -------------- - --- -------------------- ----- -------------------- - --- -------------------------- ----- ---------------- - --- ------------------ --------- --------- ------- ------------------ --- -------------------------------- ---------------------- --------------------------------------- ---------------------------------- ----------------------------------- ----------------------------------------- ------------------ ----- -- - ---------------- ----- -------- ---- ------- ----------------- --- --------------- ------ --- ------------- -- ------ ------- --------------------
在这个例子中,我们创建了一个Web3ProviderFactory
的工厂函数,该函数用于创建新的web3实例。首先,我们引入了必要的依赖:Web3
,@truffle/hdwallet-provider
(可下载),@dexon-foundation/web3-provider-engine
,以及四个子提供程序依赖:RpcSubprovider
,FetchSubprovider
,FilterSubprovider
和SubscriptionSubprovider
。
接下来,我们定义了一些必要的常量来与以太坊ropsten网络进行交互:INFURA_ROPSTEN_URL和MNEMONIC。我们通过调用new Engine()
创建一个新的web3 provider engine实例,并利用addProvider()
方法添加多个子提供程序,包括rpcProvider,hdWalletProvider和其他三个提供程序。
我们利用engine.on()
方法为block
事件添加了一个钩子函数,每当一个新的块到达时,都会在控制台上打印该块的数值。
最后,我们通过调用start()
方法,启动了web3提供程序引擎。最后,我们通过导出Web3ProviderFactory函数,并传递给其他组件,以实例化web3,与以太坊ropsten网络进行通信。
结论
在这篇文章中,我们详细讲解了如何使用npm包@dexon-foundation/web3-provider-engine,并提供了示例代码,希望你们能够从本文中清楚地理解如何利用web3 provider engine实现与以太坊节点的交互。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5eedad83b5cbfe1ea0610c88