Балансы
Валюта Количество
BTC 0.00000000 + -
ETH 0.00000000 + -
USDTerc20 0.00000000 + -
TRX 0.00000000 + -
XRP 0.00000000 + -
DOGE 0.00000000 + -
USDCerc20 0.00000000 + -
USDTtrc20 0.00000000 + -
USDTbep20 0.00000000 + -
USD 0.00000000 + -
RUR 0.00000000 + -
Est. BTC: 0.00000000 BTC
Маркет
Валюта Цена Изм. Об. fullname

API

Введение

Public API и Trade API представляют собой удобное средство для взаимодействия с биржей стороннего программного обеспечения.

  • Public API используется для получения информации, не требующей доступа к личным данным аккаунта.
  • Trade API необходим для осуществления создания и отмены ордеров, запроса актуальных балансов, а так же получения информации, для которой необходим доступ к личным данным аккаунта.

Public API

В настоящий момент Public API существует в нескольких версиях. Разработчикам рекомендуется выбирать самую последнюю версию для использования в своих программных продуктах.

v2

Public API второй версии предоставляет возможность получить: depth, fee, ticker, trades (методы).

Ссылка имеет вид: https://yobit.net/api/2/пара/имя метода

Может быть указана только одна пара в ссылке.
Примеры для пары ltc_btc:

v3

Основное отличие Public API третьей версии от второй состоит в возможности получения информации сразу по нескольким парам за один запрос к серверу. При этом список желаемых пар указывается через символ тире.

Ответы сервера кешируются каждые 2 секунды, поэтому делать запросы чаще не имеет смысла.

Доступные методы: depth, ticker, trades, info.

Ссылка имеет вид: https://yobit.net/api/3/имя метода/перечисление пар
Могут быть указаны несколько пар без повторений, либо только одна.

Метод info не имеет параметра перечисления пар. Данный метод может быть использован для получения списка актуальных пар.

Примеры для списка пар ltc_btc-nmc_btc:

Внимание! При отключении нами какой-либо пары из списка, API будет выдавать ошибку. Для включения игнорирования таких ошибок доступен GET-параметр ignore_invalid.
Пример использования: https://yobit.net/api/3/depth/ltc_btc-error_pair?ignore_invalid=1

info

Пример запроса: https://yobit.net/api/3/info

Пример ответа:

{
	"server_time":1418654531,
	"pairs":{
		"ltc_btc":{
			"decimal_places":8,
			"min_price":0.00000001,
			"max_price":10000,
			"min_amount":0.0001,
			"hidden":0,
			"fee":0.2
		}
		...
	}
}
  • decimal_places: количество разрешенных знаков после запятой
  • min_price: минимальная разрешенная цена
  • max_price: максимальная разрешенная цена
  • min_amount: минимальное разрешенное количество для покупки или продажи
  • hidden: пара скрыта (0 или 1)
  • fee: комиссия пары

Скрытые пары не отображаются в списке на главной странице биржи, но обмены по ней продолжают работать.
При отключении какой-либо пары, она пропадет из списка.

ticker

Метод отдаёт статистическую информацию за последние 24 часа.

Пример запроса: https://yobit.net/api/3/ticker/ltc_btc

Пример ответа:

{
	"ltc_btc":{
		"high":105.41,
		"low":104.67,
		"avg":105.04,
		"vol":43398.22251455,
		"vol_cur":4546.26962359,
		"last":105.11,
		"buy":104.2,
		"sell":105.11,
		"updated":1418654531
	}
	...
}
  • high: макcимальная цена
  • low: минимальная цена
  • avg: средняя цена
  • vol: объем торгов
  • vol_cur: объем торгов в валюте
  • last: цена последней сделки
  • buy: цена покупки
  • sell: цена продажи
  • updated: последнее обновление кэша

depth

Метод возвращает информацию о списках активных ордеров указанных пар.

GET-параметр limit задаёт глубину для вывода (по умолчанию 150, максимум 2000).

Пример запроса: https://yobit.net/api/3/depth/ltc_btc

Пример ответа:

{
	"ltc_btc":{
		"asks":[
			[104.67,0.01],
			[104.75,11],
			[104.80,0.523],
			...
		],
		"bids":[
			[104.3,5.368783],
			[104.212,2.57357],
			[103.62,0.43663336],
			[103.61,0.7255672],
			...
		]
	}
	...
}
  • asks: ордера на продажу
  • bids: ордера на покупку

trades

Метод возвращает информацию о последних сделках указанных пар.

GET-параметр limit задаёт глубину для вывода (по умолчанию 150, максимум 2000).

Пример запроса: https://yobit.net/api/3/trades/ltc_btc

Пример ответа:

{
	"ltc_btc":[
		{
			"type":"ask",
			"price":104.2,
			"amount":0.101,
			"tid":41234426,
			"timestamp":1418654531
		},
		{
			"type":"bid",
			"price":103.53,
			"amount":1.51414,
			"tid":41234422,
			"timestamp":1418654530
		},
		...
	]
	...
}
  • type: ask - продажа, bid - покупка
  • price: цена покупки/продажи
  • amount: количество
  • tid: идентификатор сделки
  • timestamp: unix time сделки

Trade API

Trade API необходим для осуществления создания и отмены ордеров, запроса актуальных балансов, а так же получения информации, для которой необходим доступ к личным данным аккаунта.

Для использования Trade API необходимо создать ключ в соответствующем разделе.
Секрет ключа доступен для просмотра только в течение часа после создания, поэтому рекомендуем Вам сохранить его сразу после генерации ключа. Ключи и их секреты используются для аутентификации пользователя.

Адрес для отправки запросов Trade API: https://yobit.net/tapi/

Для каждого запроса нужна аутентификация.

Все ответы сервер отдаёт в формате JSON

Пример успешного ответа сервера:

{"success":1,"return":{ответ}}

Пример ответа, информирующего об ошибке:

{"success":0,"error":"ошибка"}

Аутентификация

Каждый запрос Trade API должен пройти аутентификацию.
Аутентификация происходит способом отправки следующих HTTP-заголовков:

Key - API-ключ, пример: FAF816D16FFDFBD1D46EEF5D5B10D8A2

Sign - цифровая подпись, POST-параметры (?param0=val0 & ...& nonce=1) подписанные секретным ключом с помощью HMAC-SHA512

Параметр nonce (минимум 1, максимум 2147483646) при каждом новом запросе должен быть больше значения из предыдущего запроса.
Для обнуления nonce необходимо создать новый ключ.

getInfo

Метод возвращает информацию о балансах пользователя и привилегиях API-ключа, а так же время сервера.

Требования: привилегия ключа info

Параметры: отсутствуют

Пример ответа:

{
	"success":1,
	"return":{
		"funds":{
			"ltc":22,
			"nvc":423.998,
			"ppc":10,
			...
		},
		"funds_incl_orders":{
			"ltc":32,
			"nvc":523.998,
			"ppc":20,
			...
		},	
		"rights":{
			"info":1,
			"trade":0,
			"withdraw":0
		},
		"transaction_count":0,
		"open_orders":1,
		"server_time":1418654530
	}
}
  • funds: баланс аккаунта, доступный к использованию (не включает деньги на открытых ордерах)
  • funds_incl_orders: баланс аккаунта, доступный к использованию (включает деньги на открытых ордерах)
  • rights: привилегии ключа. withdraw не используется (зарезервировано)
  • transaction_count: всегда 0 (устарело)
  • open_orders: всегда 0 (устарело)
  • server_time: время сервера

Trade

Метод, с помощью которого создаются новые ордера для торговли на бирже

Требования: привилегии ключа info&trade

Параметры:

  • pair: пара (пример: ltc_btc)
  • type: тип операции (пример: buy или sell)
  • rate: курс, по которому необходимо купить или продать (значение: числовое)
  • amount: количество, которое необходимо купить или продать (значение: числовое)

Пример ответа:

{
	"success":1,
	"return":{
		"received":0.1,
		"remains":0,
		"order_id":12345,
		"funds":{
			"btc":15,
			"ltc":51.82,
			"nvc":0,
			...
		}
	}
}
  • received: сколько валюты куплено/продано
  • remains: сколько валюты осталось купить/продать
  • order_id: ID созданного ордера
  • funds: балансы, актуальные после запроса

ActiveOrders

Метод возвращает список активных ордеров пользователя

Требования: привилегия ключа info

Параметры:

  • pair: пара (пример: ltc_btc)

Пример ответа:

