Antechamber

Worker(s): xiphiness Reward: 4 Stars WIP

Background

Galaxy owners have an important place within the Urbit ecosystem: they're expected to vote on important matters related to Urbit's future. We think that galaxies should both a) be able to assemble and communicate with one another, and b) that communication should be undertaken through Urbit itselth. Urbit galaxies, like stars, predominantly fulfill an infrastructural capacity, meaning that galaxy owners will likely interact with Urbit through their personal planet (further, due to the high value of galaxies, it is often the case that their ownership is shared by multiple individuals or a firm).

This bounty proposes the use of a delegate system, whereby a galaxy can designate another, lower-value ship (e.g. a planet) as their delegate in such a way that the designation can be freely given and taken away, as well as be publicly verifiable. This enables ships that represent individuals, like planets, to speak on behalf of galaxies.

This use-case is exactly what the Azimuth Claims contract is meant to enable. Using claims, our workflow would work like this:

Going forward, we'll refer to this pair of claims as a senate delegate claim.

Assuming such a claim can be made, the next step would be to read/watch them from within Urbit, and then use them to restrict membership in a specified group to just those ships that serve as galactic delegates.

Proposed Architecture

Part 1: Extend Bridge to Support Claims

The claims contract is one of the few Azimuth contracts that has not yet been given any form of interface within Bridge. This part of the implementation involves providing a comprehensive interface within Bridge for managing claims.

Bridge makes use of the azimuth-js library for interacting with Azimuth contracts. Initial support for the claims contract was added in this pull request, although key features are missing—your first task will be to extend the azimuth-js library with additional operations:

With the above operations defined, your next task will be to extend Bridge to satisfy the following user stories:

User Stories

(All stories are from the perspective of a point owner, and can be read: "As a point owner, ...")

Part 2: Create the senate-group-hook

This gall agent will make use of the eth-watcher agent to watch for ClaimAdded and ClaimRemoved events, filter just the claim events that reference delegate claims, and translate those events into invites to or kicks from a specified group.

User Stories

All stories that refer to a "group admin" below refer to a group admin that is running the senate-group-hook.

Implementation Notes

Deliverables

Your solution to this bounty should include pull requests against these repositories:

Expectations

You will work closely with the director of urbit.org on this project. This means that regular check-in calls will be held to discuss the project's progress. Additionally, the you are expected to provide regular status updates on the project to the Urbit community via twice-monthly updates on this bounty.

The director will ensure that you have access to the necessary resources to complete this project. All prior work done on this project will be explained and made available to you, and should questions arise that require the expertise of engineers at Tlon, time will be made (schedules permitting) for your questions to be answered either in writing or over a call.

Milestones

Part 1: Extend Bridge to Support Claims

2 stars Pull requests to azimuth-js and bridge, as specified above, have been merged.

Part 2: Create the senate-group-hook

2 stars Pull requests against the antechamber repo mentioned above have been merged.