Ich bin aus Performance-Sicht neugierig, ob es dumm ist, eine Kryptowährung von Grund auf in einer anderen Sprache als C/C++ zu schreiben?
Wenn ich zum Beispiel eine Kryptowährung und ein Protokoll in Python oder Nodejs schreiben wollte, würde ich später auf Leistungs- und Geschwindigkeitsprobleme stoßen, da diese Sprachen nicht so „low-level“ sind?
Oder gibt es neben der Leistung noch andere Probleme, auf die ich stoßen würde?
Alle Gedanken sind willkommen. Vielen Dank
Es gibt keinen Grund, warum eine Kryptowährung in einer einfachen Sprache geschrieben werden muss . Es ist nur so, dass Satoshis ursprüngliche Implementierung von Bitcoin zufällig in C++ war (vielleicht war das die Sprache, mit der er/sie sich am wohlsten fühlten), also scheinen jetzt viele Leute zu denken, dass es so sein muss . Das tut es nicht.
Sie könnten sicherlich eine Kryptowährung (entweder eine vorhandene oder eine völlig neu gestaltete) in Python oder Javascript oder so ziemlich alles andere implementieren. Wallet-Software verwaltet meistens eine große Datenbank mit einer Menge Hashing.
Beim Schreiben einer vollwertigen Kryptowährung in einer interpretierten Sprache treten viele Leistungsprobleme auf. Der Unterschied besteht nicht darin, ob Sie den Code in einer Hoch- oder Niedrigsprache implementieren, sondern ob diese Sprache kompiliert oder interpretiert wird.
JavaScript war traditionell eine interpretierte Sprache, aber viele neue JS-Engines (einschließlich Googles V8, die sowohl in Node.js als auch in Chromium verwendet werden) sind eigentlich Just-In-Time (JIT)-Compiler, was bedeutet, dass der Quellcode als Eingabe genommen und für die Maschine kompiliert wird Code zur Laufzeit. Aus diesem Grund sehen wir viele Bitcoin- und andere Kryptowährungsbibliotheken in JavaScript: Leistungssteigerungen durch Kompilieren in Maschinencode, aber Verwendung einer Hochsprache für das, was manche als bessere Entwicklungserfahrung betrachten. Python hingegen kann abhängig von Ihrer Laufzeit eine schlechte Wahl sein (ich weiß, dass es jetzt Python-Umgebungen gibt, die in Maschinencode kompiliert werden können, aber es ist heute meistens eine interpretierte Sprache).
Wallet-Software kann in verschiedenen Sprachen implementiert werden, um Bedenken hinsichtlich Portabilität und einfacher Einrichtung auszuräumen, da die Leistung hier weniger ein Problem sein sollte als bei Software, die für die Validierung von Transaktionen und das Mining entwickelt wurde.
Greg Hewgill