Как развернуть контракт с Truffle и MetaMask [дубликат]

Как развернуть контракт с MetaMask и трюфельным контрактом? В настоящее время, если я хочу развернуть контракт с трюфельным контрактом, у меня будет следующий код.

var web3 = new Web3(new 
Web3.providers.HttpProvider("http://localhost:8545"));
var provider = new Web3.providers.HttpProvider("http://localhost:8545");
var MyContract = contract(Contract);

MyContract.defaults({
    from: '0x...',
    gas: 4712388,
    gasPrice: 1000000000
})

MyContract.setProvider(provider);

Однако, когда вы запускаете инициализацию с помощью MetaMask, что вы устанавливаете в качестве провайдера? Это окно.web3?

if (typeof window.web3 !== 'undefined') {
        window.web3 = new Web3(window.web3.currentProvider);
    } else {
        console.log('No web3? You should consider trying MetaMask!')
        window.web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
    }

    MyContract = contract(Contract);
    MyContract.setProvider(window.web3);        
    const account = window.web3.eth.accounts;

    MyContract.defaults({
        from: account,
        gas: 4712388,
        gasPrice: 1000000000
    }) 

Ответы (1)

Поставщик MetaMask должен быть window.web3.currentProvider.

 MyContract.setProvider(window.web3.currentProvider)