gnolang / hackerspace

Tinker, build, explore Gno - without the monorepo!
11 stars 8 forks source link

Teritori's Builder Journey #7

Open michelleellen opened 1 year ago

michelleellen commented 1 year ago

Welcome Teritori team to the Gno.land hackerspace. The place to introduce yourself and document your journey in Gno.land as contributors and builders of the Gno.land Moderation DAO.

zxxma commented 1 year ago

Hey there!

I'm zôÖma, core team lead @ Teritori. We're building an open source Web3 resilient OS for humans & organizations, soon available on desktop & mobile, with an all-in-one decentralized experience.


Teritori x Gno - Bi-weekly Call #0 Report - 06.08.2023

First bi-weekly call to start grant collaboration, share status and upcoming works. Participants: @zivkovicmilos @michelleellen @zxxma + 5 teritori core team members (will be added here soon).

Current state:

GnoDAO Deployer: Allowing to deploy DAOs on Gnoland, providing various DAO templates, in a great & simple UX this will allow user to facilitate all specific DAO creations, etc.

Gno Moderation Module: Allowing to add a decentralized moderation feature on various social network cases (starting from /boards, to social feeds, forums, etc). This module will be a more specific one, since dedicated to a social feature context, and can be even used by a DAO that have been deployed in the GnoDAO Deployer.


Teritori core team contributors:

πŸ₯· JK Gopher started to build a first GnoDAO standard version v0.1 WIP: Working on Tally endpoint, and after that:

πŸ₯· Norman: WIP:

πŸ₯· Yo1110: WIP: Studying state of gno /boards & /users Next:

πŸ₯· Omniwired: WIP: Experiment and get knowledge asap on Gno status & /realms Next:

πŸ₯· zôÖma: Lead + Research WIP: Research on Decentralized Governances

πŸ₯· Ferryman Marketing WIP: Preparing marketing operations


πŸ“– Research & Documentation: πŸ”— GnoDAO v0.1 Specs: https://hackmd.io/xmicUqNDQyKFptjxyAWq7g?view πŸ”— Schema Moderation DAO v0.1: πŸ”— Feed Moderation Pattern v0.1: https://bafkreifd3eryxvlpi4g4xqde32v4x7oxewiy23zqblm4ssbu5ycrqt5kla.ipfs.nftstorage.link/ πŸ”— User Profile Moderation Pattern v0.1: https://bafkreigzxvgsjopqzjgvrnzwqz5fjvrca7knyruk7jvpflatsyjogfwpsy.ipfs.nftstorage.link/ πŸ”— GnoDAOs repo: https://github.com/TERITORI/gnodaos πŸ”— Research around Decentralized Social Feed Algorithm Design: https://hackmd.io/mVc8J-LcSi6aNLyhx1f6wA?view


Few Identified locking points on current Gno state:

examples:

n0izn0iz commented 1 year ago

Added support for /r/demo/users in Teritori dApp

@hthieu1110 added /r/demo/users as "name service provider" in our dApp which means: in a lot or places where you would have seen a gno address previously, you now see the /r/demo/users name

We decided to suffix the gno names in our ui with .gno to differentiate them (will be especially useful when we add multi-chain name search)

Started to port DA0-DA0 contracts

I started porting the DA0-DA0 contracts to gno, they probably have vulnerabilities and are no-where complete, but we can create proposals and vote on them

Packages

https://test3.gno.land/p/demo/grc/grc4_group https://test3.gno.land/p/demo/daodao/interfaces https://test3.gno.land/p/demo/daodao/core https://test3.gno.land/p/demo/daodao/voting_grc4 https://test3.gno.land/p/demo/daodao/proposal_single https://test3.gno.land/p/demo/markdown_utils

Realm

https://test3.gno.land/r/demo/foo_dao_2

In the Teritori dApp

You can also see the DAO in the Teritori dApp

Gno's eval query mechanism seems very powerful :), but the output is hard to handle for now

I have trouble signing transactions with Adena so no web interactions yet

