Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Etf Network Proposal #2090

Closed
wants to merge 9 commits into from
Closed

Etf Network Proposal #2090

wants to merge 9 commits into from

Conversation

driemworks
Copy link
Contributor

Project Abstract

This is a followup to cryptex.

The ETF Network (“encryption to the future”) is a substrate-based blockchain that uses a proof-of-extract consensus (working title), enabling timelock encryption. The ETF Network's consensus mechanism leverages identity-based encryption and DLEQ proofs to leak IBE secret keys with each block produced in a publicly verifiable way. In our initial grant, we delivered a proof of authority version of our consensus mechanism, along with rust and typescript libraries for enabling timelock encryption in standalone libraries and in the browser, along with a proof-of-concept auction application.

Primarily, the goal of this follow-up grant is to develop a mechanism for secure delayed transactions on the ETF network, where transactions can remain encrypted in runtime storage until desired secrets are leaked. We intend to accomplish this by introducing a new proxy type, the Future proxy, which will be capable of using our timelock primitive to submit delayed transactions to the ETF Network. We also aim to ensure the security and scalability of the network by developing a proof-of-stake version of our consensus mechanism. We do this by implementing a dynamic-committee proactive secret sharing scheme and integrating it with the Babe consensus mechanism. We will revisit the sealed bid auction developed in our previous grant, using delayed transactions rather than timelocked bids. As a result, this demonstrates the ability to participate in non-interactive, trustless MPC protocols via smart contracts. We will also develop browser-based tools (etf.js and a transaction manager dapp) that allows users to easily construct, manage, and monitor delayed transactions and a user's status as a Future proxy. We conclude by moving one step closer to be a parachain by ensuring Cumulus compatibility and deploying our testnet to rococo, along with our auction platform and the setup of robust telemetry and monitoring tools.

Grant level

  • Level 1: Up to $10,000, 2 approvals
  • Level 2: Up to $30,000, 3 approvals
  • Level 3: Unlimited, 5 approvals (for >$100k: Web3 Foundation Council approval)

Application Checklist

  • The application template has been copied and aptly renamed (project_name.md).
  • I have read the application guidelines.
  • Payment details have been provided (bank details via email or Polkadot (USDC & USDT) or BTC address in the application).
  • The software delivered for this grant will be released under an open-source license specified in the application.
  • The initial PR contains only one commit (squash and force-push if needed).
  • The grant will only be announced once the first milestone has been accepted (see the announcement guidelines).
  • I prefer the discussion of this application to take place in a private Element/Matrix channel. My username is: @_______:matrix.org (change the homeserver if you use a different one)

Copy link
Contributor

github-actions bot commented Nov 7, 2023

CLA Assistant Lite bot All contributors have signed the CLA ✍️ ✅

@driemworks
Copy link
Contributor Author

I have read and hereby sign the Contributor License Agreement.

Copy link
Collaborator

@Noc2 Noc2 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks a lot for the application. I have one initial question: have you already considered other sources of funding, like VCs or the treasury, in case you plan not to have a token? The grants program tries not to fund projects over a longer period of time since projects shouldn’t rely on us.

@Noc2 Noc2 added the changes requested The team needs to clarify a few things first. label Nov 7, 2023
@driemworks
Copy link
Contributor Author

driemworks commented Nov 7, 2023

Hey @Noc2! We have considered other sources of funding for the subsequent phase of the project. Right now we have a small team and are trying to stay bootstrapped, so would like to forgo any VC involvement until we have a solid product (as our proposal is well thought out but still a bit experimental). The next phase of the project will delve into the cross-chain aspects of our idea and we are leaning towards creating a treasury proposal once we're ready for that, since if well executed it should provide value to other chains.

in case you plan not to have a token?

We do intend to have an inflationary token. Initially it is used to incentivize validators and as payments tx fees. In the future we intend to add a governance layer as well (to vote on network upgrades, features, constants, etc.).

Copy link
Contributor

@keeganquigley keeganquigley left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the changes @driemworks format looks good now. One additional request:

  • We usually don't pay for hosting costs. Could you remove the last deliverable and perhaps lower the cost a bit?

