Project Funding Proposal N3GOV-38: šŸŽ—ļø NationCred and Citizen Directory

Summary

When we asked Nation3 citizens where they would like to see the šŸ§™ Developers Guild allocate our resources next, the 31 voters indicated that we should prioritize the development of NationCred and a Citizen Directory:

Snapshot

By completing the development of NationCred, we will have a foundational infrastructure in place for tracking citizen activity across multiple platforms, both on-chain and off-chain.

And by completing the development of a Citizen Directory, we will have a user interface that can provide more visibility to citizensā€™ activity.

What is NationCred?

NationCred (v1) started out originally as SourceCred under a different name. Since then, NationCred (v2) has evolved into a Nation3 tool for tracking citizen activity across multiple data sources.

While SourceCred is a tool for tracking value creation in GitHub, Discord, Discourse, NationCred is a tool for tracking citizen activity in GitHub, Discord, Discourse, Dework, Snapshot, and more data sources in the future.

Sybil Resistance

One reason for building out NationCred is that it not only gives us insights into active/inactive citizens, but it also enables Sybil Resistance.

One potential benefit of having a Sybil resistance mechanism in place is that we use it for allowing/disallow access to certain Nation3 services meant to benefit individual Nation3 citizens.

North Star Metric: Number of Active Citizens

active

A Citizen Directory is helpful for automating the process of adding Nation3 citizens to SourceCred (a subset of NationCred). By encouraging new and existing citizens to link their NFT passport to a GitHub/Discord/Discourse account, we can track more of their off-chain activity within the Nation3 ecosystem. This integration is a necessary component that will need to be in place so that we will have the ability to track active citizens in the future, as we continue to add more and more Nation3 services.

Tasks to Be Implemented

Besides the project backlog, below is a list of the tasks for completing the integration between SourceCred, the NationCred datasets, NationCred smart contracts and the Citizen Directory UI:

Backend: NationCred

Frontend: Citizen Directory

Participants

Duration

Start date: March 20th 2023.
End date: April 17th 2023.

4 weekly epochs: March 20 ā†’ March 27 ā†’ April 3 ā†’ April 10 ā†’ April 17.

Reporting

Weekly status reports to be published in Discord, with technical work translated into non-technical terms (to make it easier for everyone in the DAO to understand).

Funding

3.125 $NATION per epoch.

Contribution Tracking

For tracking contributions and reward allocations, we will be using the smart contract UI at https://sector3.xyz/v1/priorities/0xAc4FfFD8118CBD683d91390EB70AdFF82610C31A

NFT-gated

This projectā€™s smart contract is NFT-gated, meaning that only Nation3 citizens (PASS3 NFT holders) have access to report contributions and claim their allocated rewards.

Governance Pull Request

Snapshot Votes

https://vote.nation3.org/#/proposal/0x1680c1d7d1a615779cfea902a2169e43e105b989d63a1fba056b396776f1ce84

5 Likes

This is nice, for completeness should we work out where in the priority list other tools sit as I have noticed there is a growing diaspora of tools being used for generation of content and discussion and maybe governance (or maybe Twitter!)?

1 Like

@johnmark13 Other tools used by the Citizen Directory? Are you referring to the various tools mentioned in the subtasks of this proposal? Sorry, I think I need more context to understand exactly what you mean :smiley:

Iā€™m glad to see a proposal for the Citizen Directory, which I think is very helpful.

I have a few questions:

  • Is there a need for smart contracts that are basically key-value stores? Looking at the contracts, it looks like this could be as easy as citizens adding their Discord/GitHub/etc. to their ENS names. ENS even has predefined records for the most popular platforms.
  • Why not using Gitcoin Passport? Iā€™m not sure whether the stamps (e.g. being verified on Discord, Twitter, etc.) can be retrieved by the API, but if so, you donā€™t need to build OAuth integrations yourself.
1 Like

Sorry, context was the Discord chat. Recently there are other tools be used for content and discussion - Skiff, Kampsite, Clarity which are not captured by any of the metrics we have at the moment. Additionally, Twitter engagement could be considered. So whilst this proposal is for the developers guild to move forward with the planned development, I donā€™t know if the algorithm proposed so far is complete enough to fully measure activity.

1 Like

The ENS idea is great, as long as we document it well and encourage everyone to have ENS as a prerequisite (I scanned Opensea, looks like a little over half do at the moment, but my eyes might lie!). The critical thing is that the data is verified, so would you propose that we add ENS TXT entries direct?

Gitcoin is cool, Ceramic is really cool, the SDK is less cool which is strange as it wouldnā€™t have been a leap to make it cooler and to abstract away needing to know so much about Ceramic. From an Ecosystem perspective I think that we should absolutely have this as an option and go on a journey with them, and maybe them with us. But the OAuth is simple and would be inclusive to everyone who hasnā€™t taken that Gitcoin step?

1 Like

@luis I like your idea of using standardized ENS text records for this :smile:

Note that about 27% of all Nation3 citizens] do not have an ENS name. So one downside with relying on ENS would be that those citizens without ENS names would not be able to qualify as active if we follow this route. But maybe thatā€™s okay?

@johnmark13 Fully agree with thatā€“We should definitely add more data sources in the future, like Snapshot voting activity :smiley:

Iā€™d say itā€™s a tradeoff worth making for simplicity

1 Like

Thank you @aahna for your initiative.

In general, I support the continuation of the development of this tool. I believe it could be very valuable in providing more visibility to citizensā€™ activity in the future. However, I have some concerns that I would like to address.

Firstly, I would like to have more details about the implementation and how it compares to the current process of Nationcred. Iā€™m not quite seeing how it would improve the process with this solution and I would like to have more context to better understand it.

Additionally, I am concerned about the estimated time for design and development of the solution. I am not completely up to date on the projectā€™s status, but based on what has been discussed above, I think itā€™s likely that it would take more than a month to complete the development.

Finally, considering the scope of the project, I believe that the reporting and number of payments could be reduced by at least half, with a biweekly progress review / payment instead of a weekly one.

@0xGallego If you want to add new contributors to SourceCred today, itā€™s a manual and time-consuming process. Just loading the SourceCred UI takes 30-60 minutes in our experience. This is why we want to automate the process.

Iā€™m aware of the problems with the current process to activate identities. From what I understand, the plan is to allow users to activate themselves through a smart contract, which is an exciting development that could potentially improve the process. However, I would appreciate more information on how exactly this will work.

In particular, Iā€™m interested in having more clarity about the development of methods to link accounts in the UI through OAuth and how it relates to the creation of platform-specific smart contracts that will act as on-chain registries. Iā€™m also curious about how this dataset will be computed from the information in the smart contracts and how it will be used to update the ā€œNationCred smart contractā€. And finally, how the distribution of NationCred will work after these developments.

Overall, I think this proposed solution has a lot of potential, but I would like to understand more about the specific mechanics and how they will work together to achieve the desired outcome.

Additionally, from my current understanding, it seems like much of the work proposed is related to NationCred and its smart contract, rather than the directory of citizens itself. As such, I would also appreciate more information on how these two projects are related and any dependencies that may exist between them. My lack of awareness of these dependencies is likely contributing to some of the questions I have about the proposed solution.

@0xGallego There is a ā€œTechnical Specificationā€ section at Clarity ā€” Simple docs & tasks for decentralized teams, describing how NationCred and the Citizen Directory components are connected. Does that help?

1 Like

Thank you for the information. Unfortunately, the Technical Specification section did not provide the clarity I was hoping for regarding the specific questions I had.

Iā€™m struggling to understand the connection between the OAuth integration in the UI and the smart contracts, as well as how the dataset will be generated and updated to the NationCred smart contract. I would also appreciate more information on how the distribution of funds for NationCred will work with the smart contracts.

That sounds like a conversation that is better had as a conversation and then an update to the well documented approach so that it is clear if/how to proceed. Is that possible?

That would be so coolā€¦ Incentives to stay engaged :muscle:

@0xGallego Answers to your three questions:

  1. Using OAuth is just a way to fetch someoneā€™s GitHub/Discord/Discourse username, and weā€™ll also use ENS for this (see below).
  2. The datasets will be generated through weekly cron jobs using GitHub Actions, and we can use the private key of an Ethereum account with some funding to cover weekly gas fees.
  3. There will be no distribution of funds for NationCred itself the way I understand it. NationCred is a way to keep track of which Nation3 citizens are active and which are not.

Iā€™d say itā€™s a tradeoff worth making for simplicity

@luis Yes, my suggestion would be that we first check if a citizen already has added ENS text records for their account usernames, and if they have not, fetch usernames via OAuth. I already have a branch with a working OAuth integration, and itā€™s not a lot of work to implement.

Note that ENS have only included text records for com.github and com.discord, but not yet com.discourse:

So we can start by developing the ENS integration for GitHub and Discord, and using OAuth as fall-back for all three platforms. Added this as a new project task in the list above. Does this sound like a good solution? :smiley:

1 Like

Added a link to the governance pull request for this proposal.