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

Add Melodot proposal #1804

Merged
merged 3 commits into from
Jul 10, 2023
Merged

Add Melodot proposal #1804

merged 3 commits into from
Jul 10, 2023

Conversation

DarkingLee
Copy link
Contributor

Project Abstract

Melodot is an incentive-compatible data availability layer. Melodot introduces the role of farmers by combining PoSpace, alleviating the system's dependence on the minimum number of honest nodes assumption, and completing an incentive-compatible distributed generation and data storage scheme. Consensus validators now act more like light clients, improving future scalability.

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 BTC, Ethereum (USDC/DAI) or Polkadot/Kusama (USDT) 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)

@DarkingLee DarkingLee changed the title Create Melodot.md Add Melodot proposal Jun 15, 2023
@DarkingLee
Copy link
Contributor Author

Hey @Noc2 and @keeganquigley , I hope you're both doing well! I created the proposal and would love to get your suggestions!

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 application, and sorry for the late reply here. I have some quick initial feedback:

  • All the headlines of your milestones currently say: "Example — Basic functionality". Could you update this?
  • The estimation of the FTE and total costs seem strange to me. For example, milestone 4 has an FTE of 2 and one month compared to milestone 2, which has only an FTE of 1 and the same total costs.
  • Are you aware of avail: https://github.com/availproject?

@Noc2 Noc2 requested a review from keeganquigley June 20, 2023 13:06
@Noc2 Noc2 added the changes requested The team needs to clarify a few things first. label Jun 20, 2023
@DarkingLee
Copy link
Contributor Author

DarkingLee commented Jun 21, 2023

hey @Noc2 , Thank you for your reply.

  • I have updated them.
  • It indeed seemed strange, so I carefully reviewed the milestones and made the following adjustments:
    • Milestone 1 now uses the month format for better clarity.
    • Based on the actual situation, I re-evaluated the duration of Milestone 2 and adjusted it to 1.5 months.
    • I have aligned for total costs / FTE * estimated duration, and now they are approximately consistent.
    • The total costs have been reduced by 2,000 compared to before.
  • Yes, I am aware of Avail. Melodot is quite different from it in terms of data arrangement, distributed generation, and handling of the "the minimum number of honest light clients".

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 quick reply and update. I will mark the application already as ready for review. But I need to spend a little bit more time looking into it. One question that I currently have is: do you think Melodot could potentially be a parachain, and what issues might you face in this regard?

@Noc2 Noc2 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 Jun 21, 2023
@semuelle semuelle self-assigned this Jun 21, 2023
@Noc2 Noc2 assigned Noc2 and unassigned semuelle Jun 21, 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 for the application @DarkingLee, your whitepaper link is asking me to log into a notion account. Is there a public link where I can read it?

applications/Melodot.md Outdated Show resolved Hide resolved

### Similar Projects

There are currently several data availability layer projects, including Ethereum Danksharding, Celestia, Avail, and Eigen DA. Our main difference from them is the introduction of farmers, which solves many tricky problems faced by the data availability layer. Unlike Danksharding, we decouple an independent data availability layer, which is the same principle as Polkadot not supporting smart contracts. Celestia uses a Merkle encoding pattern, requiring fraud proofs and additional assumptions, which we avoid. Avail's data layout uses a 1.5D scheme, which is unacceptable in terms of sampling efficiency, as detailed in the Melodot white paper. Eigen DA is an Ethereum re-collateralization layer implementation of a data availability scheme, with limited public information available, [but it should be in the form of a DA committee](https://ethresear.ch/t/unbundling-pbs-towards-protocol-enforced-proposer-commitments-pepc/13879), which has its applicable scenarios, but is not the same as Melodot.
Copy link
Contributor

Choose a reason for hiding this comment

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

It also reminds me of the old proof-of-capacity project Signum (formerly Burstcoin), combined with Chia's proof-of-space. Can you explain who would be the primary users of this project once it is complete?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, there are various implementations of proof-of-space / proof-of-capacity. The difference lies in the fact that Melodot utilizes them to store availability data, so the primary users of Melodot are rollup applications.

applications/Melodot.md Outdated Show resolved Hide resolved
@DarkingLee
Copy link
Contributor Author

DarkingLee commented Jun 22, 2023

