Verwenden Sie einen privaten Schlüssel, um zu beweisen, dass Sie Eigentümer dieses Kontos sind

Wie stelle ich sicher, dass die Funktion vom Besitzer des Kontos mit web3.js ausgeführt wird, dessen Instanz zum Aufrufen der Funktion verwendet wird, ich verwende Ganache und habe meine privaten Schlüssel für account .

Antworten (1)

Dazu müssen Sie den Absender der Transaktion in Ihrem Smart Contract verifizieren. Zum Beispiel:

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
}

Sie können dies mit Solidity-Modifikatoren tun

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

Jetzt können Sie also überprüfen, wer Transaktionen mit onlyOwnerdem Modifikator sendet

function doSomething() onlyOwner {
    // Only if sender is equals to 0xbb2048f1... enter here
    // Else do a revert(); and refund eth sended
}
aber hier stellt es sicher, dass der Vertrag von einem bestimmten Konto aufgerufen wird und nicht die Person, die die Funktion aufgerufen hat, dieses Konto besitzt. Ich möchte meinen privaten Schlüssel verwenden, nur der Besitzer des Kontos, der den Schlüssel hat, kann Funktionen über das Konto aufrufen.
msg.senderbeweist, dass sie die Transaktion von diesem Konto signiert haben, daher haben sie den privaten Schlüssel für dieses Konto. Dies ist so nah wie möglich, um zu beweisen, dass sie das Konto besitzen.