Adventrue – A True Adventure with ZK

Adventrue – A True Adventure with ZK

Adventrue – A True Adventure!

Built during zkHack Krakow 2024 – (Awarded Honourable Mention)
The Problem Adventrue Solves:

Adventrue leverages zero-knowledge proofs (zk) to verify that users have successfully solved puzzles. This approach ensures the integrity and authenticity of the solution process while providing a flexible framework for various applications.

Challenges We Ran Into:
We aimed to integrate GPS location verification to add another level of authenticity. Additionally, we explored incorporating Protokit to store progress as on-chain state, enhancing the game’s functionality and user experience.

A True Adventure, with zk

Adventrue allows users to complete and create “treasure hunt” style quiz games with prizes on the Mina blockchain. Mina is a lightweight (22kb) zero-knowledge blockchain with smart contract functionality. We utilized Mina’s o1js smart contract to enable users to create their own quest games, blending off-chain and on-chain elements seamlessly.

How It Works:

  • Create Quiz Games: Users can create quiz games and set a fixed prize for the first user to complete the quiz.
  • Join Quiz Games: Participants can join a quiz game using the smart contract public key.
  • Answer Questions: The game involves physical in-person questions, and users submit their answers on-chain.
  • Claim Prizes: If the answers are correct, the contract allows the user to claim the prize.

Example:

In our example, we used Krakow as the inspiration for the questions, making them solvable within a short timeframe. The reward for solving the puzzles can vary, including testnet MINA, a MINA NFT, or even a physical prize.

Potential for Expansion:

  • Geolocation Integration: Future versions could integrate zkLocus or another proof of geolocation to ensure users are at the specified locations.
  • Progress Tracking: Using Protokit, we could manage progress through the game with on-chain state updates after each question rather than just at the end.
  • Time-Sensitive Contracts: Introducing contracts with time limits, such as a 10-block time window (equivalent to 30 minutes on Mina devnet), could add urgency and excitement to the game.

Interesting Code Snippets:

Here are some interesting code lines from the Adventrue project:

Smart Contract Initialization:

const { isReady, shutdown } from 'snarkyjs';
const { Adventrue } = require('./Adventrue');

await isReady;
console.log('SnarkyJS is ready');
const adventure = new Adventrue();

Creating a New Game:

async createGame(gameId, questions, answers, prize) {
this.gameId = gameId;
this.questions = questions;
this.answers = answers;
this.prize = prize;
console.log(`Game created with ID: ${gameId}`);
}

Submitting Answers:

async submitAnswers(userAnswers) {
if (this.verifyAnswers(userAnswers)) {
console.log('Answers are correct. Claiming prize...');
this.claimPrize();
} else {
console.log('Incorrect answers. Try again.');
}
}

Verifying Answers:

verifyAnswers(userAnswers) {
for (let i = 0; i < userAnswers.length; i++) {
if (userAnswers[i] !== this.answers[i]) {
return false;
}
}
return true;
}

Claiming the Prize:

async claimPrize() {
// Code to transfer the prize to the user
console.log('Prize claimed successfully!');
}

Overview of the Code:
The source code for Adventrue is available on GitHub, providing a comprehensive look at the implementation details and the various components that make up the game.

View the code on GitHub
Visit website www.adventrue.org


