bsips/bsip-0007.md

144 lines
6.5 KiB
Markdown
Raw Normal View History

2015-12-16 11:37:08 +00:00
BSIP: 0007
Title: Privacy (STEALTH) Mode
Authors: Daniel Larimer <Dan@cryptonomex.com>
Fabian Schuh <Fabian@BitShares.org>
Status: Draft
Type: Informational
Created: 2015-12-16
Discussion: <https://github.com/cryptonomex/graphene/issues/452>
<https://bitsharestalk.org/index.php/topic,20104.0.html>
<https://bitsharestalk.org/index.php/topic,20499.0.html>
Worker: tbd
# Abstract
Privacy Mode Transfers (a.k.a. Stealth Transfers) are used to maintain user
privacy. This feature helps set BitShares apart from most other crypto
currencies and offers tremendous value to the users who are most interested in
privacy, liberty, and freedom.
In practise they combine the techniques of *blinding* for the transfer amount
and *stealth addresses* (similar to TITAN in BitShares 1) to hide involved
parties.
# Specifications
This proposal involves creating a new front-end feature on the account page in
the wallet to enter the *privacy mode*. Here, users will be able to create
*private accounts* which are nothing but labeled private keys. They will also be
able to manage *private contacts* which are nothing more than labeled public
keys. Neither private accounts nor private contacts are tracked on the
blockchain since those keys are not used directly.
Users will be able to monitor their private balances and take the following
actions:
* Transfer from public account to their own private balance
* Transfer from one of their private accounts to one of their private contacts
* Transfer from one of their private accounts to any public account
* Register a new account using a private balance.
* Receive a private transfer from a 3rd party given a transfer receipt.
# Implementation Aspects
2015-12-16 13:56:42 +00:00
## Backup Considerations
2015-12-16 11:37:08 +00:00
Because private transfers are not recoverable from blockchain data alone,
backups of your wallet after receiving a new private transfer are required.
2015-12-16 13:56:42 +00:00
## Javascript Implementation
This proposal will require the use of this library to perform the necessary
crypto operations in javascript (see [1]).
# Funding
BitSharestalk.org forum user `onceuponatime` has proposed to fund the
development and implementation of this feature in full as a private investor and
at zero cost to BitShares holders.
Contract between `onceuponatime` and Cryptonomex:
The purpose of this contract is to develop a Privacy Mode feature, Privacy Mode
fee accumulation account, Maintenance Account, Initialization Package, and GUI
interface for BitShares scoped for a firm fixed price of $45K. The following
requirements apply:
1. The Privacy Mode feature shall be implemented as proposed in
https://github.com/cryptonomex/graphene/issues/452 (as amended).
2. It shall provide the following fee based services:
* Transfer from public account to their own private balance
* Transfer from one of their private accounts to one of their private contacts
* Transfer from one of their private accounts to any public account
* Register a new account using a private balance.
* Receive a private transfer from a 3rd party given a transfer receipt.
3. Each of these services shall charge a fee initially set at 3x the standard
transfer fee, but which may be adjusted from time to time by the owner(s) of
the Privacy Mode fees account
4. Fees shall be automatically distributed by the blockchain to the following
accounts:
* 20% to the BitShares network.
* 20% to a Maintenance Account.
* 60% to holder(s) of the Privacy Mode Fees accumulation account
5. The Maintenance Account shall be controlled by five specified manager
accounts in a 3 of 5 multisig configuration. These managers will control
the allocation of this fund to future maintenance and upgrade tasks.
6. The Initialization Package shall modify the blockchain to make the Privacy
Mode feature available to users.
7. The Initialization Package shall make provision for the creation of
generic Fee Based Assets (FBA) and set the fee for such
8. A GUI shall be provided in the OpenLedger and Light wallets to allow
ordinary users to easily use the Privacy Mode features.
9. Documentation of the Privacy Mode feature and Maintenance and Fee
Accumulation account shall be provided on the appropriate reference web
sites.
10. Resulting software patch to the Graphene library shall have the same
license as the rest of Graphene subject to the condition that the results
of the Initialization package and fee distribution mechanisms are not
modified.
# Management Account
The STEALTH asset will be issued by the "management account" for this feature.
`Onceuponatime` will be the initial owner of the issued asset (not the issuer).
This management account will have multi-sig authority assigned to the 5 largest
STEALTH holders weighted proportional to stake and will have the power to set
the fee.
# Roadmap
* Feedback and discussion of this thread: *December 8 to December 10, 2015*
* Presentation of an amended Cryptonomex Worker Proposal: *Dec 11, 2015*
This worker proposal should include Milestones of what is intended to be
accomplished by the end of week 1, week 2, week 3, week 4 and week 5 so that
the Community can follow progress in the github.
* Voting for Worker Proposal: *Dec 11 to January 1, 2016*
* onceuponatime forwards $45,000 to Cryptonomex: *Jan.2, 2016*
* Cryptonomex does the development and testing of the feature: *(4 to 6 weeks)*
* Hard fork for implementation of the feature: *Monday Feb, 15th*
2015-12-16 11:37:08 +00:00
# Discussion
For the best user experience this proposal is best combined with proposal for
*hosted wallets* (to be defined).
2015-12-16 13:56:42 +00:00
## No Participation in Referral Program
The referral program does not play with Privacy mode transfers (because it is
private, we don't know who the parties are or who referred them). This means
that even if the fee were the same as the basic transfer, on average the
lifetime member would be paying 5x more a Private Transfer than a Public
Transfer. If you charge 3x the basic transfer fee, then life time members will
pay 15x more for a Private transfer than a Public transfer.
Percentage based fees are not possible with Private Transfers either because the
amount being transferred is *private*!
2015-12-16 11:37:08 +00:00
# Copyright
This document is placed in the public domain.
# See Also
* [1] https://github.com/arhag/crypto-experiments/tree/emscripten/emscripten/libsecp256k1-demo