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

Связанный чат канала: https://news.1rj.ru/str/raznorabochiy_chat
Download Telegram
Критерии, которых не было на сайте, но нашёл в js-бандле

Это чуть более подробная расшифровка про StarkEx

В комент к этому посту приложу js-бандл, если кто-то хочет ещё поискать полезную инфу, адреса контрактов и т.д.
🔥39👍42
Как поменять приватник в Braavos

Продолжаем изучать невероятные возможности абстракции аккаунтов в Старкнете.

Статья о новых способах защиты и скама аккаунтов Braavos.

По ссылке технические детали и небольшое расследование угона аккаунтов.

Плез, если будите шарить пост, шарьте пост в телеге, а не ссылку на телеграф, очень хочу набрать 1000 сабов к новому году 🤩

https://telegra.ph/Kak-pomenyat-privatnik-v-Braavos-12-02
🔥48👍4
Итак, вы поменяли приватник в аккаунтах Argent X, что теперь с ними делать?

В браузерном кошельке аккаунт больше не работает.

Можно работать софтом, но как? Ни один открытый софт с ходу не работает с такими акичами.

Так как меня несколько человек спрашивали про это, решил написать пост.
Сейчас я вам расскажу, как сделать минимальные правки в софте от czbag - https://github.com/czbag/starknet чтобы можно было использовать такие аккаунты.

В корне проекта создаём файл argent.py вот с таким содержанием

ARGENT = {
"0xНОВЫЙ_ПРИВАТНИК1": "0xАДРЕС1",
"0xНОВЫЙ_ПРИВАТНИК2": "0xАДРЕС2",
"0xНОВЫЙ_ПРИВАТНИК3": "0xАДРЕС3",
}

здесь перечисляем все ваши пары приватник-адрес.

В файле modules/starknet.py подключаем модуль argent и меняем метод _get_argent_address вот так, лишние строки закомментированы:

from argent import ARGENT

#...

def _get_argent_address(self) -> int:
address = ARGENT[self.private_key]
return int(address, 16)

# if CAIRO_VERSION == 0:
# selector = get_selector_from_name("initialize")
#
# calldata = [self.key_pair.public_key, 0]
#
# address = compute_address(
# class_hash=ARGENTX_PROXY_CLASS_HASH,
# constructor_calldata=[ARGENTX_IMPLEMENTATION_CLASS_HASH, selector, len(calldata), *calldata],
# salt=self.key_pair.public_key,
# )
# print(address, type(address))
# return address
# else:
# address = compute_address(
# class_hash=ARGENTX_IMPLEMENTATION_CLASS_HASH_NEW,
# constructor_calldata=[self.key_pair.public_key, 0],
# salt=self.key_pair.public_key,
# )
# print(address, type(address))
# return address


Всё, теперь адреса не выводятся из приватника, а берутся из словаря.

Я надеюсь czbag добавит с свой прекрасный софт клейм SТRK, когда придёт время. Если не добавит, найдём другой способ и я расскажу вам о нём.
👍362🔥2
Лёгкий способ поменять приватник на аккаунте Braavos

В предыдущей статье про Бравос я рассказывал про случай, как скамер развёртывал собственный модифицированный контракт Бравоса и менял приватник функцией setPublicKey.

Давайте ещё раз посмотрим на скриншот.

DECLARE – это деплой контракта, upgrade – обновление кошелька на этот контракт, setPublicKey – смена приватника.

Звучит сложно, нужно скачать код контракта, пропатчить его, задеплоить. Но на самом деле, аккаунты Бравоса работают используя паттерн прокси, то есть деплоится имплементация контракта один раз, а дальше все аккаунты ссылаются на эту имплементацию. То есть мы можем взять адрес задеплоенного скаммером контракта из угнанного аккаунта Ильдара – 0x02b0d2bf21052d789f9dc24aa401f8360ccc6971be8149851a36ec53554bcdbe
и просто передать этот адрес в вызов upgrade(0x02b0d2bf21052d789f9dc24aa401f8360ccc6971be8149851a36ec53554bcdbe), а дальше вызвать setPublicKey

получится всего 2 транзакции для смены приватника. Кроме этого я бы добавил ещё один upgrade(0x05dec330eebf36c8672b60db4a718d44762d3ae6d1333e553197acb47ee5a062) – это возвращаем оригинальную имплементацию Браавос версии 000.000.011, потому что мы точно не знаем что именно ещё дописал в контракт скамер и может быть там есть бекдор, маловероятно, но возможно.

Единственный минус в этом решении, это то, что аккаунты по сути связываются так как все ссылаются на имплементацию скамера, скорее всего именно по этой причине он деплоит новый контракт для каждого угнанного аккаунта. Но если снепшот уже был, это не проблема. В следующей статье я всё таки выложу код для добавления Hardware Signer'а, это более безопасный метод.

Вот пример моего тестового аккаунта, где я поменял приватник: https://voyager.online/contract/0x01f752facbf0b8a4577bb45436fa396423bf972b5dbfef57fef9e20a9f554498

