Ich bin neu bei Ethereum und Solidity, ich habe eine Token-App mit Zeppelin und Trüffel erstellt, die Token generiert und an andere sendet.
Meine Frage ist, wenn ich den Vertrag bereitgestellt habe, dann ist msg.sender mein öffentlicher Schlüssel (z. B.: 0xbb439f37bf26d74aa02d0d85d8748c85530d439a), dann kann ich das Eigentum an eine andere Adresse übertragen. Wenn jemand meinen öffentlichen Schlüssel kennt, kann er/sie die transferOwnership-Methode aufrufen?
Lassen Sie uns für diese Demonstration unsere eigene kleine transferOwnership
Methode verwenden, von der ich sicher bin, dass sie dasselbe bewirkt wie die, von der Sie sprechen.
function transferOwnership(address new_owner) {
require(msg.sender == owner);
owner = new_owner;
}
Sie können sehen, dass die Funktion prüft, ob der Absender der Nachricht tatsächlich der Eigentümer ist, sodass niemand sonst den Eigentümer ändern kann.
Selbst wenn die Leute Ihren öffentlichen Schlüssel, Ihre Adresse kennen, reicht das nicht aus. Wenn sie den Eigentümer des Vertrages, also Sie, ändern wollen, müssen sie „eine Nachricht an den Vertrag senden, der von Ihnen unterzeichnet wurde“, und dafür brauchen sie etwas, das sie sicher nicht haben, nämlich Ihren privaten Schlüssel .
Solange es also niemand weiß, sind Sie sicher! :)
lungj
msg.sender
das automatisch von der EVM gesetzt wird und nicht vom Absender der Nachricht.Elisa Drion
lungj
Elisa Drion
Waris Ahmed Khan
Elisa Drion