# Development Update #2 : Stage 1 (cont.) ## Project Discovery In my previous update, I described my research emphasis on ZK-Rollup technology with the lens of L2 scaling and adoption. I am utilizing StarkNet as an example of research subject, particularly because their ZK-rollup L2 network supports smart contracts. My primary concern for blockchain moving forward is its accessibility and usability. User experience must be improved and given greater focus; this is the only way L2 adoption and usage will scale. ### Project Ideas and Continued Research Paths #### ZK-Rollups with smart contract support * How are users communicating with the contracts, and how are they receiving and sending information/funds? * Right now, in the case of StarkNet and likely most others, it is primarily CLI engagement with the chain. * Once you have the contract set up, there are various commands you may run. Here are examples of commands on StarkNet via the CLI: * get_transaction (returns transaction) * tx_status (returns transaction status) * call (calls block/ doesn't affect state) * How are transactions approved/rejected both on L2 and L1? * L2 = STARK proofs * L1 = Verified on EVM * Improve technical documentation; create plan and structure moving forward to enhance user experience and overall adoption of the technology #### Building on L2/StarkNet * Beyond cryptocurrency. A more general blockchain/smart contract focus that goes beyond wallets and financial transactions. * Zero-Knowledge Proofs * [STARKs vs SNARKs](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/) * STARK : zero-knowledge scalable transparent argument of knowledge * SNARK : zero-knowledge succinct non-interactive argument of knowledge * [More docs](https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/zk-starks/) #### Patricia Merkle Trees * Blocks in StarkNet include a list of transactions and a block header. This block header includes a transaction_commitment field calculated using a patricia merkle tree #### Cairo Language vs. Solidity (are they complimentary, how do they work together, is one better than the other, etc.) * StarkNet utilizes the Cairo programming language for their smart contracts * [Cairo for Blockchain Devs](https://www.cairo-lang.org/cairo-for-blockchain-developers/) Cairo supposedly solves the "expensive" issue with Ethereum. Process of "The Shared Prover (SHARP)" * Cairo code executes business logic * Prover takes the execution trace, "proves" that it's valid (how?) * Prover sends the proof to the verifier (on-chain) * The on-chain verifier then writes a "fact registry contract" attesting to validity of the proof * dApp checks that the "fact" exists * fin [Hello, Cairo!](https://medium.com/starkware/hello-cairo-3cb43b13b209) (StarkWare article) [Cairo + Voting](https://www.cairo-lang.org/from-voting-to-trustless-eth-bridges-via-signature-aggregation/) Cairo allows you to write "provable" programs. Ideal for scaling on L2. #### Investigate other smart contract L2 examples that promote scaling with this level of efficiency ## Tooling needed for L2 adoption Solidity -> Cairo compiling method ([link to Medium article](https://medium.com/nethermind-eth/solidity-on-starknet-terminal-velocity-e8df5f63e010) and [Warp project](https://github.com/NethermindEth/warp) on GitHub) ## More Information [The Road to StarkNet](https://medium.com/starkware/on-the-road-to-starknet-a-permissionless-stark-powered-l2-zk-rollup-83be53640880)