General-grants-program: Polkadot Runtime Environment: Alternative Implementation Grant

Erstellt am 18. Juli 2018  ·  16Kommentare  ·  Quelle: w3f/General-Grants-Program

Die Web3 Foundation sucht Teams für die Entwicklung einer alternativen Implementierung von Polkadot Runtime Environment (PRE), einer Kernkomponente von Polkadot.

Der erste Schritt beim Schreiben einer vollwertigen Polkadot-Implementierung besteht darin, mit dem Schreiben einer Implementierung des PRE zu beginnen. Die Idee hinter dem PRE ist, dass es zum Erstellen eigenständiger Blockchains verwendet werden kann und gleichzeitig eine Verbindung zum Polkadot-Netzwerk ermöglicht.

Die Web3 Foundation hat Parity Technologies beauftragt, die erste Implementierung von Polkadot zu schreiben. Ihre Implementierung des PRE wird „Substrat“ genannt. Dieses Produkt ist derzeit ein PRE, wird aber in Zukunft über zusätzliche Funktionen verfügen. Für diesen Zuschuss beschäftigen wir uns nur mit dem PRE. Der aktuelle Substrate-Code befindet sich im Polkadot GitHub Repo und ist in Rust implementiert .

Weitere Informationen zur Antragstellung finden Sie in folgendem Dokument:

Polkadot Runtime Environment: Alternative Implementation Grant

(FYI, die folgenden Sprachen werden bevorzugt: Go (vor allem), C++ und Java.)

Core Tech Sought

Hilfreichster Kommentar

Hallo, unser Team war während der Blockchain-Woche in Berlin und hatte eine unglaubliche Zeit, Leute aus dem Parity-Team kennenzulernen. Wir zeigten Interesse daran, eine Implementierung des PRE in Go zu schreiben. Ich werde den Antrag in den nächsten Tagen ausfüllen. Danke!

Alle 16 Kommentare

Gibt es eine bevorzugte Sprache für die Implementierung?

Eine alternative Implementierung in Rust oder Go wäre schon früh sehr nützlich, da ein Großteil des aktuellen Blockchain-Stacks in dem einen oder anderen geschrieben ist.

Später wäre es interessant, eine Implementierung in JavaScript (falls es jemals die Kompilierung zu wasm unterstützt) oder Java/C# zu erhalten.

Ich werde morgen weitere Informationen veröffentlichen (etwas hinter dem erwarteten Zeitrahmen!).

Die Referenzimplementierung ist in Rust (dh Parity Tech), außerdem gibt es die JS-Implementierung von Jaco (ein vollständiger Substrate-Client, aber ohne Block-Authoring).

Die bevorzugten Implementierungen sind: Java, Go, C++.

Mit etwas Glück kann ich also morgen die vollständigen Details veröffentlichen! :-)

@EdwardAThomson Gibt es Fristen für die Förderanträge?

Ich versuche, einem Team bei diesem Unterfangen zu helfen, insbesondere mit Go. Wenn es ein bestehendes Team gibt, das Hilfe sucht, kontaktieren Sie mich bitte. gfrеⅾeriсο auf der aktuellen Zeit oder auf Twitter: ģсsfrеḋ.

@gcsfred2 Die Bewerbungen werden noch eine Weile geöffnet sein. Im Moment besteht die Hoffnung auf ein paar weitere Implementierungen, daher bleibt der Bewerbungsprozess offen, zumindest bis wir einige interessierte Teams haben, die an diesem Thema arbeiten.

Hallo, unser Team war während der Blockchain-Woche in Berlin und hatte eine unglaubliche Zeit, Leute aus dem Parity-Team kennenzulernen. Wir zeigten Interesse daran, eine Implementierung des PRE in Go zu schreiben. Ich werde den Antrag in den nächsten Tagen ausfüllen. Danke!

Hey ChainSafe-Team, das freut uns zu hören! Ich sehe, Sie haben eine E-Mail-Adresse in Ihrem Profil. Ich schicke eine E-Mail, um Hallo zu sagen. Go ist eine unserer bevorzugten Sprachen, daher ist Ihre Anwendung von Interesse. Wir fangen jetzt an, ein ziemliches Interesse daran zu wecken, alternative Implementierungen zu schreiben.

Ich bin sehr daran interessiert, an der Kernentwicklung von Polkadot beteiligt zu sein. Formular gesendet! :)

Hinzufügen einer Liste relevanter Videos und Blogs.

Videos :

Blogs usw .:

Technischer Chat-Kanal :

Wir empfehlen, in den Substrate Technical Channel zu springen und Fragen zu stellen. Einige Entwickler sind vor Ort und beantworten Fragen, außerdem gibt es auch eine Handvoll Community-Mitglieder, die ebenfalls zu Experten werden!

Danke für das bisherige Interesse. Wir haben eine Reihe von Bewerbungsformularen erhalten, aber das Bewerbungsverfahren ist noch offen, falls Teams Fragen haben und daran denken, einen Vorschlag einzureichen. Wir hoffen, 2 oder 3 Teams auswählen zu können, um alternative Implementierungen zu entwickeln, aber wir haben noch niemanden ausgewählt!

Ein weiteres Update zu diesem Thema. Viele von Ihnen haben nach Zeitplänen und Aufwand gefragt.

Ich hatte ein kurzes Gespräch mit Jaco, einem Entwickler bei Parity. Er ist derjenige, der die Implementierung in JavaScript erstellt hat. Hoffentlich gibt Ihnen das eine bessere Vorstellung. Er hat auch ziemlich alleine gearbeitet!

Wie lange würden Sie erwarten, dass ein Entwickler/Team von Entwicklern eine Implementierung von Substrate erstellt?

"Schwer zu sagen - das Problem ist, dass meine Implementierung viele Fehler im libp2p-Code von Rust gefunden hat, also habe ich (was sich wie eine Ewigkeit angefühlt hat) auf Korrekturen gewartet. Zu früh.

Also als erstes, welche Sprache - wenn nicht JS, Go oder Rust, müssen sie ihre eigene libp2p-Implementierung schreiben. (Vielleicht gibt es eine Möglichkeit, die Go/Rust-Versionen als Bibliotheken zu verwenden)"

"Dann sind die kniffligen Teile:

  • Implementierung des Parity-Codecs (2+ Wochen, um es richtig zu machen) - erforderlich für alles, was mit Netzwerken oder RPC zu tun hat
  • Implementierung einer Trie-DB - sie können von dem lernen, was in JS-, Rust- und Ethereum-Clients gemacht wird, aber Substrate hat ihre eigene Version. (Auch hier kann es möglich sein, die Rust-Version als Bibliothek zu verwenden.)
  • WASM-Umgebung, dieses Zeug ist nirgendwo anders als im Code dokumentiert - ich habe hier ungefähr 1+ Monat gebraucht, aber wieder einmal haben sich die Implementierungen die ganze Zeit geändert (zu früh)
    Dann gibt es die Kleinigkeiten – Blockchain-DB (Over-and-Over-State-Trie), RPC-Aufrufe, potenzieller Light-Client.

Als absolutes Minimum, wie er es sieht:

  • Versuch
  • libp2p
  • WASM-Umgebung

"Wenn in der Implementierung Go, Trie ist, können sie tatsächlich die Ethereum-Version nehmen und "nur" blake2 und den Parity-Codec einwerfen."

Für diesen Zuschuss suchen wir auch nach dem Konsensteil .

Hallo, habe gerade das Formular für die C++-Implementierung ausgefüllt.

Hallo, habe gerade das Formular für die C++-Implementierung ausgefüllt.

Empfangen! Danke! @Yuvasee

Das Bewerbungsverfahren ist noch offen. Wir werden noch ein paar Bewerbungen entgegennehmen, bevor wir eine Entscheidung treffen.

Wussten Sie schon von unserer W3S-Konferenz? Ab sofort sind ermäßigte und kostenlose Eintrittskarten erhältlich:

https://medium.com/web3foundation/endowing-an-open-inclusive-community-at-web3-summit-3013456f4f84

Hallo zusammen, wir hatten einige Fragen zum Entwicklungsprozess und dachten, es wäre gut, die Antworten mit allen zu teilen.

