Warum erscheint die Sign-Transaktion in Cryptokitties?

Ich habe einige web3.js-Projekte gemacht und auch mit MetaMask gearbeitet. Aber ich habe noch nie gesehen, dass dieses Fenster in MetaMask auftaucht – wie es bei der Anmeldung für Cryptokitties der Fall ist.

Confirm Transaction
Sign Message

MESSAGE
Cryptokitties

Was bedeutet das? Warum wird dieses Popup angezeigt? Welche Berechtigungen erteile ich?

Screenshot hier: https://i2.wp.com/blockchaindk.com/wp-content/uploads/2017/12/Cryptokitties-Sign-Message.png?w=346&ssl=1

Quelle: https://blockchaindk.com/2017/12/05/buy-cryptokitty-cryptokitties/

Antworten (2)

In den meisten Fällen müssen wir nicht unterzeichnen, um Transaktionen zwischen der Website (Vertrag) und mir zu senden.

Aber was das Zeichen tut, ist, dass die Site sicherstellt, dass der Benutzer echt ist und er ein Ether-Konto (in diesem Fall Metamask) hat. Zum Signieren benötigen wir normalerweise E-Mail, Benutzername.

  • Wir können den Benutzer nur mit E-Mail und Benutzername auf der Website registrieren, und wann immer wir Ether von oder zu dem Benutzer übertragen müssen, lösen wir die von Metamask bereitgestellte web3.sendTransaction-Funktion aus (die den Metamask-Übertragungsdialog auslöst).
  • Aber bevor wir den Benutzer nur mit E-Mail und Benutzername registrieren, überprüfen wir, ob der Benutzer ein tatsächliches Konto hat. Wenn das web3.personal.sign erfolgreich ist, bedeutet dies, dass der Benutzer das Konto hat und es echt ist, dann können wir den Benutzer weiterhin auf unserer Website registrieren.

we steht für die Site-Manager, Admins. Im Grunde wird es ausgelöst durch

var signer = web3.eth.defaultAccount || web3.eth.accounts[0];
var original_message = "I am but a stack exchange post";
var message = "0x" + original_message.toHex();
var message_hash = web3.sha3('\u0019Ethereum Signed Message:\n' + message.length.toString() + message);
var signature;
web3.personal.sign(message, signer, function(err, res) {
    if (err) console.error(err);
    signature = res;
    console.log({
        "signer": signer,
        "message": message,
        "message_hash": message_hash,
        "signature": signature,
    })
});

Die Antwort wäre

{
    message: "0x4920616d20627574206120737461636b2065786368616e676520706f7374"
    message_hash: "0x1a0126ceafb4579293016a4cc3ca0ec753c7d497cda8b3e6ece095c832d92590"
    signature: "0x0cf7e2e1cbaf249175b8e004118a182eb378a0b78a7a741e72a0a34e970b59194aa4d9419352d181a4d1827abbad279ad4f5a7b60da5751b82fec4dde6f380a51b"
    signer: "0x9283099a29556fcf8fff5b2cea2d4f67cb7a7a8b"
}

Wenn Sie Fragen haben, lassen Sie es mich bitte wissen.

Ich glaube, dies wird nur als eine Form des Anmeldesystems verwendet. Durch das Signieren einer Nachricht kann CryptoKitties feststellen, welche Adresse Sie verwenden und welches Konto daher auf ihrer Website angezeigt werden soll.

Nun, aber wenn Sie Metamask verwenden, wäre es einfacher, die Kontoinformationen direkt über Metamask mit der Schaltfläche "Registrieren" zu erhalten ... Imho
Du meinst, du möchtest, dass Metamask deine Transaktionen signiert, ohne dich zu fragen?