Screenshot 2023-06-13 at 00 13 09 Screenshot 2023-06-13 at 00 15 07

zxxma commented 1 year ago

Teritori x Gno - Bi-weekly Call #0 Report - 06.08.2023

Curent state:

We are building first bricks to be able to build decentralized moderation We're building 2 different DAO standards:

/users & /boards & social feed Integration

This two bricks are mandatory to be able to build a the 'ModerationDAO' module and experiment it asap.


πŸ₯· Norman:

πŸ₯· Gopher:

πŸ₯· Yo1110:

πŸ₯· Omniwired (Juan):


RAW Questions & Notes from Call w/ Jae, Manfred & Core team):


Side topics:


Next steps:

zxxma commented 1 year ago

:link: Previous call report here: https://github.com/gnolang/hackerspace/issues/7

Current State TLDR:


:computer: Norman:

The gno code is here https://github.com/TERITORI/gno/pull/3, this is still at exploration stage so it's unsafe and will probably change a lot The ui code is here https://github.com/TERITORI/teritori-dapp/pull/629

:question: Associated questions:


:computer: Gopher:

:question: Associated questions:


:computer: Yo1110:

:link: https://github.com/TERITORI/gno/pull/1

:question: Associated questions:


in `users.Register`, the check `std.GetCallerAt(2)` is not `admin`, so not the value of `std.GetOrigCaller` here but its value is `std.GetCallerAt(1)`

---

#### :computer:  Omniwired:
- I have successfully set up and tested the first contracts (realms) on Gno.
- I have updated the "awesome gno" documentation and added an onbloc tutorial. Made PR.
- Identified some "quests" for future devs to do when onboarding them to GNOLand and PathWar.
- Started front end and models for the Pathwar challenges, leaderboard, tournaments. On-going.

---
#### Out of current scope:
#### :computer: Dadidou (Extra - Preparing future milestone: Multisig Interface)
- Worked on Multisig feature (for Cosmos chains only on v0.1)
- Mainly Bug fixing 
- Full report here: https://hackmd.io/Ki4zuxWNSICmfZt3lqG4GA

---
### Side Notes:
- setup a dedicated Marketing call for 
    - Gnoland automated Goodies Shop idea 
    - Prepare EthCC connexions
- setup a dedicated Work session on Pathwar/Game of Realms 
    - maybe @ parisian hostel
- Publish a blogpost about Moderation DAO concept
zxxma commented 1 year ago

Teritori Report - 30 September 2023

πŸ—’οΈ Previous Report: https://hackmd.io/@zxxma/report-sept-28

TLDR; We completed the Moderation DAO v0.1 Module Milestone during september, and now focus on upcoming milestone.

Current State TLDR: Moderation DAO Milestone: βœ…

Gno DAO Deployer v0.1 … β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ 100% βœ”οΈ Gno Moderation Module v0.1 : … β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ 100% βœ”οΈ Gno Social Feed Integration v0.1 : … β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ 100% βœ”οΈ Gno Documentation v0.1 : ... β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ 100% βœ”οΈ Public Articles presenting Modules : β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ 100% βœ”οΈ

πŸ”— feat: teritori contracts #1154 - PR Link: https://github.com/gnolang/gno/pull/1154 Available on πŸ”— https://app.teritori.com (select Gno Teritori Testnet)

πŸ”– Associated Documentations:

Moderation DAO: https://github.com/gnolang/gno/blob/7d9aa49394b5049eacc57effe8b14a556f92e087/examples/gno.land/r/demo/teritori/MODERATION_DAO.md

DAO Deployer Tutorial: https://github.com/gnolang/gno/blob/7d9aa49394b5049eacc57effe8b14a556f92e087/examples/gno.land/r/demo/teritori/DAO_TUTORIAL.md

Teritori Demo Readme: https://github.com/gnolang/gno/blob/7d9aa49394b5049eacc57effe8b14a556f92e087/examples/gno.land/r/demo/teritori/README.md

πŸ“– Updated the documentation & tutorials with the faucet and published them on Teritori Gitbook:


🎯 Upcoming Milestone :

Onchain Project Manager Module v0.1

Onchain task management contracts The aim of this module is to enable an organization to manage projects securely and transparently. Through modular Gno contracts, and a Kanban like interface, this tool will ensure visibility in the monitoring of decentralized projects. Use cases identified to date are:

🚧 Status: User Interface design v0.1 : … β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–’ 95% πŸ’» πŸ”— https://github.com/TERITORI/gno/pull/5 (Escrow PR)

Grants_adm_home Grants_opened Grants_adm_requests Grants_payment

Justice DAO Module v0.1

this module will allow to solve a conflict between buyer and seller using a dedicated DAO. This module will randomly select people to judge the conflict situation without any major conflict of interest. Users randomly selected in the Justice DAO will vote to find the fairest solution to the conflict.

🚧 Status: We spent around +1 month to start exploring VRF and Justice DAO specs, and then we spent 1 month starting a POC.

14 https://github.com/TERITORI/gno/pull/10 (VRF + Justice DAO PR)

Current state:


Side contributions on Gno core topics & Dev tools

The team will continue to identify useful tools for developers, to facilitate the onboarding of future developers within the Gno ecosystem. For example, the list of interesting topics we'd like to continue contributing to:


We use the october month to : 1. review everything related to previous modules 2. bug fixing 3. prepare the next milestone plan.

https://github.com/TERITORI/gno/pull/5 (Escrow PR) https://github.com/TERITORI/gno/pull/2 (Gnodaos PR) https://github.com/TERITORI/gno/pull/10 (VRF + Justice DAO PR)

zxxma commented 1 year ago

Last update

Quick Report

πŸ”— PR: https://github.com/TERITORI/gno/pull/11

zxxma commented 1 year ago

VRF Research Report

Latest VRF codebase :link: https://github.com/TERITORI/gno/tree/escrow_justice_update/examples/gno.land/r/demo/teritori/vrf

PR :link: https://github.com/TERITORI/gno/pull/11/files

For VRF 0.1 for Gnoland, we use following mechanism.

Use case

VRF can be used by offchain users to request random data or by other realms to get TRUE random value on their operations.

The initial use case is on Justice DAO to determine random members to get voting power on the DAO to resolve conflict between service providers and customers when there are issues between them.

Data structure

VRF utilize two structs, Config for feeders administration, and Request to manage the state of random requests by id.

type Config struct {
    vrfAdmin string
    feeders  []string
}
type Request struct {
    id                   uint64
    requesterAddress     string
    requesterRealm       string
    requiredFeedersCount uint64
    fulfilledCount       uint64
    randomWords          []byte
    fulfillers           []string
}

Realm configuration process

After realm deployment, VRF admin is set by using SetVRFAdmin endpoint.

By VRF admin, feeders are set by using SetFeeders endpoint.

Feeders can be modified by VRF admin at any time.

Note: The random data that's already feed by feeder can not be cancelled by VRF admin.

Random data generation process

Improvement thoughts

Continuously consuming VRF request

On VRF 0.1, one request is designed for one time use. There might be a possibility where a realm continuously requires random numbers based on interval. And requesting it everytime would require bad UX.

Transfering the ownership of VRF to DAO

To get better trust on VRF, the owner of the VRF will need to be a DAO realm.

Random data source

There should be a software that the feeders run and the versions should be managed, the version should be compatible with the VRF realm. The software should fetch the bytes from verifiable source to avoid manipulation.

VRF random data feeders performance counting

It can count the number of requests fulfilled for up-time calculation. And it would be good to add sort of verifiers to ensure that the random data sent is accurate.

VRF random data feeders incentives

It would be good to add sort of mechanism for rewards distribution to random data feeders.

VRF random data feeders onboarding flow

VRF 0.1 is assuming the owner set the data feeders directly, it would be good to let feeders to send request through realm with social profiles, and get it approved by DAO to join as random data feeder.

Random data feeders profile management

Random data feeders can maintain their profile.

Questions

zxxma commented 12 months ago

Quick Update

Escrow system realms & Onchain project manager

PR: https://github.com/TERITORI/gno/pull/11

Screenshot 2023-11-23 at 22 07 37

Music Feed

We just deployed a kind of "soundcloud like" v1 on the gnosocial feed here (in the Music Feed Tab on top) : https://app.teritori.com/feed?network=gno-teritori

So in this v0.1, users can now :

In next versions, we would like to allow:

Please feel free to test, give feed back, ask for features, no idea is dumb!
(ex: in v3 or v4, we plan to create a world map to be able to listen music by countries... an browse "the teritori" to discover random artists)

If you need some testnet tokens for GnoTeritori testnet, you just have to go on the home of the dApp (on GnoTeritori Testnet only) and you'll find a direct button for faucet. Feel free to ask for help here, we'll airdrop you! Later, we'll also probably invite you in the Moderation DAO, to grow the moderation committee!

n0izn0iz commented 8 months ago

Today we had a brainstorm about worxdao bootstrap with gh0st and mikecito, here is the final document, everything is still wip and at early brainstorm/exploration stage, feedbacks are very welcome!!

Worxdao definition / scoping

Ressources

Lexicon

grant proposal

tasks

exploration

gno.land/r/worxdao with precise types

type WorxDistrib struct {
    Points uint64
    Rationale string
    Source string
}

/* example
worxDistrib = [{
    Points: 42
    Rationale: "helped the new intern"
    Source: "gno.land/r/supportdao"
}, {
    Points: 21
    Rationale: "developed X feature"
    Source: "gno.land/r/evaluationdao"
}]
*/

interface WorxDistributor {
    WorxPoints(addr std.Address) []WorxDistrib
    WorxSum(addr std.Address) uint64
}

type Contrib struct {
    // ???
}

interface ContribDistributor {
    Contribs(addr std.Address) []Contrib
}

var admin std.Address
var worxDistributors []WorxDistributor

func WorxPoints(addr std.Address) []WorxDistrib {
    all := []WorxDistrib{}
    for d := range worxDistributors {
        all = append(all, d.WorxPoints(addr)...)
    }
    return all
}

func WorxSum(addr std.Address) uint64 {
    // ...
}

func RegisterWorxDistributor(wd WorxDistributor) {
    if (std.PrevRealm().Addr() != admin) {
        panic("nonono")
    }
    worxDistributors = append(worxDistributors, wd)
}

gno.land/r/worxdao with any

interface WorxDataProvider {
    Get(dataName string, addr std.Address) any
}

var admin std.Address
var dataProviders []WorxDataProvider

func Get(dataType string, addr std.Address) []any {
    all := []any{}
    for d := range dataProviders {
        all = append(all, d.Get(dataType, addr)...)
    }
    return all
}

func exampleGet() {
    ret := Get("Worxsum", addr)
    for r := range ret {
        switch r.(type) {
        case WorxSum: 
            // do something with worx points
        }
    }
}

func RegisterDataProvider(dp WorxDataProvider) {
    if (std.PrevRealm().Addr() != admin) {
        panic("nonono")
    }
    dataProviders = append(dataProviders, dp)
}

gno.land/r/worxdao with any and avl

interface WorxDataProvider {
    Get(dataName string, addr std.Address) any
    SupportedTypes() []string
}

var admin std.Address
var dataProviders []WorxDataProvider
var dataTypeToDataProvider avl.Tree

func Get(dataType string, addr std.Address) []any {
    all := []any{}
    dataProviders :=  dataTypeToDataProvider.get(dataType)
    for d := range dataProviders {
        all = append(all, d.Get(dataType, addr)...)
    }
    return all
}

func exampleGet() {
    ret := Get("Worxsum", addr)
    for r := range ret {
        switch r.(type) {
        case WorxSum: 
            // do something with worx points
        }
    }
}

func RegisterDataProvider(dp WorxDataProvider) {
    if (std.PrevRealm().Addr() != admin) {
        panic("nonono")
    }
    for supp := range dp.SupportedTypes() {
        providers := dataTypeToDataProvider.get(supp)
        providers = append(providers, dp)
        dataTypeToDataProvider.set(supp, providers)
    }
}

questions

gh0st: Why the name worxDAO ? norman: worxaggregator better? norman: should we pull r/profile data in worxdao realm?

omarsy commented 7 months ago

Project Update: WorxDAO Development Progress

Objective

Our current focus is on developing a proof of concept (POC) realm that allows linking a GitHub account with an on-chain address. This realm aims to enable users to associate their GitHub identity with an on-chain address.

Current Status

  1. Linking GitHub Account with On-Chain Address

    • The realm allows a bot to add a public key.
    • The bot can sign the address and GitHub ID account.
    • This functionality permits everyone to link their account on the realm seamlessly.
  2. Blockers and Solutions

    • PR: #1863:
      • This PR enables the realm to verify a signature.
      • Currently in the review stage.
    • PR: #100:
      • This was an issue blocking the publish transaction.
      • Resolved and merged.
  3. Demo

    • We have created a demo showcasing how the flow works:

Next Steps

  1. Aggregate Worx Distribution

    • We have begun development on the aggregate worx distribution.
    • Our focus is on creating a generic aggregator that allows specialized aggregators like contribution to register on it.
  2. Related PRs

    • PR: #17:
      • This PR is related to the development of the generic aggregator.
      • It focuses on allowing specialized aggregators, such as contribution, to register.
zxxma commented 6 months ago

Quick last report :

zxxma commented 5 months ago

Quick last report:

added to backlog:

zxxma commented 4 months ago

Quick report:

zxxma commented 4 months ago

Quick report:


In the background, we are also working on :


zxxma commented 3 months ago

Report:

zxxma commented 3 months ago

August 1st to August 14th (Gno Developer Call)

User Public Profile (UPP)

Updates:

Social Feed Map

Updates:

GnoVM

Updates:

Pending PRs:

Gno Faucet

Updates:

Gno Playground

Updates:

Gno Lint

Pending PRs:

zxxma commented 2 months ago

August 15th to September 2nd

Social Feed Map

User Public Profile (UPP)

GRC 20 Launchpad

WorxDAO Tooling = Cockpit

WorxDAO Tooling & Cockpit

Lexicon

Next Steps:

1. Tooling Objectives

Cockpit: Data Aggregation

r/cockpit: Initial Data Rendering

r/github:

r/governance: Voting and Participation

r/profile:

r/socialactivities:

r/notablecontributions:

r/support:

r/review:

V1 Focus

2. WorxDAO Overview

zxxma commented 1 month ago

Report

Sept 2 to Sept 12

Gnorkle & Github Verify Oracle

Launchpad GRC20

Gno Profile

Sept 12 to Sept 25

GnoRealm - Updates:

Gnopls :new: by @n0izn0iz

GRC20 Launchpad by @mikael

Role Manager Exploration :new: by @mikael

GnoVM - Updates:

zxxma commented 1 month ago

:new: September 25 to October 9th - Development Report

Gno

Role Manager:

Misc - Updates:

PR awaiting Review

Questions or blocking points:

Misc - UX Research & Proof-of-Contrib Experimentation:

zxxma commented 3 weeks ago

Quick report Oct 9 to Oct 31

Context: Team switched into a 'task force mode' until mainnet launch, to join core forces. Bandwidth is currently managed with 95% on gno core contributions focus and 5% on Teritori OS alpha products development, until the next phasis, and will remain flexible depending on top gnoland mainnet priorities.

Gno:

Additional assignations and members ownerships:

Misc - UX Research & Proof-of-Contrib Experimentation: www.gnolove.world v0.2 is live πŸ› οΈ Gnolove Changelog v1.1:

wip: v1.2


Additional:


BurpingGal commented 2 weeks ago

Burping Gal here. As an Cosmos supporter and Atom staker, we're saluting Jae's vision and looking forward to contributing and eventually building a smart contract platform on Gno.land.