Nehmen wir an, ich muss die Adresse von einer öffentlichen Schlüsselzeichenfolge ableiten.0xbb8250cc01a0afa7dcaee987b2adda8d1b0a0bb2f7cc427bd942a98c7837364d62e6ea4728a99db39fd55a6f7474a159ca88a96b40279044a1349a2280c8cd43
Gemäß dieser Antwort hier muss ich:
Web3.sha3()
Funktion aus irgendeinem Grund nicht denselben Wert zurückzugeben scheint und ich nicht weiß, wie ich die Eingabe für die soliditySha3()
Funktion angeben soll.Der Hash ist also jetzt:
>>> hash = a591d48139d1f97e701cc15cb42a35c0ba7abf1aa44cfc82cdba0033779719eb
0x
Präfix hinzu:hash = "0x" + hash[24:] => 0xb42a35c0ba7abf1aa44cfc82cdba0033779719eb
Leider ist dies nicht die richtige Adresse. Die Adresse sollte sein0xD4aD2c314d60089654bf292874AC0488F3ee77bA
Was ist also der richtige Weg für Dummies, um die Adresse aus einer öffentlichen Schlüsselzeichenfolge abzuleiten?
Schau mal hier: Ethereum meistern - Schlüssel und Adressen . Dieses Kapitel führt Schritt für Schritt durch den Prozess zum Ableiten des öffentlichen Schlüssels.
Ich denke, das Hauptproblem ist, dass der Online-Encoder keine Hex-Eingabe erwartet. Versuchen Sie es mit web3.js, das perfekt zu funktionieren scheint:
key = "0xbb8250cc01a0afa7dcaee987b2adda8d1b0a0bb2f7cc427bd942a98c7837364d62e6ea4728a99db39fd55a6f7474a159ca88a96b40279044a1349a2280c8cd43"
"0xbb8250cc01a0afa7dcaee987b2adda8d1b0a0bb2f7cc427bd942a98c7837364d62e6ea4728a99db39fd55a6f7474a159ca88a96b40279044a1349a2280c8cd43"
hash = web3.utils.keccak256(key)
"0x31e2c58dcae613b45af300b1d4ad2c314d60089654bf292874ac0488f3ee77ba"
address = "0x" + hash.slice(24+2)
"0xd4ad2c314d60089654bf292874ac0488f3ee77ba"
BEARBEITEN: Web3.py funktioniert bei mir auch gleich
>>> key = "0xbb8250cc01a0afa7dcaee987b2adda8d1b0a0bb2f7cc427bd942a98c7837364d62e6ea4728a99db39fd55a6f7474a159ca88a96b40279044a1349a2280c8cd43"
>>> hash = Web3.sha3(hexstr=key)
>>> address = Web3.toHex(hash[-20:])
>>> address
'0xd4ad2c314d60089654bf292874ac0488f3ee77ba'
Raghav Sood