209 похожих чатов

Как на уровне байткода регулируются pub ext int модификаторы? Как

например не позволить выполнить int ф-ю

9 ответов

32 просмотра

все же просто довольно… представим, что каждой ext функции ставится в соответствие некий идентификатор. Например, a() - 0x01, b() — 0x02, c() - 0x03. Тогда в скомпилированном байткоде будет вот такая конструкция в самом начале: desc = tx.data[0:1] if desc == 0x01: a() elif desc == 0x02: b() elif desc == 0x03: c() else: fallback()

ilya- Автор вопроса
Alexander Kolotov
все же просто довольно… представим, что каждой ext...

Эмм, про 4 байта я в курсе. Не замечал я что в байткоде матчинг такой есть. Проверю ещё раз.

ilya- Автор вопроса
Alexander Kolotov
все же просто довольно… представим, что каждой ext...

А можешь ткнуть на любой контракт в etherscan, где этот матч в байткоде. Прям подчеркнуть. Буду благодарен.

ilya
А можешь ткнуть на любой контракт в etherscan, где...

Вот контракт: https://kovan.etherscan.io/address/0x381DD3387B2AAa0178d035dDB6D3840AFC5Dbdac#code Вот его runtime-байткод: 6080604052348015600f57600080fd5b506004361060325760003560e01c806308112fe314603757806356f835fd14603f575b600080fd5b603d6045565b005b603d6070565b6040517f440a57bf0cad4531f0d64cfe9a30829810bbcd2b992d0ef6c9a6bd73bb65c5e590600090a1565b6040517fd217144c730a1ad05c23bd421e694cff562f313468e7486c268e493019a7829b90600090a156fea264697066735822122044b6379f61c5eb4ef7f6e3f3f2d0fb85c0a34dcabbf08c5f836d942fa32e8f8964736f6c63430008040033

Alexander Kolotov
screenshot Вот декомпилированный байткод:

получить его можно вот здесь: https://ethervm.io/decompile

ilya- Автор вопроса
Alexander Kolotov
Вот контракт: https://kovan.etherscan.io/address/0...

Спасибо, щас позже найду нужные опкоды. В начале как помню выделяется память.

ilya- Автор вопроса
Alexander Kolotov
screenshot Вот декомпилированный байткод:

Кстати хорошо что ты ответил. Я как раз не мог понять как диспач раьотает в байткоде. Т е весь байткод контракта с самого начала прогоняется через evm при каждом вызове?

ilya
Кстати хорошо что ты ответил. Я как раз не мог пон...

именно так. Считывается байткод из сторейджа, PC выставляется на нулевой байт байткода и поехали. И так каждую транзакцию, где получатель - наш контракт или каждый call/delegatecall/staticcall для нашего контракта.

Похожие вопросы

Обсуждают сегодня

@Benzenoid can you tell me the easiest, and safest way to bu.y HEX now?
Živa Žena
20
This is a question from my wife who make a fortune with memes 😂😂 About the Migration and Tokens: 1. How will the old tokens be migrated to the new $LGCYX network? What is th...
🍿 °anton°
2
What is the Dex situation? Agora team started with the Pnetwork for their dex which helped them both with integration. It’s completed but as you can see from the Pnetwork ann...
Ben
1
Anyone knows where there are some instructions or discort about failed bridge transactions ?
Jochem
21
@lozuk how do I get my phex copies of my ehex from a atomic wallet, to move to my rabby?
Justfrontin 👀
11
Hello, Is iExec also part of the "inception program" or another one ? Would it be a name to qualified the nature of the relationship between iExec and Nvidia? And does Secret ...
Ñïķøłäś
8
Ready for some fun AND a chance to win TKO Tokens? Join us for exciting minigames in our Telegram group! 🕒 Don’t miss out—games start on today 25 October 2024, at 8 PM! Ge...
Milkyway | Tokocrypto
255
any reference of this implementation?
BitBuddha
29
Also, why can’t the community have a vote/ say when it comes to initiatives like buybacks. Isn’t the point of crypto decentralisation? Don’t we deserve input as long term supp...
👨🏽‍🦰
13
Hi guys, any problem with Pulsebrige? Trying to transfer from wETH to ETH. First it tells me to connect my metamask "through mobile app" not desktop. Then I did and confirmed ...
Snowflakecrypto
13
Карта сайта