Thanks for the quick reply and update. I will mark the application already as ready for review. But I need to spend a little bit more time looking into it. One question that I currently have is: do you think Melodot could potentially be a parachain, and what issues might you face in this regard?

Melodot is not well-suited to directly function as a parachain, but rather as a parachain through a "data availability bridge", essentially because as a decoupled data availability layer:

  • It operates on a different security model. For instance, on the consensus layer, GRANDPA reaches agreements on chains rather than blocks, which is useful in extreme cases to ensure fast and secure finality, but also has the potential to bring multiple blocks to finality at the same time. The data availability layer, on the other hand, expects a uniform finality, which would otherwise introduce uncertain transaction delays for rollup transactions in the settlement layer. In the long run, Melodot needs to have a more suitable finality gadget. In addition, the data availability layer requires many changes at the network layer (which is still an open research area). These determine that Melodot is not well-suited to directly function as a parachain.
  • The purpose of the data availability layer is to eliminate the reliance on the "honest majority" to secure data availability even in the case of a 51% attack, so I think it is a Muda to use it directly as a parachain.

As Melodot matured, we used the Data Availability Bridge as a parachain. It was designed as a neutral bridge (allowing other data availability layers), and other parachains acted as settlement layers, getting data availability guarantees from Melodot parallel chains and "secure interoperability of settlement layers" from the security of polkadot.

@DarkingLee
Copy link
Contributor Author

Thanks for the application @DarkingLee, your whitepaper link is asking me to log into a notion account. Is there a public link where I can read it?

I reset the link and now it doesn't need the login anymore.

@keeganquigley
Copy link
Contributor

Thanks @DarkingLee, a fascinating read, and I appreciate the detailed comparison to Avail in your whitepaper.

  • Are there any potential downsides to this model? For example I read that Chia's proof-of-time method was criticized for possibly shortening the life span of solid state drives due to the intensity of write activity.
  • I don't see anything specific to substrate in the whitepaper except for the fact that the consensus has a similar two-phase finalization mechanism. Can you briefly elaborate on how you came to see a need for this in our ecosystem?
  • After this grant is complete, how do you plan to fund the future plans for an SDK?

Thanks!

@DarkingLee
Copy link
Contributor Author

DarkingLee commented Jun 25, 2023

@keeganquigley Thank you for your feedback, sorry for the late reply.

  • Chia-style proof-of-space requires an initialization process called plots. This process writes data to the user's storage device and consumes significant resources. However, after this initialization, the resource consumption is minimal, specifically in the case of Melodot, it is less than that of a full node. The criticism of Chia, in my opinion, primarily revolves around filling users' disks with useless random data.
  • I have been focusing on the development of social networks and reputation systems (implemented through Substrate), and in this process, I have identified some fundamental problems that have yet to be solved. For example, transaction ordering is not crucial in social networks, but in DeFi, significant costs are incurred to achieve fair transaction ordering. Under blockchain technology, they are given the same level of security. This is not an issue that can be simply solved by scaling alone. To address this, we conducted extensive research. After multiple design attempts, we decided to adopt Rollup technology to solve this problem. I aim to decouple the data availability layer and sequencer in the Polkadot ecosystem through parachain, where Polkadot's high security provides the settlement layer with security and scalability. Of course, further research and implementation are still required, however, I hope that at least through the data availability layer, bridging parallel chains with DA, and the SDK, we can bring another vast possibility space to the Polkadot ecosystem.
  • We have a semi-annual plan, and once this grant is complete, we will initiate a community through a DAO to seek funding from VCs within the DAO framework. Considering the current market conditions, we have identified alternative solutions: leveraging the DAO's economic system to drive project collaboration and obtain a small amount of initial funding. Afterward, we will secure early reliable funding through a method called Quadratic Launch, which combines elements of an IDO and quadratic funding. The initial tokens will be allocated to the donors of quadratic funding. We have a detailed plan that includes different stages, financial planning, product roadmap, and more.

Thanks!

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 thorough answers @DarkingLee I think it would be nice to see proof-of-space concepts working in substrate, and hopefully the pallets will help other teams who want to implement it as well. Therefore I'm happy to go ahead and approve.

@DarkingLee DarkingLee requested a review from Noc2 July 4, 2023 10:37
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.

I'm sorry for not getting back to you sooner. To be honest, my biggest concern here and with the application is that you are trying to do too many things at the moment. But I'm happy to approve it since some of it might definitely be useful for other projects.

