美文网首页
Web3的provider的正确使用

Web3的provider的正确使用

作者: sunlang | 来源:发表于2018-10-22 23:28 被阅读78次

    我们在进行测试的时候,如果使用ganache,那么就是会用ganache提供的provider

    const web3 = new Web3(ganache.provider());
    

    我们进行合约部署的时候,可以使用infura提供的provider

    let provider = new HDWalletProvider(mnemonic, "https://rinkeby.infura.io/v3/2b86c426683f4a6095fd175fe931d799");
    const web3 = new Web3(provider);
    

    但是注意上面的mnemonic是12个账户助记词,这12个词是合约部署者的

    在和以太坊的交互中,面对的成千上百的用户,如果用户都使用部署者的账户,大量的操作消耗gas都是部署者的账户中的钱

    因此在交互中,这里应该换为用户使用的钱包的provider,例如metamask的provider
    我们只要装了metamask插件,那么浏览器中就被注入了web3

    浏览器的web3.png

    没装当然就是没有的

    浏览器无web3.png
    因此我们是可以拿到用户的provider的

    但是!!!
    低版本Web3.png
    这个web3的版本是相当低的,1.0的在进行紧张的测试中,还未在该插件中上线
    但是我们开发使用的就是1.0的,如何让1.0版本的web3使用0.2版本的provider呢?

    上面的情况打个比方:
    我们给用户提供了高版本的iphone,但是没有也不能提供电话卡,不能打电话
    metamask提供了低版本的诺基亚,有电话卡,能打电话
    那么我们就需要用户使用我们的iphone,并且把诺基亚的卡插进来
    我们使用新的模块web3.js组合web3

    import Web3 from 'web3';//ipone without card
    const web3 = new Web3(window.web3.currentProvider);//use NOKIA card
    export default web3;//export iphone with nokia card
    

    导出后我们在其他的模块中使用的就是这个组装web3

    注意,window.web3.currentProvider能找到一定是要装了metamask或者类似插件

    相关文章

      网友评论

          本文标题:Web3的provider的正确使用

          本文链接:https://www.haomeiwen.com/subject/fwgnzftx.html