Skip to content

Create a Superfluid and addressBook Ceramic Datamodel integration #215

@mattdavis0351

Description

@mattdavis0351

Prize Title

Create a Superfluid and addressBook Ceramic Datamodel integration

Prize Bounty

5,000 USDC

Challenge Description

Integrate the Ceramic addressBook datamodel into Superfluid. The most useful place for this integration is within the Superfluid Console itself. The Console is a tool that's really useful for interacting with Superfluid, and it has a feature which allows you to create an address book to manage different accounts you're working with across EVM chains.

Datamodel information can be found below:

address_book.json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "title": "AddressBook",
  "required": ["total_cnt", "contacts"],
  "additionalProperties": false,
  "properties": {
    "total_cnt": {
      "type": "integer",
      "description": "The total number of contacts",
      "default": 0
    },
    "contacts": {
      "type": "array",
      "default": [],
      "items": {
        "type": "object",
        "required": ["name", "wallets"],
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "description": "The contact's name",
            "default": ""
          },
          "wallets": {
            "type": "array",
            "description": "Collection of the contact's wallet addresses and respective networks",
            "default": [],
            "items": {
              "type": "object",
              "default": {},
              "required": ["walletAddress", "network"],
              "additionalProperties": false,
              "properties": {
                "walletAddress": {
                  "type": "string",
                  "default": ""
                },
                "network": {
                  "type": "string",
                  "default": ""
                }
              }
            }
          },
          "avatar": {
            "type": "string",
            "description": "Optional URI of user avatar",
            "default": ""
          },
          "tags": {
            "type": "array",
            "description": "Optional tags for the contact",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "uniqueItems": true
          },
          "data": {
            "type": "object",
            "description": "Fields to include optional arbitrary data",
            "properties": {}
          }
        }
      }
    }
  }
}
DIDToAddressBook.json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "title": "DIDToAddressBook",
  "required": ["mapping"],
  "properties": {
    "mapping": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["user_DID", "address_book_streamID"],
        "properties": {
          "user_DID": {
            "type": "string",
            "description": "The user's DID",
            "default": ""
          },
          "address_book_streamID": {
            "type": "string",
            "description": "The streamID of the Address Book associated to the user",
            "default": ""
          }
        }
      }
    }
  }
}
model.json
{
  "definitions": {
    "myAddressBook": "kjzl6cwe1jw149hy5kge1gqmp669kvn2c0xmnrr109wajqrwteg9mdmlalzaku4",
    "DIDToAddressBook": "kjzl6cwe1jw147ff7ga8wa97ytivguq3cb2umpwkvdbuyydx7drpnaitmtvhx8r"
  },
  "schemas": {
    "AddressBook": "ceramic://k3y52l7qbv1frxycyoblevfvx12ws5t0iuqmrwiadl36p20ectvw9yuhs4g9uruv4",
    "DIDToAddressBook": "ceramic://k3y52l7qbv1fry9pcj5rymkn9686buqtmaley7qujeyd4atyy2huvrzumsc9jc2kg"
  },
  "tiles": {}
}

Submission Requirements

  • Working demo and video submission
  • Submit a pull request to the Superfluid Console repo with your integration
  • Submit any new datamodels created during the bounty to the datamodels repository (optional)
  • Publicly available code

Judging Criteria

  • Usability and function of the integration
  • Code quality
  • Documentation

Winner Announcement Date

June 4th, 2022

Resources

Metadata

Metadata

Assignees

No one assigned

    Labels

    bountyIssue with a reward for completion according to specgood first issueGood for newcomers

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions