atarpara

353 posts

atarpara banner
atarpara

atarpara

@atarpara

✯ https://t.co/GIde268mPb | @onchainheroes

mload(0x40) Katılım Ocak 2015
1.1K Takip Edilen891 Takipçiler
atarpara retweetledi
Jarrod Watts
Jarrod Watts@jarrodwatts·
Ethereum’s next major upgrade, “Fusaka”, goes live in less than 48 hours. I read all 13 EIPs being included so you don’t have to. So, here are 13 tweets (with diagrams) to explain the 13 upgrades in simple terms: 🧵
Jarrod Watts tweet media
English
116
312
1.8K
152.9K
atarpara
atarpara@atarpara·
Hey @solidity_lang, the community is eagerly waiting for the Solidity Summit 2025 recordings! 🗓️ The speaker lineup looked amazing. Any ETA on when they’ll hit YouTube or anywhere else? Thanks!
atarpara tweet media
English
1
0
2
189
sorryNotsorry
sorryNotsorry@0xSorryNotSorry·
I just saw a “We warned Balancer” post from a multifollower legitimate account. I hope someone finds the private key for the zero address and this circus ends.
English
5
1
71
6.3K
vectorized.eth
vectorized.eth@optimizoor·
@real_philogy The minimal ERC6492RevertingVerifier abuses the address to store the function selector, which shaves off a bit of bytecode, allowing `codesize()` to be coincidentally abused in place of PUSH1 0x60.
English
2
0
5
659
vectorized.eth
vectorized.eth@optimizoor·
CREATE2 address tricks: - Pack 2 addresses into 1 storage slot - Store config bits / bytes - Reduce calldata / bytecode size - "CREATE3" - On-the-fly address derivation (onchain verification, storage savings, lazy deployments, etc.)
English
39
34
245
15.3K
solady
solady@solady777·
I have some frens supporting Cantina and some frens supporting Code4rena. But Cantina audited Solady (for free) and gave me a M3 MacBook Air, so I think Cantina is better for the space.
English
8
2
153
9.2K
solady
solady@solady777·
@z0r0zzz if you can mine that address, the NSA will be knocking at your door.
English
1
0
12
432
solady
solady@solady777·
Bro, if you can’t take the funds out, it’s not a vanity address. Otherwise I can say address(0) is my vanity address.
English
9
1
89
7K
atarpara
atarpara@atarpara·
@solady777 I think it's more useful then PUSH0 and improve lot of defi maths.
English
0
0
1
50
solady
solady@solady777·
EIP-7939 (CLZ) feels too easy to implement. Ethereum core devs don’t feel nerdsniped enough to include it in the next hardfork.
English
1
0
8
363
atarpara
atarpara@atarpara·
If solady has a million fans then I am one of them If solady has ten fans then I am one of them If solady has only one fan then that is me If solady has no fans then that means I am no longer on earth If the world is against solady then I am against the world
kaden.eth@0xKaden

If solady has a million fans then I am one of them If solady has ten fans then I am one of them If solady has only one fan then that is me If solady has no fans then that means I am no longer on earth If the world is against solady then I am against the world

English
0
0
5
514
emo.eth
emo.eth@emo_eth·
clocked it immediately 🫡 when working with inline yul, you must study evm.codes and the foundry debugger to test your intuition "assembly" doesn't have to be scary if you deeply understand what's happening
kaden.eth@0xKaden

🧵How memory works under the hood in the EVM and how this knowledge led me to recently discover a ✨critical vulnerability✨ Oh and if you're new to assembly, don't worry, it's simpler than you think Memory Layout Starting with the basics, Solidity reserves the following 4 32-byte memory slots: 0x00-0x3f (64 bytes): Scratch space for hashing methods We can use this area for temporary memory usage as long as we don't need more than 64 bytes 0x40-0x5f (32 bytes): Free memory pointer This slot keeps a pointer to free memory, i.e. the point beyond which it's safe to write to memory. When we use additional memory, this slot gets updated to point beyond that used memory. It's important that we never overwrite this value or else high level solidity logic may overwrite existing memory unexpectedly 0x60-0x7f (32 bytes): Zero slot This slot is reserved as the initial value for dynamic memory arrays, as such it must always be zero Memory Management Opcodes There are several opcodes that manipulate memory, but for simplicity, we'll focus on the two most common ones: mstore and mload mstore and mload write (store) and read (load) 32 byte values to and from memory, respectively In assembly (yul), mstore takes two inputs, an offset and a (32 byte) value. The value is then placed at the provided offset in memory. Simple, right? mload works about the same, taking just an offset and returning the (32 byte) value at that offset Example Taking what we've learned so far, we can safely write and read to and from memory as follows: The Critical Bug During a recent audit, I came across a simple, yet easy to miss, assembly memory management bug The code worked by manually deriving a storage slot from the hash of a set of parameters, including the caller As commented in the snippet, we expect memory from 0x1c to 0x40 to contain the selector, followed by the caller, followed by a However, even though a is only 96 bits (12 bytes), it overwrites the last 20 bytes of the caller. Since addresses are only 20 bytes long, this overwrites the entire value. This occurs because mstore always writes a full 32 bytes to the provided offset. If a smaller value is provided, the upper bytes will be zeroed such that the full 32 bytes are overwritten (Try testing this out in chisel with !memdump to get a feel for it) As a result of this bug, the storage slot is not derived from the calller, and thus anyone calling this function will write to the same storage slot, bypassing intended authorization logic Fin Let me know if you're feeling ready for an advanced memory management writeup (😈solady style😈)

English
3
1
20
1.5K
atarpara
atarpara@atarpara·
@0xKaden They tried to copy trick from Solady without understanding what they were doing, or perhaps this bug is due to vibe coding.
English
0
0
3
284
kaden.eth
kaden.eth@0xKaden·
🧵How memory works under the hood in the EVM and how this knowledge led me to recently discover a ✨critical vulnerability✨ Oh and if you're new to assembly, don't worry, it's simpler than you think Memory Layout Starting with the basics, Solidity reserves the following 4 32-byte memory slots: 0x00-0x3f (64 bytes): Scratch space for hashing methods We can use this area for temporary memory usage as long as we don't need more than 64 bytes 0x40-0x5f (32 bytes): Free memory pointer This slot keeps a pointer to free memory, i.e. the point beyond which it's safe to write to memory. When we use additional memory, this slot gets updated to point beyond that used memory. It's important that we never overwrite this value or else high level solidity logic may overwrite existing memory unexpectedly 0x60-0x7f (32 bytes): Zero slot This slot is reserved as the initial value for dynamic memory arrays, as such it must always be zero Memory Management Opcodes There are several opcodes that manipulate memory, but for simplicity, we'll focus on the two most common ones: mstore and mload mstore and mload write (store) and read (load) 32 byte values to and from memory, respectively In assembly (yul), mstore takes two inputs, an offset and a (32 byte) value. The value is then placed at the provided offset in memory. Simple, right? mload works about the same, taking just an offset and returning the (32 byte) value at that offset Example Taking what we've learned so far, we can safely write and read to and from memory as follows: The Critical Bug During a recent audit, I came across a simple, yet easy to miss, assembly memory management bug The code worked by manually deriving a storage slot from the hash of a set of parameters, including the caller As commented in the snippet, we expect memory from 0x1c to 0x40 to contain the selector, followed by the caller, followed by a However, even though a is only 96 bits (12 bytes), it overwrites the last 20 bytes of the caller. Since addresses are only 20 bytes long, this overwrites the entire value. This occurs because mstore always writes a full 32 bytes to the provided offset. If a smaller value is provided, the upper bytes will be zeroed such that the full 32 bytes are overwritten (Try testing this out in chisel with !memdump to get a feel for it) As a result of this bug, the storage slot is not derived from the calller, and thus anyone calling this function will write to the same storage slot, bypassing intended authorization logic Fin Let me know if you're feeling ready for an advanced memory management writeup (😈solady style😈)
kaden.eth tweet mediakaden.eth tweet media
English
21
38
296
22.1K
atarpara retweetledi
vectorized.eth
vectorized.eth@optimizoor·
A common Solidity optimization pattern is to pack variables into the minimum amount of storage slots. But what if you want to generalize to uint256s? Conditional packing is a pain. Enter Solady's optimized `LibZip.cdCompress`. Now 4x faster. So fast, it opens up new use cases.
vectorized.eth tweet media
English
35
22
309
24.6K
SliKᵍᵐ
SliKᵍᵐ@0xSLK·
@Aizcalibur i have the ideas, i have the logic, probably can do something that would work, but i think someone with much more experience would be needed if we really want to make it as secure and optimized as it could @atarpara maybe?👀
English
2
0
2
165
SliKᵍᵐ
SliKᵍᵐ@0xSLK·
Who's building a fully onchain pool: - Mining is executed directly on the smart contract, rather than through an EOA or AGW. - A claim method ensures fair and transparent distribution of rewards to contributors. - Role-based permissions enable specific individuals to make strategic decisions (e.g., what to buy, when to upgrade). These roles can even be managed by a separate DAO-like smart contract. Make onchain great again. Leverage the tech — the game is fully onchain, creating the perfect environment to go all-in. Why limit yourself by trusting people when you can trust code?
bigtoshi@satoshibigmoto

