Блог пользователя Sunb1m

Автор Sunb1m, 13 месяцев назад, По-русски

Предисловие

За последнее время было предложено достаточно много различных способов, методов и советов по борьбе с читерами, которые отчасти могут дать положительные результаты на короткой дистанции, но на перспективе ситуация может перейти в другую плоскость, в которой читеры станут только умнее и найдут нужные "ключи" к тому, чтобы продолжить быть безнаказанными на этой платформе.

Почему основные идеи не работают в долгосрочной перспективе

Анти-плагиат и тайминги

Быстрый код от LLM выглядит "человечески" за счёт стандартизации стиля кода, заготовок кода функций, использования сокращенных названий переменных и т.д., а адекватные задержки между отправками довольно легко эмитировать, контролируя время отправки других участников.

SMS-верификация

Онлайн-сервисы одноразовых номеров, аренда дополнительных внутренних номеров у операторов связи сводят её к формальности. Поймите, что, кто заходит на CodeForces или хотя бы имеет немного желания в чём-то разобраться, точно догадается, что уже давно на рынке практикуются онлайн-сервисы для одноразовых смс-активаций или верификации по звонку при необходимости. Стоит это сущие копейки, можно арендовать номер на N-ый период времени или даже в том же МегаФоне (кто из России, тот возможно понимает) выпустить дополнительные номера на родную сим карту за какие-то 2 рубля в сутки. Такая система защиты по номеру телефона не будет на текущий момент совершенной и точно не сдержит нарушителя.

Жёсткий бан

Пользователь, потеряв рейтинг на начале его пути, просто создаст новый аккаунт и вся история начнётся заново, а те, кто этим промышляют уже давно и имеют высокий рейтинг, уже в курсе о ключевых моментах, на которые стоит обращать внимание, чтобы не отправиться в бан.

Основная идея — не банить, а скрывать!

Идея про введение системы репортов ранее уже выдвигалась, но я хочу её форсировать. Давайте введём систему отложенных репортов и лайков от доверенных пользователей (>2000 elo), благодаря которым будет коррелироваться траст фактор условного подозреваемого. Мы не будем банить пользователя за то, что он проявил подозрительную активность в каком-то из раундов. Какой смысл нам это делать, заставлять думать, на какой задаче и в чём именно он "прокололся", когда можно просто заставить его верить в то, что он в очередной раз не попался в руки правосудия и ему удалось всех обмануть. В то же время его аккаунт будет скрыто помечаться так называемой меткой и все последующие соревнования в его лице будут проходить отдельно от общего пула участников, но при этом читер продолжит видеть "свой" рейтинг и место в общем топе. Его очки не будут учитываться в основной таблице при подсчёте позиций и рейтинга честных участников. Аномальные участники будут перемещаться в "скрытый пул", в котором будут соревноваться только между собой.

Система доверенных репортов

Кто сможет репортить?

  • Участники с рейтингом более 2000 очков

  • Пользователи с высоким уровнем вклада в сообщество платформы

  • Доверенные участники и координаторы

Форма репорта

  1. Подозрение в использовании ИИ? [Да/Нет]
  2. Ключевые аномалии (тайминги, стиль кода, нетипичное решение)
  3. Краткий комментарий

Взвешивание репортов

Репортящий получает "вес", который будет зависеть от его текущего рейтинга, даты регистрации, вклада, точности прошлых репортов и чем выше будут его показатели, тем больше уровень доверия. Соответственно репорты на участников с высоким уровнем доверия не будут сильно влиять на их репутацию, если их не репортят точно такие же участники.

Система лайков и репутации

  1. Лайки могут ставить абсолютно любые участники с рейтингом и регистрацией не менее 7-ми дней, после окончания раунда.
  2. Оценка по понятности и читаемости кода, наличии комментариев и их полноте

Механика скрытого пула

flowchart LR
  A[Участник] --> B[Соревнование]
  B --> C{Сбор данных}
  C --> D[Trusted Reports]
  C --> E[Лайки/Дизлайки]
  C --> F[Телеметрия]
  D & E & F --> G[Байес. модель]
  G --> H{TF ≥ 0.5?}
  H -- Да --> I[Скрытый пул]
  H -- Нет --> J[Основной пул]
  I --> K[Визуализация (только для читера)]
  J --> L[Реальные результаты]
  1. До контеста собираются репорты и исторические данные
  2. Во время контеста проводим телеметрию: время разработки, частота отправок программ, навигация по страницам
  3. После байесовский движок, работающий на базе вероятностей, отталкиваясь от критериев, принимает окончательное решение о выборе пула

