-
Notifications
You must be signed in to change notification settings - Fork 35
Open
Labels
bountyIssue with a reward for completion according to specIssue with a reward for completion according to specgood first issueGood for newcomersGood for newcomers
Description
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
Labels
bountyIssue with a reward for completion according to specIssue with a reward for completion according to specgood first issueGood for newcomersGood for newcomers