Project Icon

amethyst

基于Nostr协议的安卓去中心化社交应用

Amethyst是基于Nostr协议的安卓去中心化社交应用。它支持事件订阅、私密消息、公共聊天和闪电网络支付等功能。通过端到端加密保护用户隐私,让用户掌控社交数据。作为开源项目,Amethyst持续更新以支持Nostr最新规范,提供安全自由的社交体验。

紫水晶标志

紫水晶

Android 版 Nostr 客户端

加入你能控制的社交网络。

GitHub 下载量 PlayStore 下载量

最新版本 JitPack 版本 CI 许可证: Apache-2.0

下载并安装

在 Obtaininum 上获取 在 GitHub 上获取 在 F-Droid 上获取 在 Google Play 上获取

支持的功能

  • 事件 / 中继订阅 (NIP-01)
  • 关注列表 (NIP-02)
  • OpenTimestamps 证明 (NIP-03)
  • 私人消息 (NIP-04)
  • DNS 地址 (NIP-05)
  • 助记词种子短语 (NIP-06)
  • 网页浏览器签名器 (NIP-07, 不适用)
  • 旧式提及 (NIP-08)
  • 事件删除 (NIP-09)
  • 回复、提及、主题和通知 (NIP-10)
  • 中继信息文档 (NIP-11)
  • 通用标签查询 (NIP-12)
  • 工作量证明显示 (NIP-13)
  • 工作量证明计算 (NIP-13)
  • 带主题的事件 (NIP-14)
  • 市场 (NIP-15)
  • 事件处理 (NIP-16)
  • 私人直接消息 (NIP-17)
  • 图片/视频/网址/闪电网络发票预览
  • 转发、引用、通用转发 (NIP-18)
  • Bech 编码支持 (NIP-19)
  • 命令结果 (NIP-20)
  • URI 支持 (NIP-21)
  • 长文内容 (NIP-23)
  • 用户资料字段 / 中继列表 (NIP-24)
  • 反应 (NIP-25)
  • 委托事件签名 (NIP-26, 不会实现)
  • 文本注释引用 (NIP-27)
  • 公共聊天 (NIP-28)
  • 基于中继的群组 (NIP-29)
  • 自定义表情 (NIP-30)
  • 事件类型摘要 (NIP-31)
  • 标签 (NIP-32)
  • 参数化可替换事件 (NIP-33)
  • Git 相关 (NIP-34)
  • 种子 (NIP-35)
  • 敏感内容 (NIP-36)
  • 编辑 (NIP-37/草案)
  • 用户状态事件 (NIP-38)
  • 外部身份 (NIP-39)
  • 过期支持 (NIP-40)
  • 中继认证 (NIP-42)
  • 版本化加密载荷 (NIP-44)
  • 事件计数 (NIP-45, 不会实现)
  • Nostr 连接 (NIP-46)
  • 钱包连接 API (NIP-47)
  • 代理标签 (NIP-48, 不适用)
  • 私钥加密导入/导出 (NIP-49)
  • 在线中继搜索 (NIP-50)
  • 列表 (NIP-51)
  • 日历事件 (NIP-52)
  • 实时活动和实时聊天 (NIP-53)
  • 维基 (NIP-54)
  • 内联元数据 (NIP-55 - 草案)
  • 举报 (NIP-56)
  • 闪电网络打赏
  • 闪电网络打赏 (NIP-57)
  • 私人闪电网络打赏
  • 闪电网络打赏分割 (NIP-57)
  • 徽章 (NIP-58)
  • 礼物包装和封印 (NIP-59)
  • 打赏筹款 (NIP-TBD)
  • 中继列表元数据 (NIP-65)
  • 投票 (NIP-69)
  • 视频事件 (NIP-71)
  • 管理社区 (NIP-72)
  • 打赏目标 (NIP-75)
  • 任意自定义应用数据 (NIP-78)
  • 高亮 (NIP-84)
  • 通知请求 (NIP-88/草案)
  • 推荐应用处理程序 (NIP-89)
  • 数据自动售货机 (NIP-90)
  • 内联元数据 (NIP-92)
  • 可验证文件 URL (NIP-94)
  • 二进制大对象 (NIP-95/草案)
  • HTTP 文件存储集成 (NIP-96)
  • HTTP 认证 (NIP-98)
  • 分类广告 (NIP-99)
  • 音频轨道 (zapstr.live) (类型:31337)
  • 推送通知 (Google 和统一推送)
  • 设备内自动翻译
  • 标签关注和自定义标签
  • 二维码登录
  • 悬赏支持 (nostrbounties.com)
  • 去谷歌化的 F-Droid 版本
  • 多账户
  • Markdown 支持
  • 医疗数据 (NIP-xx/草案)
  • 嵌入事件 (NIP-xx/草案)
  • 草稿事件 (NIP-xx/草案)
  • 事件集 (NIP-xx/草案)
  • 主题笔记 (NIP-xx/草案)
  • 关系状态 (NIP-xx/草案)
  • 签名过滤器 (NIP-xx/草案)
  • 密钥迁移 (NIP-xx/草案)
  • 基于时间的同步 (NIP-xx/草案)
  • 应用内图片/视频捕获
  • 本地数据库
  • 工作区
  • 无限滚动

隐私和信息永久性

中继知道你的 IP 地址、你的名字、你的位置(从 IP 猜测)、你的公钥、你所有的联系人和其他中继,并且可以读取你的每一个操作(发帖、点赞、转发、引用、举报等),除了私人闪电网络打赏和私人直接消息。虽然直接消息(DM)的内容只对你和你的 DM 对方可见,但每个人都可以看到你和你的对方何时进行 DM。

如果你想提高隐私性,请考虑使用能够从在线跟踪器隐藏你的 IP 地址的服务(例如 VPN 或 Tor)。

中继还会了解你正在请求哪些公钥,这意味着你的公钥将与你的 IP 地址绑定。

在 Nostr 上共享的信息可能会被重新广播到其他服务器,出于隐私考虑应该假设这些信息是永久的。一旦发布,就无法保证删除任何内容。

开发概述

这个仓库分为 Amethyst 和 Quartz 两部分:

  • Amethyst 是一个使用 Kotlin 和 Jetpack Compose 制作的原生 Android 应用。
  • Quartz 是我们自己的 Nostr 通用库,用于托管对其他 Nostr 客户端有用的类。

应用架构包括使用常见的 State/ViewModel/Composition 的 UI,连接 Nostr 中继的服务层, 以及将所有 Nostr 对象保存在内存中完整面向对象图中的模型/仓库层。

仓库层将 Nostr 事件分别存储为 Notes 和 Users。这些类使用 LiveData 和 Flow 对象, 允许 UI 和应用的其他部分订阅每个 Note/User 并在发生变化时接收更新。 它们还负责在需要时更新 viewModels。当用户滚动浏览事件时,Datasource 类 会更新以接收有关这些特定事件的更多信息。

大部分 UI 对仓库类的变化做出反应。服务层为应用的每个需求组装 Nostr 过滤器, 从中继接收数据,并将其发送到仓库。在使用应用期间,与中继的连接从不关闭。 UI 收到对象已更新的通知。User 和 Notes 的实例是可以直接修改的。 永远不会有两个具有相同 ID 的 Notes 或两个具有相同公钥的 User 实例。

最后,用户的账户信息(私钥/公钥)存储在 Android KeyStore 中以确保安全。

设置

确保安装以下前提条件:

  1. Java 17+
  2. Android Studio
  3. Android 8.0+ 手机或模拟器设置

fork 并克隆此仓库,然后将其导入 Android Studio

git clone https://github.com/vitorpamplona/amethyst.git

使用 Android Studio 构建操作在你的设备或模拟器上安装并运行应用。

构建

构建应用:

./gradlew assembleDebug

测试

./gradlew test
./gradlew connectedAndroidTest

代码格式化

./gradlew spotlessCheck
./gradlew spotlessApply

在设备上安装

对于F-Droid版本:

./gradlew installFdroidDebug

对于Play版本:

./gradlew installPlayDebug

部署

  1. 生成新的签名密钥
keytool -genkey -v -keystore <my-release-key.keystore> -alias <alias_name> -keyalg RSA -keysize 2048 -validity 10000
openssl base64 < <my-release-key.keystore> | tr -d '\n' | tee some_signing_key.jks.base64.txt
  1. 在您的GitHub仓库中创建四个密钥变量并填写签名密钥信息
    • KEY_ALIAS <- <alias_name>
    • KEY_PASSWORD <- <您的密码>
    • KEY_STORE_PASSWORD <- <您的密钥库密码>
    • SIGNING_KEY <- 来自<my-release-key.keystore>的数据
  2. amethyst/build.gradle中更改versionCodeversionName
  3. 提交并推送。
  4. v{x.x.x}标记提交
  5. Create Release GitHub Action构建一个新的aab文件。
  6. 将您的更新日志添加到新版本的描述中
  7. 下载aab文件并上传到PlayStore。

使用Quartz库

在构建文件中设置JitPack.io

在settings.gradle的repositories末尾添加maven { url 'https://jitpack.io' }

dependencyResolutionManagement {
  repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
  repositories {
    mavenCentral()
    maven { url 'https://jitpack.io' }
  }
}

添加依赖

implementation('com.github.vitorpamplona.amethyst:quartz:v0.85.1')

贡献

可以在以下地址提交问题:https://gitworkshop.dev/repo/amethyst

这里也欢迎GitHub问题拉取请求。可以通过Crowdin提供翻译。

您还可以使用GitStr通过Nostr将补丁发送到这个nostr地址

通过对此仓库做出贡献,您同意根据MIT许可证许可您的工作。任何非您原创的贡献工作都必须包含其原始作者和来源的许可证头。

截图

关注源聊天组直播通知
主页源消息直播通知

贡献者

MIT许可证

版权所有 (c) 2023 Vitor Pamplona

特此免费授予任何获得本软件及相关文档文件("软件")副本的人不受限制地处理本软件的权利,
包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,
并允许向其提供本软件的人这样做,但须符合以下条件:

上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中。

本软件按"原样"提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性的保证。
在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,
无论是在合同诉讼、侵权行为还是其他方面,由软件或软件的使用或其他交易引起、产生或与之相关。
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号