diff --git a/Prequalification_Challenges/gandalf_blockchain/README.md b/Prequalification_Challenges/gandalf_blockchain/README.md new file mode 100644 index 0000000..ebeb2e7 --- /dev/null +++ b/Prequalification_Challenges/gandalf_blockchain/README.md @@ -0,0 +1,28 @@ +## Implement Gandalf's blockchain + +You need to reveal Gandalf's 8 words and create a chain of blocks with them: https://gandalf.lakera.ai/ + +Task is the create a local blockchain (no consensus/networking needed here): + - Beat Gandalf AI game, find all the 8 words. Put them in order. Each one of them will be the data in your block. + - Use | as delimiter between the words and the hash. Between the word and the hash, there is a - sign. + - How this looks like: GENESIS|WORD1-HASH|WORD2-HASH|WORD3-HASH + - Use SHA512 for the hashing algo. Start with the word and the delimiter and the first word: "GENESIS|WORD1-" + - Make sure to calculate the dash sign into the next hash. It is part of the block data. You only add the hash from the previous block, not all data! + - Everything is UPPERCASE. + +If you are doing it correctly, you will have the following block hashes, starting from 0, Genesis: +0. 8288b35979d4e5dd5eee89a711ea5f41b04a17e7473a874c2b551844b57c0c24545cdbe7abf8e68dcd8da18a04ca8a1cc5798065ddb4fb32443136a589b3439d +1. 3ee14c107bd6b3e050fac7b0a2ff42a474b10c789830d03f22cdf242a773905a88ac98ebcafdd2e8c0134c3fe285bb58f52f68a1d873290cf2430bb0b22429a7 +2. 058e7624f1d69625f1ecc4cdf41921fc7ffd31a38de10c9dab543986d68f47363974d2ea25832e6eacc5425afd685c11852fdd66793e7547dc9773cffb0431e8 +3. 2990022ea32e47959b83bb7faf36e430c046533da075ca6aabad7269891195480d86d9b76ac29b22268ef1ef419c147291b8ac9fea0f1b737dfce360be384764 +4. ff0dd5196c836fb663b87aa0e8b647e0862646673f8b6eca3a38866e02290e02d95c94df83cd4be1ac3900f9e69d00c1d9ab5a30a5e4f6102a97d25eeab8ecf1 +5. 921be30124a505711224fb6de0955bd7e4c3b518aa4d5f65b6242c73fc1d4d978a8251c7d83f775aa14c00d01a5225085291c5df373a3bc18945b854d12e868f +6. This is secret! You need to insert the correct word plus the hash in order to count the final hash for the 7th block, which will be the flag. + +Now that you solved Gandalf's game and wrote a local blockchain (without networking) it is time for the flag. Create the hash of block number 7 with the following data and hash it: "ICANHAZCHAIN-{PREVIOUS BLOCK}". The hash of this final block will be your flag. + +The flag is the 7th block's sha512sum inserted into the PC{...} format. Pro tip: if you have issues with hash results, check with hexdump. + +_Keccak256: 0xdbd5381511b2b9b20ee59bcefcb7f76650030d20e99886fa03b3c3f5cef47d37_ + +_Challenge author: six_ diff --git a/README.md b/README.md index b73f6f0..bec1dd8 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Entry solidity - 0x2a2b9543f5867d51151a817d282fbb3abf0e763484f23867ca238f680802e Hidden in rust - 0x16933d9797b98f43d30b30fd198c53b1ba3372f6a5d6a11faf08fa6d06e8b208 Business plan - 0xd870fd076f038801fbb60ce4e4d63b5cc06867b8bb917b06c5f13237e93a02aa (you get this after manual confirmation) Entropy - 0x513b0aa1dcded5f38352d6b9ef729bb0ae4069489e0c2603dce4b91a3f1433d0 -One more challenge is coming! +Gandalf - 0xdbd5381511b2b9b20ee59bcefcb7f76650030d20e99886fa03b3c3f5cef47d37 ``` To calculate the Keccak-256 hash of a string, you can, for example, install `keccak256-cli` using `cargo`, and then use the `keccak256` command like so: @@ -44,21 +44,17 @@ Easy-Medium - Hidden in rust - It takes a little extra to sovle it. Medium - Entropy - It takes a little extra to sovle it. +Medium - Gandalf - You need to code a simple blockchain without networking. + Hard - Web3 business plan - Creation of a legit web3 business plan can be tough. -Two more hard challenges are coming soon! - -### Design for fame - -By the way, you can compound your solutions with an optional 3D design of your own, in the web form. We'll add each such design to the Hall of Fame, where all the successfully qualified players get listed. - # Main event The main event consists of a 3-day hackathon where projects can be conceptualized and implemented, and also of more challenge-solving in parallel. At first, teams should be formed by qualified players. -The main event's challenges will be disclosed on /TBA, probably 2023-12-04 at 10:00:00 CET/. The teams will need to solve at least one from each challenge track, in 24 hours. +The main event's challenges will be disclosed on 2023-12-04 at 10:00:00 CET/. The teams will need to solve at least one from each challenge track, in 24 hours. Note: You can already prepare libraries and some code before the hackathon, but the final project needs to be conceived during the main event. @@ -83,7 +79,7 @@ Outline: #### Track J - Only for judges and mentors! -### Choosing challenges and deliveries +### Choosing challenges and deliveries at the final round Playing teams will need to choose one challenge as their main one. Additionally, they need to choose at least one from the other tracks and create a proposal for improving the projects. @@ -106,7 +102,7 @@ Judges will score each team's project based on the following criteria: - How well-written is the code? - Note: the code does not need to be long, but working and should be written during the hackathon. - Libs/StackOverflow/etc parts are fine, but there needs to be original code. -- Sustainability +- Viability and sustainability - If the presented project would get funding, would it be sustainable in the long run? - Would anyone keep this project running, would it be interesting enough for the community/users? - Practicality