ZOJ开发者后记

这个OJ的idea最早起源于大约半年前LOJ群中对免费OJ需要有人用爱发电支付服务器费用最后导致OJ消亡的讨论。那么应该要有一个分布式的/去中心化的OJ那么我们思考并尝试回答几个问题

1.谁来评测?

去中心化OJ顾名思义没有中心化服务器,所谓的评测应该交给用户本身来进行,但这样既不可能有统一的程序运行时间,又不可能限制用户的程序运行时间。既然如此,为什么我们不干脆就让用户提交答案文件算了,就像PE/旧GCJ一样提供in,提交out。
Q:我们不能让网络上的其他人评测自己的代码吗
A:不能,我们无法分辨网络中两不同用户背后是否为同一人

2.数据公开?

一个OJ公开所有的题目、输入、输出,并且评测交给用户来做……这太无聊了,这根本不是OJ,是一个数据分享网站

那我们能不能做到对用户隐藏in和out并依然能让用户judge自己的代码?答案是可以的,使用FHE可以做到这一点,但是效率实在无法忍受

退而求其次,公开in,隐藏out,并且要求你的提交不能让其他用户知晓out是什么,这个问题在三个月前解决了 很好,这个OJ的基础成型了

这样我们就成功搭建了一个去中心化,类PE/GCJ的赛制了吗?没有,我们无法支持special judge,因为通常来讲,special judge会暴露out文件,在保证安全的情况下仍然要使用FHE

P.S.网络延迟低的时候本OJ办一个比赛也是可能的

暑假这几天闲着蛋疼,忽然想到这件事情,就花了三天写了这个东西,这三天我从零开始学习html/javascript/css/sql/zeronet api,能搞定实属不易,就请不要吐槽功能不全界面丑陋了

另外写着个东西的时候还有点担心,一个是ZeroNet上有一(hen)些(duo)少儿不宜的内容,另一个是这个东西写好之后岂不是完美契合darkbzoj。唉,那个什么,技术无罪,这两个问题怎么解决就见仁见智了

最后这个OJ是一个试验性质的产品,它的目的就是实现我搞定的一个十分简单地idea,这个OJ的本质就在这里,继续添加其他功能不能提升它的上限,我可能不太会继续更新这个OJ,直到搞定special judge的事情,近期的讨论表明区块链可能能做这件事,真要可以我还想发行一个OJ币呢(笑)

哦还有,我很清楚我的代码里有若干漏洞,如果这个OJ被破坏了……我们可以重开一个新的…………

《ZOJ开发者后记》有2个想法

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注