# Starknet Hackathon
Hackathon project ideas for [Starknet Hackathon Amsterdam](https://starknet.io/latest-updates/starknet-hackathon-amsterdam/)
## Cairo by Example
Curate a list of [Cairo](https://www.cairo-lang.org/) samples. Inspired by [Solidity by Example](https://solidity-by-example.org/). These already exists so consider contributing to:
- https://perama-v.github.io/cairo/by-example/
- https://www.cairo-by-example.xyz/
## CRISP in Cairo
Reimplement [CRISP](https://github.com/FrankieIsLost/CRISP) in [Cairo](https://www.cairo-lang.org/)
## Front-end for Starknet-Cairo-101
Create an [Ethernaut](https://ethernaut.openzeppelin.com/) inspired front-end for: https://github.com/starknet-edu/starknet-cairo-101
[Optional] Create a leaderboard
## Improve DevX on Nile
1. `nile deploy` currently gives you back a transaciton hash. It would be nice if you got a terminal notification once the transaction was processed on L2 and viewable in Voyager. To do this, we can poll:
```
starknet get_transaction_receipt --hash 0x601537d063bf0c4457bf280695e5dabd03cd84e3734aa48b97e57f58c9a1621 --network alpha-goerli
```
1. Implement `nile verify-contract`. Similar idea to https://github.com/OpenZeppelin/nile/issues/95
3. Implement `nile fmt`
## Add disconnect wallet to starknet-react
https://github.com/apibara/starknet-react/issues/79
## Add abigen to caigo
Inspiration: https://github.com/dontpanicdao/caigo/issues/1
We want to support something like:
```
$ abigen --abi token.abi --pkg main --type Token --out token.go
Where the flags are:
--abi: Mandatory path to the contract ABI to bind to
--pkg: Mandatory Go package name to place the Go code into
--type: Optional Go type name to assign to the binding struct
--out: Optional output path for the generated Go source file (not set = stdout)
```
### Research
https://geth.ethereum.org/docs/dapp/native-bindings
Entrypoint: https://github.com/ethereum/go-ethereum/blob/master/cmd/abigen/main.go
Bind: https://github.com/ethereum/go-ethereum/blob/9e0a10004edde44b03988497b82875ee7efc0bc4/accounts/abi/bind/bind.go#L50
- Go-ethereum uses this CLI library: https://github.com/urfave/cli
## Prevent users from interacting with fraudulent contracts
Create a list of fraudulent contracts. Prevent user from interacting with these contracts. Fork Argent X
## Docker image with all Cairo tools
Problem: installing Cairo and Nile on an M1 Mac is non-trivial. If we provide a docker image with the latest versions of Cairo, Nile, other Cairo tools, it can save developer time on-boarding to the Starknet ecosystem.
We like want a dockerfile where it is easy to bump up versions of these tools. Configure GitHub actions to auto-publish docker images to a registry.
Provide a README for devs to use this image. Provide example aliases for developers to easily interact with docker container.
Ref: https://github.com/starknet-edu/starknet-erc721#with-docker=
## Staking contract