大约三年前,我回忆起自己小时候非常喜欢玩Neopets的时光。同时,我也在寻找一个项目,以更好地学习Rust和SolidJS。因此,我想制作自己的虚拟宠物浏览器游戏,这将是一个有趣的练习方式!从那时起,我几乎每天都在进行这个项目,并且它已经发展得相当不错!以下是一些方便的要点:
**技术细节:**
- 后端单体Rust服务器运行在一个每月5美元的VPS上
- 前端精简,仅有3个依赖(SolidJS、Solid Router和Mutative)
- 前后端代码总行数约为130,000行
- Rust服务器使用axum、sqlx、tokio、rand、strum和tungstenite(WebSocket)
- 过去三年没有发生过服务器崩溃或数据丢失(感谢Rust和Postgres!)
- 几乎所有图形(500多个资产)都是SVG格式,确保在每个缩放级别下都能完美细致
- 完全响应式,能够在所有现代浏览器和设备上流畅运行
- 玩家行为采用Actor模型,支持轻松的并行多核扩展
- 单页面应用程序在初始页面加载时预加载整个游戏世界
- 页面之间的导航瞬时完成(无需额外的页面请求)
- 轻量级游戏引擎用于迷你游戏,由自定义WebGL着色器驱动
- Rust是浏览器和服务器之间共享数据结构的唯一真实来源
- 使用自定义派生宏自动生成TypeScript绑定和二进制解码函数
- 使用自定义协议的二进制WebSocket消息进行客户端与服务器的通信
- O(1)选择用于嵌套的加权随机物品奖励池
- 迷你游戏可以在没有账户的情况下进行(但奖励无法保存)
**功能:**
- 完全免费游玩,无广告或追踪
- 多人浏览器虚拟世界,拥有80多个可探索地点
- 暗黑模式切换开关
- 简单的迷你游戏,能够顺畅运行于您的显示器刷新率
- 公共排行榜,跟踪每个迷你游戏的高分
- 宠物训练系统,基于回合制的卡牌战斗竞技场
- 动态玩家经济,玩家经营商店
- 玩家公会,成员可以升级以解锁特权
- 由迷宫生成算法创建的废弃矿井区域
- 创建/收养宠物,为它们装饰帽子、给予它们宠物、改变颜色等
- 220种可收集物品(食物、玩具、化妆品、书籍、护身符、小生物等)
- 游戏内货币,包含银行、拍卖、股票市场和工作系统
- 可以交谈、交朋友并完成任务和工作的村民
- 可选的推送通知(例如,当您赢得拍卖时)
- 38个成就头像可解锁
- 社交功能:与他人交朋友、发送礼物、分享您的近期活动
- NPC商店会随着时间重新补货(有时会有非常稀有的物品!)
- 幸运系统,提供提升运气以获得更好奖励的方法
- 许多谜题,解决后可获得物品或MP(货币)
- 钓鱼、园艺、洞穴、随机事件、喷泉、画廊等
- 旋转轮盘、完成藏宝图和探索秘密!
- 还有很多很多内容,但我不想剧透一切!
**链接:**
- 网站网址:https://mochia.net
- 社区Discord:https://discord.gg/ub6z8YH866
- 游戏视频:https://www.youtube.com/watch?v=CC6beIxLq8Q
- 截图相册:https://imgur.com/a/FC9f9u3
我非常乐意回答任何问题,听取任何想法,或阅读任何反馈或批评!
返回首页
最新
出于明显的原因,我使用了匿名账号。我刚开始了一份短期的开发合同,注意到前方有一些障碍,我担心这可能会妨碍我们交付产品的能力。
该组织面向一个非常小众的奢侈市场,分发一款高价的本地应用程序。公司的高管们对软件在每次发布后出现的裂缝感到非常不安。问题在于,我们目前的本地应用架构意味着攻击者已经拥有了根权限,我们无法保护任何关键数据。此外,还有一些特定领域的原因使得某些用户在某些时候总是需要远程访问。虽然我希望鼓励该组织最终转向我们可以保护的客户端-服务器架构,但提供远程副本的需求意味着我们所能做的只是通过模糊安全创建难题盒子,这对攻击者来说解锁的成本(从他们的小时费率来看)比我们创建的成本要低。
我认为他们对这些裂缝的出现反应过度,推动开发团队在软件中引入更多检查,从而损害了生产力,甚至可能影响软件的稳定性,同时也未能解决问题。
举个我担心的例子;我最近和一位开发人员谈到一个依赖问题,其中一些额外的许可证检查被嵌入到用户界面中,我鼓励将这些检查提取到特定层次。对方回答说:“如果我们把所有许可证检查放在同一个地方,这不是更容易被破解吗?”
我意识到这可能是一个警示信号,我应该撤退,但我相信自己是一个有说服力的人,我想尝试一下。他们有点老派,所以我觉得需要采取温和的方式。大多数情况下,我想尝试将问题重新框定为“社会问题”而不是“技术问题”,更少关注通过模糊安全增加更多安全性,而是更多关注追踪泄漏的来源,并通过许可证协议来执行后果。
因此,我恳请大家帮助我实现这个目标。我想你们中的一些人可能以前遇到过这种情况,有经验可以借鉴,或者可能知道我可以利用的各种资源。我想到的一个例子是大型在线游戏公司在市场中面临的瞄准机器人或其他作弊问题,在这些市场中,黑客的价值接近于零,而工程部门为防御所投入的资源却很高;这表明这种方法的徒劳。然而,我有点担心,由于他们的老派风格,游戏可能不是他们会接受的例子。
相反,如果有人对简单的模糊处理和/或硬件加密狗之外的简单解决方案有任何建议,我也将非常感激,因为如果我能从他们的角度提出一些超越典型收益递减曲线的建议,这可能会有所帮助。
嗨,HN,我是Ben,来自K-Scale Labs([https://kscale.dev](https://kscale.dev))。我们正在开发开源的人形机器人。
硬件视频:[https://www.youtube.com/watch?v=qhZi9rtdEKg](https://www.youtube.com/watch?v=qhZi9rtdEKg)
软件视频:[https://www.youtube.com/watch?v=hXi3b3xXJFw](https://www.youtube.com/watch?v=hXi3b3xXJFw)
文档:[https://docs.kscale.dev](https://docs.kscale.dev)
Github:[https://github.com/kscalelabs](https://github.com/kscalelabs)
五月份的HN讨论串:[https://news.ycombinator.com/item?id=44023680](https://news.ycombinator.com/item?id=44023680)
我创办K-Scale是因为我非常想要一个可以进行改造的人形机器人,所以我知道如果我造出一个,至少会有一个客户。在Unitree G1发布之前,当时最便宜的选择价格超过5万美元,但我认为我可以用大约1万美元的现成组件(COTS)来制造一个,这对独立开发者和黑客来说会是一个更好的价格。
我们使用一些3D打印机和我从亚马逊和阿里巴巴购买的零件构建了第一个版本。虽然效果不佳,但这让我们能够建立完整的流程,从设计和制造硬件到在仿真中训练控制策略。实际上,我们在大约两个月内完成了大部分工作,并在YC Demo Day时有了一个站立并挥手的机器人(尽管它的其他功能不太好用)。
从那时起,我们的重点一直是如何将一款业余级机器人转变为消费级机器人,而不增加我们的材料清单(BOM,即所有零件的成本)或建立自己的工厂。这是相当困难的。目前,许多机器人组件的供应链都经过中国,但关税使得依赖中国供应商变得困难。此外,即使是1万美元的价格,对于大多数客户来说,拥有一款功能相对有限的人形机器人仍然相当昂贵。
我们的解决方案是开源我们的硬件和软件。这使我们更容易应对关税和制造挑战。通过公开我们的参考设计,供应商能够更轻松地为我们提供具有竞争力的解决方案,而我们的制造合作伙伴也能更容易地根据他们的生产流程调整我们的设计。
在需求方面,人形机器人的基本问题是它们现在大多无用,而使它们变得有用的过程可能是漫长且资本密集的。我预期有一大批像我一样对人形机器人感兴趣的黑客,这个客户群体比传统的商业机器人应用更具潜力。作为这个客户群体的一员,我认为开源软件和硬件将是一个强有力的价值主张,尤其是对那些希望将人形机器人引入自己业务领域的开发者。
从更哲学的角度来看,我认为拥有一款优秀的开源人形机器人是非常重要的。我认为这项技术可能会比许多人目前预期的更快成熟,而由某个单一公司拥有的大量人形机器人四处走动的想法则显得相当反乌托邦。
目前,我们正在以8999美元的价格出售我们的基础人形机器人K-Bot。我们现在出售它的主要原因,而不是等待更多的研发,是因为我们希望在进行最终的制造设计(DfM)之前,与我们的供应商谈判批量价格。例如,我们能够为执行器和末端执行器谈判比普通独立开发者在小批量订单中能获得的更好的批量定价。
然而,许多今天想要购买人形机器人的人是因为他们希望拥有一个完全自主的机器人来完成所有家务,这是一项相当困难(但令人兴奋)的任务。为了解决这个问题,我们提供了一个“完全自主”选项——它是相同的机器人硬件,但我们将提供免费的硬件和软件升级,直到我们能够使机器人完全自主。这样,我们可以提前获得一些资金来启动开发,并开始建立一个核心团队,帮助我们在多样化的环境中提升机器人的能力。从客户的角度来看,这是一种降低从一家年轻硬件公司购买第一代产品风险的方式,并且能够对技术的发展产生更大的影响。
构建开源软件和硬件的最佳部分是被比我们更聪明的人拆解,因此我们非常期待您的反馈!
证书透明度系统保护您免受恶意HTTPS证书的侵害。当CT日志具有可预测的私钥时,整个网络公钥基础设施(PKI)安全模型就会崩溃。这会影响到日志曾经签署的每一个证书——无论是过去、现在还是未来。
我报告了Google Chrome信任的证书透明度基础设施中的安全漏洞,但他们将其视为“非漏洞”,在未征得我同意的情况下公开了我的私人报告,然后在数小时后默默实施了我的修复措施。
发现:
在基准测试时,我使用了命令 `echo " " > seed.bin`(32个空格)。Sunlight接受了这个输入,并为CT日志生成了有效但可预测的私钥。没有任何警告,也没有错误。
为什么这很重要:
1. 操作员正确执行:`cat /dev/urandom > seed.bin`
2. 文件系统损坏使种子文件填充为零或空格(在生产环境中会发生)
3. Sunlight默默地从损坏的种子生成可预测的密钥
4. CT日志“正常”运行——有效的签名,没有错误
5. 任何知道损坏情况的人都可以重建私钥
没有校验和,即使是完美的操作员也会被默默地妥协。这是保护HTTPS证书的PKI基础设施。
这并不是假设——文件系统损坏在生产系统中是常见的。电力故障、内核崩溃和存储故障经常导致部分写入和空字节。
谷歌的回应:
- “不是漏洞”:https://groups.google.com/a/chromium.org/g/ct-policy/c/qboz9s8b9j8/m/B6JXa2q1BAAJ
- 未经同意发布了我的私人安全报告
- 数小时后实施了我的确切修复
- https://github.com/FiloSottile/sunlight/commit/f62f9084016c4c377d3855471720d7d0cdea3663
- https://github.com/FiloSottile/sunlight/commit/32cc3ea2524e89f93febb967683c6467753f484d
- 因指出矛盾而禁止我发言:https://groups.google.com/g/certificate-transparency/c/u8SsXgSFbz4/m/14ePyeCrBAAJ
额外的漏洞:
他们使用用户代理字符串进行身份验证。任何人都可以伪造这些头信息,以绕过速率限制并压垮服务:
- https://github.com/FiloSottile/sunlight/blob/main/cmd/skylight/skylight.go#L176
- https://github.com/FiloSottile/sunlight/blob/main/cmd/skylight/skylight.go#L148
这是今天被Google Chrome信任的生产代码(https://www.gstatic.com/ct/log_list/v3/all_logs_list.json),请查看“sunlight”日志。
导致我被禁止的确切邮件在这里:https://groups.google.com/g/certificate-transparency/c/u8SsXgSFbz4/m/14ePyeCrBAAJ - 请自行判断这是否违反了任何合理的行为准则。
是否还有其他人因负责任的安全披露而遭到报复?我们如何修复一个在报告漏洞时会被禁止,而问题却被悄悄修复的系统?