Как передать функцию разобранного ABI в MetaMask? - PullRequest
0 голосов
/ 07 февраля 2019

Я разрабатываю dApp, который анализирует ABI, а затем показывает его функции и поля для каждой переменной функции, и я хочу отправить функцию с ее переменными в MetaMask для выполнения транзакции.

У меня полностью JS, web3.js веб-приложение на стороне клиента.

const fntype = document.getElementById("function-name").value;
var counter = $('.validate').length
var NumOfValidates = counter-1;
  //A JS array that it will be filled with all the inputs the user give for each function's variable in order
var variables = [];
var id = 0;
for (var i = 0; i < NumOfValidates; ++i) {
    id = id+1;
    variables.push(document.getElementById("i"+id).value);
    console.log("variable["+i+"] = "+variables[i]);  
 }

//SendToMetaMask

 miniToken.fntype(variables[1],{ from: address, value: '0'})

 .then(function (txHash) {
    console.log('Transaction sent')
    console.dir(txHash)
    waitForTxToBeMined(txHash)
})

Ожидается : передать функцию в MetaMask для завершения транзакции

Фактический : я получаю следующую ошибку

Uncaught TypeError: Cannot read property 'fntype' of undefined

at senddata2 (script.js:234)

at HTMLAnchorElement.onclick ((index):110)

senddata2 @ script.js:234

onclick @ (index):110

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Теперь я думаю, что моя проблема в том, что, когда я беру имя функции и помещаю его в переменную fntype, она распознается не как функция, а как строка.

Любые мысли, как это решить

0 голосов
/ 07 февраля 2019

Контракт инициализирован неправильно.отсюда ошибка Cannot read property 'fntype' of undefined.

var miniToken = web3.eth.Contract(abi, address) //web3js@1.0
var miniToken = web3.eth.contract(abi).at(address) //web3js@0.20

После этого вы можете сделать

miniToken.fntype(variables[1],{ from: address, value: '0'})
...