Grants-Program icon indicating copy to clipboard operation
Grants-Program copied to clipboard

Application for Momentum, an open source, metaverse for digital societies.

Open dave4odyssey opened this issue 2 years ago • 10 comments

Project Abstract

Odyssey is building Momentum, an open source, metaverse for digital societies.

The Momentum stack enables people to jointly build their own 3D worlds as well as develop and integrate plugins to unlock a wide range of decentralized 3D social action medium use cases.

Momentum sees the metaverse as a novel communications medium and provides the infrastructure for a new user experience, where social, economic and cultural activities, both on-chain and off-chain are intertwined and strengthen each other. With Kusama (and optionally Polkadot) as its primary digital public infrastructure, Momentum is co-created, governed and owned by its users.

Grant level

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

Application Checklist

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

dave4odyssey avatar Oct 18 '22 08:10 dave4odyssey

CLA assistant check
All committers have signed the CLA.

CLAassistant avatar Oct 18 '22 08:10 CLAassistant

I have agreed to the CLA for w3f/Grants-Program. Status is not updated immediately?

ghost avatar Oct 18 '22 08:10 ghost

Was closed due to signing issues (person that squashed the commits locally also had to sign)

ghost avatar Oct 18 '22 09:10 ghost

Let me know if I should take another look at the application.

Noc2 avatar Oct 20 '22 12:10 Noc2

Hi David,

Thank you for the quick response. I love the questions you and Sebastiaan provided. It gave us some additional insights on how to better explain this novel concept. There are some people absent due to the school holidays this week, but you will have my response Monday afternoon when everybody is back.

I'll let you know when it's ready.

Thanks,

Dave

On Thu, Oct 20, 2022 at 2:31 PM David Hawig @.***> wrote:

Let me know if I should take another look at the application.

— Reply to this email directly, view it on GitHub https://github.com/w3f/Grants-Program/pull/1221#issuecomment-1285463781, or unsubscribe https://github.com/notifications/unsubscribe-auth/A3SC3GLB6WOPXV3N2GARIE3WEE3RJANCNFSM6AAAAAARH23FJU . You are receiving this because you were mentioned.Message ID: @.***>

ghost avatar Oct 20 '22 13:10 ghost

Hi David,

In response to your question.

The first goal of the NFT research is to find a ready NFT pallet that could meet all of our requirements and provide the infrastructure to properly make use of the NFT (mint, share etc). If not available, then research if any pallet available comes close to our requirements and investigate how it needs to be adapted to meet the requirements. Lastly, we have to research how to make such a pallet from scratch.

The second goal brings us more towards the staking pallet, to make a pallet where we could stake on those "native" NFTs, but not to provide PoS or something, but just to "support" the NFT owner and let the staker get some rewards of some token in return.

The third goal is to find a way to fractionalize the NFT in such a way where multiple people can earn shares of that NFT while at the same time, the staking pallet needs to take that into consideration in order to give the proper rewards. In addition to that we have a more sophisticated setup where worlds and (sub)spaces can configure the amount of commission they take from the staking mechanism. Hence, the staking rewards are divided using some formula using configurable parameters per world or (sub)space, that sets the ratio between the staker, the entity that has been staked in, and the world/ (sub)space and Treasury.

So, What we deliver upon is a generalized way to stake in (fractionalized) NFTs, where both the NFT owner(s) as well as the one that stakes, earn some amount of some token. We believe this is an interesting and new way to look at staking that is different from the well known PoS mechanism and goes beyond a mere signaling of interest. Providing a generalized staking mechanism like this can create new ecosystems. Mentioning Momentum is just a matter of having a first example of a network that would like to implement such a mechanism, provide examples of ways it can be leveraged and is able to maintain it over time.

I hope this helps to better understand. If required, I will be more than happy to change the document accordingly. Also, if you would like a 1:1 to go deep, no problem. I'll be more than happy to.

Kind regards,

Dave

ghost avatar Oct 24 '22 11:10 ghost

Let me know if I should take another look at the application.

If you can, please. Kind regards, Dave

ghost avatar Oct 27 '22 20:10 ghost

Thanks for the update and sorry for the late reply. We are currently on a company retreat. I will mark your application as ready for review. However, I personally think that given that this isn’t a “common good project” and you plan to have your token, the initial research should be done by you before you apply for the grant. Also, especially the second milestone looks rather expensive to me at the moment. Given that the result might be a single pallet. But this is just my opinion and I will ask the rest of the team to take a look at it.

Hi David,

Thank you for the feedback.

In response to your comments: This application does not describe all research that is done to build a token, since it is not part of this application. If you need information on what is happening outside of this application, I will be happy to elaborate. Regarding the second milestone, it is mentioned that we are not sure it will be one pallet. The research phase will help to give us insights on the best implementation.

Looking forward to the feedback of the other team members!

Kind Regards, Dave

ghost avatar Nov 04 '22 12:11 ghost

Thanks for the updates and the thorough explanations.

Could you describe how plugins are implemented and how they interact with your metaverse? And how do users interact with a plugin? Do they have to submit transactions for the plugin author to earn rewards?

Also, given the price I would like to see some way to test each pallet (and their interplay) without having to enter a metaverse. Either a very thorough testing guide or a UI for changing parameters and seeing their effect. Maybe that's something you already have or have planned?

semuelle avatar Nov 08 '22 21:11 semuelle

Hi Semuelle,

Plugin implementation can be initiated and managed using a standardized plugin-onboarding process. Typically, plugin functionality is related to an (3D-) object and can be applied to the object if it fits the requirements.

As an example: a plugin-developer creates a plugin that enables state change from ON to OFF and vice versa and emits the event to some IFTTT provider. This plugin can be attached to an object that enables ‘touching’.

The developer uploads the plugin code (and optionally some special object) to the Momentum repository together with a configuration file describing the plugin, the object requirements and preset (like subscription type, costs involved, reward address), required- and optional parameters, after which a process is initiated to mint an NFT to uniquely identify the plugin and enable ownership.

A world node* (owner) can then select the plugin from the central repository and make it available for the worlds it hosts. A world owner can then select the plugin and apply it to the object that meets the requirements, for instance a clickable mushroom and apply parameters e.g. IFTTT API-key.

Any user visiting the world can click the mushroom, optionally get its wallet invoked to pay a fee and see some magic happening as defined by the plugin. The example describes IFTTT as an example of what can happen, but there are no limitations, and it can be off-chain and/or on-chain activities expressed in any form.

To get back your question “Do they have to submit transactions for the plugin author to earn rewards”. Yes, this has to happen at least once. Going from a subscription type of plugin offering, a user has to create at least one transaction to reward the developer for making his or her ‘Intellectual Property’ available to the user for an x-amount of time, or for life, or when in a specific world etc. If there is a transaction type of subscription, every time the plugin is invoked, a transaction has to be made to reward the developer. Multiple rewards systems will emerge depending on the use-case.

In regard to the testing: Tests (unit, integration) and Test Documentation (guides & examples) are planned to be delivered together with the pallets, so you would NOT need to enter the metaverse to be able to test the code related to the pallets.

The plans are to use the Rust Unit Test Framework, as mentioned here together with integration tests using Rust and Zombienet (Js and DSL). With that, I believe that each functionality from the pallets can be individually (and integrated) verified.

Of course, we are open to any other testing method/framework/doc that might be suggested or if we may find it during research/development.

Hope this information helps you. We understand it is a lot to comprehend in so little time. Please feel free to ask anything.

Kind regards,

Dave

ghost avatar Nov 10 '22 11:11 ghost

Hi Seraya,

Thanks for your questions and tips, please find our answer below.

@dave4odyssey thanks for the submission of your grant application. I have a few questions:

  • What files are stored on the "Media manager" and "IPFS client" on the momentum node?

The content currently stored on the Media Manager is User uploaded content (UGCs), Captures for the 3D engine etc. The Media Manager is pending change to a full Web3 solution, hence the IPFS Client. The term Media Manager might stay, the way it stores data will be changed from centralized to decentralized.

  • What's the exact role of:

    • the Backend controller? Is it limited to interacting with the plugin pallet (which I assume the "Plugin infrastructure" would do) or is there more to it?
    • the Token monitor?
    • the Harvester?

The Backend Controller takes care of all communication between the Front-End (React Layer) and the Backend (Unity). Every action of each individual user/object in the Front-End makes a call to the Backend Controller, which takes care of processing/forwarding. So, the Backend Controller is not only communicating with the plugin pallet, it is communicating with basically everything.

