usando una clave privada para demostrar que eres el propietario de esta cuenta

¿Cómo me aseguro de que la función la realice el propietario de la cuenta usando web3.js cuya instancia se usa para llamar a la función? Estoy usando ganache y tengo mis claves privadas para la cuenta.

Respuestas (1)

Para ello debes verificar el remitente de la transacción en tu Smart Contract. Por ejemplo:

function someFunction () {
    // if who sends transaction is different to 0xbb2048f1...
    // rejects transaction and refunds ETH sended.
    require(msg.sender != 0xbb2048f1be4c6e794b20502437d09552b4bc07f0);
    // if msg.sender == 0xbb2048f1... enter here
}

Puedes hacerlo con modificadores de Solidez.

modifier onlyOwner {
    require(msg.sender == 0xbb2048f1be4c6e794b20502437d09552b4bc07f0);
    _;
}

Entonces ahora puede verificar quién envía transacciones usando onlyOwnerel modificador

function doSomething() onlyOwner {
    // Only if sender is equals to 0xbb2048f1... enter here
    // Else do a revert(); and refund eth sended
}
pero aquí asegura que el contrato se llama desde una cuenta específica y no la persona que llamó a la función es dueña de esa cuenta. Quiero usar mi clave privada, solo el propietario de la cuenta que tiene la clave puede llamar a funciones usando la cuenta.
msg.senderprueba que han firmado la transacción desde esa cuenta, por lo tanto, tienen la clave privada para esa cuenta. Esto es lo más cerca que puede estar de demostrar que son los dueños de la cuenta.