Privacy Pledge
Privacy Pledge: Empowering Investments with Anonymity and Influence, an innovative crowd-funding platform designed to revolutionize the way investors engage with mutual funds.
Created on 12th November 2023
•
Privacy Pledge
Privacy Pledge: Empowering Investments with Anonymity and Influence, an innovative crowd-funding platform designed to revolutionize the way investors engage with mutual funds.
The problem Privacy Pledge solves
Privacy Pledge offers a unique blend of confidentiality and influence, allowing investors to contribute to funds while maintaining their privacy. Each investor's voting rights are proportionally tied to their investment and weighted by a carefully formulated reputation score, ensuring a fair and impactful decision-making process. This platform not only prioritizes investor anonymity but also ensures that each contribution carries its rightful weight in fund management decisions. Privacy Pledge is where your investment meets discretion, and your influence counts.
The platform aims to resolve the problems of fairness, transparency, combating fraud, and encouraging responsible investing through a reputation-based influence system. It builds trust amongst peer investers and investees.
Challenges we ran into
Initially we faced a challenge on storing voting rights for end users. We found there was no onchain solution and discovered for any hefty storage it would have to be carried out off chain. To resolve this issue we looked into ZKFS and Orbit DB. We faced build issues with ZKFS as its using an older version of snarkyjs where as the contracts are built on o1js. Our demo solution just stores balances per user session.
We also encountered the following issues within the contracts/interactions:
problem:
getActions: fromActionState not found.
const events = await zkApp.reducer.getActions({ fromActionState: Field(0), endActionState: Field(100000000), });
TypeError: x.isConstant is not a function
events = {
'add-merkle-leaf': Field,
'update-merkle-leaf': Field,
};
this.emitEvent('update-merkle-leaf', '234');
solution:
const txn = await Mina.transaction(senderAccount, () => { zkApp.increment(Field(0), Field(1), Field(0)); }); await txn.prove(); await txn.sign([senderKey]).send(); const events = await zkApp.reducer.getActions(); expect(events).toEqual('hello world');
Tracks Applied (1)
O(1)Labs - ZK Voting
O(1)Labs