You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-**Project Name:** Pallet for Decentralized Off-Chain Storage on Skynet
4
+
-**Team Name:** Skynet Labs
5
+
-**Payment Address:** ETH `0xa4e14Aa5F82Cd903d97BE09B921c97E7Fc43d909`
8
6
9
7
## Project Overview :page_facing_up:
10
8
@@ -31,8 +29,7 @@ At this point, we have a JS SDK to easily expose Skynet in the browser to users,
31
29
32
30
### Project Details
33
31
34
-
35
-
In its final form, the Skynet Pallet would allow projects built with Substrate FRAME to access any Skynet Portal on the network using off-chain workers in order to do the following on Skynet:
32
+
In its final form, the Skynet Substrate SDK made for use in Off-chain Worker Pallets would allow projects built with Substrate FRAME to access any Skynet Portal on the network using off-chain workers in order to do the following on Skynet:
36
33
37
34
- Upload a file or directory and return the skylink for use by the runtime
38
35
- Download a skyfile to storage or for use by runtime
@@ -46,7 +43,7 @@ In its final form, the Skynet Pallet would allow projects built with Substrate F
46
43
47
44
Communication with portals happens by utilizing portal HTTP APIs along with additional processing and cryptography on the client-side. Although Skynet interaction can appear to be merely REST-styled API requests, certain cryptographic tools are needed to 1) created well-formed requests and 2) verify the cryptographic proofs and signatures returned alongside HTTP responses. Without this additional tooling that requires "client-side" processing, most of Skynet's power is cutoff from the application.
48
45
49
-
In addition to this, decentralization is at the core of Skynet's ethos, so the Pallet must account for additional complexities over interacting with portal APIs that might not exist for a traditional API endpoint, including supporting portal accounts (similar to authorization), dealing with not-shared-in-common portals (where nodes could supply their own portal URL and API key), and porting our Skynet utility libraries to Rust to ensure full inoperability with browser javascript applications and creating and signing items like registry entries to enable SkyDB and Skylink v2 (allowing content updating for a constant URL which can point to immutable skyfiles). For greater clarity and flexibility, we will separate the pallet codebase from the library of helper utils.
46
+
In addition to this, decentralization is at the core of Skynet's ethos, so the SDK must account for additional complexities over interacting with portal APIs that might not exist for a traditional API endpoint, including supporting portal accounts (similar to authorization), dealing with not-shared-in-common portals (where nodes could supply their own portal URL and API key), and porting our Skynet utility libraries to Rust to ensure full inoperability with browser javascript applications and creating and signing items like registry entries to enable SkyDB and Skylink v2 (allowing content updating for a constant URL which can point to immutable skyfiles). For greater clarity and flexibility, we will separate the example pallet codebase from the SDK library of action and helper utils.
50
47
51
48
---
52
49
@@ -78,11 +75,11 @@ _To be more specific on the functionality needing to be built out in Milestone 1
78
75
- Then a hash of the public key and data key is taken and encoded into a skylink format (combining with a version number) before encoding to Base64 to generate the v2 Skylink.
79
76
- Reading a Skylink v2 involves a GET request, which returns the data from the pointed to immutable Skylink (if the Skylink v2 points to another Skylink v2, if acts recursively until immutable file is resolved). The portal also returns a "proof" containing the chain of registry entries (each a Skylink v2) that need their signatures verified.
80
77
81
-
---------
78
+
---
82
79
83
80
For this grant, we seek the support of the Web3 Foundation for doing an initial build-out of Skynet functionality. The Skynet Labs team (formerly Nebulous, creators of the Sia blockchain network) have extensive experience in blockchain development, but have much less experience in Rust and the Polkadot ecosystems. We would view this as an opportunity to build out support for many of the Skynet primitives and utility functions while working to find the most developer friendly way of exposing those to applications building with Substrate.
84
81
85
-
For more information on Skynet and our SDKs, see our [support guide](http://support.siasky.net/) and our [SDK documentation](http://siasky.net/docs/).
82
+
For more information on Skynet and our SDKs, see our [support guide](http://support.skynetlabs.com/) and our [SDK documentation](http://siasky.net/docs/).
86
83
87
84
### Ecosystem Fit
88
85
@@ -118,13 +115,13 @@ Some use cases where we believe Skynet will be useful for Substrate devs:
118
115
### Contact
119
116
120
117
***Contact Name:** Daniel Helm, _Developer Evangelist for Skynet Labs_
| 0b. | Documentation | We will provide both inline documentation of the code and a basic tutorial that explains how a user can use the pallet for basic off-chain functionality. |
163
+
| 0b. | Documentation | We will provide both inline documentation of the code and technical documentation that explains how a user can use the SDK in a pallet for basic off-chain functionality. |
167
164
| 0c. | Testing Guide | The code will have unit-test coverage (min. 70%) to ensure functionality and robustness. In the guide we will describe how to run these tests |
168
-
| 0d. | Sample Node & Frontend | We will document and provide a node and frontend for a trivial use case that integrates our pallet based off the Substrate Node Template and the Substrate Front End Template. |
169
-
| 1. | Skynet Off-Chain Worker Pallet (Skyfiles) | We will create a pallet to interact with Skynet from an off-chain worker. For Milestone 1, this will include uploading and downloading immutable files from Skynet using content-addressable skylinks, tying these uploads to a portal account. |
170
-
| 2. | Skynet Off-Chain Worker Pallet (Registry Entries) | Additional logic necessary to derive secret and public keys from a seed, construct registry entries, sign them and verify signatures. This is the core mutable primative needed for other mutable data. |
171
-
| 3. | Skynet Off-Chain Worker Pallet (Skylink V2) | Building on registry entries, we will create the functionality to create and access v2 Skylinks. These are Skylinks that point to other Skylinks, which the portal resolves and returns the pointed to immutable skyfile. |
172
-
| 4. | Skynet Off-Chain Worker Pallet (Repin) | Expose the ability to request that a portal pin an already exisiting Skyfile by only passing the skylink. |
165
+
| 0d. | Sample Node with OCW Pallet & Read-Only Frontend | We will document and provide a node and frontend for a trivial use case that integrates our SDK into an example ocw-pallet based off the Substrate Node Template. This also acts a minimal implementation example for developers to see how to use the SDK. |
166
+
| 1. | Skynet Substrate SDK for Off-Chain Worker Pallet (Skyfiles) | We will create a pallet to interact with Skynet from an off-chain worker. For Milestone 1, this will include uploading and downloading immutable files from Skynet using content-addressable skylinks, tying these uploads to a portal account. |
167
+
| 2. | Skynet Substrate SDK for Off-Chain Worker Pallet (Registry Entries) | Additional logic necessary to derive secret and public keys from a seed, construct registry entries, sign them and verify signatures. This is the core mutable primative needed for other mutable data. |
168
+
| 3. | Skynet Substrate SDK for Off-Chain Worker Pallet (Skylink V2) | Building on registry entries, we will create the functionality to create and access v2 Skylinks. These are Skylinks that point to other Skylinks, which the portal resolves and returns the pointed to immutable skyfile. |
169
+
| 4. | Skynet Substrate SDK for Off-Chain Worker Pallet (Repin) | Expose the ability to request that a portal pin an already exisiting Skyfile by only passing the skylink. |
> We intend to take the lessons learned from the first version of this pallet and extend Skynet functionality according to the needs of developers. What follows are some steps we would look to take outside of the scope of this grant.
| 1. | Skynet Off-Chain Worker Pallet (SkyDB and MySky File support) | We will extend the pallet from milestone 1 to interact with the primatives built on Skynet's registry. This mutable storage layer acts as key-value database from which SkyDB and MySky files are constructed. This allows getting and setting arbitrary data and pointing to JSON files, encrypted files, and arbitrary skyfiles pointed to by consistent MySky file paths. These use public/private key combinations for access-control. This will also contain functionality for generating decryption and derivation keys that are interoperable with Skynet's MySky SDK. |
182
-
| 2. | Skynet Off-Chain Worker Pallet (Verification) | We will extend the pallet from milestone 1 to allow for two important features: Verification of storage proofs for full end-to-end trustless infrastructure, and, pending Substrate's addition of long-running off-chain workers, subscribing to changes of SkyDB entries using Websockets. If this functionality is not yet in place for FRAME, we hope to work with core developers to prepare for implementing this functionality when the feature becomes available. |
177
+
| 1. | Skynet Substrate SDK for Off-Chain Worker Pallet (SkyDB and MySky File support) | We will extend the SDK from milestone 1 to interact with the primatives built on Skynet's registry. This mutable storage layer acts as key-value database from which SkyDB and MySky files are constructed. This allows getting and setting arbitrary data and pointing to JSON files, encrypted files, and arbitrary skyfiles pointed to by consistent MySky file paths. These use public/private key combinations for access-control. This will also contain functionality for generating decryption and derivation keys that are interoperable with Skynet's MySky SDK. |
178
+
| 2. | Skynet Substrate SDK for Off-Chain Worker Pallet (Verification) | We will extend the SDK from milestone 1 to allow for two important features: Verification of storage proofs for full end-to-end trustless infrastructure, and, pending Substrate's addition of long-running off-chain workers, subscribing to changes of SkyDB entries using Websockets. If this functionality is not yet in place for FRAME, we hope to work with core developers to prepare for implementing this functionality when the feature becomes available. |
183
179
184
180
### Community engagement
185
181
@@ -196,3 +192,13 @@ Skynet Labs will continue to develop Skynet by furthering integrations with bloc
196
192
**How did you hear about the Grants Program?** - Parity & Web3 Foundation Representatives
197
193
198
194
No work outside preliminary research has been done on the pallet so far. Skynet Labs does have investors, but we have no other contributors or grants related to this specific project.
195
+
196
+
## Update & Amendments
197
+
198
+
### 02/25/2022
199
+
200
+
We grossly underestimated the number of blockers and competing priorities we'd encounter as a team, and the timeline has now been exceeded by several months. We are ready to submit our work, and will do so soon.
201
+
202
+
As we better understood the ecosystem, we realized that a library for using Skynet in an off-chain worker was much more flexible for developing an application off-chain worker than was a proper pallet. As part of our deliverables, we now include the SDK library code [skynet-substrate](https://github.com/SkynetLabs/skynet-substrate), along with a substrate example off-chain worker and front-end showing how to use various features of the SDK.
203
+
204
+
This amendment also updates our company name, URL, and payout address.
0 commit comments