Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ feat: new levels Impersonator and MagicAnimalCarousel #758

Merged
merged 13 commits into from
Nov 11, 2024
Merged
20 changes: 20 additions & 0 deletions client/public/imgs/BigLevel32.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3,893 changes: 3,893 additions & 0 deletions client/public/imgs/BigLevel33.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
31 changes: 31 additions & 0 deletions client/public/imgs/Level32.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3,665 changes: 3,665 additions & 0 deletions client/public/imgs/Level33.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified client/public/imgs/levels-ai.zip
Binary file not shown.
2 changes: 1 addition & 1 deletion client/src/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ export const NETWORKS = {
AMOY: {
name: "amoy",
id: "80002",
url: `${process.env.ALL_CAPS_NAME_HOST}`,
url: `${process.env.AMOY_HOST}`,
privKey: `${process.env.PRIV_KEY}`,
},
};
Expand Down
23 changes: 22 additions & 1 deletion client/src/gamedata/authors.json
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,27 @@
"https://www.linkedin.com/in/afonso-dalvi-711635112/"
],
"emails": ["[email protected]","[email protected]"]
},
"Gianfranco":{
"name": [
"Gianfranco"
],
"websites":
[
"https://github.com/GianfrancoBazzani/"
],
"donate" : "gianfrancobazzani.uni.eth",
"emails": ["[email protected]"]
},
"Gianfranco&carlitox477":{
"name": [
"carlitox477", "Gianfranco"
],
"websites":
[
"www.x.com/carlitox477", "https://github.com/GianfrancoBazzani/"
],
"emails": ["[email protected]", "[email protected]"]
}
}
}
}
4 changes: 3 additions & 1 deletion client/src/gamedata/deploy.amoy.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,10 @@
"29": "0xf97EEDfFe70bFa579DbB26FD8Dd469F00ea9071f",
"30": "0xC7c121270efDB1DEE00DD0462187F4E8Bd4358f6",
"31": "0x33bE665704a6E2132f79E6b06C70660A11181374",
"32": "0x6F9cf195B9B4c1259E8FCe5b4e30F7142f779DeA",
"33": "0x40F5513a90fb7e2ac2C3E12A6d16B9279D1e94Ed",
"ethernaut": "0x0917c9EEd9EF51D57AAa27357C5FeE4F3590D42e",
"implementation": "0x30c3249cD8E29D7d0fb48aAec78413E6588072e3",
"proxyAdmin": "0x74008e22B826C3163604B248f03df5164f20955F",
"proxyStats": "0x1Bee003fdcb598Bb079Cc4ABDb03Ecf51229B73D"
}
}
2 changes: 2 additions & 0 deletions client/src/gamedata/deploy.holesky.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
"29": "0x1bFb120Ac1361ece092FC64BD8ECdb3244463071",
"30": "0x716747Fbc1FcE4c36F2B369F87aDB5D4580e807f",
"31": "0x32FFB8d4244B350F5D3E074e9b731A135531B975",
"32": "0x465f1E2c7FFDe5452CFe92aC3aa1230B76B2B1CB",
"33": "0xd8630853340e23CeD1bb87a760e2BaF095fb4009",
"ethernaut": "0xB877915d8Ba049e7cAFc1525F85CEc322A362767",
"implementation": "0x86C8eC9b2bE1600571183eE157C7eb3B96a5c3FF",
"proxyAdmin": "0x8f3189256cb686D0aCD642bAa3982Fda156fB01D",
Expand Down
2 changes: 2 additions & 0 deletions client/src/gamedata/deploy.sepolia-arbitrum.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
"29": "0xd4e6B977d9Dea283797AaD71a09eC65DfdAc98f5",
"30": "0xA62fE5344FE62AdC1F356447B669E9E6D10abaaF",
"31": "0x7ae0655F0Ee1e7752D7C62493CEa1E69A810e2ed",
"32": "0x0AA237C34532ED79676BCEa22111eA2D01c3d3e7",
"33": "0x37c07983Aad7DCA30C05FBA609590c73e58663e8",
"ethernaut": "0xD991431D8b033ddCb84dAD257f4821E9d5b38C33",
"implementation": "0x42E7014a9D1f6765e76fA2e69532d808F2fe27E3",
"proxyAdmin": "0xBd886a37faD1f596221f33ca568122815ED48c81",
Expand Down
2 changes: 2 additions & 0 deletions client/src/gamedata/deploy.sepolia-optimism.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
"29": "0xDCa6065818935c33D6AF9AbDB7d5f679BB43508A",
"30": "0x5c7Fe23aeFc74E85E99EB8235807fE53bcC9c58f",
"31": "0x708f096A1AE25dD1b2De076fA90F5158bb01D209",
"32": "0xE536c365A795bb76CBb341D1Db49835e4974AF4d",
"33": "0x2f79281a5284ADD81B4Fd95Fa8e7CCB6900aeef8",
"ethernaut": "0xD991431D8b033ddCb84dAD257f4821E9d5b38C33",
"implementation": "0x50E1785EeE794253c5E33B8fE123e77124736e38",
"proxyAdmin": "0x492e18ddBd7591638453d2f1B1847F86711105C8",
Expand Down
2 changes: 2 additions & 0 deletions client/src/gamedata/deploy.sepolia.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
"29": "0xb2aBa0e156C905a9FAEc24805a009d99193E3E53",
"30": "0xd459773f02e53F6e91b0f766e42E495aEf26088F",
"31": "0xB99f27b94fCc8b9b6fF88e29E1741422DFC06224",
"32": "0x9D75AF88C98C2524600f20B614ee064aE356C19C",
"33": "0x68839EDF716D5Ba1fb5C1e724bF160B23fa523b5",
"ethernaut": "0xa3e7317E591D5A0F1c605be1b3aC4D2ae56104d6",
"implementation": "0x49662cAeF8386f84d99873c34280E24d3e742e4f",
"proxyAdmin": "0x545d848827bD9e0E30794a9E53f5ab04EA71d78a",
Expand Down
1 change: 1 addition & 0 deletions client/src/gamedata/en/descriptions/levels/impersonator.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
SlockDotIt’s new product, **ECLocker**, integrates IoT gate locks with Solidity smart contracts, utilizing Ethereum ECDSA for authorization. When a valid signature is sent to the lock, the system emits an `Open` event, unlocking doors for the authorized controller. SlockDotIt has hired you to assess the security of this product before its launch. Can you compromise the system in a way that anyone can open the door?
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Congratulations! You've successfully unlocked the secrets of the elliptic curve signatures!

