¿Cómo devolver el valor de la función utilizando la instancia de contrato que se implementó anteriormente? [cerrado]

No puedo recuperar el contenido variable almacenado para la instancia de contrato anterior implementada, solo obtengo el contenido de la instancia de contrato actual que se genera (en mi caso, estoy tratando de enviar hash y recuperarlo, solo puedo recuperar el valor actual).

 myContract.methods.sendHash(files[0].hash).send({ from: '0xDA799A5F1c519feEE6C4915E9BFA2b86ff428FA7' }, function (error, transactionHash) {
    console.log("The data has been sent to the fuction ")
    console.log("data sent and the transaction hash is", transactionHash);

                     });

  myContract.deploy({
                 data: '0x608060405234801561001057600080fd5b506102d7806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063d13319c414610051578063dfb29935146100e1575b600080fd5b34801561005d57600080fd5b5061006661014a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100a657808201518184015260208101905061008b565b50505050905090810190601f1680156100d35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156100ed57600080fd5b50610148600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506101ec565b005b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156101e25780601f106101b7576101008083540402835291602001916101e2565b820191906000526020600020905b8154815290600101906020018083116101c557829003601f168201915b5050505050905090565b8060009080519060200190610202929190610206565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061024757805160ff1916838001178555610275565b82800160010185558215610275579182015b82811115610274578251825591602001919060010190610259565b5b5090506102829190610286565b5090565b6102a891905b808211156102a457600081600090555060010161028c565b5090565b905600a165627a7a723058206f2d78b72f2a66110648246dfeb8be76501828815b1edadf3354d47db771053e0029',
                 arguments: [files[0].hash]                                              

                    })
                 .send({
                            from: '0xDA799A5F1c519feEE6C4915E9BFA2b86ff428FA7',
                            gas: 1500000,
                            gasPrice: '30000000000000'

                     }, function (error, transactionHash) { "Transaction hash is this", console.log(transactionHash) })
                        .on('error', function (error) { console.log(error) })
                        .on('transactionHash', function (transactionHash) { console.log('3') })
                        .on('receipt', function (receipt) {
                            console.log("contract address is this", receipt.contractAddress) // contains the new contract address


                    })
                        .on('confirmation', function (confirmationNumber, receipt) { })
                        .then(function (newContractInstance) {
                            console.log("New contract instance is this", newContractInstance.options.address) // instance with the new contract address



                            // using the callback
                          myContract.methods.getHash().call({ from: newContractInstance.options.address }, function (error, result) {

                          console.log("The HASH RETRIVED FROM THE CONTACT IS",result);

                            });


                        });


                });

código de solidez

pragma solidity ^0.4.17;

contract Contract {
 string ipfsHash;

 function sendHash(string x) public {
   ipfsHash = x;
 }

 function getHash() public view returns (string x) {

volver ipfsHash;

 }

}
Por favor, formatee su publicación. Por favor, danos el resultado que tienes actualmente. Todavía no puedo leer nada correctamente.
¡Esta pregunta es ilegible!

Respuestas (1)

Usando async/await puede implementar una nueva instancia y realizar una transacción

async function deployAndQuery() {
    const MyContract = new web3.eth.Contract(ContractABI);

    // Assign the new instance to a separate variable
    const myContract = await MyContract.deploy({
        data: '0x60....'           // <- bytecode prefixed by 
    })
    .send({
        from: MyAccount,
        gas: 2000000,              // <- adjust the amount of gas used
        gasPrice: '30000000000'    // <- adjust gas price
    });

    // 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)
}

deployAndQuery();
muchas gracias, en el código anterior, ¿dónde se crea la nueva instancia de contrato y cómo puedo usarla para recuperar el valor que envié a través de la función sendHash anteriormente? Solo recibo el valor de la función hash enviada actualmente.
y también cómo debemos recuperar los datos utilizando la instancia de contrato o el hash de transacción
El código ya está comentado donde se están completando las operaciones. No puede enviar una transacción a un contrato antes de que se implemente el contrato.