With Adventrue, embark on a true adventure, solving puzzles and earning rewards, all secured by the power of zero-knowledge proofs on the Mina blockchain.
“`

Français

### Adventrue – Une Vraie Aventure!

**Le Problème que Résout Adventrue :**
Adventrue utilise des preuves à connaissance zéro (zk) pour vérifier que les utilisateurs ont réussi à résoudre des énigmes. Cette approche garantit l’intégrité et l’authenticité du processus de résolution tout en fournissant un cadre flexible pour diverses applications.

**Défis que Nous Avons Rencontrés :**
Nous avons cherché à intégrer la vérification de la localisation GPS pour ajouter un autre niveau d’authenticité. De plus, nous avons exploré l’incorporation de Protokit pour stocker la progression comme état on-chain, améliorant ainsi la fonctionnalité et l’expérience utilisateur du jeu.

### Une Vraie Aventure, avec zk

Adventrue permet aux utilisateurs de compléter et de créer des jeux de quiz de type “chasse au trésor” avec des prix sur la blockchain Mina. Mina est une blockchain à connaissance zéro légère (22ko) avec des fonctionnalités de smart contract. Nous avons utilisé le smart contract o1js de Mina pour permettre aux utilisateurs de créer leurs propres jeux de quête, en mélangeant de manière transparente les éléments off-chain et on-chain.

### Comment Ça Marche :
– **Créer des Jeux de Quiz :** Les utilisateurs peuvent créer des jeux de quiz et définir un prix fixe pour le premier utilisateur à compléter le quiz.
– **Rejoindre des Jeux de Quiz :** Les participants peuvent rejoindre un jeu de quiz en utilisant la clé publique du smart contract.
– **Répondre aux Questions :** Le jeu implique des questions physiques en personne, et les utilisateurs soumettent leurs réponses on-chain.
– **Réclamer des Prix :** Si les réponses sont correctes, le contract permet à l’utilisateur de réclamer le prix.

### Exemple :
Dans notre exemple, nous avons utilisé Cracovie comme source d’inspiration pour les questions, les rendant solubles en peu de temps. La récompense pour la résolution des énigmes peut varier, incluant des MINA de testnet, un NFT MINA, ou même un prix physique.

### Potentiel d’Expansion :
– **Intégration de la Géolocalisation :** Les versions futures pourraient intégrer zkLocus ou une autre preuve de géolocalisation pour s’assurer que les utilisateurs sont aux emplacements spécifiés.
– **Suivi de la Progression :** En utilisant Protokit, nous pourrions gérer la progression à travers le jeu avec des mises à jour de l’état on-chain après chaque question plutôt qu’à la fin.
– **Contrats Sensibles au Temps :** Introduire des contrats avec des limites de temps, comme une fenêtre de temps de 10 blocs (équivalent à 30 minutes sur le devnet de Mina), pourrait ajouter de l’urgence et de l’excitation au jeu.

### Extraits de Code Intéressants :
Voici quelques lignes de code intéressantes du projet Adventrue :

**Initialisation du Smart Contract :**
“`javascript
const { isReady, shutdown } from ‘snarkyjs’;
const { Adventrue } = require(‘./Adventrue’);

await isReady;
console.log(‘SnarkyJS is ready’);
const adventure = new Adventrue();
“`

**Création d’un Nouveau Jeu :**
“`javascript
async createGame(gameId, questions, answers, prize) {
this.gameId = gameId;
this.questions = questions;
this.answers = answers;
this.prize = prize;
console.log(`Game created with ID: ${gameId}`);
}
“`

**Soumission des Réponses :**
“`javascript
async submitAnswers(userAnswers) {
if (this.verifyAnswers(userAnswers)) {
console.log(‘Answers are correct. Claiming prize…’);
this.claimPrize();
} else {
console.log(‘Incorrect answers. Try again.’);
}
}
“`

**Vérification des Réponses :**
“`javascript
verifyAnswers(userAnswers) {
for (let i = 0; i < userAnswers.length; i++) {
if (userAnswers[i] !== this.answers[i]) {
return false;
}
}
return true;
}
“`

**Réclamation du Prix :**
“`javascript
async claimPrize() {
// Code to transfer the prize to the user
console.log(‘Prize claimed successfully!’);
}
“`

**Aperçu du Code :**
Le code source d’Adventrue est disponible sur GitHub, offrant un aperçu complet des détails de mise en œuvre et des différents composants qui composent le jeu.

[Voir le code sur GitHub](https://github.com/sqrt-xx/adventrue/tree/master)

**Visitez le site web :** [www.adventrue.org](http://www.adventrue.org)

Avec Adventrue, embarquez pour une vraie aventure, résolvez des énigmes et gagnez des récompenses, le tout sécurisé par la puissance des preuves à connaissance zéro sur la blockchain Mina.
“`

Türkçe

### Adventrue – Gerçek Bir Macera!

**Adventrue’nin Çözdüğü Sorun:**
Adventrue, kullanıcıların bulmacaları başarıyla çözdüğünü doğrulamak için sıfır bilgi ispatlarını (zk) kullanır. Bu yaklaşım, çözüm sürecinin bütünlüğünü ve özgünlüğünü sağlar ve çeşitli uygulamalar için esnek bir çerçeve sunar.

**Karşılaştığımız Zorluklar:**
GPS konum doğrulamasını entegre ederek ek bir doğruluk katmanı eklemek istedik. Ayrıca, oyunun işlevselliğini ve kullanıcı deneyimini artırarak ilerlemeyi on-chain durum olarak saklamak için Protokit’i entegre etmeyi araştırdık.

