javascript - 从智能合约调用方法而不签署交易
问题描述
我需要使用我的应用程序从我的智能合约中调用 balance 函数,并且我不想使用 metamask 和其他 web3 提供程序,因为我不会发送任何交易并且不需要仅使用公共钱包 ID
它在 localHost 上运行良好,但在以太坊主网上却失败了
<!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 调用 balance 函数
错误:
错误:MetaMask Web3 对象不支持没有回调参数的同步方法,例如 eth_call
解决方案
推荐阅读
- r - 在 R 中使用 projectRaster 后,栅格范围不再正确
- plsql - 通过动态操作对页面项目进行验证
- javascript - 闪亮和数字格式中的条件文本样式
- javascript - 使用无效数据调用 Firestore 函数 DocumentReference.update()。不支持的字段值:自定义对象
- microsoft-graph-api - Microsoft Graph 邮件查询 - 获取“ErrorAccessDenied”
- swift - 我应该使用什么方法来代替已弃用的“resumeAnimation(forKey:)”?
- python - 锁定鼠标后,有什么方法可以让程序打开视频吗?
- reactjs - Netlify 网站发布但黑屏
- java - 获取给定日期范围之间的字符串日期列表 - Scala
- javascript - For Loop 项目未添加到购物篮中