构建 Labeler NearBy
Table of Contents
我第一次的黑客马拉松
在 2022 年夏季的后期,我非常想参与一个令人兴奋的项目。我刚刚完成本科学业,并全职担任软件工程师。我真的很想投入一个副项目,而那时我有足够的空闲时间来做到这一点。我真的不知道该做什么,直到我在 2022 年 8 月发现了一个名为 Devpost 的网站。Devpost 是一个举办软件竞赛的黑客马拉松网站。在浏览 Devpost 时,我发现了一个名为 NEAR MetaBUILD III 的黑客马拉松,这是由 NEAR Protocol 组织主办的。
什么是 NEAR?
NEAR Protocol 是一个支持智能合约的区块链和 NEAR 加密货币。它主要以非常低的交易费用、支持智能合约、拥有自己的官方测试网络以及由于可以使用 Rust 和/或 JavaScript 编写智能合约而拥有良好的开发环境而闻名。您可以通过 CoinGecko 的精彩视频更好地了解 NEAR Protocol:
在此期间,Coinbase 正式开始在其平台上支持 NEAR Protocol 作为可交易的币种。这是一个大事件,因为 Coinbase 在支持哪些币种方面非常挑剔。这有助于使 NEAR 成为一个更值得信赖的平台。直到今天,您仍然可以在 Coinbase 上交易 NEAR。
为什么要投入?
经过一段时间的思考,我决定将我的时间投入到 NEAR MetaBUILD III 黑客马拉松的比赛中。我的理由如下:
- 加密货币不会消失,是一种将持续存在的技术。因此,花时间学习这项技术是有意义的。
- 该黑客马拉松有很好的奖励,获胜者可以获得 20,000 到 100,000 美元不等的 NEAR 奖励。
- 该黑客马拉松有一个具体的截止日期,这意味着项目不能像许多副项目那样拖延数月。
- 这个项目将是一个很好的学习经验,也是对黑客马拉松的一个很好的介绍。
- 最坏的情况是,这个黑客马拉松将让我制作一个很好的项目,以便在我的简历上展示。
考虑到这一切,我在 2022 年 8 月 26 日给我大学的好朋友打了电话,我们开始为这个黑客马拉松进行规划。黑客马拉松定于 2023 年 9 月 23 日开始,并于 2022 年 11 月 21 日结束。尽管截止日期在黑客马拉松结束时延长到了 2023 年 11 月 24 日。由于我们提前一个月,我们决定利用这段时间学习和头脑风暴我们将在这两个月的黑客马拉松中工作的内容。在第一个月中,我们对加密货币和区块链有了一个大致的了解。我们在 NEAR 的测试网上进行了审查和实践,审查了 NEAR SDK,并部署了一些智能合约。
想法
在对区块链和 NEAR 的所有内容有了很好的介绍后,我们开始进行头脑风暴。我希望这个项目不仅仅是一个“黑客马拉松项目”,而是一个可以成为其他人使用的产品,并作为加密货币如何在交易之外的事情中发挥作用的示例。
考虑到这一点,我们最初决定创建类似于虚幻引擎蓝图的东西,但用于在 NEAR 区块链上轻松创建和部署智能合约,而无需编码。然而,在黑客马拉松开始前一周,我们放弃了这个想法,因为这根本没有意义。如果没有实际的用例,为什么还要使用我们的工具来创建 NEAR 智能合约呢?这就像开发一个许多人不需要的工具。
在黑客马拉松开始前仅剩一周的时间,我们再次进行了头脑风暴,并确定了这个想法:
一个去中心化的平台,AI 研究人员可以将数据标注外包给全球的标注者
我们将项目命名为“Labeler NearBy”。我们选择这个想法的原因如下:
- AI 开发需要人类对数据进行标注以进行训练。
- 找到和管理具备特定数据集标注技能的个人是具有挑战性的。
- 这个想法已经被一家名为 Scale AI 的公司成功实施,证明了他们找到了产品市场契合点。
- 像 Scale AI 这样的集中服务存在问题,因为组织必须将数据发送给标注公司,然后由该公司将人类标注者外包到全球。标注过程完成后,公司将标注好的数据返回给组织。这放弃了对有价值的训练数据的控制,这些数据可能被标注公司用来训练自己的模型。去中心化这个服务似乎是一个合乎逻辑的解决方案。
- 我们发现去中心化应用(dApp)领域中很少有项目在做这个想法,为我们提供了创新和开拓这一领域的机会。
为了减少复杂性,我们决定 Labeler NearBy 目前只支持图像数据。
提交
在确定了想法并正式开始黑客马拉松后,我和我的朋友开始构建 Labeler NearBy。我们在这个项目上工作了 2 个月,直到 2022 年 11 月 24 日将最终草稿提交给 Devpost。我们在 Devpost 上提交了我们的项目,并在 Github 上创建了提交的副本。这个博客没有涵盖 Labeler NearBy 的每一个技术细节和开发过程。了解更多关于 Labeler NearBy 的工作原理或查看我们的最终提交,请访问以下链接之一:
Labeler NearBy 由两个代码库组成:ln-researcher 和 ln-labeler。这些代码库完全开源,采用 MIT 许可证,可以通过以下链接查看:
以下是 Labeler NearBy (LN) 的一般工作概述:
研究人员需要标注图像以训练他们的 AI 模型。为此,研究人员利用 LN 托管他们的数据,并为标注者提供标注数据的方式。这是通过 ln-researcher 实现的,这是一个自托管的网络服务,包含 API、研究人员的智能合约和本地 Postgres 数据库。对于标注者,提供了一个网页前端,使他们能够访问和标注研究人员的图像。在标注过程中,一张图像由不同的标注者标注三次。只有通过投票系统确定的最佳标注者会获得 NEAR 代币。负责此过程的网络应用程序称为 ln-labeler。研究人员为每个标注操作提供资金,NEAR 代币可以通过 Coinbase 容易地转换为美元。所有交易物流由托管在 NEAR Protocol 区块链上的智能合约处理。
您可以在这里查看我们为黑客马拉松制作的 Labeler NearBy 演示视频:
最大成就
我最自豪的实现功能是一个名为 getImage() 的函数。这个函数作为 ln-researcher 中的 API 端点,在 Labeler NearBy (LN) 中在研究人员和标注者之间的数据管道中发挥着至关重要的作用。
这个 API 端点使研究人员能够安全可靠地分发他们的图像以进行标注。标注任务通过 NEAR Protocol 区块链上的 NEAR 智能合约进行管理,而图像数据则由研究人员通过 ln-researcher 托管。
该端点执行一系列安全检查,以确保只有指定的标注者可以访问图像。这包括验证请求的签名并检查相关的智能合约,以确认任务的存在及其分配给请求的标注者。
一旦请求在研究人员自托管的 ln-researcher API 中得到验证,该函数将从本地 Postgres 数据库中检索图像,进行加密,并将其交付给授权的标注者,后者可以解密图像进行标注。同时,该函数更新数据库中图像的状态,指示图像标注的进度。在整个过程中,研究人员和标注者的 RSA 密钥用于身份验证。而 AES 加密用于加密图像。
这个端点在管理研究人员与标注者之间图像的安全和受控分发中发挥着关键作用。它确保安全的数据传输,并有效跟踪和管理图像标注过程。此外,这个过程有可能消除使用 HTTPS 的需要,至少对于这个端点来说。
这个特定的端点/函数经过测试并证明是功能正常的。以下是一个图示,说明了 Labeler NearBy 的整体功能,包括上述端点/函数的清晰描述:
结果
遗憾的是,悲伤的现实是我们未能在黑客马拉松的截止日期之前完全完成这个项目。大部分项目已经完成,例如ln-researcher,但前端(ln-labeler)尚未完成,我们无法部署实时演示。尽管后端(ln-researcher)基本完成,但由于没有正常工作的前端和实时演示,没有人能够尝试Labeler NearBy的想法。不仅如此,评委们也无法尝试这个项目,而不得不阅读提交的材料,查看代码,和/或尝试自己运行。这使得我们获胜的机会几乎降到了零。2022年12月15日黑客马拉松获胜者公布时,这一点得到了证实,而我们并不在其中。
失落
我不会隐瞒这个黑客马拉松的最终结果令人沮丧。这个项目投入了几个月的时间,我对这个项目有着宏大的愿景,因为我认为它将为研究人员提供一个非常有用的工具。
我对我所承担的项目有一个明确的标准:要么成功,要么失败;没有中间地带。因此,这个项目是失败的,因为它在截止日期之前没有完全完成,并且对潜在用户仍然不可访问。
但重要的是要记住,失败是生活中自然的一部分。我们的成功是建立在我们从失败中学到的教训之上的。虽然这个黑客马拉松的结果令人沮丧,但在开发和构建项目/产品方面,它仍然提供了宝贵的见解。
学到的教训
我从这次经历中得到的主要教训如下:
- 我们选择的项目需要在我们能够迭代之前构建很多功能。我这是什么意思呢?这个项目几乎需要将想法的所有组件都构建出来,才能测试这个想法。选择一个功能组件较少的项目会更有意义。这样,我们可以更快地构建基本组件,然后更早地迭代项目。这样,我们可以更容易地赶上截止日期,并制作一个可能更简单但更完整的项目。YC,一个科技创业加速器,强调你应该快速发布,与用户交谈,并迭代。我们应该在这个黑客马拉松的项目中做到这一点。
- 我们低估了这个项目的构建时间。这是我们的第一次黑客马拉松,也是我们第一次制作去中心化应用程序(dapp)。不仅如此,我全职作为软件工程师工作,而我的朋友正在完成他的硕士学位。然而,我们认为两个月就足够了。减少项目范围和/或找到一个可以减轻我们工作负担的团队成员会更有意义。
- 温斯顿·丘吉尔曾说过:“完美是进步的敌人”。我把这个项目当作一个面向消费者(B2C)的产品来对待,而实际上这只是一个黑客马拉松项目,充其量是一个最小可行产品(MVP)。因此,在早期,我在小细节上浪费了太多时间,而我应该把时间集中在使核心功能正常工作上。
除了这些宝贵的教训,我还获得了在我个人的副项目和职业努力中证明非常宝贵的新技能。这些技能包括:
- 通过Node.js、JavaScript和Express.js开发API
- 设置和使用PostgreSQL进行数据管理
- 通过使用像PG这样的包将PostgreSQL纳入API开发
- 利用RSA(非对称加密)和AES(对称加密)增强数据安全性。
结论
总的来说,我很高兴我们参加了这个黑客马拉松,尽管对最终结果感到失望。我对在Labeler NearBy工作期间获得的宝贵教训和技能心怀感激,因为它们让我成为了更好的开发者,并对我下一个项目的开发产生了重大贡献:Notify-Cyber。
其他说明
- 我可能会回到Labeler NearBy,但目前这个项目处于“长期休眠”状态
- 目前,Labeler NearBy只能在NEAR的测试网中运行。它需要进一步的开发、测试和审计。