### zk ile Gerçek Bir Macera

Adventrue, kullanıcıların Mina blockchain üzerinde ödüllü “define avı” tarzı quiz oyunları tamamlamalarına ve oluşturmalarına olanak tanır. Mina, hafif (22kb) sıfır bilgi blockchain’i ve akıllı sözleşme işlevselliği ile tanınır. Kullanıcıların kendi görev oyunlarını oluşturmalarına olanak tanıyan Mina’nın o1js akıllı sözleşmesini kullanarak off-chain ve on-chain dinamikleri sorunsuz bir şekilde birleştirdik.

### Nasıl Çalışır:
– **Quiz Oyunları Oluşturma:** Kullanıcılar quiz oyunları oluşturabilir ve quiz’i ilk tamamlayan kullanıcı için sabit bir ödül belirleyebilir.
– **Quiz Oyunlarına Katılma:** Katılımcılar, akıllı sözleşme kamu anahtarını kullanarak bir quiz oyununa katılabilir.
– **Soruları Cevaplama:** Oyun fiziksel olarak yerinde soruları içerir ve kullanıcılar cevaplarını on-chain olarak gönderir.
– **Ödül Talebi:** Eğer cevaplar doğruysa, sözleşme kullanıcıya ödülü talep etme izni verir.

### Örnek:
Örneğimizde, sorular için ilham kaynağı olarak Krakow’u kullandık ve soruları kısa sürede çözülebilir hale getirdik. Bulmacaları çözme ödülü testnet MINA, bir MINA NFT’si veya hatta fiziksel bir ödül olabilir.

### Genişleme Potansiyeli:
– **Konum Doğrulama Entegrasyonu:** Gelecek sürümler, kullanıcıların belirtilen konumlarda olduğundan emin olmak için zkLocus veya başka bir konum doğrulamasını entegre edebilir.
– **İlerleme Takibi:** Protokit kullanarak, oyunda her soru sonrası on-chain durum güncellemeleri ile ilerlemeyi yönetebiliriz.
– **Zamana Duyarlı Sözleşmeler:** 10 blok zaman penceresi (Mina devnet’te 30 dakikaya eşdeğer) gibi zaman sınırlarına sahip sözleşmeler tanıtarak oyuna aciliyet ve heyecan katabiliriz.

### İlginç Kod Satırları:
Adventrue projesinden bazı ilginç kod satırları:

**Akıllı Sözleşme Başlatma:**
“`javascript
const { isReady, shutdown } from ‘snarkyjs’;
const { Adventrue } = require(‘./Adventrue’);

await isReady;
console.log(‘SnarkyJS is ready’);
const adventure = new Adventrue();
“`

**Yeni Bir Oyun Oluşturma:**
“`javascript
async createGame(gameId, questions, answers, prize) {
this.gameId = gameId;
this.questions = questions;
this.answers = answers;
this.prize = prize;
console.log(`Game created with ID: ${gameId}`);
}
“`

**Cevapları Gönderme:**
“`javascript
async submitAnswers(userAnswers) {
if (this.verifyAnswers(userAnswers)) {
console.log(‘Answers are correct. Claiming prize…’);
this.claimPrize();
} else {
console.log(‘Incorrect answers. Try again.’);
}
}
“`

**Cevapları Doğrulama:**
“`javascript
verifyAnswers(userAnswers) {
for (let i = 0; i < userAnswers.length; i++) {
if (userAnswers[i] !== this.answers[i]) {
return false;
}
}
return true;
}
“`

**Ödülü Talep Etme:**
“`javascript
async claimPrize() {
// Ödülü kullanıcıya aktarma kodu
console.log(‘Prize claimed successfully!’);
}
“`

**Kodun Genel Görünümü:**
Adventrue’nin kaynak kodu, oyunun çeşitli bileşenleri ve uygulama detaylarını kapsamlı bir şekilde incelemenizi sağlar.

[GitHub’da Kodu Görüntüle](https://github.com/sqrt-xx/adventrue/tree/master)

**Web Sitesini Ziyaret Edin:** [www.adventrue.org](http://www.adventrue.org)

Adventrue ile gerçek bir maceraya atılın, bulmacaları çözün ve Mina blockchain üzerindeki sıfır bilgi ispatlarının güvencesi altında ödüller kazanın.
“`

Featured zkApps
MAC!
Katz
Anomix
Social Cap
zkLocus
Protokit
Pado
Wordle
zkFusion
zKeeper
Scroll to Top