Skip to content
Accountable Watching Service
TypeScript JavaScript Solidity Dockerfile Shell CSS HTML
Branch: master
Clone or download
bigspider Merge pull request #278 from PISAresearch/277-nested-error
Added utility class for nested errors
Latest commit 358a823 Aug 20, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Incorrect logs path Aug 13, 2019
configs Config parsing May 15, 2019
diagrams Changed the order of the polling arrow to reflect a 'call' rather tha… Apr 5, 2019
docker Removed redoc from docker build Aug 13, 2019
docs Added inline redoc html so that we can dynamically set host and port Aug 13, 2019
raiden_demo Fixed encoding and removed logging Aug 13, 2019
sol updated pisa contract + tests Aug 13, 2019
src Merge branch 'master' into 277-nested-error Aug 20, 2019
test Small improvement from code review Aug 20, 2019
.dockerignore Another test commit Jan 7, 2019
.eslintignore
.eslintrc.js Added eslint and prettier, with custom rules; added npm 'lint' script… May 9, 2019
.gitattributes Create .gitattributes so that Solidity renders in Github Aug 6, 2019
.gitignore Added rule to prevent .DS_Store files in the repo Jul 25, 2019
.prettierrc.js Added eslint and prettier, with custom rules; added npm 'lint' script… May 9, 2019
README.md
package-lock.json First pass at data persistence for responder Aug 7, 2019
package.json First pass at data persistence for responder Aug 7, 2019
tsconfig.json Added ts source maps May 13, 2019

README.md

CircleCI codecov

PISA - An Accountable Watching Service

PISA is a solution to help alleviate the online requirement for smart contracts.

It was first devised for off-chain protocols, where PISA could be hired to watch for challenges on behalf of its customer. However, in a very generic sense, PISA can be hired to watch any smart contract when a user must respond within a fixed time period to an on-chain event.

Our infrastructure focuses on supporting several smart contracts including off-chain channels, plasma, auctions, e-voting, makerdao, etc.

We are working to minimise all integration effort - in the best case a smart contract may just need to post "logs" to a data registry - and we'll take care of the rest!

PISA to the rescue - fixing the bad UX for 2 step protocols

As a protocol designer, we love building protocols using commit and reveal to guarantee fairness. Good examples include auctions (seal bid, reveal bid), games (submit sealed choice, reveal choice), and e-voting (submit sealed vote, reveal vote). But so far, the UX around two-step protocols are really bad and users have lost money.

Why is commit and reveal a bad user experience? Generally, a commit and reveal protocols requires the user to be online "twice":

  • Users "commit" to their choice (all users must commit before time t1)
  • Users "reveal" their choice (all users must reveal before time t2)

Requiring users to be online within both time periods does not translate well to a good user experience in the real world - people can very easily just forget to respond. The big issue is not that they forget and lose-out, but the smart contract will actually slash the customer and make them lose their deposit. Not a great UX outcome, but a necessary evil in smart contract design.

How is PISA "Accountable"?

When PISA is hired by the customer, we provide the custoer with a signed receipt that proves we accepted the job. If we fail to respond on their behalf, then the customer can use on-chain evidence (via the DataRegistry) and the signed receipt as indisputable evidence of our wrongdoing.

Two outcomes for the customer if PISA fails Either the customer is refunded within a fixed time period (based on what we promised in advance) or eventually the customer can slash our security deposit.

We always have an opportunity to make right our mistake and refund the customer - but ultimately we are financially accountable for the mistake. Thus the customer does NOT have to blindly trust us!

When can I start using PISA?

We are currently working on the implementation and a set of standards to minimise integration efforts with us. If you want to partner with us such that your customers can hire PISA to respond on their behalf - please contact us at paddy@pisa.watch and check out the following standards (we will update this list as more are posted):

You can’t perform that action at this time.