Project Name: Obsidian
Project Track: DeFi
Team Name: Moskvertsa
Team Member(s): 1, @hazelcaus
Dorahacks Project Link: Obsidian | Buidls | DoraHacks
Project Goal: Stealth Payments on Tron/BTTC
Project Website: https://obsidian-bttc.vercel.app
Obsidian is a protocol that enables privacy-preserving stealth payments on BTTC. It was conceived in response to a tweet by Vitalik Buterin back in March 2020.
With a stealth address, a payer can send BTT or TRC20 tokens to an address controlled by the receiver, but no one except the two parties know who the receiver is. Obsidian leverages the properties of elliptic-curve cryptography to enable payments where only the sender and the receiver know the receiver’s identity.
One way to think of Obsidian is this: before anyone sent you funds, you sent them a brand new, never before used address. Only the sender would know you control that address, which adds a layer of privacy to your payment. Payments via Obsidian work similarly, but are non-interactive—you don’t need to give someone a fresh address, the sender can just generate one they know only you will be able to access.
How it works
Suppose Alice wants to sent 1000 BTT to Bob. If she proceeded with a regular transfer, anyone can trivially inspect the blockchain transaction and know Alice sent 1000 BTT to Bob. But, Alice and Bob care about privacy, so they use the Obsidian protocol
Bob generates a base58-encoded key (known as the Obsidian ID) which isn’t bound to any particular blockchain address. He uses this ID to generate a completely unique stealth address enabling anyone to privately pay him using his address. He is now ready to receive funds and sends this ID to Alice. Alice then uses Obsidian to send the 1000 BTT to Bob (using just Bob’s Obsidian ID).
On-chain, Alice appears to send 1000 BTT to an otherwise empty address. Behind the scenes, Alice has used a public key published by Bob using his Obsidian ID to generate the new address. By encrypting the data used to generate the address, and announcing it via the Obsidian smart contract, Alice can let Bob know she’s sent him a payment to a new stealth address. Only Bob can generate the private key needed to withdraw the funds.
For a more in-depth technical explanation (including the advanced cryptographic techniques used), we highly encourage you to go through the GitHub repository (or at least the README).
Stealth payments using the native BTT token are supported currently. For Milestone 2, we hope to work on the following features:
- TRC20 token support
- Meta-transactions (gas refuel on stealth address)
- Tron Network deployment (currently on BTTC)
We apologize for the delay in submission of the Forum post. We were just made aware of this requirement of the Dorahacks team. Rest assured however that our project was submitted on Dorahacks before the hackathon deadline as indicative here: Obsidian | Buidls | DoraHacks. We are willing to accept being opted out of the Forum prize selection if need be.