Ссылка на репозиторий с кодом: https://github.com/raznorabochiy/braavos-set-public-key
👍19
Как добавить Hardware Signer скриптом в Braavos

В предыдущей статье я немного описал теоретическую часть.

А в этом посте решил выложить код для всех этих операций — https://github.com/raznorabochiy/braavos-hardware-signer

generate_secp256r1_key.py — скрипт для генерации приватника secp256r1

add_signer.py — добавляет HW Signer в аккаунт Braavos, стандартный приватник перестаёт работать

check_signature.py — проверяет, может ли ваш аккаунт подписывать транзы стандартным приватником

check_secp256r1_signature.py — проверяет, может ли ваш аккаунт подписывать транзы HW Signer-приватником

remove_signer.py — удаляет HW Signer, делает подпись HW Signer’ом, не нужно ждать 4 дня, старый приватник опять начинает работать

remove_signer_with_etd.py — удаляет HW Signer используя старый приватник, нужно ждать 4 дня чтобы старый приватник снова начал работать

cancel_deferred_remove_signer_req.py — отменяет удаление HW Signer, нужно подписывать HW Signer’ом

get_deferred_remove_signer_req.py — проверяет, пытается ли кто-то сбросить HW Signer при помощи старого приватника и если это так дату до которой можно отменить это действие скриптом cancel_deferred_remove_signer_req

Сгенерированный generate_secp256r1_key приватник нужно положить в файл secp256r1-key.txt

Оригинальный приватник нужно положить в файл private-key.txt

В файл addresses.txt кладём адреса для скрипта get_deferred_remove_signer_req

Если вы добавили HW Signer, то все последующие транзакции должны быть подписаны им, как это делается можно посмотреть в скрипте cancel_deferred_remove_signer_req.py, используется класс Secp256rSigner из signer.py
18👍4
Сегодня послушал подкаст Вишни про FACKBLOCK, как же круто Вишня всё смонтировал, я конечно человек предвзятый, но мне зашёл монтаж и формат шоу с его фирменными рофлами (кринж реклама, это отдельный вид искусства)

Было интересно послушать парней и себя со стороны (это мой первый опыт в формате интервью)

Рекомендую, на мой вкус Вишня очень высоко задрал планку крипто-подкастов.

https://www.youtube.com/watch?v=rHd6jFH9Ujg
56🤡6👍4💩1
Инскрипции для Layer2-20

По просьбе парней из 9KDAO написал минтилку инскрипций https://www.layer220.io/ это экосистемный проект Orbiter и за эту активность дают поинты.

Если кто-то не делал и хочет заскочить в последний вагон: https://github.com/raznorabochiy/layer220

в настройках поменяйте, в какой сети будете минтить и в какую сеть адресована инскрипция


export const FROM_NETWORK: Network = Network.Arbitrum;
export const TO_NETWORK: Network = Network.Optimism;


Цена минта примерно 50 центов.
👍29
После выхода Starknet, ко мне обратилось несколько человек с просьбой помочь склеймить дроп и я успешно помог это сделать. Так что если у вас есть например сид фраза от вашего (что принципиально) старого кошелька, которую вы вводите в свежий аргент или бравос, а он не может найти ваш старый адрес или вы поставили 2фа на скомпрометированные аккаунты, но потеряли доступ к почтам. Со всеми такими и другими кейсами я могу помочь. Единственный принципиальный момент, не пишите мне, если это аккаунты не ваши, во многих случаях я могу это распознать и сразу прекращу диалог.

Пишите @raznorabochiy прикладывая адрес аккаунта.
👍297🔥4
Dencun: Community Edition

Минтилка для ваших аккаунтов Linea.

Чтобы сминтить, необходимо иметь на кошельке одну из этих NFT: The Merge Regenesis, Ethereum Evolved Shanghai или The Linea Voyage.

Осталось чуть больше 2х дней

https://github.com/raznorabochiy/dencun-community-edition
10
Чекер для полихедры


import requests
from web3 import Web3

with open("wallets.txt", "r") as file:
wallets = [row.strip() for row in file]


def check(address: str) -> float:
addr = Web3.to_checksum_address(address)
addr_prefix = addr.lower()[2:5]
# для Ethereum
url = f"https://pub-88646eee386a4ddb840cfb05e7a8d8a5.r2.dev/eth_data/{addr_prefix}.json"

# для BSC
# url = f"https://pub-88646eee386a4ddb840cfb05e7a8d8a5.r2.dev/bsc_data/{addr_prefix}.json"
resp = requests.get(url)

try:
json = resp.json()
if json is None:
return 0
else:
return int(json[addr]['amount'], 16) / 10 ** 18
except:
return 0


total = 0

for wallet in wallets:
tokens = check(wallet)
print(f"{wallet}: {tokens}")
total += tokens

print(f"Total: {total}")


