Korrekter Weg zum einfachen Aufrufen der Funktion mit web3j aus dem bereitgestellten Vertrag

Ich versuche, eine Funktion aus einem modifizierten ERC20-Vertrag aufzurufen, und es gelingt mir nicht, sie zum Laufen zu bringen. Ich mache das mit web3j von Android.

Ich kann mich mit Infura verbinden. Der Vertrag ist bereits auf Rinkeby im Einsatz. Ich habe alles überprüft und die Adresse ist gut. Ich versuche, Anmeldeinformationen aus einem privaten/öffentlichen Schlüsselpaar zu erstellen und es zu übergeben, um Gas von diesem Konto zu verwenden.

String publicKey = "0x1900a41f2777ab70aad2074e3F4B9c5429c7f243";
    String privateKey = "some private key";
    String sparkTokenAddr = "some_addr";

    Credentials creds = Credentials.create(privateKey, publicKey);

    SparkToken spark = SparkToken.load(
            sparkTokenAddr, web3, creds, ManagedTransaction.GAS_PRICE, Contract.GAS_LIMIT);

    try {

        TransactionReceipt transactionReceipt = spark.chargedPhone(
                BigInteger.valueOf(50), publicKey).send();

        Log.e("ethereum", String.valueOf(transactionReceipt));

    } catch (Exception e) {
        e.printStackTrace();
        Log.e("ethereum", "Could not send tx");
    }

Es protokolliert immer, dass die tx nicht gesendet werden konnte. Was mache ich falsch?

Was ist die Ausnahme?

Antworten (2)

Dies ist die Codevorlage, die ich im Allgemeinen verwende, um Funktionen in meinem Smart Contract aufzurufen

    contractName.FunctionINeedToCall(function(error, result) {
       if (!error) {
           //Things I want to carry out if there's no error
           console.log(result)
       } else {
            console.log(error);
        }

   });

Ich denke, Ihr RPC-Anbieter hat ein Problem. Sehen Sie irgendwelche Zahlen in Ihrem Abschnitt "Heute anfragen" in infura ? Wenn nicht, ändern Sie zuerst Ihre API-Methode auf "Websockets" (oder "https", wenn zuvor Websockets ausgewählt wurden), danach müssen wir andere Abschnitte des Vertrags oder js überprüfen.