Вызов метода из смарт-контракта без подписания транзакции - PullRequest
0 голосов
/ 07 января 2019

Мне нужно вызвать функцию баланса из моего умного контракта с помощью моего приложения, и я не хочу использовать метамаску и других провайдеров web3, поскольку я не собираюсь отправлять какие-либо транзакции и не должен использовать только общедоступный кошелек ID

Отлично работает на localHost, но не работает в основной сети ethereum

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Balance Checker</title>
    <script src="./node_modules/web3/dist/web3.min.js"></script>
</head>
<body>
    <h1 id="display"></h1>
    <input id="wallet_add" type="text">
    <button id="button">Check Balance</button> 
    <input id="amount" type="number">
    <button id="withdraw">Withdraw Tokens</button>
    <h1 id = "status"></h1>

    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
    <script>
    if(typeof web3 !== 'undefined') {

        web3 = new Web3(web3.currentProvider);

    } else {

        web3 = new Web3(new Web3.providers.HttpProvider("https://mainnet.infura.io/v3/71cda5338d4440fa9cd615a82b829d47"));
    }

    var P1Contract =  web3.eth.contract([{"constant":false,"inputs":[],"name":"end_ICO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"releaseICO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"total_Supply","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ico_startdate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"StopICO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"start_PREICO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_price_tokn","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pre_startdate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"start_ICO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ico_enddate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_totalsupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stage","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pre_enddate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]);

    var P1 = P1Contract.at('0x080eB7238031F97Ff011e273D6CaD5ad0c2dE532');

    console.log(P1);

    $("#button").click(function(){

        var ame  = P1.balanceOf($('#wallet_add').val());            

        var name  = ame.toNumber();        

        var balanc = name/100000000;

        console.log(balanc);

        $("#display").html(balanc);

        var symb   = P1.symbol("");

        console.log(symb);

        var nam = P1.name("");

        console.log(nam);
    });

    </script>

</body>
</html>

Контракт по: https://etherscan.io/address/0x080eb7238031f97ff011e273d6cad5ad0c2de532#code

Мне нужно вызвать функцию баланса из web3

Ошибка:

Ошибка: объект MetaMask Web3 не поддерживает синхронные методы, такие как eth_call без параметра обратного вызова

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...