We’ve been quietly testing advanced miners with high-performance hardware and a high voltage facility. The Blackwell Miner (with Nvidia's latest chips) and the Watercooled Miner, live today alongside the new facility. With the emergence of mining pools, the Bigcoin ecosystem is evolving. Bigcoin is for everyone. These powerful miners are a necessary step to help democratize Bigcoin's distribution and levels the playing field as mining and hashrate scales. The future of Bigcoin should be shaped by strategy, coordination, and upgrades; not just who showed up first. Lastly, while I find mining pools interesting and progressive, I am not responsible for any of them, be responsible and evaluate the team and the risk.

English
10
0
32
4.3K
atarpara
atarpara@atarpara·
@shafu0x After EOF comes evm will not remain simple.
English
1
0
3
159
shafu
shafu@shafu0x·
The simplicity of the EVM is beautiful.
English
8
3
48
2.6K
atarpara retweetledi
vectorized.eth
vectorized.eth@optimizoor·
This is a good proxy to track smart wallet adoption over time. EVM. Accelerate.
vectorized.eth tweet media
English
4
3
93
5.7K
Raoul
Raoul@RaoulSaffron·
Debugging Solidity is no small task, and I’m honored to lead a workshop next Tuesday on @cantinaxyz With such an expert audience, we can dive really deep. Is there any dark corner of Solidity you want me to cover?
Runtime Vеrification@rv_inc

🚨WORKSHOP ALERT We have teamed up with @cantinaxyz to bring you a Simbolik workshop to learn how to make the most of it during audits and contests 🐞🔨 📅 Next Tuesday, Feb 4th 🕙 4pm CET//10am ET 📍Cantina's Discord -> discord.com/invite/7X6jJDG… Get ready to debug your code🫡

English
3
2
32
2.7K
Hari
Hari@hrkrshnn·
@m4rio_eth Use --via-ir to prevent STDs
English
3
0
5
199
2pmflow
2pmflow@2pmflow·
as a contributor to @animecoin, sharing some cool tech in the ANIME claim contract the contract is using @LayerZero_Core's lzRead, a new data primitive that lets smart contracts query onchain data from other chains for seamless cross-chain apps specifically, this claim needs to check for ownership of L1 nfts to decide whether a claim request is valid. instead of initiating a claim on the L1 (expensive gas) to do the check, this claim contract uses lzRead to check for L1 nft ownership on the L2, and distributes the L2 version of the ERC20 afterwards. overall, this results in a much cheaper claim experience for users! with primitives like lzRead, fetching that L1 in-contract is super simple. my favorite part is that there's no need for devs to maintain their own infra for cross-chain message passing. the devx is also simple: use the layerzero OApp starter template, define some params, define a callback function, a quote function, and everything else just works out of the box this is just one of many possible use cases enabled from making cross-chain reads dirt simple, and its great to see the Animecoin Foundation as an early adopter of this tech. big shoutout to the @LayerZero_Core team for developing lzRead and supporting this launch, also big shoutout to the gigabrains at @GuardianAudits + @xuwinnie for the claim contract audit 🙌
English
40
41
291
35.1K