Wie werden beliebte Bitcoin-Wallets implementiert? [abgeschlossen]

Wie werden beliebte Online-Bitcoin-Geldbörsen wie die von Blockchaininfo implementiert? Warum sind sie nicht Open Source?

Dies ist zu vage, um vernünftig beantwortet zu werden, wenn Sie nach Details zu allen „beliebten Online-Geldbörsen“ fragen. Können Sie die Frage in etwas Spezifisches und Beantwortbares umformulieren, z. B. nur „Wie ist das blockchaininfo eWallet-System implementiert?“? Wenn nicht, vermute ich, dass diese Frage geschlossen wird
Der clientseitige Wallet-Code (z. B. Javascript) ist Open Source. Die Serverseite ist es nicht.
-1 für die Frage, warum sie nicht Open Source sind (nur albern). Sie können diese Nebenfrage jedoch entfernen.

Antworten (3)

Genauigkeit nicht garantiert

Blockchain.info

  • Wallets sind JSON-Dateien. Die json-Datei wird mit AES ( crypt-js ) verschlüsselt, bevor der Browser anfordert, dass sie auf dem Server gespeichert wird.
  • Die Wallet-Datei wird als HTML-Datenattribut in die Anmeldeseite eingebettet, der Browser entschlüsselt die Datei mit dem bereitgestellten Passwort und extrahiert eine Liste privater Schlüssel und Adressen.
  • Der Browser fragt dann Blockchain-Informationen, den Kontostand und die Liste der letzten Transaktionen für die entschlüsselten Adressen ab.
  • Beim Senden fragt der Browser blockchain.info nach einer Liste der nicht ausgegebenen Ausgaben. Wählt dann die Ausgangskonstrukte aus und signiert die Transaktion selbst ( bitcoin-js ). Wenn die Transaktion fertig ist, wird sie serialisiert und zur Übertragung an das Bitcoin-Netzwerk an Blockchain gesendet.
  • Die Authentifizierung erfolgt über einen eindeutigen „Shared Key“, der in der Wallet-Datei enthalten ist, und nicht über das Benutzerkennwort.
  • Serverseitig verwenden wir 4 Server mit MySQL-Cluster und Java. Ein modifizierter Bitcoin-Client wird verwendet, um die Datenbank zu füllen.

Siehe Funktionsweise

Starke Münze

  • Ähnlich wie blockchain.info mit clientseitiger Verschlüsselung.
  • Private Schlüssel werden einzeln auf dem Server als Datenbankeintrag gespeichert und nicht in einer einzelnen Wallet-Datei.
  • Die Authentifizierung erfolgt serverseitig mit herkömmlichen Sitzungen.
  • Die Transaktionskonstruktion und -signierung erfolgt alles in Javascript.
  • Verwendet blockchain.info oder blockexplorer.com, um den Kontostand von Adressen abzufragen. Verwendet blockchain.info, um Transaktionen zu übertragen.
  • Serverseitig werden Ruby on Rails und Heroku verwendet

Münzbasis

Was sind sie nicht Open Source?

Sie sind Handelsunternehmen mit viel investierter Entwicklungszeit. Der Code, der Open Source ist, würde a) den Wettbewerb erhöhen b) dazu führen, dass identische Phishing-Sites auftauchen c) Klone könnten gehackt oder von Betrügern ausgeführt werden, die den Ruf der Hauptsite schädigen.

Teile von blockchain.info sind Open Source . Ich persönlich hoffe, dass der Rest der Seite eines Tages vollständig Open Source sein wird, aber es gibt noch viel zu planen. Wenn der Code nur abgelegt wird, nützt es niemandem.

Wie fragt Blockchain-Info die letzten Transaktionen nach einer Liste von Adressen ab? Wenn die Wallet-JSON-Datei beispielsweise 100 Adressen enthält, müssen dann 100 separate Aufrufe an die Blockchain-Info-API für die letzten Transaktionen für jede Adresse erfolgen?

Als jemand, der ein kleines eWallet implementiert hat, kann ich diese Frage wohl aus meiner Sicht beantworten.

Eine Implementierung eines eWallet ist ziemlich einfach. Bei Verwendung der offiziellen API läuft alles darauf hinaus, korrekte JSON-RPC-Aufrufe auszugeben. Sie haben im Allgemeinen eine Bitcoin-Instanz, die auf einem Server läuft, zusammen mit Ihrer Website-Front. Das Hauptproblem besteht darin, sicherzustellen, dass Ihre Website zwischen verschiedenen Personen unterscheiden kann und dass sie nicht auf das Geld der anderen zugreifen können. In der Praxis ist es ziemlich einfach.

Es gibt einige Implementierungswege, die Sie mit eWallets einschlagen können:

  • Sie können ein Konto pro Person haben. Solange Sie also zwischen Personen unterscheiden können, kann Ihre Website "staatenlos" sein, dh überhaupt keine Daten speichern. Ich habe das umgesetzt und es war nicht schwer.
  • Sie können jeder Person so viele Konten geben, wie sie möchte. Dazu müssen einige zusätzliche Informationen auf Ihrer Website gespeichert werden, um sicherzustellen, dass Ihre Benennung eindeutig ist. Auch kein großes Problem, ich habe es getan.
  • Sie können das Geld aller in einen gemeinsamen Pool verschieben und verfolgen, wie viel jede Person hat. Ihr Website-Server muss über eine separate Saldendatenbank verfügen. Etwas kniffliger ist, dass Sie solche Probleme wie doppelte Ausgaben usw. im Hinterkopf behalten müssen, um Betrügern keinen Kredit zu geben. Soweit ich weiß, ist dies das beliebteste Modell für eWallets.
  • Konzentrieren Sie sich hauptsächlich auf die Aufbewahrung der privaten Schlüssel des Benutzers. Dies ist eine Option, die beispielsweise von StrongCoin verwendet wird . Die Website kann Ihre Guthaben von Diensten wie Block Explorer abrufen, Ihre Schlüssel auf Ihrem Computer entschlüsseln und Sie dort auch Transaktionen erstellen lassen. Ein interessantes Modell, da es nicht alle privaten Schlüssel in einer leicht zugänglichen wallet.dat speichert, um sie zu stehlen.

Es gibt viele Bedenken, die man bei der Implementierung eines eWallet berücksichtigen muss – hauptsächlich die Sicherheit Ihrer Gelder und so weiter, aber das ist ein Thema für eine andere Frage.

Warum sie nicht Open Source sind, nun, ich persönlich möchte etwas Geld mit meiner Arbeit verdienen, also behalte ich den Quellcode für mich und jeden, der mich beauftragt, einen für sie zu erstellen. Andere Gründe, nicht Open Source zu werden, können sein, Konkurrenz zu vermeiden oder einige potenzielle Sicherheitslücken im eigenen System nicht aufzudecken.

Wenn jemand seine Arbeit mit mir teilen möchte, bin ich dankbar. Aber ich erwarte nicht, dass andere verpflichtet werden, ihre Arbeit zu teilen.