@driemworks
Copy link
Contributor Author

@keeganquigley I updated the proposal to remove the cumulus-specific milestone and adjusted the costs accordingly.

| **1.** | Future Proxy Manager | We implement a future proxy manager component as the initial piece. This component includes account derivation and proxy management (set self as future) capabilities. This will rely on the proxy utilities developed in the etf.js library during milestone (2). |
| **2.** | Scheduler UI | We develop a visual tool for defining a chain of delayed transactions. This component builds transactions using the txwrapper-etf, encrypts messages with the etf.js encryption functions, and signs transactions using polkadotjs. |
| **3.** | Explorer UI | We build a user interface to monitor the status of scheduled transactions and to access execution details. This interface will heavily rely on events emitted by the network. In addition, we explore the usage of tools such as Subquery to enhance and streamline this experience. |
| **4.** | Hosting | We host the UI on IPFS and also on Vercel to ensure decentralization of the application. Specifically, we will host our build on IPFS Infura. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @driemworks I'm still seeing hosting costs listed in M4 as well, if you could remove them from here too.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed! I left it as a 'note' under the milestone, since we still intend to do it. Just to make sure I understand, w3f doesn't fund hosting-specific tasks, would cumulus-compatibility and rococo-deployment tasks also fall under that too?

Copy link
Contributor

@keeganquigley keeganquigley Nov 14, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@driemworks yes exactly, as we don't cover deployment costs. Looks good, I will mark as ready for review and ping the committee. Thanks!

@keeganquigley keeganquigley added ready for review The project is ready to be reviewed by the committee members. and removed changes requested The team needs to clarify a few things first. labels Nov 14, 2023
@keeganquigley keeganquigley self-assigned this Nov 14, 2023
Copy link
Contributor

@keeganquigley keeganquigley left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @driemworks I marked it as ready for review but I suppose I do have one more question. Would you be willing to reduce the rate, as it seems a bit high for 3 months with 3 FTE. Also have you thought about going for treasury funding, or otherwise how do you plan to fund the project after this grant?

@driemworks
Copy link
Contributor Author

We reduced our rates for each of the milestones.

Regarding funding: We are planning on pursuing funding through the treasury in the next phase of the project, where we intend to use the outcome of this grant to enable cross-chain capabilities (with delayed transactions). We didn't want to go for treasury funding with the current proposal as it is a somewhat experimental design and doesn't immediately impact other parties in the ecosystem (but it will in the future). We are also open to/considering other external funding opportunities as well once we have a solid product ready.

@driemworks
Copy link
Contributor Author

@keeganquigley We would like to make some changes to our proposal, specifically related to the proxy/nonce handling idea. Can we put the review on hold until we make that update? Likely by tomorrow.

@keeganquigley
Copy link
Contributor

Thanks for the update @driemworks sure thing, I will mark it as on hold. Feel free to ping me once the changes have been implemented.

@keeganquigley keeganquigley added on hold There is an external blocker, such as another grant in progress. and removed ready for review The project is ready to be reviewed by the committee members. labels Nov 21, 2023
* update proposal with new delay tx approach

* update mermaid indents

* change mermaid formatting

* add test diagram

* fix diagrams

* update milestones

* move tlock auction to future work

* cleanup

* final updates

* fix colors

* fix colors

* update milestones

* move tlock auction description

* final version
@driemworks
Copy link
Contributor Author

@keeganquigley I've made the updates, it's ready to go again.

@keeganquigley keeganquigley added ready for review The project is ready to be reviewed by the committee members. and removed on hold There is an external blocker, such as another grant in progress. labels Nov 22, 2023
Copy link
Collaborator

@takahser takahser left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@driemworks this looks interesting, but after already funding your team through 3 past grants and $60k I believe it'd be good to start exploring other funding alternatives as well, as we don't want teams to solely rely on our program for funding. We have recently launched the decentralized futures program that might be a good fit for your project. Other funding avenues include treasury (as already mentioned) or VC funding. Would you be open to consider any of these options?

