├── src ├── components │ ├── ToggleSwitch.scss │ ├── logossc.png │ ├── Nopage.jsx │ ├── ToggleSwitch.js │ ├── ToggleSwitch.css │ ├── Home.css │ ├── Leaderboard.jsx │ ├── Home.jsx │ └── Challenge.jsx ├── lib.cairo ├── layout │ ├── components │ │ └── sidebar │ │ │ ├── sidebar.module.css │ │ │ ├── starknet.webp │ │ │ ├── navItem │ │ │ ├── NavItem.jsx │ │ │ ├── navItem.module.css │ │ │ └── NavItemHeader.jsx │ │ │ ├── Sidebar.jsx │ │ │ ├── Navbar.css │ │ │ └── menu.config.js │ ├── Layout.jsx │ └── layout.module.css ├── assets │ ├── Logo.webp │ ├── design.png │ ├── logo.png │ ├── nft │ │ ├── 01.jpeg │ │ ├── 02.jpeg │ │ ├── 03.jpeg │ │ ├── 04.jpeg │ │ ├── 05.jpeg │ │ ├── 06.jpeg │ │ ├── 07.jpeg │ │ ├── 08.jpeg │ │ ├── 09.jpeg │ │ ├── 10.jpeg │ │ ├── 11.jpeg │ │ ├── 12.jpeg │ │ ├── 13.jpeg │ │ ├── 14.jpeg │ │ ├── 5.json │ │ ├── 6.json │ │ ├── 7.json │ │ ├── 9.json │ │ ├── 1.json │ │ ├── 10.json │ │ ├── 11.json │ │ ├── 12.json │ │ ├── 2.json │ │ ├── 4.json │ │ ├── 3.json │ │ ├── 8.json │ │ ├── 13.json │ │ └── 14.json │ ├── screenshot.png │ ├── challenge1.cairo │ ├── challenge2.cairo │ ├── challenge8_erc20.cairo │ ├── challenge3.cairo │ ├── challenge11.cairo │ ├── challenge12.cairo │ ├── challenge4.cairo │ ├── challenge5.cairo │ ├── challenge14_coin.cairo │ ├── challenge6.cairo │ ├── challenge7.cairo │ ├── challenge14_wallet.cairo │ ├── challenge14.cairo │ ├── challenge10.cairo │ ├── challenge9.cairo │ ├── challenge8_erc223.cairo │ ├── challenge7_erc20.cairo │ ├── challenge8.cairo │ ├── challenge13.cairo │ ├── main_abi.json │ ├── challenge8_dex.cairo │ ├── nft.cairo │ └── main.cairo ├── global.jsx ├── setupTests.js ├── App.test.js ├── utils │ └── utils.js ├── index.css ├── reportWebVitals.js ├── assets.cairo ├── App.css ├── index.js ├── App.js └── logo.svg ├── public ├── robots.txt ├── favicon.ico ├── logo192.png ├── logo512.png ├── manifest.json └── index.html ├── .env ├── Scarb.lock ├── Scarb.toml ├── .gitignore ├── package.json ├── README.md └── install.sh /src/components/ToggleSwitch.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/lib.cairo: -------------------------------------------------------------------------------- 1 | mod assets; 2 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | # mandatory 2 | MAIN_CONTRACT_ADDRESS='0x0229f4b42c80ad3d7a497b0f1787d1ef9ae540dd4954c8a45b2bbc3e619eb102' -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/public/logo192.png -------------------------------------------------------------------------------- /public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/public/logo512.png -------------------------------------------------------------------------------- /src/layout/components/sidebar/sidebar.module.css: -------------------------------------------------------------------------------- 1 | .sidebar { 2 | background-color: #2d2d4d; 3 | height: 100%; 4 | } -------------------------------------------------------------------------------- /src/assets/Logo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/src/assets/Logo.webp -------------------------------------------------------------------------------- /src/assets/design.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/src/assets/design.png -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/src/assets/logo.png -------------------------------------------------------------------------------- /src/assets/nft/01.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/src/assets/nft/01.jpeg -------------------------------------------------------------------------------- /src/assets/nft/02.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/src/assets/nft/02.jpeg -------------------------------------------------------------------------------- /src/assets/nft/03.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/src/assets/nft/03.jpeg -------------------------------------------------------------------------------- /src/assets/nft/04.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/src/assets/nft/04.jpeg -------------------------------------------------------------------------------- /src/assets/nft/05.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/src/assets/nft/05.jpeg -------------------------------------------------------------------------------- /src/assets/nft/06.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/src/assets/nft/06.jpeg -------------------------------------------------------------------------------- /src/assets/nft/07.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/src/assets/nft/07.jpeg -------------------------------------------------------------------------------- /src/assets/nft/08.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/src/assets/nft/08.jpeg -------------------------------------------------------------------------------- /src/assets/nft/09.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/src/assets/nft/09.jpeg -------------------------------------------------------------------------------- /src/assets/nft/10.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/src/assets/nft/10.jpeg -------------------------------------------------------------------------------- /src/assets/nft/11.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/src/assets/nft/11.jpeg -------------------------------------------------------------------------------- /src/assets/nft/12.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/src/assets/nft/12.jpeg -------------------------------------------------------------------------------- /src/assets/nft/13.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/src/assets/nft/13.jpeg -------------------------------------------------------------------------------- /src/assets/nft/14.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/src/assets/nft/14.jpeg -------------------------------------------------------------------------------- /src/assets/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/src/assets/screenshot.png -------------------------------------------------------------------------------- /src/components/logossc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/src/components/logossc.png -------------------------------------------------------------------------------- /src/global.jsx: -------------------------------------------------------------------------------- 1 | const global = {} 2 | global.MAIN_CONTRACT_ADDRESS = "0x05141d769ce5dffd00a2cbd210c41a443360d68fd19a050c8cba22224d786918"; 3 | export default global 4 | -------------------------------------------------------------------------------- /src/layout/components/sidebar/starknet.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devnet0x/Starknet-Security-Challenges-Factory/HEAD/src/layout/components/sidebar/starknet.webp -------------------------------------------------------------------------------- /src/components/Nopage.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | function Nopage() { 4 | return ( 5 |
| Nickname | 47 |Points | 48 |Address | 49 |
| {feltToString(content.nickname).substring(0,12)} | 55 |{content.points} | 56 |0x{content.address.substring(0,4)}...{content.address.substring(content.address.length - 4)} | 57 |
76 | 79 |
80 | ))} 81 |Connected: {address}.
86 | {address &&| 117 | |
118 | LEADERBOARD 123 | {lang?Connect wallet to access hall of fame :Conecta tu wallet para acceder al salón de la fama } 124 | |
127 | 128 | |
What is this?
31 |
32 | Inspired in Ethereum Capture the Ether, this is a game in which you hack Starknet smart contracts to learn about security.
33 |
34 | It's meant to be both fun and educational.
35 |
36 | This game was builded in his Solidity original version by @smarx, who blogs about smart contract development at
37 | Program the Blockchain and now is being adapted to Starknet network by @devnet0x.
38 | The goal behind this project is add custom challenges from community and migrate challenges from other smart contracts CTFs
39 | (Openzeppelin Ethernaut),
40 | (Secureum A-Maze-X),
41 | (Tinchoabbate Damn Vulnerable Defi, etc).
42 |
How do I win?
49 |
50 | The game consists of a series of challenges in different categories. You earn points for every challenge you complete.
51 | Harder challenges are worth more points. Each challenge is in the form of a smart contract with an isComplete function.
52 | The goal is always to make isComplete() return TRUE.
53 | There's a leaderboard too (and dont worry about upgrades because score contract was implemented with a proxy).
54 |
How to contribute?
61 |PR your own smart contract challenge to the
62 | github reposiroty and i will try to add it as son as possible.
63 | The only requirement is that your Cairo Smart Contract must have a isComplete() external
64 | function with return TRUE if challenge was succesfully completed.
65 |
¿Qué es esto?
98 |
99 | Inspirado en Capture the Ether de Ethereum, este es un juego en el cual hackeas smart contracts en Starknet para aprender de seguridad.
100 | Su objetivo es ser divertido y educacional.
101 | Este juego fue contruido en su version original para Solidity por @smarx, quien escribe sobre el desarrollo de contratos inteligentes en
102 | Program the Blockchain y ahora está siendo adaptado para Starknet @devnet0x.
103 | Los objetivos detrás de este proyecto son agregar retos personalizados de la comunidad y migrar retos desde otros CTF de contratos inteligentes
104 | (Openzeppelin Ethernaut,)
105 | (Secureum A-Maze-X,)
106 | (Tinchoabbate Damn Vulnerable Defi, etc).
107 |
¿Como puedo jugar?
114 |
115 | El juego consiste en una serie de retos en diferentes categorias. Obtienes puntos por cada reto que completas.
116 | Los retos mas difíciles entregan un mayor puntaje.
117 | Cada reto, tiene la forma de un contrato inteligente con una función isComplete.El objetivo siempre es hacer que isComplete() retorne verdadero (TRUE).
118 | Además, hay un tabla de clasificación (leaderboard) (y no te preocupes por los upgrades porque el contrato inteligente principal fue implementado con un proxy).
119 |
¿Cómo contribuir?
126 |PR tu propio reto con un contrato inteligente en el
127 | repo de github e intentaré agregarlo tan pronto como sea posible.
128 | El único requerimiento es que el contrato en Cairo debe tener una función externa llamada isComplete() que retorne verdadero (TRUE)
129 | si el reto fue completado exitosamente.
130 |
241 | 244 |
245 | ))} 246 |Connected: {address.substring(0,6)}...{address.substring(address.length - 4)}.
251 | {address &&{title}
} 475 |515 | {titleChallenge[challengeNumber]} 516 |
517 |{descChallengeEn[challengeNumber]}
521 |{descChallengeEs[challengeNumber]}
525 |