Trusted oracles

Providing project work assessment services as a trusted identity

The %fund application is an open system where cryptographically secure identity and trusted relationships enable Urbit IDs to serve as effective oracles for economic activity occuring in the world of atoms but settling in the world of bits. To this end, the role of the "trusted oracle" is to provide the valuable service of reviewing project deliverables against the human-legible project terms, determining for the project—and balancing the interests of both the worker and the funders—whether a given project milestone has been satisfactory completed, or not.

Basic Setup

There are essentially only two basic requirements in order to serve as a trusted oracle:

  1. Be an Urbit Star or Galaxy-level identity

From there, open the %fund application and visit the "Trusted oracle" dashboard page to take action on any incoming service requests from project workers or to take review actions on presently active projects. If you run into issues, check out the Operating as a trusted oracle section of this page.

Why do we only support stars as escrow providers?

Currently, %fund restricts the trusted oracle functionality to star and galaxy-level Urbit IDs. We do this for three main reasons:

  • 'Skin in the game': Urbit stars and galaxies have material economic value as ERC721 tokens on the ethereum blockchain. By restricting to these identity types, we can set a baseline expectation for project workers and funders that a potential trusted oracle doesn't want to immediately torpedo the value of their cryptographic asset by operating as a bad actor. In a stark contrast to planet or comet level identities, this helps to incentivize a game theoretic model of iterative games by increasing the cost of burning an identity over that which could be gained by malicious action.

  • Sovereignty signaling: The role of a trusted oracle is one of a sovereign. The buck stops with them on the topic of whether work meets the terms of the project specification. This power is a pairing of freedom and duty, which the responsibility of running a star suggests is something with which the owner is both comfortable and actively interested.

  • Institutional ambitions: We expect that the best experience for creating new crypto-economies and managing the dispute resolution protocols within them will be crafted by the individuals and groups who have signaled an interest in running urbit stars, which come with other similar opportunities (such as running %chain validators). These new institutions are necessary elements, or artifacts, of human organization across the world of atoms and the world of bits. Transience may be allowed, but it isn't exactly encouraged.

At this stage these dynamics lean towards the social, but as %fund evolves the star-level identities and their on-chain interactions with other Urbit IDs offer opportunities for increased functionality around relationships and reputation.

Getting a star

In spite of restricting the trusted oracle role to specific costly NFT holders, it is not our intent to build a permissioned system, but rather leverage an opportunity for economic signaling and on-chain interaction. Acquisition of an Urbit star is possible through a variety of channels:

  • Opensea: A general purpose NFT marketplace

  • urbitex.io: A marketplace dedicated to trading Urbit Stars and Planets

  • Urbitswap: An urbit application for trading NFTs. Download it on your planet and use it to buy a star in a p2p transaction

  • Urbit Foundation: If you would prefer to earn a star, rather than purchase one, the Urbit Foundation's grants program regularly distributes stars as a reward for contributing to the urbit ecosystem.

There also exist an array of OTC sellers and p2p mechanisms of exchange. You could probably even use %fund as a way to settle the trade of a star for USDC... Definitely let us know if you pull this one off!

Operating as a trusted oracle

Of course, getting a star-level identity and installing %fund are just the beginning of running a trusted oracle. You will need to build relationships with project workers, recruit potential project funders, review/approve work product, and figure out how to best handle disputes within your community. This is on you! Of course, we don't know your audience as well as you do, but perhaps you want to publicize your availability on twitter, host a %tlon group, or otherwise signal to the world that you are a credible source of trusted oracle services.

Service fee negotiation

After finding a project worker who thinks that your reputation brings enough clout to their project, and who trusts you to be a fair judge of project completion, you will need to negotiate specific deal terms. Currently, the compensation model for trusted oracles is a fee percentage of successfully completed and paid out project milestones. This specific fee-percentage is expected to be negotiated out-of-band from %fund (i.e. via %tlon direct messages), and will be formally noted by the project worker when they send their service request to you.

Accepting a request

Formal requests will appear in your trusted oracle dashboard under "Requests for my services." Projects in this "Proposed" stage will be locked for editing and include an "Review Request" card that outlines the proposed fees and the project details for your review. If, in your judgement, the scope looks well-specified enough you can click "Accept".

You will be prompted to sign a message with your ethereum keys. You will not be asked to execute a transaction, but rather you are signing the contents of the proposal, so the project worker cannot surreptitiously change the terms of the deal. A secondary reason for requiring this message signing is to ensure you have access to the private keys that are being assigned payment approval permissions so that funds don't get stranded and need to be unnecessarily refunded.

The signed message is passed from your urbit to the project worker for final transaction execution, thus saving you the need to pay any gas fees. Transaction execution and final instantiation of the escrow contract is the responsibility of the project worker.

And of course if the project is not well specified enough (yet), or the fee offer is insufficient, you can click "Reject" which will send it back to the project worker and allow them to make further edits. If you reject a request for your services, we recommend also sending the worker a DM to explain why.

Trusted Oracle actions

Once the escrow contract is instantiated, the project will receive the "Launched" status, until the project worker takes action to update a milestone to "In-progress". For more on status definitions, check out this section here. Otherwise, the primary items of consideration as a trusted oracle are the review actions or project cancellation.

As the trusted oracle, you have access to three primary actions within %fund:

  • Changes Required ~ : Urbit-side action that changes the milestone status from launched to in-progress. Hitting this button will suggest to the worker that more work needs to be done in order to satisfy the milestone terms. We strongly suggest sending them a DM as well to clarify exactly what needs to change.

  • Approve: Urbit-side action that changes the milestone status from in-review to completed and prompts your ethereum wallet to sign a message approving a withdrawal transaction. Providing this signed message enables a transaction of the milestone amount to the project worker's payment address.

  • Cancel Project: Changes project status to cancelled and prompting your ethereum wallet to provide a signed message for the refund transaction which will be validated and approved by either your project worker, or ceo.tocwex.eth.

Aside from the "Cancel project" action, which appears in the project overview section of the project page, all of these actions appear as buttons in their respective milestone cards when a milestone is eligible for that particular action.

Frequently Asked Questions

What is a sufficient project specification?

it's up to you! It might might make sense to go back and forth with the project worker on the details of the project, as currently our interface only allows for acceptance and rejection of a service request. Depending on how you expect to run your oracle service, you may want to offer a standard deal, or otherwise publish your expectations for what it means to assess successful milestone/project completion so that both workers and funders know the standards and protocols which will need to be followed.

Can I contribute to a project for which I am the oracle?

Yes! After accepting the request and following the instantiation of the contract by the project worker, the action modal will change to a contribution modal. Contributing to a project you are adjudicating is allowed; it is up to you whether that is compelling to your audience or if they may perceive it poorly. You decide.

Last updated