New @VitalikButerin blog post on replacing the EVM with RISC-V in the long-term.
I am a huge fan of this direction for Ethereum's execution layer.
Today, RISC-V zkVMs like SP1 are the clear endgame solution for "ZK-ifying" Ethereum and quickly becoming the de-facto solution for ZK EVM. But as Vitalik cites in this post, our research at Succinct shows that the EVM is an extremely inefficient ISA for ZK proving.
This proposal to migrate the execution layer directly to RISC-V can be viewed as migrating to "native" code for a ZK world as opposed to living in an interpreted world that imposes between 100-1000x overhead. By replacing EVM with RISC-V for the execution layer, we can up the gas limit on L1 by orders of magnitude (assuming optimization of other bottlenecks like a more zkVM friendly state merkleization format), while preserving verifiability.
Link to full blog post below.
@rootstock_io@devdao_academy You bet they are! If you want to be one with the meme, be sure to take our @devdao_academy course written by @DAppaDanDev to show you how you can transfer your Solidity skills to Bitcoin with @rootstock_io ⚡
Start learning today👇
https://t.co/l9CgdIKKcC
has someone been using hardhat and the functionality hre.ignition.deploy?
I am having some troubles with this error: TypeError: module.futures is not iterable
¡La mejor guía para aprender Patrones de Diseño!
✓ GRATIS y en Español
✓ Con un montón de ejemplos de código
✓ TypeScript, Java, C#, PHP, Python, Rust y más
→ https://t.co/9AdUL2IXSl
Bienvenidos al día de la programación.
¡SORTEO de un teclado Keychron!
✓ Dale like y RT.
✓ Comenta #miduConf en este post
→ Puede participar todo el mundo
→ Envíos internacionales
I built an open-source "how wallets work" demo...
It covers:
◆ How seed phrases & key-pairs are generated
◆ How private keys can be sharded into pieces
◆ How wallets sign messages
◆ How EOAs can "own" smart contract wallets
◆ Minting an NFT from a smart contract wallet
I am frequently asked, "How can I start learning Blockchain?"
If I were to learn Blockchain from scratch, aiming to become a blockchain developer or security researcher, I would focus on mastering the theoretical foundations.
I discovered a great resource for this 👇🏼
Gold! 🪙
How to become a Smart Contract Security Researcher in 2024 - Full Roadmap!!
I’d appreciate a repost, spread the knowledge 🫡
Now follow the thread 👇
As a developer, you should know core system design concepts.
This helps show potential employers that you can turn design requirements into production-ready code.
This course covers app architecture, API design, caching, networking, databases, and more.
https://t.co/j6TmwXZox7
Writing an “Unhackable” Money Market 🏦
- Problem 1: Re-Entrancy
- Problem 2: Input Validation
- Problem 3: Rounding Errors
Now follow the thread 👇
Looks like today we're building us an "unhackable bank" on the blockchain. How do we go about this exactly? Pull up a chair, grab a cold one, and let's dive into the good, the bad, and the downright ugly of securing a web3 money market.
🔴Problem 1: Re-Entrancy
Picture this: Jane and Roy are a newly married couple, eager to withdraw some funds from their wedding account. Jane presses the withdraw button, and lo and behold, the balance still shows the same amount even after a withdrawal. Being the curious (and cheeky) lass she is, Jane decides to press it again. And again. Before you know it, Jane's made more withdrawals than their account actually holds. That's re-entrancy for you, folks, and it just earned Jane a trip to the courthouse.
A malicious contract can call back into the vulnerable contract before the previous function execution completes, allowing multiple withdrawals of funds. Here’s a simple version of how it can go wrong in Solidity:
To fix this, you need to update the state before making external calls or use a mutex:
🔴Problem 2: Input Validation
Now Roy, enterprising bloke that he is, decides to make a cash deposit for his buddy John, to whom he owes money. John, being a bit clumsy with his phone, gives Roy his account number but accidentally types a few extra digits. Even though account numbers at the bank are all 12 digits, John ends up giving a 15-digit account number.
Roy, trusting John’s information, types it in without a second thought and sends the money to this non-existent account. Without proper input validation, the bank's system fails to notice the mistake and accepts the money. Poof! It’s gone now, to an account that nobody can access. A classic case of lost funds due to poor input validation.
To avoid such scenarios, input validation is like your best mate who always double-checks things before you make a fool of yourself. In this case, the system should give a quick once-over to make sure the account number is exactly 12 digits and actually exists before accepting the deposit. These simple checks can prevent such costly errors and keep both Roy and John from tearing their hair out and cursing their fat fingers.
But even more importantly, you should probably check that the user account exists within the depositors of the bank. Otherwise, you might still send the money into the void.
Here’s how we can do that with Solidity:
In this code, we validate the deposit by checking if the account number is exactly 12 digits and if the account actually exists within the bank's depositors. This way, Roy and John can sleep easy knowing their funds won’t disappear into the void, and everyone can avoid a potential nightmare.
👇👇
¿Tienes una idea digital y no sabes cómo llevarla a cabo?
Este domingo arranca mi newsletter semanal donde quiero abordar temas sobre la ideación y desarrollo de productos digitales, incluyendo web3.
Enlace en la descripción de mi perfil.