UPD: исправил, чтобы адреса без чексуммы тоже корректно проверялись
👍225
Скорее всего это контракт для клейма полихедры

0x9234f83473c03be04358afc3497d6293b2203288
14👍2
Media is too big
VIEW IN TELEGRAM
Самый быстрый чекер

нативных балансов и балансов ERC-20 токенов

Сети:
* Arbitrum
* Arbitrum Nova
* Base
* Berachain Testnet
* Blast
* BNB
* Ethereum
* Fantom
* Linea
* Optimism
* Polygon
* Scroll
* zkSync
* Zora

остальные soon

Контракты токенов легко добавляются самостоятельно

Не нужны никакие прокси или API-ключи!

https://github.com/raznorabochiy/evm-checker

Не забудьте поставить звезду на гитхабе
80👏9👍5🔥3🤡2
Мощное обновление wallets-tools

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

Скрипт может:

* Сгенерировать новые сид-фразы
* Вычислить приватники из сид-фраз
* Вычислить адреса из сид-фраз
* Вычислить адреса из приватников

Поддерживаемые сети:

* Aleo
* Aptos
* Cosmos (много разных сетей, смотри ниже)
* EVM
* Solana
* StarkNet (ArgentX, Braavos)
* Sui

Поддерживаемые Cosmos-сети:

* Agoric
* Akash
* Axelar
* Bostrom
* Celestia
* Chihuahua
* Cosmos Hub
* Cronos POS
* dYdX
* Dymension
* Evmos
* Gitopia
* Gravity Bridge
* Injective
* IRISnet
* Juno
* Kava
* KYVE
* LikeCoin
* Mars Hub
* Neutron
* Noble
* OmniFlix
* Osmosis
* Passage
* Persistence
* Quasar
* Quicksilver
* Regen
* Saga
* Secret Network
* SEDA
* Sentinel
* Shentu
* Sifchain
* Sommelier
* Stargaze
* Stride
* Terra
* Terra Classic
* UX (umee)


https://github.com/raznorabochiy/wallets-tools
👍48🔥166😁2💩1🤡1
This media is not supported in your browser
VIEW IN TELEGRAM
Base Builder Anniversary NFT

Примерно год назад я писал скрипт для приватки Факблока, этот скрипт деплоил контракт в сети Base Goerli и минтил Base Builder NFT.
Теперь владельцы той NFT могут сминтить другую NFT уже в основной сети Base.

https://www.base.org/builder-anniversary-nft

Я написал для этого скрипт, внимательно читаем описание на гитхабе, желательно использовать прокси, так как пруф запрашивается с сайта.

https://github.com/raznorabochiy/base-builder-anniversary
👍164
Bundled ABI

Те, кто пишет скрипты, сталкивались с ситуацией, когда ABI не получается достать никаким иным способом, кроме как найти в коде сайта.

В таких случаях ABI-код изуродован js-бандлером и это не валидный JSON, а оптимизированный объект-литерал у которого булевые значения true и false заменены на !0 и !1, а ключи объекта без кавычек. Пример можно увидеть на картинке у этого поста.

Мне надоело делать лишние движения, чтобы чистить такой ABI-код, сделал инструмент:

https://bundled-abi.surge.sh/

Кроме приведения ABI к валидному JSON, он ещё умеет Human-Readable ABI который можно использовать в библиотеке ethers.
👍49🔥3
Софт для клейма Renzo

Если вы мультили Renzo на нищей тяге через pendle в Arbitrum, то самое время заклеймить на низком газе свои жетоны REZ

https://github.com/raznorabochiy/renzo-claim
👍10
Blum

Посмотрел видос криптусов про Блюм - https://www.youtube.com/watch?v=bvITBTdtsBU

Мне тема с универсальным кошельком/биржей внутри телеграма понравилась, пошёл на https://blum.io/ оставил свой имейл, ну думаю, пришлют инвайт зарегаюсь, потестирую. Но!, Факич как всегда подсуетился почти раньше всех и дал мне доступ и насыпал инвайтов, кому нужно, вот инвайт с моей рефочкой (количество инвайтов ограничено):

t.me/BlumCryptoBot/app?startapp=ref_wA2qb3OR4k
t.me/BlumCryptoBot/app?startapp=ref_wA2qb3OR4k
t.me/BlumCryptoBot/app?startapp=ref_wA2qb3OR4k
🔥10👍4🤡41👎1💩1
Написал вспомогательный софт для подачи апелляции L0 - https://github.com/raznorabochiy/lz-appeal

Он автоматизирует одно действие, генерит подпись и отправляет её в эзерскан (никакой газ не тратится) это одно из действий необходимое в форме, которую выкатил пингвин.

npm i
в keys.txt свои ключи
в constants.ts настройки таймингов и прокси (не думаю что прокси нужны, можно не заполнять)
👍255👎1💩1🤡1
Актуализировал для нового дропа Renzo

https://github.com/raznorabochiy/renzo-claim
🔥14