在进行以太坊和区块链开发时,Web3.js 是非常重要的 JavaScript 库。它可以与以太坊网络进行通信,从而让 Web 应用程序与智能合约进行交互。
但是在使用 Web3.js 时,我们发现在每次发出交易时,需要通过 MetaMask、等硬件钱包或登录自己的 Keystore 文件,这会增加我们开发的复杂度。
而这个问题可以通过 npm 包 hooked-web3-provider 解决。
hooked-web3-provider 的功能
hooked-web3-provider 是一个可以向 Web3.js 提供以太坊账号私钥签名的可插入式钱包。通过该插件,我们可以在本地私钥上插入一些代码逻辑,以达到一些特殊的需求。
由此,我们不再需要使用 MetaMask,或者等待 Keystore 文件的验证,从而极大地提高我们开发的效率。
hooked-web3-provider 的基本使用方法
我们可以通过 npm 来安装 hooked-web3-provider 包,然后在代码中这样使用它:
-- -------------------- ---- ------- ----- ------------------ - -------------------------------- ----- ---- - --- -------- -------------------- ----- ------------------------- -- ----------- ------------------- - -- ------ ----------- --------------------------------------------- ---------------- ---------- --------- -- - ----- ---------- - --- -------------- ------- ----- ----------- - --- ------------------------------ ----------------------------- ----- ------------ - ---------------------------------------- -------------- ---- - -------------- - - ---
从上面的代码,我们可以发现,我们通过构造函数,将以太坊节点的 URL 和我们自己的私钥签名配置传递给了 HookedWeb3Provider。
signedTransaction 示例
我们也可以通过 signedTransaction 来看一下在发送交易时,hooked-web3-provider 如何简化我们的操作。
web3.eth.sendTransaction({ from: '0x64E69E51B82E9B18cF5b43a90505f493eDf45082', to: '0xF2b5f0bAF98E411569F5D5e2321B482D8fA0A1d3', value: web3.toWei('20', 'ether'), }, (error, result) => { console.log(`tx hash: ${result}`); })
通过 signedTransaction,我们可以引导 Web3.js 通过 configured signer 对象来执行签名、并将签名交易发送到网络中。
基于 hooked-web3-provider 的实战开发
我们在实战开发中可以很方便的使用 hooked-web3-provider 相关功能,如在 React 应用程序中,我们可以通过以下代码让应用程序自动签名。
-- -------------------- ---- ------- ------ ------------------ ---- ---------------------- ----- ----------------- - -- ----- ------- - -------------------------------------------- ----- ----------- - ----------------------- ----- --- ------- --------- - ------------------ - ------------- ---------- - - ------- ----- --------- --- -------- --- -- - ----- ------------------- - ---- ----- ------ - --- ----- --- -------------------- ----- ------------ ------------------- - ----------- -------- ---------------- -------- --------- -- - -------------------- ------------- -------- ----- ---------- - --- -------------- --- ---- --- --- ------ -- ------- ----- -- - --- -------------------- -------------------- ----- --------------------- - --------------- -------------- ----------------------- - - -- -- ----- -------- - ----- ------------------------- ----- ------- - -------------------------- ------------------------------------ --------------- ------- --------- ------- --- - ------------- ------------------- - - --- -
从上述代码,我们可以发现,在 componentDidMount 中,我们使用了 HookedWeb3Provider,配置了钱包的私钥和所要连接的网络地址。从而在后续中使用 web3js 对象可以很方便地执行一系列的交易操作。
结语
从上述的使用以及实战中,我们都可以发现,hooked-web3-provider 能够方便的解决一系列我们在以太坊应用程序开发中的问题。
通过了解 hooked-web3-provider 的使用,我们可以更加灵活地开发我们的应用程序,并且也使应用程序的交互体验更加好。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedac3bb5cbfe1ea0610992