Skip to content

Commit 92ff243

Browse files
authored
Skynet Substrate - update (#845)
* Skynet Substrate - update * Skynet Substrate - update timeline and description
1 parent bd0e5e4 commit 92ff243

File tree

1 file changed

+33
-27
lines changed

1 file changed

+33
-27
lines changed

applications/skynet-substrate-integration.md

Lines changed: 33 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
# W3F Open Grant Proposal
22

3-
4-
* **Project Name:** Pallet for Decentralized Off-Chain Storage on Skynet
5-
* **Team Name:** Skynet Labs
6-
* **Payment Address:** BTC `39aFV1bfcxgjbYrWjgMs3A2fjM7bkKouhg`
7-
3+
- **Project Name:** Pallet for Decentralized Off-Chain Storage on Skynet
4+
- **Team Name:** Skynet Labs
5+
- **Payment Address:** ETH `0xa4e14Aa5F82Cd903d97BE09B921c97E7Fc43d909`
86

97
## Project Overview :page_facing_up:
108

@@ -31,8 +29,7 @@ At this point, we have a JS SDK to easily expose Skynet in the browser to users,
3129

3230
### Project Details
3331

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:
3633

3734
- Upload a file or directory and return the skylink for use by the runtime
3835
- 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
4643

4744
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.
4845

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.
5047

5148
---
5249

@@ -78,11 +75,11 @@ _To be more specific on the functionality needing to be built out in Milestone 1
7875
- 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.
7976
- 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.
8077

81-
---------
78+
---
8279

8380
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.
8481

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/).
8683

8784
### Ecosystem Fit
8885

@@ -118,13 +115,13 @@ Some use cases where we believe Skynet will be useful for Substrate devs:
118115
### Contact
119116

120117
* **Contact Name:** Daniel Helm, _Developer Evangelist for Skynet Labs_
121-
* **Contact Email:** daniel@siasky.net
122-
* **Website:** https://siasky.net/
118+
* **Contact Email:** daniel@skynetlabs.com
119+
* **Website:** https://skynetlabs.com/
123120

124121
### Legal Structure
125122

126123
- **Registered Address:** 177 Huntington Ave Ste 1703, PMB 71942, Boston, Massachusetts 02115-3153 US
127-
- **Registered Legal Entity:** Nebulous Inc.
124+
- **Registered Legal Entity:** Skynet Labs
128125

129126
### Team's experience
130127

@@ -150,36 +147,35 @@ Preliminary research has been undertaken into the Polkadot ecosystem generally a
150147
## Development Roadmap :nut_and_bolt:
151148

152149
### Overview
153-
* **Total Estimated Duration:** 3 Months
154-
* **Full-time equivalent (FTE):** 0.5 FTE ([see](https://en.wikipedia.org/wiki/Full-time_equivalent))
150+
* **Total Estimated Duration:** 8 Months
151+
* **Full-time equivalent (FTE):** 0.1875 FTE ([see](https://en.wikipedia.org/wiki/Full-time_equivalent))
155152
* **Total Costs:** $30,000
156153

157-
### Milestone 1 - Exploratory Skynet Immutable Off-Chain Storage Pallet (Immutable Data Functionality)
158-
* **Estimated Duration:** 3 months
159-
* **FTE:** 0.5 FTE
154+
### Milestone 1 - Exploratory Skynet Immutable Off-Chain Storage SDK (Immutable Data Functionality)
155+
* **Estimated Duration:** 8 months
156+
* **FTE:** 0.1875 FTE
160157
* **Costs:** $30,000
161158

162159

163160
| Number | Deliverable | Specification |
164161
| ------ | ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
165162
| 0a. | License | MIT |
166-
| 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. |
167164
| 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. |
173170

174171
### Future Milestone - Skynet Immutable Off-Chain Storage Pallet (Mutable Data Functionality)
175172

176173
> 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.
177174
178-
179175
| Number | Deliverable | Specification |
180176
| ------ | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
181-
| 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. |
183179

184180
### Community engagement
185181

@@ -196,3 +192,13 @@ Skynet Labs will continue to develop Skynet by furthering integrations with bloc
196192
**How did you hear about the Grants Program?** - Parity & Web3 Foundation Representatives
197193

198194
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

Comments
 (0)