[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. Материалы - знания, чтобы не быть ликвидностью.
На канале ещё много полезного контента на темы:
Трейдинга, психологии, абузов и прочих интересностей.
Крипта, кстати = скам