UI/UX для "скрытых" и "честных"

  • Честный участник видит привычный топ и не замечает скрытых "признаков"

  • Скрытый участник видит фейковые рейтинг и место в общем топе

  • Модераторы видят график траст фактора в динамике, карточки подозреваемых с подробным логом телеметрии

Система автоматического расчёта траст фактора

Траст фактор будет повышаться или понижаться после каждого завершенного контеста по итогу рассчитанной репутации за отведённый промежуток времени или повышаться в результате ручной проверки модератора.

Как вам идея? Пишите в комментариях, что думаете.

  • Проголосовать: нравится
  • +201
  • Проголосовать: не нравится

»
13 месяцев назад, скрыть # |
Rev. 2  
Проголосовать: нравится +19 Проголосовать: не нравится

Don't take this comment the wrong way, I think that your ideas are really creative and have great potential. But I do want to share some of my thoughts on improving this

Firstly, if you conceal who the cheaters are, there will also be no way for people to tell who is a cheater. Many cheaters cheat to get job offers or bragging rights, and this doesn't prevent that.

Secondly, "readability, clarity, presence, and comprehensiveness of comments" are things that AI does very good while humans don't (especially when trying to speedrun rounds), so it shouldn't be used in a likes and reputation system. Codeforces already has a reputation system in contribution

»
13 месяцев назад, скрыть # |
Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

Why is the second to last bullet point in Russian?

Translation: A hidden participant unsuspectingly sees his rating and place in the overall top (google translate said "illusionically" but that isn't even a word)

»
13 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

на бумаге звучит здорово, а что например, если читер создаст второй аккаунт и с ужасом для себя обнаружит, что его основной аккаунт отсутствует в топе, что тогда делать?

  • »
    »
    13 месяцев назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится

    Зависит от того, насколько он продвинулся высоко по рейтингу. Если рейтинга много, то скорее всего читер будет в недоумении и останется на своём аккаунте, ибо смысла переходить на другой аккаунт и начинать всё сначала для него уже станет некой проблемой пропорционально значимой для него от затраченного на прокачку аккаунта времени, потому что он по-прежнему не будет понимать, за что конкретно он попал в "скрытый пул". Но скорее всего модераторы платформы быстрее уличат его в читерстве и забанят. Опять же, если он создаст новый аккаунт и на 100% убедиться в том, что его участие никак не продвигается в топе, то он либо уйдёт с платформы, если его цель была именно получение большого рейтинга и доминация над честными игроками, либо не придаст этому значения. Так или иначе у него просто пропадёт бывалая мотивация, на это и расчёт.

»
13 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

That's genius, solves the problem for codeforces purpose at least... Also, don't you think some cheater would get the access to report somehow and get to report innocent people? What I mean is that the number of people with access to the report people should be minimal to avoid such scenarios... which doesn't apply on yer condition of +2000> rating and some contribution. Or making it open to everybody (or at least pupil>) as the idea was, providing a username to avoid repeated reports on same user... (set haha) and get a huge no-life mod team to inspect all of them :)

»
13 месяцев назад, скрыть # |
 
Проголосовать: нравится +6 Проголосовать: не нравится

I just got an additional idea!

Make a system that tracks unusual rating growth for a user. it can be +300> in 3 contests or idk (im not familiar with unusual ratings)

  • »
    »
    13 месяцев назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится

    Unusual growth is pretty hard to define. I had been practicing USACO for several months before I started seriously doing CF. As a result my initial growth was really fast (several ~200 delta contests in a row), though I can assure you I didn't cheat

»
13 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

(at this point I'm putting all my suggestions here ;-;)

So another idea is making the problem statements pdf... because pdf kinda messes up the text format and as a comment i saw before said "even AI can be confused"... I personally experienced the horrific text format on copy-paste of PDF files.

But still these are hopeless suggestions i thought of at 3:00AM :)

»
13 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Why cant the reputation based system be made as an external website ?

Most cheaters cheat to get job offers and/or flex, both of which are destroyed the moment evidence of cheating is made public and easily accessible to recruiters and their peers.

If enough good people endorse it then companies too will start taking cheating allegations posted there seriously before hiring.

  • »
    »
    13 месяцев назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится

    Because we're now talking about a localized issue specific to this platform, where introducing an internal rating and trust-factor system would dramatically impact the cheating situation overall. Besides, what kind of companies hire employees based solely on their CodeForces account without conducting their own interviews or coding tests? If a candidate demonstrates incompetence or performs at a lower level compared to their CodeForces rating when solving tasks provided by the recruiter, it would simply prove that their rating was obtained dishonestly.

»
13 месяцев назад, скрыть # |
 
Проголосовать: нравится +9 Проголосовать: не нравится

Probably the best solution I've seen on this platform. It's like a "second sort". I think trusted users should be people who actively wrote rounds before the advent of AI, and showed good results(Not newbies, for example)

»
13 месяцев назад, скрыть # |
 
Проголосовать: нравится +14 Проголосовать: не нравится
»
13 месяцев назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится

I think this is a great solution. If you give feedback that is too high signal, cheating will never become detectable the same way spraying too much antibacterial just leaves the bacteria growing stronger and stronger.

Instead, you can assign each participant a "honesty" value -- crucially, though, rating changes should reflect this. Participants with low honesty values should see smaller gains and bigger losses.

Also, the systems should be largely automatic. I assume the reason many ideas have been floated and none have been implemented by Mike (he really could implement these quickly, if he thought they were big problems) is because they take work over time to sustain. So however you design your anti cheat method, it should be largely automated (otherwise it will never happen.)

»
13 месяцев назад, скрыть # |
 
Проголосовать: нравится +6 Проголосовать: не нравится

Yes! Your ideas will work...!

»
13 месяцев назад, скрыть # |
 
Проголосовать: нравится +6 Проголосовать: не нравится

Interesting and original idea! The problem I see here is that a cheater can create a second (honest) account and after login into this one (or even after not login at all) he can see that "Ups, my other account is not in the general leaderboard where it should be — I must have been detected".

There are however other ways that such reputation system could make life worse for those with low score, like longer queue times. Unfortunately, such annoyances wouldn't take the main incentive, aka rating increase, away.

  • »
    »
    13 месяцев назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится

    I understand what you mean. However, it largely depends on how far he has advanced in the ratings. If his rating is high, the cheater will probably be puzzled and stay on his account since switching to another account and starting from scratch would become problematic for him, proportionally significant to the amount of time he has already invested into boosting his account. He would still be unaware of the specific reason why he ended up in the "hidden pool." Nevertheless, moderators on the platform will likely catch him cheating faster and eventually ban him. Again, if he creates a new account and becomes fully convinced that his participation is not helping him rise in the rankings, he will either leave the platform altogether—assuming his goal was purely achieving a high rating and dominating honest players—or simply won't pay much attention to it. Either way, his former motivation will simply disappear; that's exactly the intention.

    I still believe that right now there is a significant lack of a system to control multi-accounting. Although such a rule apparently exists, it's currently not enforced at all, and users can register even ten accounts from a single IP address without any repercussions, despite MikeMirzayanov explicitly stating in one of his posts that having multiple accounts violates the platform’s policies. Then why haven't they implemented adequate countermeasures against those who violate this rule?

    https://mirror.codeforces.com/blog/entry/124418#:~:text=Creating%20and%20using%20additional%20accounts,a%20company%2C%20etc.).

»
13 месяцев назад, скрыть # |
 
Проголосовать: нравится +26 Проголосовать: не нравится

Since you deleted your other topic to hide my comment, I'll just repeat everything here: You're a cheater yourself, so what is your motive here for posting this?

Evidence: 311116185

Dehashed code by ChatGPT: https://chatgpt.com/share/6810bde2-3cf8-8006-958b-7eddf77ca7ce

Don't bother deleting this one, I'll just create a topic in that case.

»
13 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

tibinyte2006 this profile is so suspicious, check it

»
13 месяцев назад, скрыть # |
 
Проголосовать: нравится +8 Проголосовать: не нравится

first of all it looks like you're also one of them who're using AI during contest. The code template is different for you in every contest. And in 1 month you became Master. Haha

You're getting compiler error-

Reason- Why I'm pretty sure? you copied from gpt, add your template try to edit code with macros-> hit submit gets compile error.

nice try Diddy!

»
13 месяцев назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится

On the Hidden / Honest Sorting : A cheater will try to see his rankings from some other alt account and he can find it out that his account is hidden in the ranking.

»
13 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

My idea is give rated contest access only to trusted accounts , now question is how do you verify trustability?Appoint some trust checkers ,they will check each particular account's trustability within $$$X$$$ contests periods and give rated contest access accordingly and $$$X$$$ will increase/decrease over time : For example :

  • first $$$X$$$ contests no rated contest access

  • if anything suspicious found for first time no access will be given

  • After $$$X$$$ more contest trustability will be rechecked and new access giving decision will be given

Note : 2nd time suspicious activity will lead to permanent ban

Rules for changing $$$X$$$ : there can be 4 states (bit on the left represents rated access state in previous stage and on the right represents new state) if 0 : no access if 1 : access is given :

0 0 : X+=Z (if not banned for 2nd time suspicion)

0 1 : X=A(where A $$$\le$$$ X)

1 0 : X+=Z

1 1 : X=min(X+B,H)

»
13 месяцев назад, скрыть # |
Rev. 2  
Проголосовать: нравится -8 Проголосовать: не нравится

No need for these things. Codeforces just need to stop copy text and screenshots. It will probably drastically reduce cheating

»
13 месяцев назад, скрыть # |
Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

Most of the discussion regarding AI cheating revolves around direct code generation, but what about asking for the idea and implementing it yourself? The actual challenge competitive programming imposes is not about code implementation, it's about the underlying, abstract ideas behind it.

How can you prevent users from asking an LLM for an idea or an approach? How can you detect such form of cheating? I don't see how it's possible without utilizing very invasive methods such as webcam monitoring which are obviously out of the question.

Personally I no longer feel it is reasonable to dedicate the time and effort involved in competing and trying to climb up the ladder while the solution for a problem could be one simple prompt away from me and the thousands of random people I compete against. This might render online competitive programming simply a thing of the past.

I still enjoy solving the problems in an offline setting and think the platform still holds great value even when stripping away the rating and competitions system completely. However, to be frank and respectfully, posts like that strike me as a bit of a cope and failing to acknowledge how the death of free and publicly open online competitive programming platforms is imminent.

  • »
    »
    13 месяцев назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится

    Assuming online competitive programming will simply disappear is such unbelievable pessimism imo. First you are assuming the amount of cheaters will be overwhelming to the point of TRULY making it pointless to take part in online competitions.

    And, the most absurd to me, you are assuming that a community of 15+ years full of brilliant people will not be able to find good enough methods to stop cheaters.

    I don't know, comments like these just sound extremely alarmant to me.

    • »
      »
      »
      12 месяцев назад, скрыть # ^ |
      Rev. 2  
      Проголосовать: нравится 0 Проголосовать: не нравится

      It might not completely disappear but unless very drastic measures are taken and fundamental changes are made to the platforms it will certainly suffer from major loss of quality and trust.

      It's not really about the actual amount of cheaters. It's about the mere fact that the actual amount of cheaters remains a mystery. In order for a participant to take their rating or placing within a certain contest seriously and ascribe value and meaning to it (which is what makes competitive systems worthy in the first place), in any competitive platform, they have to have some sort of assurance that cheating opponents are at the very least a rare phenomena even if they exist. When cheating behavior is obvious we can at least find peace in the fact that it is detectable and thus punishable. However I can't wholeheartedly compete knowing that I am actually competing against thousands of random people around the globe which I cannot trust not to cheat when proper cheating is basically undetectable and also so easily accessible.

»
12 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

This could be really helpful,further more,for those who wanna get job through rating,I have an idea,The company could get a hidden permission to get one's true "ranking",thus they could know if the employee were cheating or not

»
12 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

This could be really helpful,further more,for those who wanna get job through rating,I have an idea,The company could get a hidden permission to get one's true "ranking",thus they could know if the employee were cheating or not

»
12 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Where is chapter 1 btw?