690
Suscriptores
Sin datos24 horas
+447 días
+6330 días
Archivo de publicaciones
Repost from mylo
Сделай так, чтобы родители гордились тобой
Представь: проходит всего несколько лет, и ты звонишь своим родителям. В трубке тишина, а потом — их голоса, наполненные слезами радости. Ты говоришь простые слова: «Вам больше не нужно работать». Ты даришь маме дом, отцу машину. И они понимают, что их сын справился. Что всё, что они в тебя вложили — силы, нервы, бессонные ночи, — было не зря.
Чтобы дойти до этого момента, придётся пройти через всё: падения, ошибки, сомнения, тупики. Но именно они закалят тебя. Неважно, сколько раз ты упадёшь. Важно, что каждый раз ты встанешь. Пока другие сдаются, ты продолжаешь идти. И именно это делает разницу между теми, кто просто мечтает, и теми, кто добивается.
Каждый день — это маленькая инвестиция в тот самый момент, когда твои родители скажут: «Наш сын вырос. Он смог». Не жди идеального времени. Начинай с того, что есть. Работай с тем, что у тебя в руках. Учись, пробуй, рискуй, ошибайся, снова поднимайся. Пусть это будет больно, но пусть это будет твой путь.
В конце концов, родители не ждут от тебя миллионов. Они ждут одного — чтобы ты был сильным и не сломался. Чтобы ты сделал всё возможное ради своей жизни. И если ты сделаешь это — гордиться будут не только они. Ты сам однажды посмотрешь в зеркало и скажешь: «Я справился».
И вот главное: не прожигай свои прекрасные годы жизни. Пока ты сомневаешься, время уходит. Время — это единственный ресурс, который не возвращается. У тебя есть выбор: либо тратить его на пустоту, либо строить жизнь, которой будут гордиться твои родители и ты сам.
$ZKC 17:00
DEXs ETH BSC
Binance alpha
Gate alpha
В 17:00 листят на споте почти на всех биржах, если выйдут высоко, будет смарт откупить декс в первые секунды
17:10 листинг на фьючах MEXC, Binance, Gate, Ourbit, ну здесь все как всегда, Mexc-Gate может покормить
✈️ Telegram | Админ
2025.01.19
-> 1 Solana = 295$
-> MCap = 130B$
2025.09.13
-> 1 Solana = 240$
-> MCap = 130B$
За 8 месяцев инфляция к доллару 23%. С учётом обесценивания самого доллара вообще ~25%
Это уровень Бурундийского франка
Подведём итоги: чему мы научились
-> Узнали синтаксис языка Rust, умеем работать с типами данных
-> Научились следить за тем, кто владеет данными и можем заимствовать по ссылке &
-> Уже пишем читаемый код, благодаря разделению его на отдельные файлы и модули
Разобрали структуру смарт-контракта на anchor и научились создавать аккаунт для хранения данных в блокчейне.
Что дальше?
- Книга обо всем по Rust на русском
- Rust на примерах на русском
- Книга обо всем по Anchor framework на русском
- Книга от Solana по разработке на русском
✈️ Telegram | Админ
Пишем программу на anchor
Время погрузиться в код. Начнем с того, что создадим наш первый проект Anchor и посмотрим, из чего он состоит.
anchor init hello_anchor
cd hello_anchor
Только что мы создали скелет программы, давайте посмотрим на структуру
* Anchor.toml: Главный файл конфигурации Anchor.
* programs/: Здесь будет храниться наш код.
* src/
hello_anchor.rs: Наш основной файл смарт-контракта.
* tests/: Тут будут лежать наши тесты (на TypeScript).
* app/: Для клиентского веб-приложения (пока пустая).
* migrations/: Скрипты для развертывания.
В src/ находим файлик с кодом. С ним и работаем
use anchor_lang::prelude::*;
declare_id!(''Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); // ID вашей программы
#[program]
pub mod my_anchor_intro {
use super::*;
pub fn initialize(ctx: Context<Initialize>) -> Result<()> {
msg!("Hello, Anchor!");
return Ok(());
}
}
#[derive(Accounts)]
#[derive(Accounts)]
pub struct Initialize {}
✈️ Telegram | АдминПромо от BloFin
Дают до 300$ на фьючи
Инструкция
1 - Пройти регистрацию на BloFin
2 - Внесите депозит и переведите на фьюч счёт
3 - Холд + трейд в привычном режиме до окончания промо
Введение в anchor
Сегодня продолжим изучать макросы в anchor
#[account]
Описывает, какие данные блокчейну хранить в аккаунте
#[account]
pub struct Counter {
pub count: u64,
}
В результате работы этого макроса обычная простенькая структура превращается в блокчейн данные
#[error_code]
Инструмент для создания кастомных ошибок
#[error_code]
pub enum MyError {
#[msg("Недостаточно $SOL")]
LowSol,
}
Вот что мы теперь имеем:
- #[msg] — текст для пользователя
- Теперь, когда нам нужно использовать эту ошибку в коле, мы можем её вызвать MyError::LowSol
Подведём итоги по 2 постам сразу
1 - #[program]
Функции смарт-контракта
2 - #[derive(Accounts)]
Описывает участников программы (смарт-контракта)
3 - #[account]
Описывает, что из себя представляет аккаунт, и что он в себе хранит
4 - #[error_code]
Создаём свои ошибки
До завтра
✈️ Telegram | АдминИду на самый яркий крипто ивент этой осени — COINCRAFT 2
Если ты в крипте — тебе сюда.
Если только входишь — тем более!
🗓 Дата: 15–16 октября
📍 Локация: Москва, Стадион VK
👥 5000 участников
🎙 40+ спикеров
💼 30+ стендов
Почему обязательно нужно быть:
— Сильнейший спикерский состав
— 4 большие секции: инвестиции, майнинг, трейдинг и тренды рынка
— Кейсы, цифры, реальные инструменты
— Контакты, сделки и друзья📱
— Качественный нетворкинг
— Интерактив и выступления, которые ты запомнишь надолго❤️🔥
🎟 Скорее забирай свой билет: coin-craft.ru
ПРОМОКОД на скидку 10% для моих подписчиков:
trinity
Отзовитесь, кто тоже будет, буду рад любому коннекту
До встречи на COINCRAFT 2.0 📈Введение в anchor.
-> 1 часть
Что такое макросы в Anchor
Макросы — это как ярлыки: пишешь один раз, а Rust разворачивает их в код.
Они сильно упрощают смарт-контракты, ведь без них пришлось бы писать всё руками.
- #[program]
Помечает основной блок инструкций. Приводить пример, как я это обычно делаю здесь смыла нет, т.к все равно на первый раз будет ничего не понятно
В общем, #[program] говорит, что это контракт
- #[derive(Accounts)]
Определяет участников транзакции, а также проверяет права и доступ
#[derive(Accounts)]
pub struct Hello<'info> {
#[account(mut)]
pub user: Signer<'info>,
}
Signer — это тот, кто подписывает транзакцию. Когда мы клеймим токены, минтим нфтишку мы транзу подписываем. Вот мы и есть signer. Кстати есть ещё много участников, будем по мере продвижения изучать и их.
До завтра
✈️ Telegram | АдминУстановка anchor
И так, начинаем изучать то, ради чего мы учили основы раста - разработке на солане
И как не удивительно, нам нужно сначала скачать эту самую солану к себе, давайте сделаем это
-> Установка Solana CLI
sh -c "$(curl -sSfL https://release.solana.com/stable/install)"
После установки перезапускаем терминал и проверяем
solana --version
Установка Anchor CLI
Anchor — это фреймворк для разработки смарт-контрактов на Solana. Он нужен, чтобы упростить нам работу, автоматически проверяет подписания, следит за безопасностью, имеет удобные макросы для сокращения кода
Короче вещь полезная, скачиваем...
cargo install --git https://github.com/coral-xyz/anchor avm --locked --force
И после этого
avm install latest
avm use latest
anchor --version
Должно вывести номер версии
До завтра
✈️ Telegram | Админ🔥 Пока другие сливаются на эмоциях — мы стабильно выносим рынок 😎
🛫 Дневник трейдера — тут делают x2 и x3 не в теории, а в реальных сделках.
🔸90%+ прибыльных сигналов 💵
🔸Депозиты растут за неделю 📈
🔸 Все сигналы отработаны лично — без воды и фантазий 💰
Наши люди уже давно в плюсе. ➕
Рынок щедрый — но только к тем, кто знает, что делает! 🟠
👑Даже если вы давно в трейдинге и вам кажется, что вы уже достаточно знаете, то лишние сигналы вам точно не помешают, а от них уже будете отталкиваться сами.
📥 Присоединяйся. Здесь трейдят по-серьёзному.
👇👇👇
📱 https://t.me/+vhOx183KhXEwMGE6
Модули и pub в Rust
- Когда программа в Rust становится больше пары файлов, без структуры легко потеряться. Модули помогают разбить код на части, а ключевое слово pub управляет доступом к этим частям.
Что такое модуль
Модуль — это просто область, в которой мы группируем функции, структуры и другие элементы. Создаём модуль так:
mod greetings {
fn hello() {
println!("Hello!");
}
}
Внутри модуля лежит функция hello. Но прямо вызвать её нельзя, т.к Rust по умолчанию делает всё внутри модуля приватным. Таков раст, всё хочет обезопасить. Но иногда полезно открыть доступ, и тут к нам на помощь приходит pub
Ключевое слово pub
- Чтобы функция или структура стали видимыми снаружи, используем pub:
mod greetings {
pub fn hello() {
println!("Hello!");
}
}
fn main() {
greetings::hello(); // работает
}
Файловая структура и mod
В реальном проекте модули чаще лежат в отдельных файлах.
Например
src
├─ main.rs
└─ greetings.rs
А чтобы подключить модули из другого файла в main.rs используется mod имя файла. В нашем случае, mod greetings
И помним про pub!)
Честно скажу, сначала я думал, что лучше сразу всё делать pub, чтоб не мешало. Но на самом деле приватность иногда помогает избежать путаницы, так что думайте
До завтра
✈️ Telegram | АдминПочему этой папки у меня не было раньше?
Сразу же делюсь с вами!
Вместе с парнями показываем вам как выносить биржи и топ проекты
- Как сделать свой кошелёк Eligible? - Как торговать, чтобы не выбивало по стопам? - Куда закинуть стейблы на медвежке для постоянной подпитки?На все эти вопросы у нас есть ответ! Подписаться
Замыкания в Rust
Замыкание — это безымянная функция, которую можно создать прямо в месте использования. Главный её плюс в том, что она может захватывать переменные из её области видимости
Синтаксис
В Rust замыкания записываются по шаблону |аргументы| { тело }
Пример
fn main() {
let add_one = |x: i32| -> i32 { x + 1 };
let result = add_one(5);
println!("Результат: {}", result);
}
-> Объединяем с основной концепцией раста - владением
fn main() {
let num = 10;
let add_num = |x: i32| x + num;
println!("Результат: {}", add_num(5));
}
Что здесь происходит?
- Замыкание add_num "помнит" значение переменной num из внешней области.
Отсюда и название — они замыкают переменные из своей области видимости)
-> Типы замыканий
Rust сам определяет тип замыкания, но мы же с вами разработчики, нам все равно это нужно знать. И так, вот же они:
1 - Fn — просто захватывает переменные по ссылке, но не изменяет их
2 - FnMut — захватывает переменные по изменяемой ссылке и изменяет их
3 - FnOnce — захватывает переменные, забирая их. Просто берет и в наглую ворует)
-> Пример с FnMut
fn main() {
let mut count = 0;
let mut increment = || {
count += 1;
count
};
println!("{}", increment()); // 1
println!("{}", increment()); // 2
}
До завтра
✈️ Telegram | Админ