Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create User Staking prototype #17

Closed
tspoff opened this issue Apr 24, 2019 · 7 comments
Closed

Create User Staking prototype #17

tspoff opened this issue Apr 24, 2019 · 7 comments

Comments

@tspoff
Copy link
Collaborator

tspoff commented Apr 24, 2019

User staking is very simple - users can just stake for another user in this contract and an event is emitted. The indexing service collects these and they are used as part of the calculation to determine the creditworthiness of an individual.

  • Based off the unimplemented bloom model as described in the whitepaper
  • When users stake eachother, their scores influence eachother.
  • Users with low credit can establish some credibility if more established users vouch for them
  • Score calcuations will happen off chain for performance (all primary data is on-chain, all derived data is calculate off-chain)
@adibas03
Copy link
Collaborator

Will an address be able to stake itself, also do we care about spam stakes, since the staking function is far easier without it (more of a developer ease issue)?

@tspoff
Copy link
Collaborator Author

tspoff commented Apr 24, 2019

I think we should add a couple conditions to be able to stake:

  • A staked address must be a valid bloom account.
  • You can only stake an address once.

I'm not thinking spam staking will be an issue in general, as there's no direct incentive to do it, as you only gain something when others stake you.

However, if someone wanted to create a network of fake accounts to build up reputation among eachother with the intent to defraud legitimate loan providers, easy staking would be part of the issue.

@adibas03
Copy link
Collaborator

To only stake Address once, we need storage, to curate the list of stakes, stakees and stakers.

@adibas03
Copy link
Collaborator

Also, to be clear, what is the difference between staking and Attesting?

@tspoff
Copy link
Collaborator Author

tspoff commented Apr 26, 2019

Yea the terminology is confusing.

Staking is an action that can be undertaken by any bloom user to say "I believe in this persons creditworthiness enough to have my own creditworthiness be influenced by their performance”. It’s called staking in Bloom protocol, though that’s an unimplemented feature. "Vouching" might be another term, or "social attestation".

Attestations are a more general case for an approved party ( by the bloom network ) to attest to the validity of data relating to a user. (Say, a background checking company verifying the users financial or criminal record in a jurisdiction)

In Bloom protocol, there is a specific format for this data that culminates in a merkle root being published in an event on-chain.

Users can choose to reveal part or all of the data included to requesters who want to evaluate the user. The signatures of both the user and and attester are included in such a way the requester can be confident both approved.

@tspoff
Copy link
Collaborator Author

tspoff commented Apr 26, 2019

Good call on the storage requirement. I'm not sure if spamming is really a problem (and the spam potential is still pretty high if we only allow each address to stake another address once, as users could sign up and stake every other user).

I'd lean towards keeping it as-is unless we end up with extra time, and add a check to ensure we're staking a valid bloom account, which I'll do tonight.

@onggunhao
Copy link
Collaborator

Moved to enabledao/enable-contracts#27

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants