Как подключить MetaMask к Web3. js версии 1.2.6? - PullRequest
0 голосов
/ 13 февраля 2020

Я написал умный контракт (развернут на Ropsten) и веб-сайт (node.js, express. js и e js)

Я могу читать данные из контракта с Infura API и успешно отображается на веб-странице. Тем не менее, я хочу записать данные о контракте через Metamask. В настоящее время. Я не могу подключить MetaMask к web3. js 1.2.6. Я также проверил, что Web3.givenProvider возвращает также нулевое значение.

(я могу взаимодействовать со своим умным контрактом через MyEtherWallet + Meta Mask)

Подробная информация:

Среда разработки: node.js express. js e js web3. js (1.2.6)

Браузер: chrome + MetaMask: localhost: 3000 / 127.0.0.1:3000

const express = require('express');
const router = express.Router();

const Web3 = require('web3');
//const web3 = new Web3(new Web3.providers.HttpProvider("https://ropsten.infura.io/v3/xxxxxxxx"));
const web3 = new Web3(Web3.givenProvider);

const Tx = require('ethereumjs-tx');

let myAddress = '0x3E0980E7cea6804B01BEA49cb70F9B7Cxxxxxxxx';
const abi = [***VERY LONG ABI***];
const address = "0x07cf2ecef130495ea18a25e4f1dfbfc4xxxxxxxx";
const MyContract = new web3.eth.Contract(abi, address);

// define the home page route
router.get('/', (req, res, next) => {
    const resultHome = [];

    MyContract.methods.name().call().then((name) => {
        resultHome.push(name);
        symbol();
    })
    const symbol = () => {
        MyContract.methods.symbol().call().then((symbol) => {
            resultHome.push(symbol);
            totalSupply();
        })
    }
    const totalSupply = () => {
        MyContract.methods.totalSupply().call().then((totalSupply) => {
            resultHome.push(totalSupply);
            home();
        })
    }

    const home = () => {
        res.render('erc20/index', {
            pageTitle: 'ERC-20E Token Standard Enhanced - Info',
            path: 'erc20',
            subPath: 'erc20Info',
            name: resultHome[0],
            symbol: resultHome[1],
            address: address,
            totalSupply: resultHome[2] / 100
        })
    }
})

router.get('/source', (req, res, next) => {
    res.sendFile(__dirname + '/erc20Source.txt');
})

// define the controller route
router.get('/controller', (req, res, next) => {
    let resultController = [];

    MyContract.methods.showRun().call().then((showRun) => {
        resultController.push(showRun);
        controller();
    })

    const controller = () => {
        res.render('erc20/controller', {
            pageTitle: 'ERC-20E Token Standard Enhanced - Controller',
            path: 'erc20',
            subPath: 'erc20Controller',
            showRun: resultController[0]
        })
    }
})

module.exports = router;

1 Ответ

0 голосов
/ 19 февраля 2020

Проблема решена, так как я поместил web3 на передний конец вместо заднего.

...