{
	"success":1,
	"return":{
		"100025362":{
			"pair":"ltc_btc",
			"type":"sell",
			"amount":21.615,
			"rate":0.258,
			"timestamp_created":1418654530,
			"status":0
		},
		...
	}
}
  • ключи массива: ID ордеров (в примере: 100025362)
  • pair: пара (пример: ltc_btc)
  • type: тип операции (пример: buy или sell)
  • amount: осталось купить или продать
  • rate: цена покупки или продажи
  • timestamp_created: время создания ордера
  • status: всегда 0 (устарел)

OrderInfo

Метод возвращает подробную информацию об указанном ордере

Требования: привилегия ключа info

Параметры:

  • order_id: ID ордера (значения: числовые)

Пример ответа:

{
	"success":1,
	"return":{
		"100025362":{
			"pair":ltc_btc,
			"type":sell,
			"start_amount":13.345,
			"amount":12.345,
			"rate":485,
			"timestamp_created":1418654530,
			"status":0
		}
	}
}
  • ключ массива: ID ордера (в примере: 100025362)
  • pair: пара ордера (пример: ltc_btc)
  • type: тип ордера (пример: buy или sell)
  • start_amount: начальная сумма ордера при создании
  • amount: осталось купить или продать по ордеру
  • rate: цена покупки или продажи
  • timestamp_created: время создания ордера
  • status: 0 - активен, 1 - исполнен и закрыт, 2 - отменен, 3 - отменен, но был частично исполнен.

CancelOrder

Метод отменяет указанный ордер

Требования: привилегии ключа info&trade

Параметры:

  • order_id: ID ордера (значения: числовые)

Пример ответа:

{
	"success":1,
	"return":{
		"order_id":100025362,
		"funds":{
			"btc":15,
			"ltc":51.82,
			"nvc":0,
			...
		}
	}
}
  • order_id: ID ордера
  • funds: балансы, актуальные после запроса

TradeHistory

Метод возвращает историю сделок.

Требования: привилегия ключа info

Параметры:

  • from: номер сделки, с которой начинать вывод (значения: числовые, по умолчанию: 0)
  • count: количество сделок для вывода (значения: числовые, по умолчанию: 1000)
  • from_id: ID сделки, с которой начинать вывод (значения: числовые, по умолчанию: 0)
  • end_id: ID сделки, на которой заканчивать вывод (значения: числовые, по умолчанию: )
  • order: сортировка при выводе (значения: ASC или DESC, по умолчанию: DESC)
  • since: с какого времени начинать вывод (значения: unix time, по умолчанию: 0)
  • end: на каком времени заканчивать вывод (значения: unix time, по умолчанию: )
  • pair: пара (пример: ltc_btc)

При использовании параметров since или end, параметр order автоматически принимает значение ASC.

При использовании параметра since, максимальная дата, по которой можно получить историю - неделю назад..

Пример ответа:

{
	"success":1,
	"return":{
		"24523":{
			"pair":"ltc_btc",
			"type":"sell",
			"amount":11.4,
			"rate":0.145,
			"order_id":100025362,
			"is_your_order":1,
			"timestamp":1418654530
		}
		...
	}
}
  • ключи массива: ID сделок (в примере: 24523)
  • pair: пара (пример: ltc_btc)
  • type: тип операции (пример: buy или sell)
  • amount: количество купленного или проданного
  • rate: цена покупки или продажи
  • order_id: ID ордера
  • is_your_order: является ли ордер вашим (1 или 0)
  • timestamp: время сделки

GetDepositAddress

Метод возвращает адрес пополнения.

Требования: привилегия ключа deposits

Параметры:

  • coinName: тикер валюты (пример: BTC)
  • need_new: value: 0 или 1, по умолчанию: 0

Пример ответа:

{
	"success":1,
	"return":{
		"address": 1UHAnAWvxDB9XXETsi7z483zRRBmcUZxb3,
		"processed_amount": 1.00000000,		
		"server_time": 1437146228
	}
}

WithdrawCoinsToAddress

Метод создаёт запрос на вывод средств.

Требования: привилегия ключа withdrawals

Параметры:

  • coinName: тикер валюты (пример: BTC)
  • amount: сумма для вывода
  • address: адрес назначения

Пример ответа:

{
	"success":1,
	"return":{
		"server_time": 1437146228
	}
}

CreateYobicode

