Уже готовы гайды на Scroll и Zora - можете ознакомиться
Я об этом писал в начале каждого гайда и напишу вновь
Я делаю упор на один стронг аккаунт, который гарантированно будет элиджибл к дропу. Реальный кошелек - реального человека, где тонна он-чейн активности, уникальный ENS с балансами в других сетях и в самом Base.
• Guild и получение ролей в Discord'e
- Based Initiate: деплойнуть один контракт в Base
- Based Builder: деплойнуть пять контрактов в Base
Можно деплойнуть и больше, лишним однозначно не будет. О том как дейплонуть контракт поговорим позднее
- Based: 10 transactions: 10 транзакций в сети Base
- Based: 50 transactions: 50 транзакций в сети Base
- Based: 100 transactions: 100 транзакций в сети Base
- Based: 1,000 transactions: 1000 транзакций в сети Base
На 1000 транзакций в сети есть задание и в Guild и можно заклеймить бейдж в Onchain Summer. Для меня это очевидная цель, довести аккаунт до 1000 транзакций в сети
- Based: Saver: холдить 100 USDC в сети Base
- Based Caster: подключить Farcaster профиль и подписаться на Base
Также листая ниже вы увидите забавные, легкие задания:
- 1 transaction: одна транзакция в Base
- Based Explorer: 12 транзакций в сети
- Based Adventurer: транзакция не старше двух недель
- Transaction in last 30d: транзакция не старше месяца
- Holding >0 ETH on Base: холдить любое кол-во ETH в Base
- Based Spectator: не иметь транзакций. Эту роль я получить не смог
- Day 1 Adopter: нужно иметь какую-то NFT.
Она у меня есть, сейчас уже не получить
- Super Based: нужно было зарегистрироваться здесь, я тогда регался и получил эту роль. Сейчас это невозможно.
Переходите сюда и проходитесь по всем 13 заданиям
Задания довольно геморные, конкретный список действий для каждого уникален. Решение каждой задачи будет опубликовано в следующих частях гайда.
- Base Learn Newcomer: холдить Base Learn Pin 1
- Base Learn Acolyte: холдить Base Learn Pin 1-4
- Base Learn Consul: холдить Base Learn Pin 1-7
- Base Camp Prefect: холдить Base Learn Pin 1-10
- Base Learn Supreme: холдить все пины
Гайд на каждое задание будет в следующих постах
- Based Advocate: иметь роль в Дискорде
- Based Apprentice: иметь роль в Дискорде
- Based Advocate Lead: иметь роль в Дискорде
- Based Applicant: иметь роль в Дискорде
Как получить роль? Подробнее можете почитать в их Discord'e в ветке
advocate-info- Based Ambassador: получить роль в Дискорде
Как получить? Подробнее можете почитать в их Discord'e в ветке
ambassador-infoЗаполнить форму и ждать результатов
Base Learn, Based Advocacy и Based Ambassador непросты к получению, поэтому я предлагаю сейчас не фокусироваться на них, в первую очередь сосредоточиться на создании он-чейн активности в Base, то что мы все с вами умеем, а потом попытаться получить эти роли.
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍9🐳5❤3
- OᑎᑕᕼᗩIᑎ ᔑᑌᗰᗰEᖇ: холдить любую из перечисленных NFT в Discord'e Base в ветке #onchain-daily
Onchain Summer: Level 1: первый уровень в ивенте | 250 XP
Onchain Summer: Level 2: второй уровень в ивенте | 1000 XP
Onchain Summer: Level 3: третий уровень в ивенте | 5000 XP
Onchain Summer: Level 4: четвертый уровень в ивенте | 10000 XP
Onchain Summer: Level 5: пятый уровень в ивенте | 25000 XP
Onchain Summer: Level 6: шестой уровень в ивенте | 50000 XP
Onchain Summer: Level 7: седьмой уровень в ивенте | 100000 XP
Onchain Summer: Level 8: восьмой уровень в ивенте | 250000 XP
Onchain Summer: Level 9: девятый уровень в ивенте | 500000 XP
Onchain Summer: Level 10: десятый уровень в ивенте | 1000000 XP
- Переходите на страницу активности
- Рекомендую использовать Coinbase Wallet, тогда вы сможете ежедневно крутить колесо фортуны и вам будет дропаться ХР
- Можете приглашать рефов, после того как реф выполнит хотя бы одно задание, вы получите 500 ХР
- Минтите все, что видите. Переходите в раздел Play и поехали выполнять задания. Я минтил почти все подряд, кроме того, когда нужно было подписаться на какую-то чепуху за 0.01ETH.
Дополнительно можно сделать заказ их их магазина. За шестой уровень мне полагается бесплатно шоппер, кепка и бутылка для воды. Также я заказал 2 худи и 1 футболку, общая сумма заказа вышла в 130 USDC + 70 USDC shipping. Я уверен что это сильно уникализирует ваш аккаунт, также получите дополнительные ХР.
- Переходите в раздел Progress
- Клеймите все доступные бейджи
Теперь мы можем выполнить задание и получить бейдж Coinbase One, для этого:
- Переходим сюда
- Добавляем способ оплаты и оплачиваем
- Клеймим бейдж и ХР за задание
Сама подписка стоит 25$ в месяц, но нам дадут 7 дней пробного периода. Пока не торопимся отменять подписку, она нам еще пригодиться.
На главной странице Base Guild минтим наш пин
На днях Base выкатили доменные профиля
- Переходим сюда
- Минтим свое имя
- Заполняем профиль, подключая X и Warpcast
- Переходим в профиль и смотрим какие бейджи у вас есть
Здесь у нас есть 2 категории бейджей
- Coinbase Verified ID: пройти KYC на Coinbase
- Verified Country: подтверждение адреса выпиской из банка
- Coinbase One: то, для чего мы покупали подписку
Теперь можно отменить подписку, она нам больше не нужна
- Based Initiate: деплойнуть 1 смарт контракт в Base
- Based Builder: деплойнуть более 5-ти смарт контрактов в Base
- Base Learn Newcomer: за выполнение хотя бы одного задания из Guild раздела Base Learn [гайд будет в следующих постах]
- Builder Score: регулярной деплою смарт контракты и поддерживаю высокий показатель
- Buildathon Participant: невозможно получить
- Buildathon Winner: невозможно получить
- Base Grant: невозможно получить
Верифицируемся в Discord'e Base
Название говорит само за себя, нужно пройти KYC на Coinbase
Подключить gmail к Guild, моя почта совпадает с почтой аккаунта Coinbase
Поехали делать Base Learn
Please open Telegram to view this post
VIEW IN TELEGRAM
5🐳15❤5🔥4
В первой части гайда мы затрагивали такую ветку заданий в Base Guild как
Всего в этой ветке наша задача выполнить 13 домашних заданий, которые связаны с деплоем смарт контрактов в сети Base, и за это мы получим роли в Дискорде проекта.
• Переходите в кран, и берете ETH в Base Testnet. Тестовый ETH нам понадобиться для деплоя контрактов.
• Переходите сюда и подключаете кошелек в сети Base Testnet
• Нажимаете Create new file и называете его [любое название] .sol | Пример Quest.sol или GSAlpha.sol
• Вставляете код
• Индикатором того, что вы все сделали правильно станет зеленая галочка возле значка, в левой панели [см. скриншоты в комментариях]
• Все в той же левой панели, под значком с галочкой будет кнопка Deploy & run transactions
• Затем в разделе Environment, подключаете кошелек, если не сделали этого раньше -> Injected Provider Metamask / WalletConnect
• Нажимаете Deploy и отправляете транзакцию
• Затем внизу, в разделе Deployed/Unpinned Contracts появится ваш контракт
• Копируете его и вставляете в специально отведенное поле в каждом задании, разумеется, в зависимости от того какое задание вы сейчас выполняете
• При автоматической проверке вашего контракта у вас должны выскочить все чекеры и быть зелеными
• Готово, задание выполнено
Эта инструкция универсальна для каждого задания, только меняется код и следовательно задание, которые вы выполняете.
Сейчас у меня есть на руках только четыре кода, для первых четырех заданий. Почему? Потому что этот код пишу не я, а мой хороший приятель Влад Крейвен. Занимается он этим в свое свободное время, абсолютно на безвозмездной основе, поэтому я не имею никакого морального права его торопить и заебывать на эту тему. Поэтому ниже будут опубликованы коды для четырех заданий и в дальнейшем коды для выполнения остальных заданий будут публиковаться по мере готовности.
Все вспомогательные скриншоты будут под этим постом и если что-то непонятно, то я буду рад помочь каждому в комментариях
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.18;
contract BasicMath {
function adder(uint _a, uint _b) external pure returns (uint sum, bool error) {
unchecked {sum = _a + _b;}
if (sum >= _a) {
error = false;
} else {
sum = 0;
error = true;
}
}
function subtractor(uint _a, uint _b) external pure returns (uint difference, bool error) {
if (_b <= _a) {
difference = _a - _b;
error = false;
} else {
difference = 0;
error = true;
}
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍12🐳5🌭3
Коллекция от коллаборации
Минт пройдет 28.08, в 21:00 по Варшаве / 22:00 по Киеву.
Цена: 0.001 Sol
Саплай: 10.000
Минт будет внутри Твиттера, прикрепляю подробную видео инструкцию от самого МЕ
Однозначно да, и снова на Magic Eden'e
• Ссылка на минт
Цена: 0.00076 ETH (Base)
Когда? 29.08
Ненавистная мне коллекция Persona, в свое время кучу нервов мне вытрепала со своим припиздинным аукционом, но использую этот минт для дополнительного прогрева Base
Никаких новых апдейтов, просто напоминалка. Многие залутали поинты и забили на это дело, а поинты реально фармятся очень просто. Зачастую для выполнения квестов вам нужен Web3 ID (96$) и баланс кошелька больше 1000$.
Выполняете квесты и лутаете легкую ХР за подписки на Твиттер, ретвиты и т.д.
Работайте, славяне
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🐳4🦄2
GS Alpha: ValdeMURRR.eth
Пришел этот кусок дерьма - Hermans
Напомню, что минт прайс был 1.2 $SOL, в сумме 3.6 $SOL я потратил. У конченых уебков еще роялти 5%, свиньи на девах. Сейчас можно выйти по 0.8, в сумме в 2.4 SOL и фиксануть убыток в 1.2 Соланы
Хотя бы не 0 и то неплохо🤡
upd. Чепуха смогла в 1 Солану, может в БУ получится выйти?
upd2. выставил самую слабую рарность за 1SOL, буду пробовать выходить лесенкой. Вольюмы неплохие, удивительно
Напомню, что минт прайс был 1.2 $SOL, в сумме 3.6 $SOL я потратил. У конченых уебков еще роялти 5%, свиньи на девах. Сейчас можно выйти по 0.8, в сумме в 2.4 SOL и фиксануть убыток в 1.2 Соланы
Хотя бы не 0 и то неплохо
upd. Чепуха смогла в 1 Солану, может в БУ получится выйти?
upd2. выставил самую слабую рарность за 1SOL, буду пробовать выходить лесенкой. Вольюмы неплохие, удивительно
Please open Telegram to view this post
VIEW IN TELEGRAM
🫡8👀3
Выбираете Free и погнали минтить все подряд, может потом даже что-то будет стоить какую то копейку. А вообще до конца августа стараюсь добить 100.000 ХР в активности Onchain Summer и 1000 транзакций в сети
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥8
Обычно я такое скипаю, когда с каждой помойки, стоит гул про новый ноу-шил, гем, ченджлайф проджект. Но тут действительно что-то интересное
Story Protocol - Layer 1 блокчейн, с $140 млн в кармане и a16z на борту. a16z один из моих любимых инвесторов, конечно это не черный властелин Артур Хейс, но мне они тоже импонируют. Как вы знаете, Layer 1 не может существовать без токена, смекаете?
Я полагаю вы все уже это сделали, но на данный момент это основная активность в проекте, так что не упомянуть я просто не могу
• Переходите в кран и запрашиваете токены
• Переходите на сайт, выполняете социалки (как я понял они не чекаются, но я все выполнил) и минтите NFT
Дедлайн: 29.08 в 18:30 по Киеву
Сильно лагает, скорее всего вы не заминтите с первого раза. У меня получилось это сделать ночью, установив 4500 раза в Rabby. Почитав чат в их Дискорде, я понял что многие сталкиваются с ошибкой, мол недостаточно средств для оплаты комиссии - просто снижаете газ вручную, до возможности отправки транзакции
• Заходите в Discord, тыкаете реакции и получаете полный доступ к серверу вместе с ролью Verified
• Затем в разделе language-hub выбираете языковое комьюнити и получаете роль
• Теперь в ветке #announcements тыкаете красненькую реакцию (их будет больше всего) и получаете роль Reverse
• Затем переходим на сайт и выполняем задания:
- Подключаем Discord
- Добавляете ꧁IP꧂ в ваше Twitter имя
- Подключаете ваш Twitter
- Подписываете на Story Protocol в Твиттере
- Подписываете на их Телеграм
- Нажимаете кнопку получить IP роль
• Готово, вы получили IP
Вынес эту роль отдельным пунктом, так как она представляет наивысшую ценность в проекте
Конкретного алгоритма действий здесь день - это вновь Дискорд-роль дрочилься, хелоу 2022 вайбз. Сидеть дрочить с умственно отсталыми хуесосами в чате, чтобы жирный пакистанец фаундер тебя заметил. Ой, как же мне этого не хватало.
Набор действий классический:
• Активность в чате
• Помощь людям (кенты фармят роли в Дискорде, тут сам Господь Бог не поможет)
• Публикация мемов и артов
По моему опыту, все эти арты и мемы - полная хуйня, если это не что то из ряда вон выходящего. Например заказать ледяную скульптуру с логотипом Story Protocol'a - такое запросто проканать может, а очередной арт купленный на файвере за 2$ у иранской девочки, которую в следующую среду забьют камнями - такого навалом, вам в 99% нихуя не дадут. Самым действенным будет гринд в чате, в украинском чате сидит модер Jaseke, перед ним стоит светиться и активизироваться с его появлением. Дааа, унижаться перед чмошником-модератором, ради роли, сюда лут.
Работайте, славяне
Please open Telegram to view this post
VIEW IN TELEGRAM
1🐳16❤3🔥3
Накидываете реакций на первую часть и я окунаюсь в клоаку экосистему Стори Протокола и в нахуй ненужные прорывные и инновационные web3 протоколы
На этот пост не кидайте, ок? Я удалю его
upd. пиздец, много реакций, жалко удалять
На этот пост не кидайте, ок? Я удалю его
upd. пиздец, много реакций, жалко удалять
1❤18
Ну что ж, давайте нырнем с головой к экосистему этого прекрасного проекта
На этой ссылке можно было и закончить, но я решил прошарить что тут можно сделать, потыкать и понюхать
• MAHOJIN - какая-то помоечка, с 470 фолловерами в Твиттере. Пока что можно заполнить форму на Waitlist и на запуске получить какие-то бенефиты.
• Ritual - можно установить ноду по официально руководству.
• Myshell - для одиноких скуфов, можно общаться с ИИ.
• Dria (на сайте экосистемы почему-то Firstbatch) - нихуя не понял, что тут надо делать, скип.
• Flock - выполняем квесты, также запрашиваем токены и активничаем в тестнете.
• Holoworld - создаем персонажа и выполняем квесты.
• Blockbook - создаем аккаунт и загружаем контент, прикрепляю официальное руководство.
• Morphic - заходим в Waitlist.
• Ringfence - подаемся на Waitlist.
• Ora - можно закинуть ликвидность сюда, но я бы не кидал.
• bythen - до 14 августа можно было что-то заклеймить, но как вы понимаете - мы не успеваем.
• AlloraLabs - не нашел вариантов взаимодействия.
• 7007 - общаемся с ИИ, он оценивает наши ответы и сможем что-то заклеймить.
• Solo - выполняем задания.
Вроде бы с самой конченой категорией разобрались
• Magma - можно податься на амбассадорку в их в Дискорде, и рисуем писюны.
• Sekai - генерируем писюны.
• Color - минтим NFT и выполняем задания.
• Mindblowon - выглядит забавно, но вариантов взаимодействия не нашел.
• Lens - полагаю тут комментарии будут лишними.
Ладно, я думал первая категория самая конченая, а тут эта хуйня за углом поджидала. Где не все баннеры кликабельны, приходилось разбираться по их ебучему логотипу, какое там название и открывать Твиттер.
• Ethena - базированный RWA и мой фаворит.
• Unleash - доим кран и пробуем лендить и борровить. Один из немногих, кто билдится сразу на Story.
• PiperX - берем токены с крана и свапаем, добавляем LP позицию.
• Openeden - эта гадость судя по всему свой стейбл билдит, много покупать не рекомендую, чисто на пару долларов для активности.
• RHO - лендинг на Scroll, часто им пользуюсь чтобы крутить он-чейн вольюм.
• Vanilla Protocol - вроде бы это были перпы, но нет линки на них (ахуенная страница экосистемы) и в Твиттере не нашел.
• Moby - даже разбираться не стал, что это такое. Призывай бойкотировать старых долбоебов, которые скучают по дизайну прошлого века.
• Storyhunt - опять не страницы. Я смотрю вы классно подготовились мужики.
• thirdweb - известный проект, я думаю можно ничего не писать.
• Blockscout - прикольный проект, но рядовому юзер тут делать нечего.
• dynamic - можно потыкаться, но какого то конкретного нормально взаимодействия я не обнаружил.
• Pimlico - инструкция по возможному взаимодействию тут, но не вижу смысла запариваться.
• Hemera - cкип, нет возможности взаимодействия.
• Redstone - железно стоит присмотреться, будущий оракл.
• LayerZero - база, так сказать.
• Goldsky - Бог знает что с этим делать, скип.
• Blockdaemon - скип.
• Figment - поставщики сервисов и инфраструктуры на блокчейне с огромным инвестом. Можно закинуть ETH в стейкинг.
• Privy - Парадигм и Коинбейз на борту, но как взаимодействовать рядовому юзеру - хз.
• A41 - скип.
Честно, один из самых тяжелых постов за последнее время. Прям очень сложно было писать, ибо что Story пока сырая хуйня, так и большая часть его экосистемы болотный мусор. Не вижу смысла сейчас делать упор на взаимодействия с экосистемой. Лучше потратить это время на гринд в Дискорде роли Programmable OG. Чем дольше тянете, тем сложнее будет получить.
Работайте, славяне
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🐳2
Думаю проект в представлении не нуждается, полная поддержка Бинанса, Анимоки и прочие радости жизни. Участие обязательно, шансов на победу совсем мало, но если не попробовать, то точно не победите.
• Общий саплай: 5555
• Минт прайс: Free
• Дедлайн: TBA
• Дата минта: TBA
Ох уж этот вайб 2022 года: преминты и альфаботы. Расконсервируйте ферму и загоняйте, участников будет очень много, так как нет требований по балансу (к сожалению). Нужен Твиттер и Дискорд.
Штампуйте аккаунты, славяне
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥6
Ты можешь смотреть на комиссии, на hype, на мемы — но без этих двух метрик ты просто играешь в рулетку.
💧 Ликвидность (TVL) = стабильность
Если в пуле меньше $1-2k ликвы — это красный флаг.
Такой пул можно “сломать” одним крупным свопом.
Ты зайдешь — и твоя же ликвидность изменит цену, а потом никто не захочет по ней торговать.
Минимум $3-5k ликвы — чтобы не быть последним в очереди.
📈 Объем (Volume) = движение
TVL — это хорошо, но если объем $0 — ты ничего не заработаешь.
Только активные свапы приносят тебе комиссию.
Смотри:
• 24h Volume > $5k — нормально
• $10k+ — отлично
• $50k+ — топ
📌 Оптимальное соотношение:
Чем выше объем к TVL — тем больше проторговок, тем выше fees.
Если в пуле $10k ликвы и $50k объема за сутки — это очень вкусно.
🔎 Пример
Пул с 7% комиссией и $900 TVL выглядит круто?
Нет. Ты сам поставишь цену, и никто больше туда не зайдет.
А вот пул с 0.5% комиссии, $10k TVL и $30k объема — даст тебе стабильные, частые fees.
🧠 Вывод
Объем = заработок
Ликвидность = безопасность
Хочешь фармить, а не играть в лотерею?
Сначала смотри на эти два показателя — а уже потом на все остальное.
Работайте, славяне
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👀4
Musgard - приключенческая игра-кликер с сюжетными квестами и интеграцией DEX STON.fi, что позволяет игрокам зарабатывать с самого начала.
Большинство web3 тапалок страдают от монотонного, однообразного, унылого и скучного игрового процесса. Musgard в свою очередь предлагает проработанные квесты, которые перемещают игрока из локации в локацию. открывают кастомизацию кошачьего дома, игрок получает конкретную цель игры, которая заключается в поиске и освобождении котов из золотых статуй.
Огромным плюсом, является то, что токен не выбрасывается в рынок на тупоря, а после болтается как говно в проруби. Фаундеры будут поддерживать токен после листинга, так как проект зарабатывает на партнерских программах и рекламе внутри приложения и 30% от вырученных денег будут идти пул ликвидности MSGRD/TON в виде buy-back.
Непосредственно сам токен $MSGRD будет торговаться на DEX Ston.fi.
• Общее кол-во токенов: 100.000.000 $MSGRD
• Начальная цена: $0.005
Благодаря системе buy-back команда Musgard будет следить за здоровым соотношением токенов в пуле ликвидности, чтобы избежать его опустошения и поддерживать стабильность цены. Эта продуманная модель позволяет поддерживать устойчивую экономику токенов, обеспечивая стабильный рост и вознаграждения для игроков и инвесторов.
Мне проект симпатичен, выглядит свежо и гораздо интереснее его конкурентов, у которых в большинстве своем все сводится к монотонному, машинальному и скучному тапанию по экранчику
Это мой первый опыт в амплуа амбассадора проекта, за этот пост я не получил ни цента. Искренне рекомендую хотя бы обратить на него внимание, зайти и посмотреть что он из себя представляет. Команда действительно горит своим делом и на дистанции может получиться довольно неплохой кейс. Мне будет очень приятно, если вы поддержите меня в моем первом опыте амбассадора и перейдетe в проект по моей реферальной ссылке.
Тапайте, славяне
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥8🐳3👍1
Пиздец, я последний раз был в школе 7 лет назад. Как давно же это было...
Завтра добью гайд по Base и надо срочно садиться за Hyperlane, а там и Monad с Linea подтянутся.
В целом лето получилось продуктивным, но не особо профитным, хоть и сделано было многое. В сентябре я не жду кардинальной смены настроения и ситуации на рынке, но я уверен что с каждым месяцем мы близимся к той самой заветной бычке.
Скажите, а бычка с нами в одной комнате?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9
К сожалению в столь обширной экосистеме порой сложно не упустить ничего, поэтому в этой части гайда мы поговорим о том, что я забыл упомянуть в первых трех частях гайда.
В этой категории помимо двух ролей связанных с деплоями контрактов в Base Mainnet, есть еще две секретные роли.
- Testnet Dev (Секретная роль): деплойнуть один контракт в Base Testnet
- Testnet Activity 10+ (Секретная роль) - десять транзакций в Base Testnet, деплой контрактов учитывается
По сути выполняя задания из
Здесь апдейтов нет
- Day 1 Adopter: холдить Base, Introduced NFT (OpenSea)
Прошлый раз я писал о том, что не знаю какая NFT должна быть. Сейчас исправляюсь, рекомендую к получению, так как она стоит сущие копейки
- Based and Optimistic: холить "BASEd and Optimistic" NFT [OpenSea]
Вот ее уже точно не получить, торги на OpenSea не идут уже как 9 месяцев
- Shadowy Super Coder: даем звезду на этот или этот репозиторий Github
Для этого мы должны подключить наш Github аккаунт к Base Guild, а также получить роль Github в Дискорде Base:
• Переходим в Дискорд Base
• Левый верхний угол, где название сервера Base нажимаете на стрелочку вниз
• Четвертая по счету будет "Привязанные роли"
• Нажимаете и подключаете ваш Github
теперь у вас появится в Base Guild дополнительная ветка заданий, полностью секретная
- Developer: секретные требования, у меня есть эта роль. Ее получило всего 1700 человек
- Has GitHub account: иметь Github аккаунт старше одного дня
- Commit activity in last 30d: иметь как минимум 1 commit за последний месяц
Без изменений
Вновь без изменений, ответы будут публиковаться в следующих постах, в контексте гайда
Без изменений
Без изменений
Без изменений
Теперь возвращаемся к главной странице Base Guild
.base.eth в ваш ник в Farcaster или XЗаключительные две роли, которые я не знал как получить и поэтому написал что сейчас они невозможны к получению, оказывается получить более чем реально
Вот теперь точно все с Base Guild и ролями в Дискорде Base, осталось только
Please open Telegram to view this post
VIEW IN TELEGRAM
6🐳14❤5🔥3
Инструкция из третьей части Ультимативного гайда на Base общая и подходит для каждого задания
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract ControlStructures {
function fizzBuzz(uint _number) public pure returns (string memory) {
if (_number % 3 == 0 && _number % 5 == 0) {
return "FizzBuzz";
} else if (_number % 3 == 0) {
return "Fizz";
} else if (_number % 5 == 0) {
return "Buzz";
} else {
return "Splat";
}
}
error AfterHours(uint time);
function doNotDisturb(uint _time) public pure returns (string memory) {
assert (_time < 2400);
if (_time > 2200 || _time < 800) {
revert AfterHours(_time);
}
if (_time >= 1200 && _time <= 1259) {
revert("At lunch!");
}
if (_time >= 800 && _time <= 1199) {
return "Morning!";
}
if (_time >= 1300 && _time <= 1799) {
return "Afternoon!";
}
if (_time >= 1800 && _time <= 2200) {
return "Evening!";
}
return "";
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract EmployeeStorage {
uint16 private shares;
uint32 private salary;
uint192 public idNumber;
string public name;
error TooManyShares(uint16 newShareCount);
constructor() {
shares = 1000;
name = "Pat";
salary = 50000;
idNumber = 112358132134;
}
function viewSalary() public view returns (uint) {
return salary;
}
function viewShares() public view returns (uint) {
return shares;
}
function grantShares(uint16 _newShares) public {
uint16 newShareCount = shares + _newShares;
require(_newShares <= 5000, "Too many shares");
if (newShareCount > 5000) {
revert TooManyShares(newShareCount);
}
shares = newShareCount;
}
function checkForPacking(uint _slot) public view returns (uint r) {
assembly {
r := sload(_slot)
}
}
function debugResetShares() public {
shares = 1000;
}
}
Если вдруг у кого-то возникнут проблемы с выполнением этих и последующих заданий - буду рад помочь в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
5🐳12❤6🔥5
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract ArraysExercise {
uint[] public numbers = [1,2,3,4,5,6,7,8,9,10];
address[] public senders;
uint[] public timestamps;
function getNumbers() public view returns (uint[] memory) {
return numbers;
}
function resetNumbers() public {
delete numbers;
numbers = [1,2,3,4,5,6,7,8,9,10];
}
function appendToNumbers(uint[] calldata _toAppend) public {
for (uint i = 0; i < _toAppend.length; i++) {
numbers.push(_toAppend[i]);
}
}
function saveTimestamp(uint _unixTimestamp) public {
senders.push(msg.sender);
timestamps.push(_unixTimestamp);
}
function afterY2K() public view returns (uint[] memory, address[] memory) {
uint count;
for (uint i = 0; i < timestamps.length; i++) {
if (timestamps[i] > 946702800) {
count++;
}
}
uint[] memory filteredTimestamps = new uint[](count);
address[] memory filteredSenders = new address[](count);
uint index;
for (uint i = 0; i < timestamps.length; i++) {
if (timestamps[i] > 946702800) {
filteredTimestamps[index] = timestamps[i];
filteredSenders[index] = senders[i];
index++;
}
}
return (filteredTimestamps, filteredSenders);
}
function resetSenders() public {
delete senders;
}
function resetTimestamps() public {
delete timestamps;
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
/**
* @title FavoriteRecords
* @dev Contract to manage a list of approved music records and allow users to add them to their favorites
*/
contract FavoriteRecords {
mapping(string => bool) private approvedRecords;
string[] private approvedRecordsIndex;
mapping(address => mapping(string => bool)) public userFavorites;
mapping(address => string[]) private userFavoritesIndex;
error NotApproved(string albumName);
/**
* @dev Constructor that initializes the approved records list
*/
constructor() {
approvedRecordsIndex = ["Thriller","Back in Black","The Bodyguard","The Dark Side of the Moon","Their Greatest Hits (1971-1975)","Hotel California","Come On Over","Rumours","Saturday Night Fever"];
for (uint i = 0; i < approvedRecordsIndex.length; i++)
{
approvedRecords[approvedRecordsIndex[i]] = true;
}
}
/**
* @dev Returns the list of approved records
* @return An array of approved record names
*/
function getApprovedRecords() public view returns (string[] memory) {
return approvedRecordsIndex;
}
/**
* @dev Adds an approved record to the user's favorites
* @param _albumName The name of the album to be added
*/
function addRecord(string memory _albumName) public {
if (!approvedRecords[_albumName]) {
revert NotApproved({albumName: _albumName});
}
if (!userFavorites[msg.sender][_albumName]) {
userFavorites[msg.sender][_albumName] = true;
userFavoritesIndex[msg.sender].push(_albumName);
}
}
/**
* @dev Returns the list of a user's favorite records
* @param _address The address of the user
* @return An array of user's favorite record names
*/
function getUserFavorites(address _address) public view returns (string[] memory) {
return userFavoritesIndex[_address];
}
/**
* @dev Resets the caller's list of favorite records
*/
function resetUserFavorites() public {
for (uint i = 0; i < userFavoritesIndex[msg.sender].length; i++) {
delete userFavorites[msg.sender][userFavoritesIndex[msg.sender][i]];
}
delete userFavoritesIndex[msg.sender];
}
}
Двигаем дальше, славяне
Please open Telegram to view this post
VIEW IN TELEGRAM
5🐳10🔥5👍3
Я толком то и ни разу не делал праздничный пост с отметкой перехода порога в какое-то количество подписчиков. Этот пост тоже не будет таким, я скорее хотел бы посоветоваться и получить фидбек от каждого, кто читает этот пост, так как мне это очень важно.
Когда я решил активно вести канал, в марте 2024, у меня было ровно 50 подписчиков, и то это была старая аудитория, набранная еще в далеком 2022-м. Худо, бедно органически рост шел, я пробовал светиться в чатах, начал участвовать в папках и недавно купил свою первую рекламу.
Покупая папки и участвуя в них, я столкнулся с тем что это преимущественно не та аудитория, которую я хотел бы, так как при моем кол-ве подписчиков и охватах моя участь - участие в папке с помойками в виде тапалок, сигналов, трейдинга или просто рерайт канала. Я буквально узник долбоебских каналов, капитализация аудитории которых, дай Бог, переваливает за 1000$. Мне бы не хотелось такой аудитории, пусть меньше, но качественнее. Ибо эта аудитория подписывается, заходит на канал, не видит тут супер-мега нереально гемного тестнета, где он сможет словить ченжлайф с затратами 10 минут времени и трех копеек, отобранных у бомжа под падиком, за выполнение социалок и одного рефа - это тело уходит, оставаясь мертвым грузом в канале. Мне честно охота рыгать, когда меня просят запостить пост, который начинается так: "ЭТИ ПАРНИ ЗАРАБОТАЛИ 100500$ ЗА ПРОШЛУЮ НЕДЕЛЮ" и т.п., а в папке каналы, админы долбоебы которых постят хуйню про тапалки, сигналы и прочее, так еще и рерайт с другого такого же убогого канала просто более крупного.
И тут случается дилема, люди стадные существа и гораздо охотнее подписываются на канал где больше подписчиков, чем на маленький канал. Исходя из этого, нужно участвовать в папках, но этот рост меня огорчает, потому что эти трехзубые крестьяне, которые пришли ко мне из тапательного канала - здесь не задержатся, им не нужен такой контент, как у меня.
Изначально, при перезапуске канала, я хотел удовлетворить в первую очередь свой запрос на контент. Ибо нет канала в CIS сегменте Телеграма, который бы в полной мере удовлетворял мой запрос - поэтому я решил создать тот самый канал. Ведь если у меня есть такой неудовлетворенный запрос, значит у кого-то он тоже есть и это и будет моя аудитория.
Я рассматривал вариант ведения своего тик-тока, но мой контент не для тиктока. Там сидит такой же отсталый плебс, как и в сигнальных каналах. Им не нужны замороченные гайды, они хотят нажимать кнопку бабло и дюпать бабки. А если тикток стрельнет, то канал наводнят нищие бомжи, и самая ненавистная мне категория людей - те, которые не хотят самостоятельно в чем-то разобраться. По итогу мой канал скатится в пучину говна, с средним индексом платежеспособности на уровне индуского мальчика, а комментарии наводнят вопросы: "Что такое метамаск?" и "Как добавить сеть?".
Изначально я не планировал делать канал коммерческим, но если я хочу качественную аудиторию, то нужно ее покупать в тех каналах, где она водится. Таких каналов не так много на просторах CIS TG и узнавая за рекламу, я нарвался на неподъемные цены: 800$/пост. Приход будет вероятнее всего довольно скромным, и цена за подписчика будет доходить до 5-7$, что крайне дорого. Сейчас рынок не тот, чтобы я мог вынимать на постоянной основе по 800$ из кармана. Небольших каналов, где я мог бы взять рекламу по подходящей для себе цене, с нужной мне аудиторией можно пересчитать по пальцам.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🐳5🔥2
Я решил пойти от обратного и таким образом прийти к какой-то здравой середине
• Однозначно скипать 90% папок с помойными каналами
Папки на самом деле не такой плохой способ продвижения, объясню почему я так считаю. Например я добавляю к себе все папки, которые вижу и сразу же их просеиваю, с большой долей вероятности я сразу же отпишусь от большинства каналов или кину в папку Trash, где им самое место, но порой получается найти неплохие каналы. К сожалею большинство людей идут по пути меньшего сопротивления, им впадлу расширять свое инфополе и они просто не подписываются, либо бездумно подписываются и даже не заходят на канал. Но я уверен, что есть такие дотошные как я, которые пересматриваю все каналы, и мой канал такому человек зайдет.
• Продавать рекламу на канале
Я вступил в рекламное DAO и вероятнее всего буду продавать рекламу, но не всю подряд, а выборочно - это исключает рекламу щитков, пирамид и пр., за что платят больше всего и что принесет мне угрызения совести. Каждый оффер с рекламой буду рассматривать индивидуально и скрупулёзно, чтобы потом мне не было стыдно за эту публикацию. Все полученные деньги пройдут мимо моего кармана, в него не упадет ни цента, зато таким образом я смогу сформировать небольшой капитал для закупа рекламы в крупных, интересных мне каналах.
Пока что это просто мысли, возможно правда стоит дождаться оживления на рынке и дать каналу рости органически? Не знаю, поэтому хотелось бы увидеть фидбек и почитать ваши мысли.
Всем work, славяне
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19🔥8🕊4
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
/**
* @title GarageManager
* @dev Contract to manage a garage of cars for each user
*/
contract GarageManager {
mapping(address => Car[]) private garages;
struct Car {
string make;
string model;
string color;
uint numberOfDoors;
}
error BadCarIndex(uint256 index);
/**
* @dev Adds a new car to the caller's garage
* @param _make The make of the car
* @param _model The model of the car
* @param _color The color of the car
* @param _numberOfDoors The number of doors of the car
*/
function addCar(string memory _make, string memory _model, string memory _color, uint _numberOfDoors) external {
garages[msg.sender].push(Car(_make, _model, _color, _numberOfDoors));
}
/**
* @dev Retrieves the caller's array of cars
* @return An array of `Car` structs
*/
function getMyCars() external view returns (Car[] memory) {
return garages[msg.sender];
}
/**
* @dev Retrieves a specific user's array of cars
* @param _user The address of the user
* @return An array of `Car` structs
*/
function getUserCars(address _user) external view returns (Car[] memory) {
return garages[_user];
}
/**
* @dev Updates a specific car in the caller's garage
* @param _index The index of the car in the garage array
* @param _make The new make of the car
* @param _model The new model of the car
* @param _color The new color of the car
* @param _numberOfDoors The new number of doors of the car
*/
function updateCar(uint256 _index, string memory _make, string memory _model, string memory _color, uint _numberOfDoors) external {
if (_index >= garages[msg.sender].length) {
revert BadCarIndex({index: _index});
}
garages[msg.sender][_index] = Car(_make, _model, _color, _numberOfDoors);
}
/**
* @dev Deletes all cars in the caller's garage
*/
function resetMyGarage() external {
delete garages[msg.sender];
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍7🐳5🔥2
Здесь у нас начинает танец с бубном, поэтому для этого задания отдельная инструкция:
• Создаете файл .sol
• Копируете контракт и вставляете в созданный файл
• В разделе Contract выбираете Salesperson и деплоите
• Вновь в разделе Contract выбираете выбираете EngineeringManager и деплоите
• Теперь в разделе Contract выбираете InheritanceSubmission
• Копируете снизу ваши контракты Salesperson и EngineeringManager
• Вставляете в появившиеся поля (см. скриншоты в комментариях)
• Деплоите и готово
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
abstract contract Employee
{
uint public idNumber;
uint public managerId;
constructor(uint _idNumber, uint _managerId)
{
idNumber = _idNumber;
managerId = _managerId;
}
function getAnnualCost() public virtual returns (uint);
}
contract Salaried is Employee
{
uint public annualSalary;
constructor(uint _idNumber, uint _managerId, uint _annualSalary)
Employee(_idNumber, _managerId)
{
annualSalary = _annualSalary;
}
function getAnnualCost() public override view returns (uint)
{
return annualSalary;
}
}
contract Hourly is Employee
{
uint public hourlyRate;
constructor(uint _idNumber, uint _managerId, uint _hourlyRate) Employee(_idNumber, _managerId)
{
hourlyRate = _hourlyRate;
}
function getAnnualCost() public override view returns (uint)
{
return hourlyRate * 2080;
}
}
contract Manager
{
uint[] public employeeIds;
function addReport(uint _reportId) public
{
employeeIds.push(_reportId);
}
function resetReports() public
{
delete employeeIds;
}
}
contract Salesperson is Hourly
{
constructor(uint _idNumber, uint _managerId, uint _hourlyRate)
Hourly(_idNumber, _managerId, _hourlyRate) {}
}
contract EngineeringManager is Salaried, Manager
{
constructor(uint _idNumber, uint _managerId, uint _annualSalary)
Salaried(_idNumber, _managerId, _annualSalary) {}
}
contract InheritanceSubmission {
address public salesPerson;
address public engineeringManager;
constructor(address _salesPerson, address _engineeringManager) {
salesPerson = _salesPerson;
engineeringManager = _engineeringManager;
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
7🐳9❤3👍3