Closed wuyahuang closed 2 years ago
Thanks for the submission @wuyahuang. We'll review and get back to you soon!
Hi @wuyahuang - we reviewed your proposal in detail and decided to pass because it is unclear if the impact on the developer ecosystem will be high enough.
Thanks for taking the time to submit your proposal and feel free to reach me directly on Discord in case you have further questions: alx-flw.find#6198
.
Dual-Key Stealth Address Protocol
Grant category
Description
The first full working implementation of DKSAP(Dual-Key Stealth Address Protocol) was announced by a developer known as rynomster/sdcoin in 2014 for ShadowSend, a capable, efficient and decentralized anonymous wallet solution. The DKSAP has been implemented in a number of cryptocurrency systems since then, including Monero, Samourai Wallet, and TokenPay, just to name a few. The protocol takes advantage of two pairs of cryptographic keys, namely a ‘scan key’ pair and a ‘spend key’ pair, and computes a one-time payment address per transaction, as detailed below:
The receiver has two private/public key pairs (s, S) and (b, B), where S = s·G and B = b·G are ‘scan public key’ and ‘spend public key’, respectively. Here G is the base point of an elliptic curve group.
The sender generates an ephemeral key pair (r, R), where R = r·G, and transmits it with the transaction.
Both the sender and receiver can compute a shared secret c using the ECDH: c = H(r·s·G) = H(r·S) = H(s·R), where H(·) is a cryptographic hash function.
The sender uses c·G + B as the ephemeral destination address for sending the payment.
The receiver actively monitors the blockchain and checks whether some transaction has been sent to the purported destination address c·G + B. Depending on whether the wallet is encrypted, the receiver can compute the same destination address in two different ways, i.e., c·G + B = (c + b)·G. If there is a match, the payment can be spent using the corresponding private key c + b. Note that the ephemeral private key c + b can only be computed by the receiver.
In DKSAP, if an auditor or a proxy server exists in the system, the receiver can share the ‘scan private key’ s and the ‘spend public key’ B with the auditor/proxy server so that those entities can scan the blockchain transaction on behalf of the receiver. However, they are not able the compute the ephemeral private key c + b and spend the payment.
Problem statement
Public ledgers are generally seen as “pseudo-anonymous” as addresses can be linked to one person although that person’s identity is unknown to the public. However, by combining this info with other data it is possible to discover the real-world identity behind the address. Many individuals and companies prefer to have an additional layer of security in order to keep their privacy. That’s where DKSAP comes to play.
Target audience The main target audience is all privacy-sensitive blockchain users.
Evidence for the need
Proposed solution
I want to develop an anonymous NFT contract based on DKSAP, and all NFT owner's public keys are encrypted by the receiver's scan public key. At the same time, users send the transaction through a relayer to ensure the anonymity of the transaction. The relayer will create a new account in which the public key is the recipient's encrypted address.
Impact
Milestones and funding
Milestone 1 — Implement DKSAP for Flow
Team
Yahuang Wu
Future Plans