Метод предназначен для создания Yobicodes (купонов).

Альтернативное написание метода: CreateCoupon

Требования: привилегия ключа withdrawals

Параметры:

  • currency: тикер валюты (пример: BTC)
  • amount: сумма yobicode

Пример ответа:

{
	"success":1,
	"return":{
		"coupon": "YOBITUZ0HHSTBCOH5F6EAOENCRD8RGOQX3H01BTC",
		"transID": 1,	
		"funds":{
			"btc":15,
			"ltc":51.82,
			"nvc":0,
			...
		}
	}
}
  • coupon: Yobicode
  • transID: всегда 1 для совместимости с api других бирж
  • funds: балансы, актуальные после запроса

RedeemYobicode

Метод предназначен для погашения Yobicodes (купонов).

Альтернативное написание метода: RedeemCoupon

Требования: привилегия ключа deposits

Параметры:

  • coupon: yobicode для зачисления (пример: YOBITUZ0HHSTB...OQX3H01BTC)

Пример ответа:

{
	"success":1,
	"return":{
		"couponAmount": "1.2345",
		"couponCurrency": "BTC",
		"transID": 1,	
		"funds":{
			"btc":15,
			"ltc":51.82,
			"nvc":0,
			...
		}
	}
}
  • couponAmount: Сумма которая была зачислена.
  • couponCurrency: Валюта yobicode, которая была зачислена.
  • transID: всегда 1 для совместимости с api других бирж
  • funds: балансы, актуальные после запроса

Defi Public API

Пример запроса информации по всем пулам:
https://yobit.net/api/defi/info

Пример запроса информации по конкретным пулам:
https://yobit.net/api/defi/info/btc_usdt-yo_btc

Пример ответа:

{
	"server_time":1418654531,
	"pools":{
		"usdt_spitz":{
			"liq1":"45540230.71160736",
			"liq2":"230.12172671",
			"price1":"0.00000505",
			"price2":"197896.26717427",
			"fee":"0.003",
			"price24high1":"0.00000512",
			"price24low1":"0.00000505",
			"price24high2":"197898.16740049",			
			"price24low2":"195199.11794729",
			"vol1":"47.57434935",			
			"vol2":"2.61017416",
			"algo1":"erc20",
			"tokenid1":"0xdac17f958d2ee523a2206206994597c13d831ec7",
			"algo2":"bep20",
			"tokenid2":"0x9d1d63501e3490aeedf0dba24f60c29918caf965",

		}
		...
	}
}
  • liq1: поставщики ликвидности вложили валюты 1 в пул
  • liq2: поставщики ликвидности вложили валюты 2 в пул
  • price1: актуальный price 1
  • price2: актуальный price 2
  • fee: комиссия в % (0.003 означает 0.3%)
  • price24high1: самый большой price 1 за последние 24 часа
  • price24low1: самый маленький price 1 за последние 24 часа
  • price24high2: самый большой price 2 за последние 24 часа
  • price24low2: самый маленький price 2 за последние 24 часа
  • vol1: объем свопов в валюте 1 за последние 24 часа
  • vol2: объем свопов в валюте 2 за последние 24 часа
  • algo1: erc20, trc20, bep20 или SHA256/Scrypt/X11
  • tokenid1: для валюты 1 token адрес для erc20, trc20, bep20 алгоритмов или пусто для остальных
  • algo2: erc20, trc20, bep20 or SHA256/Scrypt/X11
  • tokenid2: для валюты 2 token адрес для erc20, trc20, bep20 алгоритмов или пусто для остальных

Скрытые пулы не отображаются в списке на главной странице биржи.
При отключении какого-либо пула, он пропадет из списка.

DefiSwapInfo

Метод предназначен для получения информации о возможном свопе Swap перед тем, как вызвать его функцией DefiSwap.

Требования: привилегия ключа info&trade

Параметры:

  • pool: имя пула в формате cur1_cur2 (пример: btc_usdt)
  • PayCurrency: валюта, которую вы отдаете при свопе. Она должна быть cur1 ИЛИ cur2 (пример: usdt)
  • PayAmount: сумма, которую вы отдаете при свопе (пример: 1.123)

Пример ответа:

