amethyst

amethyst

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

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

AmethystNostr安卓客户端社交网络开源Github开源项目
<div align="center"> <a href="https://amethyst.social"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/45fc24a0-1673-4c65-8987-a71c69e223be.svg" alt="紫水晶标志" title="紫水晶标志" width="80"/> </a>

紫水晶

Android 版 Nostr 客户端

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

GitHub 下载量 PlayStore 下载量

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

下载并安装

<img src="https://yellow-cdn.veclightyear.com/835a84d5/7fde6480-0d10-44f4-9349-343f4370b5c9.png" alt="在 Obtaininum 上获取" height="70"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/8c7d3127-14a1-4154-99e2-71b18059f0d9.png" alt="在 GitHub 上获取" height="70"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/4fd6639a-c1ac-4041-b720-eaf2a28607f2.png" alt="在 F-Droid 上获取" height="70"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/eef8a31f-98f8-4696-9a23-1d0773c1ea96.png" alt="在 Google Play 上获取" height="70">

</div>

支持的功能

<img align="right" src="https://yellow-cdn.veclightyear.com/835a84d5/97e3cca8-a76c-4903-aca9-98270a8baf59.png" data-canonical-src="./docs/screenshots/home.png" width="350px">
  • 事件 / 中继订阅 (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许可证许可您的工作。任何非您原创的贡献工作都必须包含其原始作者和来源的许可证头。

截图

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

贡献者

<a align="center" href="https://github.com/vitorpamplona/amethyst/graphs/contributors"> <img src="https://contrib.rocks/image?repo=vitorpamplona/amethyst" /> </a>

MIT许可证

<pre> 版权所有 (c) 2023 Vitor Pamplona 特此免费授予任何获得本软件及相关文档文件("软件")副本的人不受限制地处理本软件的权利, 包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利, 并允许向其提供本软件的人这样做,但须符合以下条件: 上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中。 本软件按"原样"提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性的保证。 在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责, 无论是在合同诉讼、侵权行为还是其他方面,由软件或软件的使用或其他交易引起、产生或与之相关。 </pre>

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多