作为Web3的开发者,你是否有为女巫攻击而感到头疼?作为web3的用户,你是否有因为女巫攻击而感到烦恼?让我们看看在AO上的一个解决方案——Vouch系统。作者:txohyeah审阅:outprog来源:内容公会-新闻什么是女巫攻击?女巫攻击(SybilA
作为 Web3 的开发者,你是否有为女巫攻击而感到头疼?作为 web3 的用户,你是否有因为女巫攻击而感到烦恼?让我们看看在 AO 上的一个解决方案 —— Vouch 系统。
作者:txohyeah
审阅:outprog
来源:内容公会 - 新闻
女巫攻击(Sybil Attack)是一种网络攻击方式,指攻击者通过控制多个虚假身份(或称“女巫身份”)来影响或控制网络系统。这种攻击方式的名字来源于一个名为Sybil Dorsett的真实案例,她被诊断患有分离性身份识别障碍(即多重人格障碍)。这一术语被借用到网络安全领域,用来描述攻击者通过创建多个虚假身份来进行攻击的行为。 在 Web3 的世界里面,防女巫攻击一直是一个绕不开的话题。为了防范女巫攻击,网络系统通常会采取一系列措施,如使用工作量证明(Proof of Work, PoW)、权益证明(Proof of Stake, PoS)等机制来提高攻击成本,或者通过消息图谱分析、中心化身份验证等手段来识别和隔离虚假身份。 今天介绍的 Vouch 系统结合了多种方式,构建了一个防女巫攻击的体系。
Vouch 系统是一个构建在 AO 之上的信誉评估系统,它通过综合分析用户的各方面的数据为每个用户计算出一个独特的 vouch 分数。这个分数不仅反映了用户在 AO 生态中的活跃度和可信度,还能够作为衡量用户真实性的关键指标。AO 上的各大应用可以利用这一分数来有效地区分真实用户,从而优化用户体验并增强平台的安全性。此外,vouch 分数还能在授权重要操作时发挥作用,例如,在进行用户奖励时,拥有较高 vouch 分数的用户可能会被赋予优先权或额外的奖励。这种方式不仅激励了用户积极正面的行为,同时也促进了健康和谐的网络环境建设。
目前 Vouch 系统的入口为:https://vouch-portal.arweave.net/
为 Llama Land 和 Permaverse 两大平台提供了快捷计算的方式。即计算出你的账号现在有多少 vouch 分数,每个途径提供了多少,以及一共需要多少分数才能参与平台的一些活动。其他的应用虽然没有提供快捷的计算方式,但是仍然可以使用 vouch 分数进行用户验证,后面我们会以“羊驼传媒”为例进行介绍。
通过推特来验证用户的身份,其中会对推特账号有一个要求,比如在账号注册时间等方面。当然一个推特账户只能被用于获取一次 vouch 分数。
Gitcoin Passport 是一个由 Gitcoin 开发的数字身份验证系统,旨在为区块链项目和去中心化应用(DApps)提供一种更安全、更透明的方式来验证用户的身份,同时保护个人隐私。通过验证 Gitcoin Passport,用户也可以获取 vouch 分数。同样的,一个 Gitcoin Passport 只能被用于获取一次 vouch 分数。
目前 AO token 仍然处于不可转账状态,因此用户可以通过验证 AO 余额获取 vouch 分数,并且 AO 余额获取的 vouch 分数非常不错。
最后一种方式是质押 wAR。Vouch 系统会根据质押 wAR 的时间、当前 AR 的价格,计算出 vouch 分数。
如下架构图所示,
有人说过,没有被攻击过的项目都是经不起风雨的项目。羊驼大陆项目也在与机器人大军的斗争中斗智斗勇!从一开始的白名单排队,到后来羊驼大陆的昨天每天手动封号,羊驼大陆的开发者花费了大量的力气。于是 Vouch 系统应运而生。
目前在羊驼大陆中需要首先成为羊驼公民才能领取每日登录奖励以及向羊驼国王请愿,不过没有成为羊驼公民的用户依旧可以在羊驼大陆来往。成为羊驼公民需要在公民管理员那里完成 vouch 分数的验证,大于 5 分才可以成为羊驼公民。第一次成为羊驼公民会给 25 羊驼代币,作为玩家的起始资金。
接下来,笔者通过羊驼传媒来举例说明如何在自己的应用中使用 Vouch 系统进行验证。羊驼传媒是依托于羊驼大陆平台构建的传媒公司,其中广告业务可以给到点击广告的用户一部分看广告的收益。那么试想下,如果没有防女巫攻击的话,这部分收益很快就会被机器人全部领完。这将损害了广告主的利益,并且也让真实的用户无法领取到广告收益。因此在羊驼传媒业务员 NPC 的领取功能中加入了如下代码,
local vouchScore = GetVouchScoreUsd(msg.From)
if vouchScore < 2 then
local chatMsg = formatPid(msg.From) .. " don't have enough vouch point to claim. Please visit https://vouch-portal.arweave.net/ to improve your score."
print(chatMsg)
ChatToPrivate(chatMsg, msg.From)
return
end
那么主要验证就是来自 GetVouchScoreUsd(msg.From) 函数,该函数获取了用户的 vouch 分数,并且在后续判断 vouch 分数如果小于 2 分,则让用户先去完成 vouch 验证。让我们来具体看看函数里面的内容,如下代码所示,其中 id 为 ZTTO02BL2P-lseTLUgiIPD9d0CF1sc4LbMA2AQ7e9jo 进程即为上文中提到过的 VouchDao 进程,函数中发送了一条 Action 为 Get-Vouches 的消息,就可以获取对应用户的 vouch 记录以及其明细了。
-- vouch function
VOUCH_PROCESS = "ZTTO02BL2P-lseTLUgiIPD9d0CF1sc4LbMA2AQ7e9jo"
VOUCHER_WHITELIST = {
["Ax_uXyLQBPZSQ15movzv9-O1mDo30khslqN64qD27Z8"] = true,
["k6p1MtqYhQQOuTSfN8gH7sQ78zlHavt8dCDL88btn9s"] = true,
["QeXDjjxcui7W2xU08zOlnFwBlbiID4sACpi0tSS3VgY"] = true,
["3y0YE11i21hpP8UY0Z1AVhtPoJD4V_AbEBx-g0j9wRc"] = true,
}
-- vouch function end
function GetVouchScoreUsd(walletId)
ao.send({
Target = VOUCH_PROCESS,
Tags = {
Action = "Get-Vouches",
ID = walletId,
}
})
local resp = Handlers.receive({
From = VOUCH_PROCESS,
Action = "VouchDAO.Vouches",
})
local data = json.decode(resp.Data)
if type(data) ~= 'table' or data['Vouchers'] == nil then
return 0
end
local vouches = data['Vouchers']
local score = 0
for voucher, vouch in pairs(vouches) do
if VOUCHER_WHITELIST[voucher] then
-- 1.34-USD -> 1.34
local valueStr = string.match(vouch.Value, "([%d%.]+)-USD")
if valueStr ~= nil then
score = score + tonumber(valueStr)
end
end
end
return score
end
那么 VOUCHER_WHITELIST 又是什么呢?相信大家也都能猜到,四个地址正好对应了四种 vouch 方式。对应关系如下,
如果自己的应用中希望有更精细的控制,也完全可以实现对应的验证函数。
在自己的应用中使用 Vouch 系统,是不是很简单呢。赶紧在自己的应用中构建抗女巫攻击的保护吧!
免责声明:本文不代表 PermaDAO 的观点或立场。PermaDAO 不提供投资建议,亦不为任何项目背书。请读者遵守所在国法律,合规进行 Web3 活动。
🔗 关于 PermaDAO:Website | Twitter | Telegram | Discord | Medium | Youtube
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!