{
	"success":1,
	"swap_made":0,
	"info":{
		"desc": "SWAP 1.12300000 USDT to 0.00002567 BTC with price 43732.86034952",
		"pay_amount": "1.12300000",
		"pay_currency": "USDT",
		"get_amount": "0.00002567",
		"get_currency": "BTC",
		"price_of_swap": "43732.86034952",
		"fee_total": "0.00000007",
		"fee_total_currency": "BTC",
		"price1_before": "43601.61783433",
		"price1_after": "43601.70585432",
		"price2_before": "0.00002293",
		"price2_after": "0.00002294",
	}
}
  • swap_made: всегда равна 0. Указывает на то, что своп фактически не проводился.
  • pay_amount: сумма, которую вы отдаете при свопе
  • pay_currency: валюта, которую вы отдаете при свопе
  • get_amount: сумма, которую вы получаете при свопе
  • get_currency: валюта, которую вы получаете при свопе
  • price_of_swap: цена свопа (
  • fee_total: размер комиссии
  • fee_total_currency: валюта комиссии
  • price1_before: актуальная цена 1 пула перед свопом
  • price1_after: актуальная цена 2 пула перед свопом
  • price2_before: показывает, какая была бы цена 1 пула после проведения свопа
  • price2_after: показывает, какая была бы цена 2 пула после проведения свопа

DefiSwap

Метод предназначен для проведения свопов Defi (Swaps).

Требования: привилегия ключа info&trade

Параметры:

  • pool: имя пула в формате cur1_cur2 (пример: btc_usdt)
  • PayCurrency: валюта, которую вы отдаете при свопе. Она должна быть cur1 ИЛИ cur2 (пример: usdt)
  • PayAmount: сумма, которую вы отдаете при свопе (пример: 1.123)

Пример ответа:

{
	"success":1,
	"swap_made":0,
	"info":{
		"desc": "SWAP 1.12300000 USDT to 0.00002567 BTC with price 43732.86034952",
		"pay_amount": "1.12300000",
		"pay_currency": "USDT",
		"get_amount": "0.00002567",
		"get_currency": "BTC",
		"price_of_swap": "43732.86034952",
		"fee_total": "0.00000007",
		"fee_total_currency": "BTC",
		"price1_before": "43601.61783433",
		"price1_after": "43601.70585432",
		"price2_before": "0.00002293",
		"price2_after": "0.00002294",
	},
	"user":{
		"new_balance1": "12.07789855",
		"new_balance1_currency": "BTC",
		"new_balance2": "497908.66928976",
		"new_balance2_currency": "USDT",
		"pooled1": "1.07518709",
		"pooled2": "46729.28782075",
		"pooled_est": "$93,233.91955017",
		"pooled_pr": "2.1456",
		"comfee1": "4.1894",
		"comfee2": "625.3309128",
		"comfee_est": "$1,207.09775086",
	}	
}
  • pay_amount: сумма, которую вы отдаете при свопе
  • pay_currency: валюта, которую вы отдаете при свопе
  • get_amount: сумма, которую вы получаете при свопе
  • get_currency: валюта, которую вы получаете при свопе
  • price_of_swap: цена свопа (
  • fee_total: размер комиссии
  • fee_total_currency: валюта комиссии
  • price1_before: цена 1 пула перед свопом
  • price1_after: цена 2 пула перед свопом
  • price2_before: цена 1 пула после проведения свопа
  • price2_after: цена 2 пула после проведения свопа
  • new_balance1: ваш новый баланс валюты 1 после свопа
  • new_balance1_currency: название валюты 1
  • new_balance2: ваш новый баланс валюты 2 после свопа
  • new_balance2_currency: название валюты 2
  • pooled1: ваша часть валюты 1 в пуле ликвидности
  • pooled2: ваша часть валюты 2 в пуле ликвидности
  • pooled_est: примерное количество pooled1+pooled2 в USD
  • pooled_pr: ваш процент пула ликвидности (пример: 2.1456 означает 2.1456% от пула ликвидности)
  • comfee1: комиссия заработана (суммарно валюты 1)
  • comfee2: комиссия заработана (суммарно валюты 2)
  • comfee_est: примерное количество comfee1+comfee2 в USD
Чат

LizaBitcoin: Всем ку, меня что то забанили на сутки за что то)

LizaBitcoin: galich, много денег?)

LizaBitcoin: galich, выводи по 100к маме папе брату сестре) другу, как закончатся друзья я всегда ваш друг :)