Comment on lines +419 to +420
| **1.** | Scheduler UI (2 weeks) | We develop a visual tool for defining a chain of delayed transactions. This component builds transactions using the txwrapper-etf, encrypts messages with the etf.js encryption functions, and signs transactions using polkadotjs. |
| **2.** | Explorer UI (2 weeks) | We build a user interface to monitor the status of scheduled transactions and to access execution details. This interface will heavily rely on events emitted by the network. In addition, we explore the usage of too ls such as Subquery to enhance and streamline this experience. |
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For UI-based deliverables we'd usually require some wireframes.

| **0c.** | Testing and Testing Guide (.5 weeks) | Core functions will be fully covered by comprehensive unit tests to ensure functionality and robustness. This includes unit tests for the DPSS impl, its integration into Aura, the timelock-encryption modifications, and code modifications needed to run within a TEE. We will use the cargo tarpauling tool to ensure > 80% coverage on all new lines of code. We will also perform benchmarking of the DPSS implementation, as well as its integration in to Aura, and ensure any performance issues are well-documented if unabel to be entirely resolved. |
| **0d.** | Docker (.5 day) | We will provide a Dockerfile(s) for a node which uses the consensus mechanism build as part of deliverable (2). |
| **0e.** | Article (2 days) | We will publish a substack article detailing the deliverables, accomplishments, and obstacles encountered during the implementation of this milestone. |
| **1.** | Implement DPSS (2 weeks) | We implement a dynamic committee proactive secret sharing scheme using rust. This will be an open source implementation based on [this paper](https://eprint.iacr.org/2022/971.pdf). We implement this using Arkworks, and will experiement with replacing the paillier encryption + ZKP construction with el gamal + DLEQ proofs. We do this as part of the etf-crypto-primtives code base, which is part of the etf-sdk. We also perform benchmarking of our construction. We will also test performance of the implementation by running benchamrks (like with [hyperfine](https://github.com/sharkdp/hyperfine)). |
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| **1.** | Implement DPSS (2 weeks) | We implement a dynamic committee proactive secret sharing scheme using rust. This will be an open source implementation based on [this paper](https://eprint.iacr.org/2022/971.pdf). We implement this using Arkworks, and will experiement with replacing the paillier encryption + ZKP construction with el gamal + DLEQ proofs. We do this as part of the etf-crypto-primtives code base, which is part of the etf-sdk. We also perform benchmarking of our construction. We will also test performance of the implementation by running benchamrks (like with [hyperfine](https://github.com/sharkdp/hyperfine)). |
| **1.** | Implement DPSS (2 weeks) | We implement a dynamic committee proactive secret sharing scheme using rust. This will be an open source implementation based on [this paper](https://eprint.iacr.org/2022/971.pdf). We implement this using Arkworks, and will experiment with replacing the paillier encryption + ZKP construction with el gamal + DLEQ proofs. We do this as part of the etf-crypto-primitives code base, which is part of the etf-sdk. We also perform benchmarking of our construction. We will also test the performance of the implementation by running benchmarks (like with [hyperfine](https://github.com/sharkdp/hyperfine)). |

@driemworks
Copy link
Contributor Author

@takahser thanks for the feedback. We were considering applying for the futures program instead, but we weren't sure if we should yet since we opened this proposal before the announcement. We're definitely open to going that route if it would be a better fit for the project (which seems to be the general consensus). We made a forum post about the project last week and have the template for the futures program, so we would essentially just need to transfer our proposal to the template and complete the application. I think we can go ahead and close out the proposal in that case.

Copy link
Collaborator

@Noc2 Noc2 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the update. In this case, I will close the application here. Let us know if you have any questions about the decentralized future program, and feel free to join the element channel here: https://matrix.to/#/#df:web3.foundation

@Noc2 Noc2 closed this Nov 25, 2023
@takahser
Copy link
Collaborator

@driemworks sounds good! Note that I'd still recommend you to include wireframes for the UI-based deliverables. This will allow the reviewers to get a better picture of what to expect from your proposal. Good luck!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ready for review The project is ready to be reviewed by the committee members.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants