Wie kann ich die Daten abrufen, die an einen zuvor bereitgestellten Vertrag gesendet wurden?

Ich möchte auf die Daten zugreifen, die ich im vorigen Vertragsfall über eine Funktion gesendet habe. Ist es möglich, die Daten über die Vertragsinstanz oder den Transaktionshash abzurufen?

Antworten (1)

Sie müssen einen Vertrag nicht erneut bereitstellen. Wenn er bereits bereitgestellt ist, müssen Sie eine Instanz erstellen, die auf die Vertragsadresse verweist

async function queryContract() {
    const ContractABI = [...];  // <-- Contract ABI
    const ContractAddress = "0x1234....";           // <-- Deployed contract address

    // Assign deployed address of a contract 
    const myContract = new web3.eth.Contract(ContractABI, ContractAddress);

    // Send a transaction
    await myContract.methods.sendHash("0x12341234")
    .send({
        from: MyAccount,
        gas: 2000000,
        gasPrice: '30000000000'
    });

    // Query modified data    
    const hash = await myContract.methods.getHash().call();

    console.log(hash)
}

queryContract();
Vielen Dank, wenn ich den Hash erhalten möchte, der zuvor per Funktion an den Vertrag gesendet wurde. Wie greife ich darauf zu, ist es möglich, per Transaktion gesendet zu werden?
Für den Zugriff auf Daten in einem abgeschlossenen Vertrag benötigen Sie die Vertragsadresse und die Vertrags-ABI. Dann können Sie jede Methode aufrufen, die über die Schnittstelle bereitgestellt wird. Befolgen Sie die Beispiele zur Verwendung in der web3-Dokumentation web3js.readthedocs.io/en/1.0/web3-eth-contract.html