Ich versuche, über einen Webbrowser eine Verbindung zu web3 1.0 herzustellen, sehe jedoch nicht viel Dokumentation für 1.0. Dieses Skript sagt, ich bin verbunden, aber ich denke, es ist die vorherige Version, da jedes Mal, wenn ich versuche, eine 1.0-Funktion auszuführen, die Funktion undefiniert ist -
<script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js@1.0.0-beta.34/dist/web3.min.js"></script>
<script>
function initweb3 () {
web3 = new Web3(new Web3.providers.HttpProvider("https://mainnet.infura.io/v3/My Api Key"));
}
window.addEventListener('load',initweb3);
if(web3.isConnected()) {
alert("Web3 Connected!");
} else {
alert("Web3 Not Conected");
}
var abi = JSON.parse('[{"MY ABI"}]')
var AK = new web3.eth.contract(abi);
// Set Contract Address
AK.options.address = "Contract Address";
AK.methods.balanceOf("Address to get balance of").call().then(function(balance) {
alert("Balance is " + balance.toString()) });
Das wirft
Uncaught TypeError: Cannot set property 'address' of undefined
Es funktioniert gut, wenn ich es lokal ausführe, also denke ich, dass es keine Verbindung zu Version 1.0 herstellt
Ich sehe, dass Sie anscheinend eine Lösung gefunden haben. Der in der Problembeschreibung vorgeschlagene Code ist jedoch nicht korrekt und könnte zu Ihrem Fehler geführt haben:
var AK = new web3.eth.contract(...)
Sollte eigentlich sein
var AK = new web3.eth.Contract(...)
Beachten Sie die Großschreibung, die erforderlich ist, da Sie hier tatsächlich eine Klasse instanziieren. Dies könnte zu dem undefined
Problem geführt haben, mit dem Sie konfrontiert waren. Außerdem können Sie Ihren Code vereinfachen (eine Zeile entfernen), indem Sie den Vertrag direkt unter Adresse laden:
var AK = new web3.eth.Contract(ABI, address)
Dadurch sparen Sie eine Zeile. Die vollständige Dokumentation finden Sie hier .
Es funktioniert jetzt
<script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js@1.0.0-beta.34/dist/web3.min.js"></script>
var web3 = new Web3();
if(web3.setProvider(new Web3.providers.HttpProvider('https://mainnet.infura.io/v3/MY API KEY'))){
web3.eth.net.isListening();
}
Ryan D