NoteStream is the protocol for private real-time finance on Ethereum using AZTEC Protocol.
The simplest way to sum it up is "Sablier but with privacy (using AZTEC Protocol)".
For those of you not familiar with Sablier, this means that NoteStream is a private realtime finance platform which allows you to stream money over time using the Ethereum network.
This could be applied in many areas but one obvious usecase is that it allows a salary to be paid out every second, making payday a thing of the past. While this is possible using Sablier today, it has the unfortunate sideeffect of telling everyone exactly how much you earn as everything is public on the Ethereum blockchain. NoteStream solves this issue by making use of AZTEC Protocol to encrypt the value of your salary to keep it private while ensuring that you can always withdraw the money you have earned so far.
NoteStream was started at the 2020 ETHLondon Hackathon (under the name Quachtli) by Tom French, Moe Adham, Evgeni Shavkunov and György Tamás Klöczl. NoteStream was one of six finalists and was chosen as "Best use of AZTEC Protocol".
Notice: I learned a lot about how to build on top of Aztec Protocol while creating NoteStream. As AZTEC is still very new, there isn't a lot of documentation out there, to help with this I'm in the process of writing a blog post which explains NoteStream how operates. I'll post a link here when I'm done.
NoteStream is maintained as a monorepo with multiple sub packages. Please find a comprehensive list below.
Package | Version | Description |
---|---|---|
@notestream/contract-artifacts |
Contract artifacts and addresses for NoteStream contracts |
Package | Version | Description |
---|---|---|
@notestream/contracts |
AZTEC note streaming protocol contracts |
Package | Description |
---|---|
@notestream/react-app |
Example dapp frontend |
@notestream/subgraph |
Subgraph tracking NoteStream stream creations/withdrawals/cancellations |
@notestream/dev-utils |
Dev utils to be shared across NoteStream projects and packages |
Find the addresses for our smart contracts below. They have not been audited in any way so I don't recommend putting real money into them.
NoteStream is deployed on the Rinkeby testnet.
Name | Description | Address |
---|---|---|
AztecStreamer | Money streaming engine | 0x455cD682E2411C0cF9a8c91c4498732B8Dd5B751 |
To check out and compile the smart contracts, install any dependencies and then head to each individual package as presented above. For example, these are the instructions for @notestream/contracts
:
$ yarn install
$ cd packages/contracts
$ yarn compile
$ yarn deploy --network rinkeby
I'd love to hear from anybody wanting to build on top of NoteStream or building something similar. If you have any questions or just want to show off what you've made, ping me on Twitter.
We use Yarn as a dependency manager and Buidler as a development environment for compiling, testing, and deploying our contracts. The contracts were written in Solidity.
- yarn >= 1.22.4
- solidity 0.5.11
Make sure you are using Yarn >=1.22.4
To clone this repo and install dependencies run:
$ git clone https://github.com/TomAFrench/NoteStream.git && cd NoteStream
$ yarn install
$ yarn contracts:deploy --network rinkeby
Start the frontend with the command
yarn react-app:start
The frontend will allow you to convert ERC20 tokens into zkTokens, send these zkTokens streamed around to other Ethereum addresses and withdraw from zkTokens back into ERC20 tokens.