1. Verstehen der Motivation für eine alternative Implementierung

  • Inwieweit ist die vorliegende Implementierung eine Referenz?

    • Es gibt eine Spezifikation, die sich im Entwurfsstadium befindet. Hoffe, es bald zu teilen.
    • Die aktuelle Implementierung ist wie eine Referenzspezifikation, aber sie ist es nicht wirklich.
    • RFP wurde früh gestartet, damit wir mit den Teams sprechen konnten.
    • Wir schlugen vor, dass sie frühzeitig einen Vorschlag einholen.
  • Eine eigenständige Umsetzung wird angestrebt? Ist es in diesem Fall in Ordnung, wenn die neue Implementierung auf der Rust-Implementierung von Substrate basiert?

    • So unabhängig wie möglich. Auf eine idiomatische Weise gemacht, die zu dieser Sprache passt.
    • Keine direkte Übersetzung.
    • Fördern Sie eine zusätzliche Community von Entwicklern. Binden Sie sich nicht an eine bestimmte Gruppe von Entwicklern.
    • Kann auch dabei helfen, anhaltende Diskrepanzen zwischen Implementierungen zu identifizieren.
    • Da es sich um ein dezentrales Netzwerk handelt, benötigen wir alternative Implementierungen. Sie möchten nicht, dass ein Team die Entwicklung des Netzwerks kontrolliert.
  • Bessere Leistung wird angestrebt? Wenn ja, was sind die Anforderungen/Symptome, die wir verbessern/heilen möchten?

    • Nicht wirklich. Rost ist schnell genug. Wir möchten wirklich neue Entwicklergemeinschaften erreichen und die Dezentralisierung (Netzwerkresilienz und Governance) verbessern.
  • Bessere Portabilität für mehrere Plattformen?

    • Erwarten Sie, dass es unter Linux und Mac funktioniert. (Unix-ähnliche Plattformen)
    • Wäre super unter Windows.
  • Gibt es einen Grund für die Bevorzugung von Go?

    • Sie möchten die bestehende Go-Community einbeziehen.
    • Es gibt bereits einen Wasm-Interpreter in Go. Es könnte also einfacher sein: https://github.com/perlin-network/life
    • Wir werden voraussichtlich mindestens 2 Implementierungen finanzieren. ZB C++ und Go.
    • Es gibt noch mehr in C++ zu schreiben. Wahrscheinlich weniger wiederverwendbarer Code. Möglicherweise keine libp2p in C++. Weniger Wasm-Unterstützung.

2. Verständnis der Implementierung rund um WASM

  • Können wir eine vorhandene WASM-Implementierung wiederverwenden?

    • Kann einen vorhandenen Interpreter in der Sprache der Implementierung wiederverwenden.
    • Es ist möglicherweise möglich, die Rust-Implementierung mit einem C++ PRE zu verwenden, da es Bindungen gibt, aber es wäre besser, einen C++-Interpreter zu haben. Wenn die C++-Implementierung nicht großartig ist, stellen Sie entweder Pull-Requests oder forken Sie und verbessern Sie sie.
  • Müssen wir auch die native Ausführung oder nur den WASM-Interpreter implementieren?

    • Für die Spezifikationskonformität nicht erforderlich.
    • Kann einen zusätzlichen Schritt machen.
    • Es werden häufig Teile der Wasm-Logik ausgeführt. Es ist wichtig, die Logik als nativen Code ausführen zu können.

3. Verstehen der „Rules of Engagement“

  • Existieren formale Spezifikationen oder Akzeptanztests oder könnten diese in einer ersten Phase des Projekts entwickelt werden?

    • Wir brauchen diese, haben sie aber nicht.
    • Wäre bereit, die Tests als separates Arbeitspaket zu betrachten.
  • Gibt es eine formelle Frist?

    • Keine Frist.
    • Idealerweise eine Implementierung bis Ende Q1 2019. Ermöglicht der Implementierung, mit Polkadot zu arbeiten.
  • In welcher Form ist ein Stipendium zu beantragen und an wen ist der Antrag zu richten?

    • Antragsformular (wie im Originalpost).
    • Am besten vorher ein grobes Angebot einholen. Auch wenn es nicht sehr gut ausgearbeitet ist.
  • Wer gibt das OK / entscheidet am Ende über den Förderantrag?

    • Web3-Stiftung. Peter wird die Leitung übernehmen, aber andere werden involviert sein (z. B. relevante Personen von Parity).
    • Wir können zusätzliche Informationen anfordern, um einige Dinge zu klären.

Wir haben ein Interesse daran, diese Bemühungen zu unterstützen, indem wir eine minimale Portierung der Implementierung des Parity-Codecs und aller anderen Rust-Module mit der Idee durchführen, das Schreiben einer Laufzeit in Go zu unterstützen. Also keine vollständige alternative Implementierung.

Diese Aufgabe wird natürlich von dem Team übernommen, das für die vollständige Go-Implementierung ausgewählt wurde. Ich wollte also sehen, ob es eine Möglichkeit der Zusammenarbeit gibt, oder, wenn überhaupt keine Arbeit begonnen hat, vielleicht ein Stipendium für einen engeren Arbeitsbereich beantragen?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen