Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions deliveries/fennel-protocol-milestone-3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Milestone Delivery :mailbox:

**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/milestone-deliverables-guidelines.md).**

* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/Fennel_Protocol.md
* **Milestone Number:** 3

**Context**
Milestone 3 began using the identity and security features of Fennel Protocol for features allowing the creation of secure channels of communication, both on- and off-chain. The Whiteflag Protocol's Minimum Viable Implementation is included, meaning that our Signal pallet may be used to send authenticated and optionally encrypted messages about critical situations between members of the network. This Signal pallet also allows groups or organizations who have identified themselves and their cryptographic information to the network to display transient information in a manner that only permitted individuals can view. This transient information might include IP information for the CLI/self-hosted server pair created as part of this milestone, which allows for transmission of encrypted off-chain messages between users with identities on Fennel Protocol.

**Deliverables**

| Number | Deliverable | Link | Notes |
| ------------- | ------------- | ------------- |------------- |
| 0a. | License | https://github.com/fennelLabs/Fennel-Protocol/blob/main/LICENSE | Unlicense. |
| 0b. | Documentation | https://github.com/fennelLabs/Fennel-Protocol/wiki, https://fennellabs.com/Fennel-Protocol/doc/fennel_protocol_runtime/index.html, https://fennellabs.com/fennel-lib/fennel_lib/index.html, https://fennellabs.com/fennel-cli/fennel_cli/, https://fennellabs.com/fennel-server/fennel_server/ | Documentation is provided both as generated inline documentation and a wiki. |
| 0c. | Testing Guide | https://fennellabs.com/Fennel-Protocol/doc/fennel_protocol_runtime/index.html, https://github.com/fennelLabs/Fennel-Protocol/wiki/Testing-Milestone-3| Both automated testing and extrinsics calls are outlined. |
| 0d. | Docker | https://github.com/fennelLabs/Fennel-Protocol/blob/main/Dockerfile, https://github.com/fennelLabs/fennel-lib/blob/master/Dockerfile, https://github.com/fennelLabs/fennel-cli/blob/master/Dockerfile, https://github.com/fennelLabs/fennel-server/blob/master/Dockerfile | Docker Compose is used to run tests, benchmarks, and documentation. |
| 0e. | Article | https://fennellabs.com/FennelBlog/Milestone-Three/ | Self-hosted announcement article describing the purpose of the material included in this milestone. |
| 1. | Peer Retrieval | https://github.com/fennelLabs/fennel-cli, https://github.com/fennelLabs/fennel-server, https://github.com/fennelLabs/Fennel-Protocol/tree/main/pallets/signal | Part of the work done this milestone included a CLI/server pair used to interact with Fennel Protocol and create encrypted private communication channels between servers and clients. This includes full support for encrypting and transmitting information both through the chain and through normal TCP/IP sockets, and ties in with Deliverable 2 to allow for organizations using the same software to find and interface with one another with minimum leakage of critical information. |
| 2. | Encrypted Channels for IP Information | https://github.com/fennelLabs/fennel-server, https://github.com/fennelLabs/fennel-server | As mentioned in the previous deliverable, once the signal pallet supported finding other organizations sharing the same information/software it was necessary to create channels for those organizations to communicate critical information (like service IP addresses) to one another. Using fennel-lib, the CLI, server, and protocol were updated with the tools needed to negotiate encrypted communication paths, both on- and off-chain. |
| 3. | General-Purpose Signal Generation | https://github.com/fennelLabs/Fennel-Protocol/tree/main/pallets/signal | This is implemented as a pallet in our Substrate node used to send one-off pieces of data to the chain. We bypassed storage and used Events and an adapted version of Substrate's "remark" extrinsic to achieve the desired effect. |
| 4. | Whiteflag Authentication | https://github.com/fennelLabs/fennel-lib/tree/master/src/whiteflag, https://github.com/fennelLabs/fennel-lib/blob/d187658ed43fd9fa97f46e68ee564c88e463c9d0/src/whiteflag/wf_core/definitions.rs#L61 | The Whiteflag specification outlines an encode/decode scheme for binary messages which are then committed to the chain. This submission encompasses the basics of encoding and decoding a usable message, with tests demonstrating full support for Whiteflag's two authentication methods. Linked here are the full Whiteflag module and a function demonstrating data extraction for an AUTHENTICATION message. |
| 5. | Whiteflag Reference Codes 1, 2, and 4 | https://github.com/fennelLabs/fennel-lib/tree/master/src/whiteflag, https://github.com/fennelLabs/fennel-lib/blob/d187658ed43fd9fa97f46e68ee564c88e463c9d0/src/whiteflag/wf_core/definitions.rs#L26 | The Whiteflag specification outlines an encode/decode scheme for binary messages which are then committed to the chain. This submission encompasses the basics of encoding and decoding a usable message, with tests demonstrating full support for Whiteflag's two authentication methods. Linked here are the full Whiteflag module and a function that interacts with the basic fields required in a Whiteflag message. Our implementation supports generation of the basic reference codes used to create, update, discontinue, and rescind messages sent to the network. |

**Additional Information**
The full repositories for this milestone are hosted at https://github.com/fennelLabs/Fennel-Protocol and https://github.com/fennelLabs/fennel-lib, https://github.com/fennelLabs/fennel-cli, and https://github.com/fennelLabs/fennel-server.