Почему мой вызов контракта не создает новую транзакцию в моем разделе транзакций с ганашем?

легко на меня, потому что я совершенно новичок во всем этом материале.

Итак, я создал функцию, которая подписывает мою транзакцию с помощью библиотеки web3js и выглядит так:

   signTx = async () => {
     const { accounts, contract, web3} = this.state
     const msg = 'henlo frendo'
     const hex_msg = web3.utils.toHex(msg)
     let signature = await web3.eth.sign(hex_msg, accounts[0])

     signature = signature.substr(2);
     var r = '0x' + signature.slice(0, 64)
     var s = '0x' + signature.slice(64, 128)
     var v = '0x' + signature.slice(128, 130)
     var v_decimal = this.state.web3.utils.toDecimal(v)
     //v_decimal has to be either 27 or 28
     if (v_decimal != 27 || v_decimal != 28) {
       v_decimal += 27
     }

    // Get the value from the contract to prove it worked.
const fixed_msg = `\x19Ethereum Signed Message:\n${msg.length}${msg}`
const fixed_msg_sha = this.state.web3.utils.sha3(fixed_msg)
const response = await contract.methods.recoverAddr(fixed_msg_sha, 
v_decimal, r, s).call()

};

Я ясно вижу, что транзакция подписана правильно, если я делаю некоторые журналы консоли, но, например, если я добавляю кнопку в свой внешний интерфейс, которая продолжает вызывать эту функцию signTx(), новая транзакция никогда не будет выполнена. В чем причина этого? Это потому, что я не подпитываю транзакцию средствами? Если кто-то может предоставить некоторые документы по этому поводу, я был бы очень признателен!

PS Я использую ganache в качестве сетевого провайдера.

Ответы (1)

Ну, я думаю, ответ в том, что вызов call() по контракту только считывает данные

См.: https://truffleframework.com/docs/truffle/getting-started/interacting-with-your-contracts