我们坚信三件事,按顺序。
不能保持诚实的投票,不是投票。
可以被操纵的民意,不是民意。
无法被验证的结果,不是结果。
整个平台是从这三条原则反向构建的。其余一切都是由此衍生而来。
当提问者掌握问题,他也在索取答案
投票应当呈现人们真正的想法。但大多数在线投票呈现的,是运营者希望被发现的东西——而且这并不是因为运营者在撞谎。在线投票存在一种悄无声息的失败模式,无需任何恶意便会发生。
他们写问题,而以 “市政府是否应当禁止 X?” 这样措辞的问题,会得到与 “市政府是否应当允许 X?” 不同的答案。他们列出选项,而无论内容如何,列表顶部的选项都比底部的获得更多投票。他们邀请受众,而他们邀请的受众在任何人投出第一票之前,就已经让结果开始倾斜。他们盯着实时计数,而这个实时计数本身就会让后来的投票者倾向于正在领先的那一方。他们决定何时关闭投票,以及结束时突出哪些数字。
这一切并不要求提问者怀有恶意。即便是诚实的人,提出诚实的问题,只要工具不予以反推,依然会产出带偏见的结果。
还有第二种失败模式,与提问者完全无关。当投票者知道——或怀疑——自己的回答正在被追踪时,他们就不再诚实回答。他们给出社交上安全的答案、上司会赞同的答案、十年后不会被记入与他们姓名挂钩的档案中的答案。投票问 “你怎么想?”,得到的却是 “什么是说出来安全的?”。结果看上去没有问题;数字加起来也对;只是这些不是公众真正相信的数字。
在一个由运营者计票、控制问题、且默默知道谁投了什么的系统里,你在每一个维度上都同时在信任运营者。大多数人默认就这样做了,因为别无可信。
“匿名”是对数据库的描述,不是营销词——而且它向两个方向同时生效
匿名是架构的属性,不是政策的属性。一个数据库握有你的身份却选择不显示,并不会让你匿名——它只是让你无名。我们坚持更严格的定义:在投票者一侧,我们没有你的身份;在提问者一侧,我们也没有他们的身份。
投票者一侧。 在我们最低的验证层级上,你不需要主动给我们任何东西——没有邮箱,没有手机,没有 wallet,没有真实姓名。我们仍会对你的 IP 和设备指纹做 hash,以防止同一个人从一百个标签页投一百次票,但这些 hash 不会识别你。
在更高的验证层级上——我们确实需要知道关于你的某些事以阻止虚假投票——边界不同,但结果一样。以 SMS 验证为例(IMDifferent ID):你证明你能访问一个手机号,我们对它做 hash,你投出一票。在那之后,平台拥有的是 hash——不是你的手机号。从我们数据库内部去查 “谁投了选项 X?” 需要外部输入(你真实的手机号),并对一个无法解码的单向 hash 进行测试。在公开界面、API 或我们的运营流程中,没有任何地方会执行这样的查询。验证步骤记录的是“这个 hash 标识投了票”;它从不记录“这个人投了票”。
你的投票在每日 on-chain 记录中的指纹是一个单向 hash:是拇指印,不是副本。给定那个拇指印,没有人——不是我们,不是法院命令,也不是未来的收购者——能够重建这次投票、这位投票者,或那个时刻。
投票创建者一侧。 默认情况下,投票页面不会显示是谁创建了这场投票。你看到的是问题、选项、类别和所要求的验证层级——你看不到 “由人事部 Bob 提出” 或 “由 [最喜欢/最不喜欢的政客] 提出”。这是有意为之。一旦你知道是谁在提问,问题就不再中立:投票者要么倾向于他们认为提问者想听的答案,要么出于原则反向投票。隐藏提问者,是我们阻止这种压力进入结果的方式。平台的数据库确实会记录哪个账号创建了这场投票(这样创建者可以管理自己的投票),但这条关联不会越过到达面向公众的界面。
我们对虚假投票究竟做了什么
投出一张虚假投票的成本,永远应当大于投出它所带来的价值。这是规则。其余皆为实现细节。
一个标榜“匿名”却没有反欺诈的平台,被操纵起来轻而易举:一个人,一百个浏览器标签页,一百张票,被称作民主。我们不这样做。每一张投票都通过五道门之一进入系统,每一道门通过的成本各不相同:
匿名
门口不查免费、快速、容易被操纵。当投票本身的利害较低、且投票创建者明确接受这种取舍时使用。
IMDifferent ID
一个手机号一张 SIM 卡,一票。每张虚假投票要花几美元——足以阻止 bot 大军,但不足以阻止一个有预算、动机坚定的攻击者。
Gitcoin Passport
一项 sybil score聚合来自现有身份来源的信号,产生一枚“这大概率是一个真人”的徽章。比 SMS 更难在大规模上伪造。
Coinbase Verified
一个 KYC 过的金融账户伪造它意味着伪造一项银行级身份核查。我们说的是每张虚假投票要数千美元,不是几美分。
World ID
你拥有一只人类虹膜的证明需要亲自前往一台 Worldcoin Orb。在大规模上事实上不可能伪造;是当今公开可用的最强的反 sybil 机制之一。
每道门的精确成本都有文档记录;没有任何东西藏在营销话术后面。匿名层级是有意保持匿名的——这不是安全漏洞,而是投票创建者所选择的设置,且每一份结果都会列出它是在哪个层级上收集的。
不同的投票配得上不同的门
摩擦是一种工具,而不是一种美德。太少,你会得到虚假投票。太多,你根本得不到投票。正确的量,是与真正利害相称的那个量。
我们不会让每一场投票都走 World ID。大多数投票不需要那种程度的摩擦,而摩擦本身会把投票者排除在外。要求邻居们在为狗公园翻新投票之前扫描自己的虹膜,过头了;要求一家基金会的董事会通过匿名层级表决一笔 500 万美元的预算分配,则是鲁莽。两者都错了,方向相反。
因此投票创建者来选择门。一场休闲的公开投票从 IMDifferent ID 开始。一次工会选举走 Coinbase Verified。一场绝对不能容忍 sybil 攻击的人工智能安全公投,只走 World ID。验证层级与投票一同被记录,事后任何审视结果的人都能精确看到产生它的是怎样的受众——并据此判断结果。
为什么我们刻意不使用 Web2 社交登录
由一个第三方在你每次登录时旁观所带来的便利,并不是给你的便利。它是给他们的便利,是把你是谁缓慢地泄露给那些你并未注册去通知的公司。
大多数网站允许你使用社交账号提供方登录——业内称之为 "Web2 social login"。这很方便——而这恰恰是问题所在。每当你使用这些提供方之一登录时,提供方都会获知:该用户账号刚刚在此时间登录了此站点。 多年下来,这些记录构成了你公民生活的画像:你在哪些投票中投过票、何时投的、多久投一次。
我们不与他们中的任何一个进行集成。不是因为加密更弱——并不弱——而是因为隐私边界默认就被放在了错误的位置。一旦社交账号提供方知道你登录了一个投票平台,这条信息就会永久存储在他们的系统里,受他们的隐私政策——而不是我们的——管辖。
取而代之,当你创建账户时,我们会通过电子邮件向你发送一个安全链接——一次性、限时的登录 URL,使用一次后即过期。没有可泄露的密码。没有第三方登录提供方跨站点追踪你。你的邮箱提供方看到这条邮件;其他人看不到。而且——重要的是——这个安全链接也不会向我们暴露你的身份。链接被使用之后,我们会对你的邮箱做 hash,并丢弃 plain-text 版本。这个 hash 足以让你重新登录(你再次输入邮箱,我们用同样的方式做 hash,hash 匹配),但它不足以让我们知道你是谁。邮箱穿过了我们的系统;它没有留下来。
即使我们想,也无法给你发邮件
依赖我们不改变主意的隐私不是隐私——那是一种希望。真正的隐私是把这个选择从我们手上拿走,那是我们唯一信得过自己能守住的那种。
对“隐私即设计”最强的检验恰恰是最无聊的那个:公司是否真的能够联系它的用户来做营销、留存、“我们想念你”邮件,或其他任何事?在大多数平台上,答案是肯定的——他们以 plain-text 形式持有你的邮箱,随时可以在他们决定加快增长的那天导出到一个营销工具中。
在我们这里,答案是否定的。安全链接登录完成之后,我们会对你的邮箱做 hash 并丢弃原文。这个 hash 足以让你重新登录(你再次输入邮箱,我们用同样的方式做 hash,hash 匹配),但它不足以向你发送任何东西。我们的数据库里没有用户邮箱的 plain-text 列表。没有营销工具集成。没有“等增长放缓时再上线的简报”。这不是克制;这是架构。这条信息根本就不在那里。
同样的逻辑也适用于手机号、IP 地址和设备指纹。它们在接触持久化存储之前就被做了 hash。它们被用来检测来自同一来源的重复滥用。它们无法以 plain-text 形式被导出、出售或被法院传唤——因为它们根本没有以 plain-text 形式被存储。
而且我们不投放广告——所以我们也不需要这一切。定向广告依赖于知道你是谁:你的年龄、你的性别、你的大致位置、你点击的投票类型。一个靠广告收入运转的平台,必须收集人口统计信号才能正常运作。把广告从画面中移除,也就移除了首先要去收集这些数据的理由。
别相信这个页面——去验证它
信任是要在数年中累积出来的。我们没有那么多年。所以我们把平台构建成不要求信任——只要求验证。
on-chain 锚定记录证明的是处理过程的完整性,而非投票者的身份:它表明在投票被封存的那一刻和你运行验证器的那一刻之间,没有任何投票被新增、删除或重写——但它从不显示任何具体投票者是谁。上文中的每一条其他主张,都可以从本网站之外被审计:
- 合约。 Base mainnet,地址固定且 on-chain 已验证。请亲自在 锚定浏览器 中阅读源代码、bytecode 以及锚定者地址。
- 每日锚定。 在 锚定浏览器 中任选一天。取已发布的 Merkle root,使用任一投票 ID 运行独立验证器,并将该证明与 on-chain 上的 root 进行比对。这其中没有任何一步需要我们的配合。
- Wallet 身份。 位于 公开锚定卡片
/.well-known/imdifferent-anchor.json声明了链、合约和锚定 wallet 地址。位于 已签名的审计 manifest/api/audit/manifest与 每月生命证明链/.well-known/imdifferent-pol/都由同一个 wallet 签名——请亲自将签名与 on-chain 上的锚定者地址进行比对。 - 威胁模型。 The 独立验证指南 记录了上述每一种机制能够证明什么,同样重要的是,它们不能证明什么。
如果任何一步未能通过验证,那这个页面就是错的。请通过 admin@imdifferent.id 告诉我们——我们宁愿从你这里听到,也不愿带着错误继续往前。
