[DropHunt] WhiteBit
Настало время лутать ретродроп от самой крупной европейской биржи - WhiteBit.
Анонс дропа и краткое описание (на Старшей речи, пора учить, дальше по-русски):
WB Soul
WB Soul — это твое цифровое воплощение на нашем блокчейне. Это уникальный идентификатор, который является твоим мостом между биржей и WB Network. Его может создать любой пользователь WhiteBIT с KYC.
Для получения дропа и участия в экосистеме нам нужно связать свой профиль биржи и некастодиальный кошелек.
1. Регаемся на бирже если ещё нет аккаунта (асуждаю). Проходим КУС.
2. Переходим во вкладку Экосистема WB Soul.
3. Коннектим ваш кошелек и создаем свой WB Soul.
Все WB Souls в тестнете будут автоматически перенесены в мейннет.
Теперь в панели управления у нас есть статистика нашего WB Soul
Уровень WBT Hold даёт за холд токенов, именно холд, а не владение:
Поднимать уровень WBT Hold очень важно:
Существует 11 уровней WBT Holding. Чем выше у тебя уровень, тем больше вознаграждение. Активы, которые находятся в процессе выведения из Holding, не учитываются.
- 10 WBT≈ 52.44 USDT
- 200 WBT≈ 1,048.80 USDT
- 4,000 WBT≈ 20,976 USDT
- 10,000 WBT≈ 52,440 USDT
- 16,000 WBT≈ 83,904 USDT
- 30,000 WBT≈ 157,320 USDT
- 60,000 WBT≈ 314,640 USDT
- 100,000 WBT≈ 524,400 USDT
- 160,000 WBT≈ 839,040 USDT
- 2,000,000 WBT≈ 10,488,000 USDT
- 6,000,000 WBT≈ 31,464,000 USDT
EarlyBird Soulbound Tokens
! Каждый пользователь, участвующий в нашем тестнете, получит свой Souldbound Token из коллекции EarlyBird. Позже они будут автоматически перенесены в мейннет.
Это та штука, благодаря которой мы вероятно будем лутать всякие плюшки на будущих лаунчпадах, свапалках и раздачах внутри блокчейна.
Социальные задания - Zealy
Переходим на Zealy и делаем всё подряд. К счастью заданий куча.
Первые 3 задания - нажать кнопку клейм, вписать свой WB Soul ID(в панели управления) и нажать клейм и вписать свой подключенный кошелек и опять нажать клейм.
Дальше переходим в Discord проекта и нам становятся доступны задания по взаимодействию с твиттером, дискордом и контрибьюторству.
Тестнет
Тут нам ехидно говорят о том, что "конкретики не получите, попробуйте угадать".
Но мы волки стрелянные и знаем, за что блокчейны дают дроп - за взаимодействие.
Первое что мы делаем - добавляем себе сеть в кошелек и получаем тестовые токены.
Добавляем сеть (если по какой-то причине сайт не работает, внизу данные, впишите вручную в кошелек)
WB Network
https://rpc-testnet.whitebit.network
2625
WBT
https://explorer.whitebit.network
Через faucet получаем тестовый токен.
Теперь по активностям:
На данный момент у нас нет как таковых протоколов для взаимодействия, поэтому мы ограничены переводами коина, созданием и переводом токенов и нфт.
Минтин NFT
Ищем любую нфтшку в эксплорере
Главное чтобы у неё был верифицированный контракт.
Подключаем кошелек и ищем функцию "mint"
Указываем кол-во нфт, которое мы хотим сминтить и подтверждаем в кошельке.
Когда подтвердите у вас появится ссылка "посмотреть транзакцию", если она в статусе "Success" то у вас всё получилось.
Поднимаем свой смарт-контракт
Переходим на сайт remix
Выбираем папку contracts (1) и на кнопку создать файл (2)
В файл IWRC20.sol вставляем код:
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IWRC20 { function name() external view returns(string memory); function symbol() external view returns(string memory); function decimals() external pure returns(uint); function totalSupply() external view returns(uint); function balanceOf(address account) external view returns(uint); function transfer(address to, uint amount) external; function allowance(address _owner, address spender) external view returns(uint); function approve(address spender, uint amount) external; function transferFrom(address sender, address recipient, uint amount) external; event Transfer(address indexed from, address indexed to, uint amount); event Approve(address indexed owner, address indexed to, uint amount); }
Створюємо файл ВашеНазваниеToken.sol
Вставляем в только что созданный файл следующий код:
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IWRC20.sol"; contract WRC20 is IWRC20 { uint totalTokens; address owner; mapping(address => uint) balances; mapping(address => mapping(address => uint)) allowances; string _name; string _symbol; function name() external view returns(string memory) { return _name; } function symbol() external view returns(string memory) { return _symbol; } function decimals() external pure returns(uint) { return 18; } function totalSupply() external view returns(uint) { return totalTokens; } modifier enoughTokens(address _from, uint _amount) { require(balanceOf(_from) >= _amount, "not enough tokens!"); _; } modifier onlyOwner() { require(msg.sender == owner, "not an owner!"); _; } constructor(string memory name_, string memory symbol_, uint initialSupply) { _name = name_; _symbol = symbol_; owner = msg.sender; mint(initialSupply, msg.sender); }function balanceOf(address account) public view returns(uint) { return balances[account]; }function transfer(address to, uint amount) external enoughTokens(msg.sender, amount) { _beforeTokenTransfer(msg.sender, to, amount); balances[msg.sender] -= amount; balances[to] += amount; emit Transfer(msg.sender, to, amount); } function mint(uint amount, address mint_to) public onlyOwner { _beforeTokenTransfer(address(0), mint_to, amount); balances[mint_to] += amount; totalTokens += amount; emit Transfer(address(0), mint_to, amount); } function burn(address _from, uint amount) public onlyOwner { _beforeTokenTransfer(_from, address(0), amount); balances[_from] -= amount; totalTokens -= amount; } function allowance(address _owner, address spender) public view returns(uint) { return allowances[_owner][spender]; } function approve(address spender, uint amount) public { _approve(msg.sender, spender, amount); } function _approve(address sender, address spender, uint amount) internal virtual { allowances[sender][spender] = amount; emit Approve(sender, spender, amount); } function transferFrom(address sender, address recipient, uint amount) public enoughTokens(sender, amount) { _beforeTokenTransfer(sender, recipient, amount); require(allowances[sender][msg.sender] >= amount, "check allowance!"); allowances[sender][msg.sender] -= amount; balances[sender] -= amount; balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _beforeTokenTransfer( address from, address to, uint amount ) internal virtual {} } contract TestToken is WRC20 { constructor(address owner) WRC20("YOUR NAME", "YOUR TICKER", YOUR-TOTAL-SUPPLY*10**18) {} }
YOUR NAME меняем на название токена, например: EAZY Token
YOUR TICKER меняем на тикер токена, например: EZT
YOUR-TOTAL-SUPPLY меняем на желаемое максимальное количество токенов в обороте, например: 10000000
Переходим во вкладку Deploy & Run transactions (1).
В пункте ENVIRONMENT (2) должно быть выбрано Injected Provider - Metamask (2), в пункте ACCOUNT должен подтянуться ваш кошелек Metamask в сети WB Network
Если все верно сделали, то должно показать наш адрес
Переходим во вкладку Solidity compiler и компилируем файл ВашToken.sol. Важно! Чтобы скомпилировать этот файл, он должен быть выбранным во вкладке файлов.
Переходим к вкладке Deploy & Run transactions.
В пункте CONTRACT должен быть указан наш токен. В пункте 10 вставляем адрес нашего кошелька Metamask, нажимаем Deploy и подтверждаем транзакцию в кошельке
Если все правильно сделали, то увидите зеленую галочку.
Переходим во вкладку Deployed Contracts и копируем адрес контракта.
Переходим в Metamask и нажимаем Import tokens/импорт токенов.
Вставляем наш скопированный адрес контракта в поле, остальные поля у нас подтянутся и нажимаем Add custom token.
Теперь у нас есть свой токен. Дальше мы его верифицируем в эксплорере:
Переходим в эксплорер блокчейна во вкладку верификации контракта.
Откроется панель, в которую нужно загрузить два файла - скачанных с ремикса IWRC.sol и второй с названием токена.
Верифицируем и теперь мы владелец верифнутого контракта, билдер так сказать.
Можно раскидать токены куда-то на рандомные адреса для взаимодействий или даже обменяться с владельцами других токенов.
На вопрос "что важнее, соц или тестнет?" я бы ответил - и то и то.
Ведь мы хотим вынести максимальный дроп.
Спасибо за внимание.
FAQ - больше про блог, поддержка проекта
Must to know. Материалы - знания, чтобы не быть ликвидностью.
На канале ещё много полезного контента на темы:
Трейдинга, психологии, абузов и прочих интересностей.
Крипта, кстати = скам