The Web3 Foundation is looking to attract teams for the development of an alternative implementation of Polkadot Runtime Environment (PRE), which is a core component of Polkadot.
The first step in writing a fully-fledged Polkadot implementation is to start by writing an implementation of the PRE. The idea behind the PRE is that it can be used to create standalone blockchains, while also allowing connectivity to the Polkadot network.
The Web3 Foundation contracted Parity Technologies to write the first implementation of Polkadot. Their implementation of the PRE is called ‘Substrate’. This product is currently a PRE but will have additional functionality in the future. For this grant we are concerned only with the PRE. The current Substrate code is sitting in the Polkadot GitHub repo and is implemented in Rust.
For more information please see the following document for further details on how to apply:
Polkadot Runtime Environment: Alternative Implementation Grant
(FYI, the following languages are preferred: Go (above all others), C++, and Java.)
Is there a preferred language for the implementation?
An alternate implementation in Rust or Go would be very useful early on, since a lot of the current blockchain stack is written in one or the other.
Down the road, it would be interesting to get an implementation in JavaScript (if it ever supports compilation to wasm) or Java/C#.
I'm due to release more information tomorrow (a little behind expected timeframe!).
The reference implementation is in Rust (i.e. Parity Tech), plus there is Jaco's JS implementation (a full Substrate client, but without block authoring).
The preferred implementations are: Java, Go, C++.
So, with some luck, I can release the full details tomorrow! :-)
@EdwardAThomson Are there timelines for the grant applications?
I'm seeking to help a team in this endeavour, specially using Go. If there's an existing team that is looking for help, please contact me. gfrеⅾеrісο аt іģսаzս ḋοt ѕοⅼսtіоոѕ or on Twitter: ģсѕfrеḋ.
@gcsfred2 The applications will be open for a while. At the moment there is a hope to have a couple more implementations, so the application process will remain open at least until we have a few interested teams working on this issue.
Hello, our team was in Berlin during blockchain week and had an incredible time getting to know people from the Parity team. We showed interest in writing an implementation of the PRE in Go. I will be filling out the application over the next few days. Thank you!
Hey ChainSafe team, that's great to hear! I see you have an email address on your profile. I will drop an email to say hello. Go is one of our preferred languages, so your application is of interest. We are starting to get quite a bit of interest now in writing alternative implementations.
Keen to be involved in core development of Polkadot. Form submitted! :)
Adding a list of relevant videos and blogs.
Videos:
Blogs etc:
Technical Chat channel:
We'd recommend jumping into the Substrate Technical channel and start asking questions. Some developers are on-hand and answering questions, plus there is also a handful of community members who are becoming experts too!
Thanks for all of the interest so far. We have received a number of application forms, but the application process is still open in case any teams are wondering and were thinking of submitting a proposal. We are hoping to select 2 or 3 teams to develop alternative implementations, but we haven't selected anyone yet!
A further update on this topic. Many of you have been asking about timescales and the amount of effort involved.
I had a quick chat with Jaco, a dev in Parity. He is the one who created the implementation in JavaScript. Hopefully this gives you a better idea. He worked pretty much solo too!
How long would you expect a dev / team of devs to create an implementation of Substrate?
"Difficult to say - the issue is that my implementation found a lot of bugs in the Rust libp2p code, so I was waiting for (what felt like forever), for fixes. Too early.
So first thing, what language - if not JS, Go or Rust, they need to write their own libp2p implementation. (Maybe there is a way to use the Go/Rust versions as libraries)"
"Then the tricky bits are:
As a bare minimum, as he see it:
"If in the implementation is in Go, the Trie they can actually take the Ethereum version and "just" drop in blake2 and the parity-codec."
For this grant, we are looking for the consensus part to get done too.
Hello, just filled out the form for C++ implementation.
Hello, just filled out the form for C++ implementation.
Received! Thank you! @Yuvasee
The application process is still open. We will take a few more applications before making any decisions.
Did you know about our W3S conference? There are now reduced price and free tickets available:
https://medium.com/web3foundation/endowing-an-open-inclusive-community-at-web3-summit-3013456f4f84
Hi everyone, we've had some questions about the development process and we thought it would be good to share the answers with everyone.
To what extend is the present implementation a reference?
An independent implementation is sought? In that case, is it OK if the new implementation is based on the Rust implementation of Substrate?
Better performance is sought? If so, what are the requirements/symptoms that we want to improve/cure?
Better portability for multiple platforms?
Is there a rationale behind the preference for Go?
Can we re-use an existing WASM implementation?
Are we required to also implement native execution, or just the WASM interpreter?
Do formal specifications or acceptance tests exist, or could they be developed as a first phase of the project?
Is there any formal deadline?
In what form should we apply for a grant and to whom should the request be addressed?
Who will give the OK / decide at the end for the grant application?
In progress specification: https://github.com/w3f/polkadot-re-spec/blob/master/polkadot_re_spec.pdf
We have an interest in supporting this effort by doing a minimal port of the implementation of Parity codec, and any other rust modules with the idea to support writing a runtime in Go. So not a full alternative implementation.
This task of course will be taken on by the team selected to do the full Go implementation. So I was looking to see if there is possibility of collaboration or if no work has started at all, to perhaps apply for a grant for a narrower scope of work?
Most helpful comment
Hello, our team was in Berlin during blockchain week and had an incredible time getting to know people from the Parity team. We showed interest in writing an implementation of the PRE in Go. I will be filling out the application over the next few days. Thank you!