Giter VIP home page Giter VIP logo

.github's Introduction

.github's People

Contributors

dazuck avatar decentralgabe avatar justinapetr avatar michaelsena avatar oed avatar pablocastellano avatar shivekkhurana avatar stbrody avatar zachferland avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

.github's Issues

Build a PoC of Cambria schema upgrade tooling on Ceramic

Prize Bounty

750 DAI

Challenge Description

A consistent challenge in distributed, interoperable storage environments is maintaining compatibility when underlying data schemas are updated to a new version; this could cause different data instances that rely on the same schema to be using different versions of the schema – causing headaches for application developers. Cambria is an exciting approach to converting JSON data between related schemas using lenses. See more in this video.

Ceramic is a decentralized network for deploying version-controlled data, and an ideal place to house these lenses so they are globally available and easy to link. Additionally, Ceramic could also benefit from having support for Cambria or a similar solution as a way to enable even easier and more powerful interoperability between various Ceramic streams and schema.

This bounty is for the best proof-of-concept implementation of Cambria (or a similar system) on Ceramic schemas and data models.

Submission Requirements

  • Submissions must include a video demo
  • Must be able to log data models into the DataModels Registry

Judging Criteria

Submissions will be evaluated based on the implementation cleanliness, usability, and readiness.

Winner Announcement Date

October 27th

Disambiguation needed

This description misses the required specificity: "cross-platform decentralized identity graph complete with DIDs, identity metadata such as profiles" as it stands, I cannot serve as the foundation for the development of a viable implementation. - In particular: what functionally (and legally) relevant actions are being supported (IRL). It is not: "identity", and certainly not "decentralized identity" .. the closest equivalence IRL would be a person suffering from DID - fittingly that acronym is most commonly used for Dissociative Identity Disorder. - Consequently 'identity' and 'identification' are conflated several times in the documentation, including - but not limited to - the "identity wallet" and "3-ID Connect" which is described as "account management service".

Ceramic IPFS update

  • js-ceramic IPFS updates
  • deployable js-ceramic-ipfs repo which will enable dag-jose by default

Create Telegram Verification Service

Prize Bounty

500 DAI

Challenge Description

Ceramic's Identity Link Services enable the linking of social accounts to a decentralized identity (DID) and its associated blockchain accounts. Currently, services are built for Twtiter, Github, Discord and Discourse.

This bounty is to add a working verification flow for Telegram. It likely will use a bot, similar to the discord implementation (see this repo)

Don't forget to update the API documentation with your verification system once it's implemented.

Submission Requirements

Share your planned work before completing the implementation
Code quality and reliability must be high, and must be well documented
Must be submitted to the identity services repo in Ceramic Studio

Judging Criteria

First submission that meets requirements and is ready for deployment.

Winner Announcement Date

Valid through April 5

Open Bounty: Build with IDX in an app or service

Prize

First prize: 1,500 DAI for best hack using IDX

Runner up: 750 DAI

Description

This is an open prize for using IDX to manage decentralized identity information or data. This can include integrating IDX into an existing project, building a new product that uses IDX, building tooling that supports or complements IDX, or any other creative implementation that makes use of IDX as decentralized identity infrastructure. IDX is currently in alpha.

Submission Requirements

  • The project must be open source
  • The app should do something that is useful and interesting
  • The app must use IDX
  • Demo videos are strongly recommended

Judging Criteria

Submissions will be evaluated on:

  • How deeply the submission uses IDX
  • Creativity of the idea
  • Completeness of the implementation and demo
  • Value of the project to others that will use IDX. This can include adding valuable functionality, making it more accessible to other developers, or showcasing capabilities well

About

IDX is a new cross-ecosystem decentralized identity and user data management protocol that provides for a single, unified digital identity system that works with all Web3 platforms, blockchains, and storage technologies. IDX is built on Ceramic, a peer-to-peer dataweb for publishing, linking, and querying verifiable information on the open web. IDX is currently in alpha so may be unstable.

IDX provides a flexible identity infrastructure for developers to use when building decentralized applications. It can be used to store profiles and metadata, link multiple blockchain and social accounts to a single identity, read and write user verifications, and manage data on IPFS, OrbitDB, Textile, SkyDB or any other platform. This decentralized, unified, and cross-platform identity infrastructure helps Web3 projects build faster and more simply. It is also the key to realizing the vision of giving users ultimate control and portability of their information across applications and networks by breaking down information silos and putting users at the center of the web.

With IDX, every user gets a cross-platform decentralized identifier (DID) and an identity index document to which developers can attach various pieces of data relevant to their experience. Since IDX identities are public and permissionless, any developer can openly discover, query, and import data from an identity into their application, creating a rich ecosystem of information around each user.

Resources

IDX Website: https://idx.xyz
IDX Docs: https://idx.xyz/docs
IDX and Ceramic Tutorials: https://blog.ceramic.network/tag/tutorials/

