Зміст
Довідка: майнер – це програма для Майнінгу криптовалюти. Може вбудовуватися в сайти, приносячи автору сайту прибуток. Майнінг може використовувати як потужності процесора, так і відеокарти (javascript може запускати шейдери за допомогою WebGL).
Чому майнер – зло
Дані причини можуть бути очевидні багатьом, але виступають за Майнінг їх не враховують.
- Користувач купив дорогу процесор / відеокарту частіше за все не для того щоб половину ядер від’їли Майнер. – Припустимо, я витратив на процесор 20к. Якщо у мене отожрут половину його ядер, виходить, 10к витрачено даремно. А якщо я купив дешевий процесор / відеокарту, то цей пункт ще критичніше, адже тоді ресурси мені ще важливіше.
– Через недобросовісних Майнер лагает не тільки відкритий сайт, але і інші сайти і навіть вся система. Але якщо ви – сумлінний майнер, отжирать тільки частина ресурсів – не вирішення, т. К:
– Це все-одно не гарантує відсутності лагів.
– Якщо користувач відкрив кілька вкладок, і Майн відразу кілька сайтів, то ми все-одно отримаємо перевищення, після якого почнуться лаги. В умовах, коли можуть бути відкриті сотні вкладок, такий сценарій дуже ймовірний.
Аналогічно ми отримаємо перевищення, якщо користувач сам запустив якісь програми. - Лаги через Майнінг складно контролювати. Як користувачу, мені краще взагалі було не відкривати той сайт, ніж отримати лаги. Тільки не завжди я знаю про Майнер.
- Якщо сайт не повідомив мене про Майнінг, він просто може заважати моїй роботі. Наприклад, якщо я купив 8 ядер, то будуть часи, коли вони будуть простоювати, але будуть також і часи, коли вони потрібні всі. Один з найпростіших прикладів – я вирішив подивитися фільм, але не зміг зробити це через Майнера. Причому наскільки б потужний комп Ви не купили, його ресурси будуть віджиратись Майнер.
- Майнінг – це переклад електрики в гроші, тому майнер, який не повідомляє мене про свою роботу, за фактом краде мої гроші, т. К. Оплачувати витрачену електроенергію доводиться мені.
Майнер призводить до розряду батареї. - Майнер не можуть перевірити, запущені Майнер на інших відкритих сайтах. Уже відкривши кілька вкладок можна повністю перевантажити систему.
- Зазвичай для нормальної роботи завжди повинен бути вільним якусь кількість ресурсів. Майнер не може дізнатися, скільки ресурсів вільно в даний момент.
- Майнер викликають шум вентилятора.
- Майнер зазвичай діє приховано. Наприклад, побачивши сайт з рекламою, я можу віддати перевагу іншому сайту, т. Е. У мене є вибір. А ось з Майнер вибору у мене немає.
- Недосвідчені користувачі можуть не розуміти, чому лагает система.
Коли Ви зрозуміли, що Вам заважає майнер, пошук вкладки з Майнер дуже дратує. А ще гірше, коли Ви не зрозуміли, що Вам заважає майнер. - Сумлінність Майнера важко контролювати. При цьому сумлінні Майнер – рідкість.
- Нагрівання пристрої (ноутбука, мобільного телефону і т. Д.).
- Досить критичні фінансові проблеми (див. Нижче).
Якщо коротко, то Майнер викликають лаги, заважають роботі, крадуть гроші (за допомогою електроенергії), розряджають акумулятор, викликають шум вентилятора і повністю перевантажують систему при відкритті декількох вкладок. При цьому майнер, на відміну від реклами, діє приховано, відбираючи у користувача вибір.
Фінансові проблеми
- Якби всі сайти почали встановлювати Майнер, прибуток, яку вони можуть отримати, теж би падала, т. К. Ресурси користувача обмежені. Навіть зараз прибуток дуже мала, а що, якщо вона впаде ще в 10 раз? При цьому незручності користувачеві ми завдаємо величезні.
- Відмінності у вартості електрики. Наприклад, частина користувачів витративши 2 $ можуть згенерувати тільки, наприклад, 1 $.
- Продуктивність. Але цей пункт навряд чи можна застосувати, т. К. Javascript може Майні на відеокарті за допомогою шейдеров, написаних на GLSL. А якщо ми говоримо про Майнінг на CPU, то мається на увазі валюта, заточена саме під CPU – на відеокарті її Майнінг неможливий або неефективний. Причому для прискорення на CPU ми можемо поюзати WebAssembly.
Посилення екологічної проблеми
Раніше електрику для Майнер було не безкоштовне, тому невигідним Майнінг вони не займалися. Але коли робота початку перекладається на користувача, Майнер більше немає сенсу економити, що призведе до набагато більш величезним витрат електрики.
Якщо раніше споживання електрики було одно ринкової вартості монет (і теж було величезним), то тепер збільшиться ще в кілька разів. Дуже сумнівна перспектива.
Рішення деяких проблем
п. 2 (лаги), п. 3 (заважає роботі), п. 6 (кілька вкладок) і п. 7 (залишення вільних ресурсів) можна спробувати вирішити програмно, наприклад, роблячи раз в секунду на частку секунди тестову завантаження на 100% , і перевіряючи, скільки обчислень вдалося провести. З мінусів:
- Ми не можемо дізнатися, наскільки сильно ми при цьому обмежили інші процеси, тому визначити таким способом вільні ресурси можна було б тільки в разі, якщо б ми запускалися з найнижчим пріоритетом, але такої можливості немає.
- Визначення буде з затримкою.
- Невисока точність.
- Не враховується наявність стрибкоподібних навантажень. Особливо цей пункт актуальний на відеокарті – нам частину може знадобитися багато ресурсів (від загального відсотка) на короткий час.
- Не можна врахувати використання shared-ресурсів. Наприклад, навіть якщо майнер буде працювати в половину потужності, це не означає, що він не може забити кеш L3, який може комусь знадобитися. Крім того, забиття кеша знизить продуктивність однопоточних додатків.
п. 5 (розряд батареї) – можна вирішити, якщо браузер буде повідомляти, чи підключено пристрій від мережі.
п. 8 (шум вентилятора) і п. 13 (нагрів пристрої) – можна вирішити, якщо встановити в браузері налаштування, який відсоток ресурсів може бути сумарно задіяний в системі. Ця установка повинна враховуватися сайтами. З мінусів – вона може використовуватися для відстеження.
Рішення відразу всіх пунктів (крім фінансових і екологічних)
Вирішити відразу всі пункти можна, якщо браузери будуть заносити в чорний список сайти з Майнер, що не дотримують наступні правила:
- Майнер повинен залишати як мінімум 50% вільних ресурсів незалежно від навантаження системи. Якщо система вже завантажена на 50%, майнер не повинен працювати.
- Майнер повинен посилати браузеру спеціальне повідомлення про Майнінг. Дане повідомлення браузер відобразить значком в адресному рядку, а також на самій вкладці, як це вже робиться з програванням аудіо.
- Майнер не повинен працювати, якщо користувач заборонив Майнінг на всіх сайтах або на цьому сайті.
- Майнер не повинен працювати при роботі від батареї.
Звичайно ж, навіть якщо сайт знаходиться в чорному списку, користувач все-одно повинен мати можливість зайти на сайт після відповідного попередження. Аналогічним чином можуть надходити і пошукові системи, знижуючи недобросовісні сайти в результатах видачі.
Недолік у тому, що перевіряти сайти дуже трудомістким, а також майнер може показуватися не всім відвідувачам. Інший недолік – не вирішене восьмий пункт (шум вентилятора).
Більш просунуте рішення
Більш просунуте рішення – вбудувати Майнінг прямо в браузер, тоді сам браузер автоматично проконтролює виконання всіх пунктів, а користувачеві не буде доставлено ніяких незручностей (зверніть увагу на чотири правила, які я навів вище). Автору сайту залишається лише вибрати, яку валюту Майні.
Переваги
- Тепер все вбудовані Майнер будуть вважатися недобросовісними, т. Е. Виявлення Майнер не стане складніше, ніж зараз. У попередньому ж способі це було ускладнено.
- Ми можемо забезпечити кращу продуктивність (так само як і гіршу, т. К. Немає конкуренції між програмами-Майнер).
- Вирішене проблема з шумом вентиляторів, адже тепер настройка потужності зберігається в самому браузері і не передається сайтам, а значить і не може використовуватися для відстеження.
- Простота настройки для автора сайту.
При цьому за фактом браузерам необов’язково блокувати недобросовісні сайти самостійно, а можна залишити це стороннім продуктам, наприклад, антивірусних програм або доповнень.
Недоліки
Рішення має ряд істотних недоліків:
- Підтримувати це все з боку браузерів трудомістким. Особливо трудомістка підтримка різних програм-Майнер від різних валют. З іншого боку, браузери можуть отримати додаткову монетизацію за рахунок просування певних валют.
- Дев’ятий пункт (відсутність вигоди, коли всі почнуть Майні) ми побороти ніяк не можемо. Це означає, що розробники браузерів повинні виконати величезну роботу, яка може не принести ніякої користі Інтернету.
- При визначенні вільних ресурсів залишилося багато нюансів. Мені, як користувачу, вигідніше відключити Майнінг. Втім, відключивши загальний Майнінг, я можу примусово включити його на улюблених сайтах, завдяки чому їм не доведеться конкурувати з іншими сайтами.
- Прибутковість Майнінг дуже нестабільна. Мало хто захоче реалізовувати функціонал, користь якого дуже сумнівна.
- Не вирішена жодна з проблем, описаних в розділі «Фінансові проблеми».
- Не вирішена екологічна проблема, в якій витрати електрики збільшуються в кілька разів у порівнянні з поточною ситуацією, т. К. Майнер більше не потрібно економити на електриці. Ну і просто, підтримуючи Майнінг, ми підтримуємо безглузду витрату енергії.
Підсумки
Описана вище схема має значні недоліки, але мало хто буде проти неї – на крайній випадок Майнінг можна просто відключити в налаштуваннях.
Але ті, хто виступають за Майнінг, зазвичай не вказують на супутні проблеми та їх вирішення, а без цього Майнінг доставить величезні незручності користувачеві.
Потрібно також відзначити:
- Браузери вже почали обмежувати використання CPU в фонових вкладках, але при великій кількості відкритих вкладок вони все-одно дадуть більше навантаження, т. Е. Це не є повноцінною захистом.
- Також хорошим рішенням було б повністю обмежити використання відеокарти в фонових вкладок за винятком тих, кому користувач спеціально дозволив це.
- При цьому обидва цих рішення малоефективні, коли активних вкладок більше однієї. Таке може бути, коли відкрито кілька браузерів / вікон.
P.S .: Ця стаття – не істина в останній інстанції, тому було б цікаво почути інші аргументи, які я упустив.
P.S .: Ця стаття не виступає за або проти Майнінг, а лише вказує недоліки, способи їх виправлення і переваги. Але якщо визначати точку зору, то скоріше проти, т. К. Без підтримки браузерами не має сенсу, а з підтримкою ніколи не окупиться і має ряд інших серйозних проблем.