LizaBitcoin: А Психотеравевт где)

LizaBitcoin: К вообще да интересно как выводят у кого миллионы)

LizaBitcoin: Ак же время быстро идёт ребятки:) все уже постарели на 7 лет : при мне:)

shlema6: LizaBitcoin, Та элементарно. Я если больше 1000 udt вывожу то через офлайн обменник . Пару десятков или более кусков то заранее звонишь и тебе говорят когда подойти чтоб они успели нал подготовить.

LizaBitcoin: shlema6, откуда столько кусков)

LizaBitcoin: Пару кусочков надо)

shlema6: LizaBitcoin, заработок , это редко бывает, как правило просто через онлайн обменник на карту . Но раз два в год 10 снимаю через офлан

maksim55 L0: Привет! подскажите, что делать с DICE? на балансе 70000000 монет этих DICE

shlema6: maksim55, В рублевой паре вроде ещё торгуется

LizaBitcoin: maksim55, trade/DICE/RUR

maksim55 L0: Спасибо

LizaBitcoin: 7M = 11 рублей :)

maksim55 L0: так дешево?

shlema6: maksim55, Было время было дороже но годы проходят и дешевеет

LizaBitcoin: maksim55, нужно быть активным на бирже и 27.12.2024 на юбилей давали YO10 по 101010 монет, это на старте было 600-1200$

LizaBitcoin: Нужно ещё такой дроп срочно)

LizaBitcoin: У нас +14 мда

shlema6: LizaBitcoin, Шикарно вам , у нас в 7 утра уже +30 было и не миллиметра ветерка ((((

LizaBitcoin: shlema6, лучше бы у нас было +30) я не люблю пасмурную погоду и холодную особенно зимо:)

Psilon L0: LizaBitcoin, привет, как здоровье?

shlema6: LizaBitcoin, Всегда хочется того чего нет )))) Я уже дохну от этой жары . Июнь болеменее был 25 30 градусов но был ветерок , а вот июль это кошмар ни ветра ни туч просто стоячий кипяточный воздух , днем до 37-40 доходит

Psilon L0: shlema6, эт фигня. вот когда у нас -45 и штормовой ветре, вот это тема!)))

shlema6: Psilon, ))))) не ну не до таой степени прохлады хочется )))) у нас зима последние года не ниже -5 опускается

shlema6: Psilon, -20 это уже катастрофа всё закрывается

Psilon L0: shlema6, ну у нас тоже не антарктида, когда лето, тоже ниже -5 не опускается)))

shlema6: Psilon, ))))

autodenisauto: LizaBitcoin, там где ты сейчас, шеф повар готовит рыбные котлеты. довелось уже попробовать ))

1tafroma L0: всем ку

vady76: 1tafroma, привет

1tafroma L0: а скажите , эти DICE монеты, их вообще продать можно?

Denkat1111 L0: 1tafroma, В рублевой паре посмотри

vady76: 1tafroma, в паре рубль дайс за пару рублей.

1tafroma L0: да , в рублях вижу, понты ваще стоит))

vady76: 1tafroma, изначально цена была намного ниже чем 1 сатоша, а сейчас подавно.

1tafroma L0: vady76, спасибо за информацию, не знал этого. я вообще не думал что этот сайт жив, зашел вот спустя лет 8)))

vady76: 1tafroma, биржа живёт и радует своих активных пользователей.

LizaBitcoin: autodenisauto, рыбные батончики) один раз давали) из голов наверное делают)

YaX100: Можно убить время.. Можно убить деп.. Можно убить кита.. Но веру в Yobit.. Не убить Никогда!

AleksJM L0: можно забанить YaX100, можно замьютить YaX100, можно заблокировать YaX100.. Но верю в Yobit.. Когда-нибудь они сделают это

LizaBitcoin: YaX100, а ты с йобит чата ушёл что-ли?)

AleksJM L0: LizaBitcoin, ушел сам, но он ветренный человек не держаший свои слова. Придет через пару дней

LizaBitcoin: AleksJM, давно уже нету)

dismaler: всем привет)

AleksJM L0: dismaler, приветствую

dismaler: AleksJM, привет, что нового?)

AleksJM L0: dismaler, ничего)

dismaler: AleksJM, плохо) когда новое тогда интереснее)