Как вызвать метод контракта с помощью tron-web - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь вызвать простой метод контракта, который просто возвращает строку данных.Я основал свой код на примере, который можно найти в документах => https://developers.tron.network/reference#methodcall

tronWeb.trx.getContract("TFWbGYFVjUMKrHALdU4MnFWNYY9Uc5W9SZ").then(async contract => {
    console.log(contract);
    let abi = contract.abi;
    console.log(abi);
    let c = await tronWeb.contract({
        abi
    });
    let result = await c.getBadgeOwner('something is up').call();
    console.log(result);
});

Разница с тем, что можно найти в документах, заключается в том, что я загружаю abi измой загруженный контракт вместо жесткого кодирования, как в примере.

Я получаю ошибку index.js:105 Uncaught (in promise) TypeError: e.forEach is not a function, которая, кажется, как-то относится к abi:

enter image description here

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Я делал ту же ошибку раньше.Это работает для меня

async function a (){
        let contract = await tronWeb.contract().at("TFWbGYFVjUMKrHALdU4MnFWNYY9Uc5W9SZ")
        //console.log(contract);
        let currentValue = await contract.getBadgeOwner('something is up').call();
        console.log(currentValue);
}

a()
0 голосов
/ 30 января 2019

Для тех, кто споткнулся о ту же ошибку новичка, вот как ее решить:

Используйте contract (). At () вместо getContract ()

let contract = await tronWeb
        .contract()
        .at("TFWbGYFVjUMKrHALdU4MnFWNYY9Uc5W9SZ")

После этого выВы можете вызывать методы контракта просто отлично

let currentValue = await contract.getBadgeOwner('something is up').call();

...