@DarkingLee
Copy link
Contributor Author

@Noc2, Thank you for the review, and I understand that you must have been quite busy lately. Your feedback is valuable to me, and I will definitely take note of your concern about trying to do too many things at the moment.

@semuelle semuelle requested a review from takahser July 5, 2023 13:25
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.

@DarkingLee thanks, you've clearly put a lot of effort into the whitepaper and the proposal - it's well-written and contains interesting aspects, both from an economical and game-theoretical as well as technical point of view. It's the first time I've seen the concept of price elasticity applied to a web3 project, I've never thought of that before but in retrospect it seems obvious:) Anyway, happy to approve here as well.

@takahser takahser merged commit 2266d78 into w3f:master Jul 10, 2023
9 of 12 checks passed
@github-actions
Copy link
Contributor

Congratulations and welcome to the Web3 Foundation Grants Program! Please refer to our Milestone Delivery repository for instructions on how to submit milestones and invoices, our FAQ for frequently asked questions and the support section of our README for more ways to find answers to your questions.

Before you start, take a moment to read through our announcement guidelines for all communications related to the grant or make them known to the right person in your organisation. In particular, please don't announce the grant publicly before at least the first milestone of your project has been approved. At that point or shortly before, you can get in touch with us at [email protected] and we'll be happy to collaborate on an announcement about the work you’re doing.

Lastly, please remember to let us know in case you run into any delays or deviate from the deliverables in your application. You can either leave a comment here or directly request to amend your application via PR. We wish you luck with your project! 🚀

@burdges
Copy link
Contributor

burdges commented Aug 13, 2023

The current data availability layer scheme requires the assumption that the network has at least the minimum number of honest nodes.

This statement is true.

However, due to the need to prevent data retention attacks, the samplers are required to be anonymous, making it difficult to measure the number of samplers.

Polkadot does not require separate samplers for availability. The validators all "sample" exactly the one piece they hold themselves. Intersection of 2/3rd honest and 2/3rd claiming availability, says 1/3rd really are available, which suffices for reconstruction.

In other words, 1d RS has a better undecodable ratio, aka adversary must hide 2/3rd to hide anything, while a 2d RS permits hiding a small chunk of the block if the adversary hides only 25%, which further increases sampling requirements.

We do "sample" for validity in the approvals protocol, which includes proving correctness of the available data, but that's an separate concern. We do assume roughly a synchronous gossip protocol for approval assignment announcements though, but we do not require anonymity when sampling for validity, thanks to the no show system.

At the same time, samplers are more concerned with data related to themselves, resulting in an uneven distribution of total active samplers over time.

Ain't clear what you mean here, but it's evenly distributed among the nodes who claim to hold their chunk.

Aside from an undecodable ratio meshing cleanly with our security assumptions elsewhere, we abandoned wider sampling ideas used by Celestia like fishmermen or watchtowers because we concluded there was no mechanism for incentivizing correct behavior. We know validators can be incentivized, although this turns out nastier than one likes.

I've not looked into the rest but this paragraph jumped out at me, so figured I'd comment here. Carry on :)

@DarkingLee
Copy link
Contributor Author

@burdges Thank you for your comment.

  1. I greatly appreciate you sharing Polkadot's design, it indeed sounds intriguing. Polkadot's solution certainly seems elegant. However, there are fundamental distinctions between Melodot and Polkadot. Melodot serves as an independent DA layer, designed to cater to the settlement layer and rollup applications. The "settlement layer" in itself is another chain that's loosely coupled with the DA layer, and its security does not rely on 2/3 of honest actors from the DA layer. This presents additional design challenges for Melodot.

At the same time, samplers are more concerned with data related to themselves, resulting in an uneven distribution of total active samplers over time.

  1. The crux of the matter here is that we don't rely on validators having data sufficient for decoding. Instead, we depend on a significant number of light clients randomly sampling across the network. This strategy has the advantage of considerably increasing the data payload of each block but requires proportionately more sampling nodes to support. The design can be challenged when the number of samplers for each block becomes inconsistent. For Celestia, I believe they might be facing similar design decisions. And Polkadot seems to have no such worries :)

ainhoa-a pushed a commit to ainhoa-a/Grants-Program that referenced this pull request Jan 26, 2024
* Create Melodot.md

* Update milestones

* Add milestone detail description
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.

6 participants