Ceramic website: https://www.ceramic.network
Dev Chat: chat.idx.xyz

[WIP] Build an explorer for browsing Ceramic documents

This issue is a work in progress. Please feel free to add recommendations or thoughts in the comments. As the explorer specification becomes more solidified, this document is subject to change.

It would be awesome for someone in the community to create an explorer so developers/prosumers can easily discover documents on the Ceramic network via an interface.

UI Requirements

  • Search documents (by docId, schema, user, contents?, ...)
  • View search results
  • Display popular/featured documents (i.e. profile schema tile, anchor service policy, ...)
  • Display all network activity
  • View a document:
    • Current state
    • Full history (update log)

Functional Requirements

  • View documents
  • Display the state of a record/update:
    • Pending (Signed record)
    • Processing/Anchoring (Submitted to a blockchain) [maybe this isn't needed?]
    • Confirmed (Anchor record added)

Frontend Technology

React

Backend Technology

The explorer would be most performant and feature-complete if it was built on an index, but for the MVP we could likely directly query the network.

  • Configurable max cache for webUI for loading documents it sees

cc @oed @kamescg @msterle @pedrouid @simonovic86

Design Concept

Home Page

ceramic_explorer_concept

What is the MVP

Requirements

  • Lookup document by docId
  • NFT doc for features documents
  • Recently updated
    • Document Id

Build with IDX identity and SkyDB for interoperable, user owned apps

Bounty Description

Prizes

  • One (1) Grand Prize of 1,000,000 SC
  • Three (3) Runners Up of 300,000 SC
  • All participants with a submission worthy of consideration will receive 25,000 SC
  • These prizes are not exclusive and can be combined with others in the hackathon.

Description

IDX is a new cross-ecosystem decentralized identity and user data management protocol that provides a way for users enjoy the benefits of having a single, unified digital identity that works with all Web3 platforms, blockchains, and storage technologies – including SkyDB.

IDX provides a universal identity layer for developers to use when building decentralized applications. This helps to realize the Web3 vision of giving users ultimate control and portability of their information across applications and networks by breaking down information silos and putting users at the center of the web. IDX can be used to build a unified, cross-platform Web3 identity and make user data stored in SkyDB, or anywhere else on Web3 (think Ceramic, Filecoin, OrbitDB, TextileDB), interoperable across domains and platforms. Using IDX, your app can even store data in SkyDB and discover/pull-in user data stored in any of the systems mentioned above.

With IDX, every user gets a cross-platform decentralized identifier (DID) and an identity index to which developers can attach various pieces of data – from linked blockchain accounts and user profiles, to social graphs, SkyDB instances, and much more. Additionally, since IDX identities are public and permissionless, any developer can openly discover, query, and import data from an identity into their application. This is especially useful for shared, cross-domain data cases like public profiles or social graphs.



For this bounty, we’re looking for someone to build a project that makes use of IDX as an identity protocol alongside SkyDB. To achieve this, during onboarding you can use the IDX SDK to import or create identities, add your user’s SkyDB instance for your application to their identity index, and query their index for their data stored throughout the Web3 ecosystem – on any other Web3 platform. Feel free to use IDX for additional in-app features such as user profiles, social graphs, or anything else you can imagine. IDX allows you to store this identity metadata natively in documents on the Ceramic network, where it can be consumed everywhere across the Web3 ecosystem – within Sia applications and beyond.



We have many ideas for how to connect a SkyDB instance to IDX, so please reach out to our team in the IDX Discord if you have questions.

Submission Requirements

  • The project must be open source
  • The app must live on Skynet at a Skynet URL
  • The app should do something that is useful and interesting
  • The app must use IDX to connect a user to a SkyDB instance
  • The app may optionally use IDX for things like profiles, social graphs, and other fun features
  • Demo videos are strongly recommended for complete submissions (upload your videos to Skynet!)

Resources

IDX Website: https://idx.xyz
IDX Docs: https://idx.xyz/docs
Dev Chat: IDX Discord
IDX Announcement: https://medium.com/3box/idx-a-devkit-for-open-identity-48edc88e8e85

ETH TX retries

Implement retry mechanism for possible ETH TX failures.

BUG: Error: Unable to connect

Describe the bug
Error: Unable to connect on ceramic popup

To Reproduce
Steps to reproduce the behavior:

  1. Using package '@3id/connect'
  2. Connecting with 3id with the following code
import { ThreeIdConnect, EthereumAuthProvider } from '@3id/connect'
const threeIdConnect = new ThreeIdConnect()
let authProvider = new EthereumAuthProvider(window.ethereum, address)
yield threeIdConnect.connect(authProvider)
const didProvider = yield threeIdConnect.getDidProvider()
const CERAMIC_URL = "https://ceramic-clay.3boxlabs.com";
const ceramic = new Ceramic(CERAMIC_URL)
yield ceramic.setDIDProvider(didProvider)

Screenshots
Pic 1 - These APIs are getting called only, after which i get the error in Pic 2
Screenshot from 2021-06-07 11-56-45

Pic 2
Screenshot from 2021-06-07 11-56-53

Pic 3 and Pic 4 - Getting error on this API only for now but still other APIs are getting called which further gives the error on popup.
Screenshot from 2021-06-07 13-08-15
Screenshot from 2021-06-07 13-08-27

Ceramic versions
"@3id/connect": "^0.1.3",
"@ceramicnetwork/http-client": "^0.9.3",
"@ceramicstudio/idx": "^0.7.0",

Machine, OS, browser information (please complete the following information):
Linux,testing on Chrome and Brave only for right now.

Repo for js-ipfs with dag-jose enabled

  • create a repo which will contain all the necessary configuration for starting a standalone js-ipfs instance with APIs enabled
  • should enable dag-jose codec by default.

Open Prize: Best Hack using Self.ID or Glaze

Prize

2,000 DAI

Description

Open prize for building with Glaze or Self.ID.

Read this article for more information about the tools and how to build applications with them.

Submission Requirements

  • Must use the Glaze suite, or a Self.ID bundle, for managing identity, profiles, user metadata, user-generated content, application data storage, etc.
  • Must include demo video
  • Bonus points for creating reusable tools and content. For example, if you believe your DataModels are good and useful to others, add them to the DataModels Registry.
  • Project must be open source

Judging Criteria

  • Depth of usage of Glaze and/or Self.ID
  • Creativity
  • Overall production quality
  • Utility
  • Completeness
  • Value to others in the ecosystem using Glaze/Self.ID. This can include adding new and valuable functionality, creating good data model standards, making these dev tools more accessible to other devs, or deeply showcasing their capabilities.

Other Resources

Winner Announcement Date

October 27th

Is there a public calendar with the Ceramic Network calls?

Hi folks! I'm really enjoying to get to discover Ceramic! Watched through https://www.youtube.com/watch?v=AplPOcWdVik

Can you confirm when is the next Call for the technical discussion? I would love to join and share notes! Do you have a Community Calendar with all your calls?

We spent some time developing a lot of similar ideas in the past with a large bet on CRDT, Cryptographic ACLs and Verifiable Claims. In case you are curious, you can check (everything is open and MIT licensed):

//cc @pgte @satazor @joaosantos15 @jimpick @dirkmc who I'm sure will enjoy learning about Ceramic and discussing ideas as well

Keep up the great work! 🌟🌟🌟🌟🌟🌟

PS: I'm curious on the name, is it Ceramic because you are building the Porcelain on top of all the other protocols or because you use Tiles as a concept?

Create CIP for schemas

Will need to be a Core ceramic feature / property of DocState. Doctypes can then choose if they support schemas. Also add how schemas are validated.

Create js-dag-jose library

As simple as possible for a PoC Using the jose library for creating JWS objects and store them in ipld.
Check for secp256k1 and ed25519 support (should work already).

Create a tutorial for using Self.ID with Unstoppable Domains

Prize Bounty

750 DAI

Challenge Description

Self.ID is a drop-in bundle for building web applications with decentralized data that includes Ceramic, Glaze (DID DataStore and DataModels), and 3ID Connect (blockchain-based authentication). Self.ID aims to make it as easy as possible for developers to get started building decentralized data applications on Ceramic.

DID DataStore is a cross-chain identity protocol that allows applications to store and retrieve information in a user's decentralized identity based on customizable data models - such as profile, social graph, blog posts, linked blockchain accounts, application data, or whatever you can imagine. Multiple applications can reuse the same data models to share access to the user's data – achieving true data interoperability. DID DataStore makes use of decentralized identifiers (DIDs) as persistent, globally-unique user identifiers with verifiably-linked blockchain accounts (from any or multiple chains), but does not natively have a human readable naming system.

Unstoppable Domains provides human-readable naming systems that can resolve records used to store basic metadata, but not as complete identities.

Together, Self.ID combined with Unstoppable Domains provides a complete identity solution, enabling applications to use human-readable names to refer to a blockchain account, resolve the account's associated DID, and request access to desired information stored in DID DataStore.

The challenge: Create a guide so that any developer can use Self.ID with the Unstoppable naming service.

Resources

Submission Requirements

  • Should be a video tutorial and/or written blog post that can be posted to Ceramic and Unstoppable Domains community channels
  • Must convey the proper design through clear, concise and powerful communication
  • Must be backed by an actual implementation of the two technologies together
  • Example must be well documented and easy to follow

Judging Criteria

  • Meets the submission requirements above
  • Clean code, clear UI and good user experience
  • Solution is well-documented and blog/tutorial are clear and easy to follow

Winner Announcement Date

October 27th

Implement anchoring

The merkle tree should be generated once every 1h (for now). For the PoC we can anchor on the rinkeby ethereum testnet.

Use IDX and Textile ThreadsDB together

Prize

500 DAI

Description

Build a project that makes use of IDX as an identity protocol alongside Textile's ThreadsDB. To achieve this, during onboarding you can use the IDX SDK to import or create identities, create a Textile ThreadsDB definition for your application's data, add this to users' identity index, and query their index for their data stored by your app or others.

Feel free to use IDX for additional in-app features such as user profiles, social graphs, or anything else you can imagine. IDX allows you to store this identity metadata natively in documents on the Ceramic network, where it can be consumed everywhere across the Web3 ecosystem.

Judging Criteria

For this prize, we will be evaluating submissions based on:

  • Use of IDX and Textile ThreadsDBs

    Should require authentication via IDX to post to thread. Anyone can read

  • Implementation completeness

  • Creativity of the integration

  • Demo or other supporting material that makes the implementation useful for others

Submission Requirements

  • The project must be open source
  • The app should do something that is useful and interesting
  • Must use IDX and Textile

About

IDX is a new cross-ecosystem decentralized identity and user data management protocol that provides for a single, unified digital identity system that works with all Web3 platforms, blockchains, and storage technologies. IDX is built on Ceramic, a peer-to-peer dataweb for publishing, linking, and querying verifiable information on the open web. IDX is currently in alpha so may be unstable.

IDX provides a flexible identity infrastructure for developers to use when building decentralized applications. It can be used to store profiles and metadata, link multiple blockchain and social accounts to a single identity, read and write user verifications, and manage data on IPFS, OrbitDB, Textile, SkyDB or any other platform. This decentralized, unified, and cross-platform identity infrastructure helps Web3 projects build faster and more simply. It is also the key to realizing the vision of giving users ultimate control and portability of their information across applications and networks by breaking down information silos and putting users at the center of the web.

With IDX, every user gets a cross-platform decentralized identifier (DID) and an identity index document to which developers can attach various pieces of data relevant to their experience. Since IDX identities are public and permissionless, any developer can openly discover, query, and import data from an identity into their application, creating a rich ecosystem of information around each user.

Resources

IDX Website: https://idx.xyz
IDX Docs: https://idx.xyz/docs
IDX and Ceramic Tutorials: https://blog.ceramic.network/tag/tutorials/

Ceramic website: https://www.ceramic.network
Dev Chat: chat.idx.xyz

BUG: 500 Request timed out

Describe the bug
Since today only, i am getting error on api https://ceramic-clay.3boxlabs.com/api/v0/pins/k2t6wyfsu4pg1fj3y2j0zs1q9123cqxskk09n8bbs2b080t3wh73xh5xcikrla and https://ceramic-clay.3boxlabs.com/api/v0/documents/k3y52l7qbv1frxi800msx6cub6qxt6m0qgwe0jssvs1c0lhoww5kh4xh5h1jn8hds

To Reproduce
Steps to reproduce the behavior:

  1. Using package '@3id/connect'

  2. Connecting with 3id with the following code

    import { ThreeIdConnect, EthereumAuthProvider } from '@3id/connect'
    const threeIdConnect = new ThreeIdConnect()
    let authProvider = new EthereumAuthProvider(window.ethereum, address)
    yield threeIdConnect.connect(authProvider)
    const didProvider = yield threeIdConnect.getDidProvider()
    const CERAMIC_URL = "https://ceramic-clay.3boxlabs.com";
    const ceramic = new Ceramic(CERAMIC_URL)
    yield ceramic.setDIDProvider(didProvider)

Getting error on code statement - yield ceramic.setDIDProvider(didProvider).

Expected behavior
Gets connected to ceramic

Screenshots
Screenshot from 2021-05-26 11-41-40
Screenshot from 2021-05-26 11-35-07

Ceramic versions
"@3id/connect": "^0.1.3",
"@ceramicnetwork/http-client": "^0.9.3",
"@ceramicstudio/idx": "^0.7.0",

Machine, OS, browser information (please complete the following information):
Linux,testing on Chrome and Brave only for right now.

Additional context
Error coming since today only,was working fine till yesterday with the same written code.

Add support for a new blockchain to IDX

Prize

500 DAI per blockchain added. Most complete implementation for each chain will be awarded the prize.

Description

IDX supports a cross-ecosystem, cross-chain identity model by letting users link any number of blockchain accounts and key pairs to their DID. You can find clear instructions for how to add new blockchains in this article, along with the additional context needed.

Currently, Ethereum and Filecoin keys are supported. This bounty is to add support for additional blockchains. This makes the promise of a portable cross-chain identity more complete, and increases the number of apps and services that can use an interoperable identity infrastructure and data ecosystem.

The Ceramic core team is also available for questions at chat.ceramic.network. We encourage you to notify us of your plans to ensure you are adding support for a blockchain others are not already working on.

Submission Requirements

  • The submission must be open source (MIT and Apache 2 licenses)
  • Successful demo or testing must be provided

Judging Criteria

For this prize, we will be evaluating submissions based on:

  • Audit of code and functionality
  • Usability at the time of submission (we recommend including a video demo)
  • Cleanliness of code and documentation
  • Visibility in the community/ecosystem of the new blockchain

About

IDX is a new cross-ecosystem decentralized identity and user data management protocol that provides for a single, unified digital identity system that works with all Web3 platforms, blockchains, and storage technologies. IDX is built on Ceramic, a peer-to-peer dataweb for publishing, linking, and querying verifiable information on the open web.

IDX provides a flexible identity infrastructure for developers to use when building decentralized applications. It can be used to store profiles and metadata, link multiple blockchain and social accounts to a single identity, read and write user verifications, and manage data on IPFS, OrbitDB, Textile, SkyDB or any other platform. This decentralized, unified, and cross-platform identity infrastructure helps Web3 projects build faster and more simply. It is also the key to realizing the vision of giving users ultimate control and portability of their information across applications and networks by breaking down information silos and putting users at the center of the web.

With IDX, every user gets a cross-platform decentralized identifier (DID) and an identity index document to which developers can attach various pieces of data relevant to their experience. Since IDX identities are public and permissionless, any developer can openly discover, query, and import data from an identity into their application, creating a rich ecosystem of information around each user.

Resources

IDX Website: https://idx.xyz
IDX Docs: https://idx.xyz/docs
IDX and Ceramic Tutorials: https://blog.ceramic.network/tag/tutorials/

Ceramic website: https://www.ceramic.network
Dev Chat: chat.idx.xyz

is document encryption & abstraction possible?

DIDs own documents that may only be created or edited by them but the open network allows for the query visibility of all created documents on the network is it possible to see proof of a document in query but restrict the visibility of the document content with only the DID providing permissions for this viewing ? this question is relevant in terms of determining if personal private data can be used on an enterprise blockchain running this network protocol as to increase transparency but also ensure security

[WIP] Specify a 3ID account manager application

This issue aims to specify an application that allows users to manage their 3ID account. It is a work in progress. Please feel free to input in the comments below, and we will update this spec over time. If you're interested in designing or building the UI, please reach out.

User Story

As a 3ID user, I want a simple way to manage my 3ID account, including my:

  • Profile Tile
  • Account-link Tile
  • Keychain Tile
  • ...

Functional Requirements

As a user, this application should allow me to:

  • Create, edit, and remove my profile
  • Add and remove authentication methods to my 3ID
  • Add and remove account-links to my 3ID
  • ...

Main Screens

  • Landing Page
  • My Profile Page
  • Public Profile Page
  • Edit Profile Page
  • Settings Page
  • ...

Main Flows

  • New user onboarding flow
  • Sign in flow
  • Edit profile flow
  • Add authentication method flow
  • ...

Technology Requirements

Open Questions

Functionality:

  • Should this application allow me to view/edit sources and services?

Design:

  • What should be the look and feel of this application?

Hosting:

  • On which domain should this application be hosted?

--
For an overview of the 3ID account model, see this PR: ceramicnetwork/specs#21

Spec: 3ID invalidation on failed anchor fix

3id invalidation from key rotation with failed anchor

Two plausible paths:

Include commitId of keychain commit that was updated in the key rotation done to the 3ID tile
Sign the keychain update with the new keys before they have been anchored

Probably not any of these:
3. Bundling everything into 3ID tile (undesirable for network performance reasons)
4. Atomic anchor (undesirable for system complexity reasons)

https://www.notion.so/threebox/Failed-anchor-in-key-rotation-invalidates-3id-fec7b82a5b994213b9cfb731569b13f8

Store identity-related credentials in DID DataStore

Prize Bounty

750 DAI

Challenge Description

This bounty is to create an application or system for issuing identity-related credentials to a decentralized identity using DID DataStore or the Self.ID bundle. Your service can optionally use a third-party identity data provider, such as KYC (Onfido, BrightID, Berbix, Passbase) or reputation (proof-of-humanity, anti-sybil). Many of these providers have APIs that can be used to complete the identity verification/KYC check. Your application or service would need to generate a signed verifiable credential.

The format of the credential (and inspiration for the flow) can be taken from Ceramic's IdentityLink Service, which issue similar credentials for verified social accounts.

Tip: It's easier to create updatable/revokable credentials if each credential is stored in a separate data stream controlled by your application. Users would then need to add a reference to this credential stream inside their DID DataStore.

A good submission should consider how to handle the data submitted to complete the verification as well as the metadata contained in the verification itself.

Submission Requirements

  • Must be hosted and open-source
  • Must include a video demo
  • Must include a simple user interface and UX that end-users could complete to receive their identity credential
  • The submission does not need to be production-ready, as the 3rd party KYC issuer may require onerous steps for an open-ended service. However, the flow that's built must be viable so that an interested party could build on it for a production-ready service

Judging Criteria

  • Demo is easy to follow with strong UX
  • Production-readiness will be a key determining factor

Resources

Winner Announcement Date

October 27th

Build a POC for off-chain conviction voting with Ceramic

Prize Bounty

500-1000 DAI depending on submission quality and readiness

Challenge Description

Build a proof of concept implementation for conviction voting off-chain using Ceramic. See this article for inspiration.

Submission Requirements

A valid submission will show an end to end implementation of conviction voting using IDX and Ceramic Network.
A demo video must show a multi-user experience.
It does not need to be production ready, but it should show a full experience and have a route to real usage
We encourage hackers to share their plans in chat.ceramic.network before going too far

Winner Announcement Date

Valid through mid-April

Create a Gitcoin-IDX integration that adds discord verifications for Gitcoin users

Prize

1500 DAI

Description

This bounty is to integrate IDX (currently in alpha) into Gitcoin as articulated in this issue

  • Adding to Gitcoin a discord verification (tentatively to show up in the Trust Bonus section) that uses IDX
  • If a user already has a discord verification in their IDX, it reads from that. If a user does not, it uses the discord verification service (currently being built) to issue one
  • No other features (profile data backup, etc.) are part of this initial POC.

Judging Criteria

Submissions will be evaluated on:

  • Completeness of implementation (including UX, etc)
  • Implementation matches spec
  • Code cleanliness

Submission Requirements

  • Discuss with the 3Box Labs team before beginning work
  • Contribution must be open source and contributed to Gitcoin
  • Must use IDX as specified
  • Demo video is strongly recommended

About

IDX is a new cross-ecosystem decentralized identity and user data management protocol that provides for a single, unified digital identity system that works with all Web3 platforms, blockchains, and storage technologies. IDX is built on Ceramic, a peer-to-peer dataweb for publishing, linking, and querying verifiable information on the open web. IDX is currently in alpha so may be unstable.

IDX provides a flexible identity infrastructure for developers to use when building decentralized applications. It can be used to store profiles and metadata, link multiple blockchain and social accounts to a single identity, read and write user verifications, and manage data on IPFS, OrbitDB, Textile, SkyDB or any other platform. This decentralized, unified, and cross-platform identity infrastructure helps Web3 projects build faster and more simply. It is also the key to realizing the vision of giving users ultimate control and portability of their information across applications and networks by breaking down information silos and putting users at the center of the web.

With IDX, every user gets a cross-platform decentralized identifier (DID) and an identity index document to which developers can attach various pieces of data relevant to their experience. Since IDX identities are public and permissionless, any developer can openly discover, query, and import data from an identity into their application, creating a rich ecosystem of information around each user.

Resources

IDX Website: https://idx.xyz
IDX Docs: https://idx.xyz/docs
IDX and Ceramic Tutorials: https://blog.ceramic.network/tag/tutorials/

Ceramic website: https://www.ceramic.network
Dev Chat: chat.idx.xyz

Migrate eth.build backup feature to use IDX instead of 3Box

Prize

1000 DAI (500 each from 3Box Labs and the Ethereum Foundation)

Description

Eth.Build currently uses 3Box to backup user sessions. This bounty is to work with Austin Griffith to replicate the backup functionality using IDX (currently in Alpha) for identity and authentication and a storage solution like Ceramic, OrbitDB, Textile ThreadsDB or SkyDB.

Submission Requirements

  • Should replicate both the "save to 3Box" and "load from 3Box" functionality currently found on eth.build
  • Should be a fully functional demo and ready to merge into Eth.Build pending production-readiness of IDX
  • Must be open source & contributed to Eth.Build
  • Should ensure that saved data will be persisted (e..g, on a Textile Bucket or SkyDB network)

Judging Criteria

For this prize, we will be evaluating submissions based on:

  • Functionality and implementation cleanliness
  • Proper use of IDX
  • Demo, tutorial or other supporting material that makes migration from 3Box to IDX easier for others

About

IDX is a new cross-ecosystem decentralized identity and user data management protocol that provides for a single, unified digital identity system that works with all Web3 platforms, blockchains, and storage technologies. IDX is built on Ceramic, a peer-to-peer dataweb for publishing, linking, and querying verifiable information on the open web. IDX is currently in alpha so may be unstable.

IDX provides a flexible identity infrastructure for developers to use when building decentralized applications. It can be used to store profiles and metadata, link multiple blockchain and social accounts to a single identity, read and write user verifications, and manage data on IPFS, OrbitDB, Textile, SkyDB or any other platform. This decentralized, unified, and cross-platform identity infrastructure helps Web3 projects build faster and more simply. It is also the key to realizing the vision of giving users ultimate control and portability of their information across applications and networks by breaking down information silos and putting users at the center of the web.

With IDX, every user gets a cross-platform decentralized identifier (DID) and an identity index document to which developers can attach various pieces of data relevant to their experience. Since IDX identities are public and permissionless, any developer can openly discover, query, and import data from an identity into their application, creating a rich ecosystem of information around each user.

Resources

Eth.Build repo: https://github.com/austintgriffith/eth.build

IDX Website: https://idx.xyz
IDX Docs: https://idx.xyz/docs
IDX and Ceramic Tutorials: https://blog.ceramic.network/tag/tutorials/

Ceramic website: https://www.ceramic.network
Dev Chat: chat.idx.xyz

BUG: 5XX Bad gateway error on ceramic requests

Describe the bug
I sometimes get this error of 500 bad gateway while interacting through ceramic and it makes the user to refresh the application(retrying ceramic requests) and try again.

To Reproduce
Steps to reproduce the behavior:
1 - Using packages @ceramicnetwork/http-client, @ceramicstudio/idx, 3id-connect
2 - Sometimes, when i get the error,it's most of the time has these endpoints like -
a - https://ceramic-clay.3boxlabs.com/api/v0/documents
b - https://ceramic-clay.3boxlabs.com/api/v0/pins/
3 - There's a phase in my app where i am in need to get all the user details and so it may happens during that.
4 - Code where i think this error comes -
userDid ---> all user's DIDs
let promiseArray = [];
for(let i in userDID.data){
let DID = userDID.data[i].userDid;
promiseArray.push(blockchainDetails.idx.get('basicProfile',DID))
}
let allUsers = yield Promise.all(promiseArray);

Expected behavior
It should work as the rest of times it does,giving me the user details.

Screenshots
Screenshot from 2021-03-25 13-08-03
Screenshot from 2021-03-25 13-07-34
screenshot_from_2021-04-01_11-08-10__01

Ceramic versions
"@ceramicnetwork/http-client": "^0.9.3",
"@ceramicstudio/idx": "^0.7.0",
"3id-connect": "^1.0.0-alpha.13",

Machine, OS, browser information (please complete the following information):
Linux,testing on Chrome and Brave only for right now.

Additional context
It comes sometimes so not able to exactly know why is it coming.

Ceramic Roadmap

Ceramic roadmap

The way of the fire

Ceramic Roadmap

The current roadmap of Ceramic has three major milestones Slip, Clay, and Fire. Together they show the way to a live Ceramic network.

Slip 🔮

Slip is the network in it's current state. The typescript implementation is a functioning network which by default anchors records on the ropsten ethereum testnet. It has initial support for the three first doctypes: 3id, tile, and account-link. Currently it uses JWTs for signatures for making sure documents are signed by the correct owner. Most things are subject to change, but it can be used to try out the basic functionality.

Clay 🟠

The Clay testnet aims to be fully forward-compatible with the upcoming Fire mainnet release in terms of API and document data structure.

API refactor

The API refactor will change some of the structure of the js-ceramic implementation, putting the core implementation and the http-client in parity. In addition to this it will make it easy to add custom doctypes, and an improved interface for interacting with documents.

In the background, improvements to the internal of js-ceramic will be made so it can properly scale while running as infrastructure.

More details can be found in the CeramicApi CIP.

Schema support

To verify that the content of a document follows a specific format, schemas can be used. With schema support in Ceramic, json-schema definitions can be set on documents and will be automatically enforced. Schemas will be implemented as a feature in the 3id and tile doctypes, and will be enforced by the state transition function of the doctype. A schema will itself be defined as a Ceramic document, and when used it will be referenced by the docId and version of that schema document.

3ID Connect support

3ID Connect is the system that allows users to authenticate to 3ID identities with a blockchain account. It exposes the 3ID provider interface, which is currently used within the 3Box SDK. The 3ID provider interface is however not limited to be used within 3Box. By refactoring 3ID Connect, it will gain support to be used together with Ceramic. This will allow any user with a wallet to use Ceramic from their browsers.

dag-jose codec (signatures)

JOSE is short for JSON Object Signatures and Encryption and it's a standard for just that. The dag-jose is a codec for IPLD which allows users to store signed and encrypted objects natively in IPFS. A rough spec of dag-jose can be found here: ipld/specs#251.
This milestone includes an implementation of the signature part of dag-jose in javascript, which allows js-ipfs to natively interpret these objects.

More information about dag-jose will be published in an IPLD spec soon.

Fire 🔥

Fire is the mainnet release of Ceramic. All documents created after this point will be permanently accessible in the network (given that someone pins them). The Fire release features improvements to the API, encryption support, metrics, transferrable documents, etc.

Mainnet anchor service

The default anchoring service configured in js-ceramic will start operating on the Ethereum mainnet. Other anchor services that operate on Ethereum or on other blockchains, such as Bitcoin etc, can be configured when a node is instantiated. It's up to each node operator to decide which anchoring service (and blockchains) they want to support.

An Ethereum Ropsten anchoring service will still be available and used for the Ceramic testnet which will continue to run in parallel with mainnet. This testnet will use a different pubsub topic to gossip updates for documents so that the data from different networks doesn't get mixed up.

Hooks

Hooks are simple functions that you can add to a Ceramic node to perform actions when a document is updated. The hook will have have access to information about which document was updated, how the document content changed, and when the document was anchored.

A CIP that describes hooks in more detail will soon be available.

Delegates

Currently 3ID identities in Ceramic are owned by one public key. However, in many cases there is a need to delegate the ability to act on an identity's behalf to other identities. A good example of this is a DAO. A DAO can delegate the ability to edit and update data on it's behalf (e.g. updating its profile) to one or multiple of its members. The delegate functionality will be an update to the 3id doctype that allows the owner of the 3ID to assign delegates that can sign documents on their behalf.

Node metrics

When running a Ceramic node it's useful to know what is happening internally in the node, what network communication is taking place, and how resources are being used. Node metrics will provide rich insight into this.

Ceramic explorer

The Ceramic explorer will be a graphical interface that allows users to browse and search the graph of documents in Ceramic. The state of documents can be observed, including if they are pending or if an anchor has been confirmed. It will also be possible to view previous versions of documents using the explorer.

More information about the explorer can be found here: #12

Fibers

Fibers is an improved model for conflict resolution in the Ceramic protocol. It removes the need for nodes to sync the entire history of a document, which can become quite large if there are a lot of updates. Instead only the essential parts of the document log (i.e. owner changes / key revocations) needs to be synced. This change will also allow Ceramic documents to be owned by NFTs, where only the current owner of the NFT can make updates.

A CIP that describes Ceramic fibers in more detail will soon be available.

NFT document ownership

Documents in Ceramic are usually owned by a DID or a public key. This means that changing ownership of a document is an action which is vulnerable to a double spend attack (described in detail in the specs). In most cases, this is not much of a problem because documents are centered around users. However, in some cases transferable documents are desirable. This can be enabled by allowing documents to be owned by NFTs. When a document is owned by an NFT the current owner of the token is allowed to update the document. When the NFT is transferred to a new owner, access to update the document is revoked and only the new owner can make updates. This will be implemented as an update to the 3id and the tile doctypes.

Service document

By describing a service in a service document, service providers can list their service on the Ceramic network as consumable by anyone. A service document simply describes the service's endpoint and how to use the service (inputs / outputs). It also includes information about settings, payments etc. Service documents will be flexible so that they can describe a wide range of services, including both web2 and web3 type services.

A CIP that describes service documents in more detail will be available future.

dag-jose codec (encryption)

As mentioned above JOSE enables both signatures and encryption of JSON objects. Adding support for encryption in dag-jose is a critical step towards adding privacy to Ceramic. Encryption support in dag-jose enables storing encrypted data directly in IPFS. Decryption support for dag-jose could potentially be added directly into IPFS. In Ceramic, encryption will initially be used to encrypt data in documents.

DID provider

Currently Ceramic relies on the 3ID provider interface. Many of the methods provided by the 3ID interface can be generalized into a DID provider. This provider will provide a generic json-rpc interface that can be shared by any DID in order to sign payloads and decrypt data encrypted to the public key of the DID. Creating this generalized provider allows wallets to support Ceramic operations in an unopinionated way using the DID method that they already use.

dag-jose (go-ipfs)

Having dag-jose implemented in javascript means that Ceramic only works with js-ipfs. Adding support for go-ipfs is crucial in order to make Ceramic work in as many environments as possible. The go implementation of dag-jose will start in parallel to the javascript implementation, but is expected to be delivered later.

Minor IDX.XYZ cleanups

A few tiny things I noticed going through the idx.xyz site

  • copyright is "3Box Labs" on landing page and "Ceramic Studio" on docs. If we copyright at all it should be "3Box Inc" but we can also just say "made with ♥ by 3Box Labs" -- no real need for a copyright notice and if we have one it needs to be proper name
  • in the docs, seems like we could benefit from splitting out the first part of "Understanding Authentication" into its own header around reading identities - a lot of integrations will likely be read-only based on a DID or an address and making it obvious at the top level that's a supported use case might help conversion
  • I'd advocate for "Docs" rather than "Get Started" in nav bar to make it crystal clear. I actually thought it was missing a link to the docs at one point briefly. But i'm not a dev so maybe everyone else will get it :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.