The Token Monitor is used for token gated access. It monitors changes in token ownership and acts on this (e.g., token gated access).

The Harvester monitors blockchains and translates this to what can be visualized. An example of this can be found in Kusamaverse where you can see the parachains and a dynamic visualization of the blocks created.

  • Can you explain which features you need that the Uniques pallet is currently lacking? For example, if you need fractional NFTs my guess would be, you'd need some kind of ERC-1155-type semi-fungible tokens maybe?

    Besides that, it is most likely that we would need to write a custom NFT pallet or a pallet that complements the Uniques pallet.

  • Where would the tokens that are used for rewarding NFT staking come from?

Like you mentioned, the required functionality is that of the fractionalized NFT like the ERC-1155-type but then in a ‘Native’ Dotsama type.

Some additional thoughts:

  • Something to be aware of, the Uniques 2022 pallet is currently in development and might support some of the features that you're lacking: paritytech/substrate#11783

Yes, we are very well aware of the developments regarding Uniques V2 and monitoring the good work that is performed there. The spirit in which this application has been drafted is that we reuse any quality components that already exist and keep track of developments that interfere or strengthen our roadmap. When the development of the Uniques V2 provides a solution (or any other project for that matter) that fits the roadmap, and we have not yet done the work ourselves, we do not have to deliver on that part and as such we will not claim the pledged grant in full.

  • Personally, I'm not willing to support M1 of this grant since it seems to be very specific to your own project. The type of research we'd usually be interested to fund is something that's of use to the whole community.

We understand your point of view regarding M1. Although important to us, it is of less value to the community. My proposal is to remove it from the application. It has also been overtaken by time. It has been four weeks since the initial application and we have been making great progress. M1 is well under way to being delivered.

From an operational perspective, do you want me to adjust the application right away or first finish the review of your coworkers?

  • Without having fully understood the scope of your stake pallet at this point, I have a gut feeling that M2 and M3 are rather pricy.

Please clarify what you would like to better understand regarding the scope. We will be happy to clarify.

In regard to the costs: This application has been created as a team effort with the goal in mind to deliver a complete and working set of Pallets. Beside the market pressure for experienced Substrate Devs, there are too many examples of underperformance and there are no winners cutting corners here.

Kind regards

Dave Hoogendoorn

ghost avatar Nov 18 '22 10:11 ghost

Thanks for the infos and sorry for the late reply. Looking at the other comments, I'd say it might make sense to remove M1 and M3, as both seems rather specific to your application. Other than that, happy to proceed.

semuelle avatar Nov 24 '22 17:11 semuelle

Thanks for the infos and sorry for the late reply. Looking at the other comments, I'd say it might make sense to remove M1 and M3, as both seems rather specific to your application. Other than that, happy to proceed.

Thank you for your response. I have discussed the feedback with the team, and we understand W3F's point of view. We are happy to continue with M2 since it indeed provides the most value-add to the community. What would be the appropriate next step? Shall I change the application in a way it only reflects M2? Can you please advise? Thank you!

ghost avatar Nov 25 '22 09:11 ghost

Shall I change the application in a way it only reflects M2?

Let me check with the rest of the committee, perhaps they think otherwise.

On another note, could you try signing the CLA again? It was updated in the meantime.

semuelle avatar Nov 28 '22 16:11 semuelle

Shall I change the application in a way it only reflects M2?

Let me check with the rest of the committee, perhaps they think otherwise.

On another note, could you try signing the CLA again? It was updated in the meantime.

@semuelle We will sign the CLA again, NP.

Just wanted to give you one thing to take with you when addressing the rest of the committee.

Odyssey is operating on the edge of what is currently envisioned as Metaverse, but our vision stretches way beyond. The fact that M3 does not seem common good now, will not mean it will never. We envision a clear wide-spread use case for plugins in the future where we will set the example and lead. Having M3 available for anyone will boost the Metaverse ecosystem with a radical new way to add functionality to metaverses and alike. If it seems too early for M3 to add value to the community right now, think of all those WEB3 ideas that where front-runner and helped build the ecosystem to what it is now. Sometimes you don't see it until it's there. Think of M3 in that way.

Thank you!

ghost avatar Nov 29 '22 08:11 ghost

We will sign the CLA again, NP.

@deniscavalli needs to sign the CLA as well, if they haven't.

semuelle avatar Nov 29 '22 14:11 semuelle

Hi David,

Thank you for your reply.

The hourly rate for a Senior Rust Developer with solid Substrate experience as used in our calculations is $84.90. What does W3F consider industry practice for the nature of the work underpinning Milestone 2?

Kind regards,

Dave

ghost avatar Dec 01 '22 22:12 ghost

Hi David,

Thanks for clearing that up.

We understand that we are quite early with these developments and that it might take a while before 3rd parties will integrate these components within their Metaverse infrastructure.

I have contacted one of the founders for a resolution on this matter. We propose to fund ⅓ part of the development ourselves. This brings the requested amount for M2 to 33,960 USD. We hope this closes the gap.

Thank you,

Dave

ghost avatar Dec 02 '22 13:12 ghost

Hi David,

Is the level (2 vs 3) decided based on Milestone or the complete application?

Currently we have to following:

M1: Cancelled M2: From 50,940 USD to 33,960 USD M3: 25,470 USD

Which brings the total sum to 59,430 USD being > 30k.

Kind regards,

Dave

P.S. Yes, I could split it up into to two separate applications, one for each Pallet, but I don't believe that this matches the intention of the levels.

ghost avatar Dec 05 '22 12:12 ghost

Ah got. In this case, it might still make sense to initially just apply for M2 for 30k just to get started and follow up with a second grant once you delivered the first.

Noc2 avatar Dec 05 '22 12:12 Noc2

Hi David,

I created a new application (odyssey_momentum_staking.md) that only contains the staking part (previously M2). Do you want me to initiate a new application using the prescribed application process or do you want me to upload it here?

The prevent going back and forth once more, could we do a quick call to sort stuff out? Any Google / Zoom would do fine.

Thank you.

Dave

ghost avatar Dec 05 '22 13:12 ghost

@dave4odyssey Whatever you prefer. Both would be possible. Also, feel free to reach out to me via email in order to schedule a call ([email protected]).

Noc2 avatar Dec 06 '22 14:12 Noc2

Hi David, The application had been updated to only represent Staking in NFTs / Milestone 2 (which is now M1 in the changed application). Thank you! Dave

ghost avatar Dec 08 '22 09:12 ghost

Thanks for addressing all the questions @dave4odyssey.

  • Can you elaborate on deliverable 4c. Pallet(s) in Production, Specifically what is being accomplished here? By "pallet integrated on the parachain runtime" are you referring to integrating the pallets on a local testnet, or on the DRIVE node itself? I ask because we don't pay for getting code "production ready", and if the DRIVE node becomes part of the scope of this grant, the fact that it is not open-source could be an issue.
  • Even if it is not in the scope of this grant, just to be clear, do you plan on eventually making it open-source?

keeganquigley avatar Dec 21 '22 03:12 keeganquigley

Hi @keeganquigley,

Thank you for your feedback.

'In production' is more like a Show & Tell combining the steps and making sure anybody can reproduce on their own dev env.

Regarding the licensing: We are a open source company. The DRIVE repo will be opened up to the public end of January. I've also seen the remark of David regarding the Licensing model. I'll fix this right away.

Kind regards, Dave

ghost avatar Dec 22 '22 08:12 ghost

Hi David, It's a typo. 'NU' should be ' GNU' off course. Fixed it. Thank you!

ghost avatar Dec 22 '22 08:12 ghost

CLA assistant check Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.0 out of 2 committers have signed the CLA.❌ dave4odyssey❌ deniscavalliYou have signed the CLA already but the status is still pending? Let us recheck it.

@dave4odyssey and @deniscavalli could you still sign the latest terms and conditions?

Noc2 avatar Dec 22 '22 15:12 Noc2

Once you sign the latest terms and conditions, we can merge the application.

Noc2 avatar Dec 22 '22 16:12 Noc2

Hi David, we just signed it. Happy Christmas to all of you!! Dave

ghost avatar Dec 22 '22 16:12 ghost

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! :rocket:

github-actions[bot] avatar Dec 22 '22 16:12 github-actions[bot]