As described in [EIP-2](https://eips.ethereum.org/EIPS/eip-2), allowing values of `0 < s < secp256k1n` in our verification logic, as is currently the case, opens a signature malleability concern. One can take any signature, flip the `s` value from `s` to `secp256k1n - s`, change the `v` value (27 -> 28, 28 -> 27), and the resulting signature would still recover the same signer.

It is important to use safe implementations unless you know exactly what you are doing. Check the [OpenZeppelin implementation](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/448efeea6640bbbc09373f03fbc9c88e280147ba/contracts/utils/cryptography/ECDSA.sol#L128-L154) to learn how to use ecrecover safely.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Welcome, dear Anon, to the Magic Carousel, where creatures spin and twirl in a boundless spell. In this magical, infinite digital wheel, they loop and whirl with enchanting zeal.

Add a creature to join the fun, but heed the rule, or the game’s undone.
If an animal joins the ride, take care when you check again, that same animal must be there!

Can you break the magic rule of the carousel?
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Congratulations, you’ve broken the magical rule of the carousel! In the realm of low-level data manipulation, it’s crucial to remember the details, especially when working with compacting data in storage slots.
30 changes: 30 additions & 0 deletions client/src/gamedata/gamedata.json
Original file line number Diff line number Diff line change
Expand Up @@ -496,6 +496,36 @@
"deployId": "31",
"instanceGas": 750000,
"author": "Waiandt&Dalvi"
},
{
"name": "Impersonator",
"created": "2024-11-04",
"difficulty": "8",
"description": "impersonator.md",
"completedDescription": "impersonator_complete.md",
"levelContract": "ImpersonatorFactory.sol",
"instanceContract": "Impersonator.sol",
"revealCode": true,
"deployParams": [],
"deployFunds": 0,
"deployId": "32",
"instanceGas": 750000,
"author": "Gianfranco"
},
{
"name": "Magic Animal Carousel",
"created": "2024-11-04",
"difficulty": "6",
"description": "magicanimalcarousel.md",
"completedDescription": "magicanimalcarousel_complete.md",
"levelContract": "MagicAnimalCarouselFactory.sol",
"instanceContract": "MagicAnimalCarousel.sol",
"revealCode": true,
"deployParams": [],
"deployFunds": 0,
"deployId": "33",
"instanceGas": 750000,
"author": "Gianfranco&carlitox477"
}
]
}
1 change: 1 addition & 0 deletions contracts/out/Context.sol/Context.0.8.28.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts-08/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-06/=lib/openzeppelin-contracts-06/contracts/\",\":openzeppelin-contracts-08/=lib/openzeppelin-contracts-08/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts-upgradeable/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts-08/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-06/=lib/openzeppelin-contracts-06/contracts/","openzeppelin-contracts-08/=lib/openzeppelin-contracts-08/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts-upgradeable/contracts/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts-08/contracts/utils/Context.sol":"Context"},"evmVersion":"shanghai","libraries":{}},"sources":{"lib/openzeppelin-contracts-08/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"}},"version":1},"id":1}
1 change: 1 addition & 0 deletions contracts/out/Impersonator.sol/ECLocker.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions contracts/out/Impersonator.sol/Impersonator.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions contracts/out/Impersonator.t.sol/TestImpersonator.json

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Loading
Loading