Lunarpunk combines science-fiction with anonymous engineering to chart new paths to freedom.
Stories without strategy are simply fantasy. Thus like the cypherpunks that came before us, lunarpunks write code. The DarkFi community is proud to announce two new primitives:
DarkOTC: a trustless and anonymous atomic swap.
AnonDAO: the world's first fully anonymous DAO.
This is the dawn of the Dark Forest: an anonymous off-world where communities can define their own destinies beyond the state. DarkOTC and AnonDAO have been built to make the lunarpunk vision a reality.
We engineer escape routes from the desert.
DarkOTC
DarkOTC is a trustless and anonymous atomic swap that allows two parties to enter into an exchange of any kind of asset.
The swap transaction happens in two parts. First, both sides of the exchange- we will call them Alice and Bob- create a partial transaction where they fufill their side of the deal. After that step has been done and verified by both parties, Alice and Bob sign the transaction. If either party backs out at any time the transaction does not go through.
Keep in mind that DarkFi has a UTXO model. Normal DarkFi transactions have any number of inputs and outputs. In a DarkOTC transaction however, there is exactly two inputs and two outputs.
The way that this works is Alice mints the tokens she wants to receive
(in this case, 14 BOB_TOKEN
, and burns the token she wants to send
to Bob (in this case 113 ALICE_TOKEN
). In turn, Bob does the same with
his tokens.
Once Alice builds her half of the atomic swap, she sends the partial transaction to Bob over an encrypted channel. When Bob has it, he verifies that everything is as they agreed, and that the ZK proofs are valid. This step cannot be exploited because if either party publishes invalid data it will be rejected by the network.
Once both parties are satisfied with the contents, they can join the two halves into a full transaction, and sign it.
This tool enables unstoppable, peer-to-peer and completely anonymous trades.
AnonDAO
DarkFi has created the world's first anonymous DAO. AnonDAO is a financial primitive to enable communities to anonymous operate a collectively-owned treasury. The following information is completely hidden:
- DAO treasury
- DAO parameters
- DAO participants
- Proposals
- Votes
The DAO enables governance token holders to make proposals, cast votes, and spend money from the DAO treasury if a proposal passes. The basic operation involves transferring money from a treasury to a public key specified in a Proposal. This operation can only happen if several conditions are met.
At its basis, the DAO is a treasury that is owned by everyone who holds the DAO governance token. These constraints, also known as DAO parameters, are configured by DAO participants and enforced by ZK cryptography.
In the current prototype, the constraints are:
- DAO quorum: the number of governance tokens that must be allocated to a proposal in order for a proposal to pass.
- Proposer limit: the number of governance tokens required to make a proposal.
- DAO approval ratio: The ratio of yes/no votes required for a proposal to pass.
In addition, DAO participants must prove ownership of governance tokens order to vote. Their vote is weighted according to the number of governance tokens in their wallet. In this current implementation, users do not spend or lock up these coins in order to vote- they simply prove ownership of them.
In the current pre-Alpha prototype, the following information is exposed:
- Encrypted votes are publicly linked to the proposal identifier hash, meaning that it is possible to see that there is voting activity associated with a particular proposal identifier, but the contents of the proposal, how one has voted, and the associated DAO is fully hidden.
- In the burn phase of casting a vote, we reveal a public value called a nullifier. The same public value is revealed when we spend the coins we used to vote, meaning you can link a vote with a user when they spend governance tokens. This is bad but is easily fixable. We will update the code to use different values in the vote (by creating an intermediate Coin used for voting).
- Votes are currently encrypted to the DAO public key. This means that anyone with the DAO private key can decrypt votes as they come in. In the future, we can delay the decryption so that even if you hold the DAO private key you cannot read votes until the final tally.
Conclusion
DarkOTC and AnonDAO signal the dawn of a new era in anonymous engineering. And it is only the beginning. Both softwares introduced here are pre-Alpha prototypes. They are primarily intended to demonstrate the underlying cryptography that makes these apps possible.
The next step is to connect these tools to DarkFi's anonymous proof-of-stake blockchain. More work needs to be done, especially on the DAO product, to optimize these softwares for their intended communities.
DarkFi is emerging as an ecosystem of anonymous tools that combine to protect users. Among other things, DarkFi contains an anonymous chat, a programmable peer-to-peer network and a consensus system with custom ZK validation rules. We believe this is the only environment that can brings apps like AnonDAO and DarkOTC to life.
This is the dawn of the Dark Forest. Let there be fucking dark.
Back to top