Welcome to Experiminal, an innovative solution leveraging the power of the Mina Protocol to conduct secure, private, and transparent surveys for research. Our platform combines the benefits of blockchain technology with zero-knowledge proofs to ensure data integrity and participant anonymity.
By utilizing zero-knowledge proofs (zkApps), Experiminal ensures that participants' data remains confidential while providing verifiable results. It also allows researchers to automate participant verification and democratize the survey process, making it easier to conduct large-scale studies with enhanced privacy guarantees.
- Zero-Knowledge Proofs: Ensure participant anonymity and data integrity without revealing sensitive information.
- Automated Participant Verification: Smart contracts validate participant eligibility based on predefined key questions.
- Mina Protocol Integration: Utilize Mina's lightweight blockchain for scalable and decentralized applications.
- Customizable Surveys: Researchers can easily create and configure surveys with both standard and key questions.
- Real-time Results: View aggregated survey results in real-time while maintaining individual privacy.
- Secure Data Storage: Participant responses are securely stored and can only be accessed by authorized parties.
- User-friendly Interface: Intuitive UI for both researchers and participants, built with Next.js and React.
The Experiminal Survey Platform comprises two main components:
-
Smart Contract (zkApp):
- Developed using Mina Protocol's zkApps
- Handles participant verification
- Manages data hashing and integrity checks
- Controls access to survey results
-
User Interface (UI):
- Built with Next.js and React
- Provides an interactive platform for:
- Researchers to create and manage surveys
- Participants to take surveys
- Authorized users to view real-time results
-
Database:
- Stores survey configurations, questions, and encrypted responses
- Ensures data persistence and quick retrieval
Follow these instructions to set up and run the Experiminal Survey Platform on your local machine.
Before you begin, ensure you have met the following requirements:
- Node.js: Install Node.js (v14 or later recommended)
- npm or Yarn: Comes bundled with Node.js. Alternatively, install Yarn if preferred
- Mina Wallet: Install a Mina-compatible wallet like Auro Wallet
- MySQL: Install and set up a MySQL database server
-
Clone the Repository
git clone https://github.com/melihakpinar/experiminal.git cd experiminal
-
Install Dependencies
cd ui npm install cd ../contracts npm install
-
Set Up the Database
- Create a new MySQL database named
experiminal
- Import the schema from
db/experiminal.sql
- Go to
ui/src/pages/api/db_config.ts
and set the correct credentials for your MySQL server.
- Create a new MySQL database named
-
Compile the Smart Contract
cd contracts npm run build
-
Deploy the Contract to Mina Devnet
Ensure you have some test Mina tokens in your wallet. Then run:
npm run deploy
Note the deployed contract address for the next step.
-
Update zkApp Address
Open
ui/src/pages/index.tsx
andui/src/pages/configure.tsx
, then replace thezkappAddress
constant with your deployed zkApp address:const zkappAddress = 'Your_Deployed_ZkApp_Address_Here';
-
Start the Development Server
cd ../ui npm run dev
The application will be accessible at
http://localhost:3000
.
-
Configuring a Survey:
- Navigate to
/configure
- Set the survey end time
- Add questions, marking key questions as needed
- Submit the configuration
- Navigate to
-
Participating in a Survey:
- Visit the main page
- Connect your Mina wallet
- Answer the survey questions
- Submit your responses
I welcome contributions to Experiminal! Please follow these steps to contribute:
- Fork the repository
- Create a new branch:
git checkout -b feature/your-feature-name
- Make your changes and commit them:
git commit -m 'Add some feature'
- Push to the branch:
git push origin feature/your-feature-name
- Submit a pull request
For major changes, please open an issue first to discuss what you would like to change.
This project is licensed under the MIT License - see the LICENSE file for details.
For any questions or concerns, please open an issue on the GitHub repository or contact the maintainers directly.
Project Link: https://github.com/melihakpinar/experiminal