
搜索引擎Typesense的使用
注: 使用语言 python一:Typesense介绍Typesense将数据保存在磁盘当中,建立的索引保存内存中 Typesense是一个开源的、有容错能力的搜索引擎,针对实时(通常低于 50 毫秒)搜索即键入体验和开发人员生产力进行了优化。 Typesense做了一个对于其他搜索引擎的对比。(文档版,表格版) 索引数据速度以及资源占用: 对于220万份食谱(一份食谱相当于下文中提到的一个document)在 Typesense 中进行索引时占用了大约 900MB 的 RAM(内存)花了 3.6 分钟索引所有 220 万条记录在具有 4 个 vCPU 的服务器上,Typesense 每秒能够处理104 个并发搜索查询,平均搜索处理时间为11毫秒。RAM(内存)方面:如果数据量为 X MB大小,则需要占用2X-3XRAM(2-3倍数据量大小的占用) 如需深入了解可以查阅官方文档二:Typesense的用法1:使用typesense有两种方法使用自带的云服务,配置运行简单(收费)在本地安装typesense,自己维护配置(本文使用这种方法)2:安装启动typesense(1):下载...

Mastodon 和 Nostr:两种不同的社交产品,一样的去中心化愿景
概述:本文将分析和讲解Mastodon和Nostr这两个社交媒体平台,重点关注它们的产品应用和技术层面,以了解它们如何实现去中心化社交,并探讨它们在这方面的优势。我们将深入了解它们的架构设计和实现思路,并比较它们在用户体验、隐私保护、安全性等方面的差异。通过本文的分析和总结,读者将更好地了解这两个平台,以及它们在去中心化社交方面的贡献和发展。MastodonMastodon(长毛象)成立于2016年,是由Eugen Rochko创建的一个开源的微博客(microblog)平台,旨在为用户提供去中心化、隐私保护的社交体验。首先对涉及到的一些名词进行简单解释:联邦(federation):联邦是去中心化的一种形式。在联邦中,不是所有人共同使用一个中心服务,而是使用多个不限人数的服务器。ActivityPub:Mastodon使用一种标准化的、开放的协议来实现站点之间的互动,这种协议叫做ActivityPub。任何通过ActivityPub实现互联的软件都可以与Mastodon无缝通信,就像Mastodon站点之间的通信一样。实例(instance):每个人都可以在自己服务器上配置运行...

使用 The Graph 获取各大元宇宙项目交易信息
The graph 工作原理 Graph 根据subgraph描述(称为subgraph.graphq)学习什么以及如何索引以太坊数据。子图描述定义了subgraph感兴趣的智能合约,这些合约中要关注的事件,以及如何将事件数据映射到 The Graph 将存储在其数据库中的数据。该流程遵循以下步骤:去中心化应用程序通过智能合约上的交易将数据添加到以太坊。智能合约在处理交易时发出一个或多个事件。Graph Node 不断地扫描以太坊以寻找新的块以及它们可能包含的子图的数据。Graph Node 在这些块中为您的子图查找 Ethereum 事件并运行您提供的映射处理程序。映射是一个 WASM 模块,它创建或更新 Graph Node 存储的数据实体以响应以太坊事件。去中心化应用程序使用节点的GraphQL 端点查询 Graph 节点以获取从区块链索引的数据。Graph 节点反过来将 GraphQL 查询转换为对其底层数据存储的查询,以便利用存储的索引功能获取此数据。去中心化应用程序在丰富的 UI 中为最终用户显示这些数据,他们使用这些数据在以太坊上发布新交易。循环重复 (来自The ...

搜索引擎Typesense的使用
注: 使用语言 python一:Typesense介绍Typesense将数据保存在磁盘当中,建立的索引保存内存中 Typesense是一个开源的、有容错能力的搜索引擎,针对实时(通常低于 50 毫秒)搜索即键入体验和开发人员生产力进行了优化。 Typesense做了一个对于其他搜索引擎的对比。(文档版,表格版) 索引数据速度以及资源占用: 对于220万份食谱(一份食谱相当于下文中提到的一个document)在 Typesense 中进行索引时占用了大约 900MB 的 RAM(内存)花了 3.6 分钟索引所有 220 万条记录在具有 4 个 vCPU 的服务器上,Typesense 每秒能够处理104 个并发搜索查询,平均搜索处理时间为11毫秒。RAM(内存)方面:如果数据量为 X MB大小,则需要占用2X-3XRAM(2-3倍数据量大小的占用) 如需深入了解可以查阅官方文档二:Typesense的用法1:使用typesense有两种方法使用自带的云服务,配置运行简单(收费)在本地安装typesense,自己维护配置(本文使用这种方法)2:安装启动typesense(1):下载...

Mastodon 和 Nostr:两种不同的社交产品,一样的去中心化愿景
概述:本文将分析和讲解Mastodon和Nostr这两个社交媒体平台,重点关注它们的产品应用和技术层面,以了解它们如何实现去中心化社交,并探讨它们在这方面的优势。我们将深入了解它们的架构设计和实现思路,并比较它们在用户体验、隐私保护、安全性等方面的差异。通过本文的分析和总结,读者将更好地了解这两个平台,以及它们在去中心化社交方面的贡献和发展。MastodonMastodon(长毛象)成立于2016年,是由Eugen Rochko创建的一个开源的微博客(microblog)平台,旨在为用户提供去中心化、隐私保护的社交体验。首先对涉及到的一些名词进行简单解释:联邦(federation):联邦是去中心化的一种形式。在联邦中,不是所有人共同使用一个中心服务,而是使用多个不限人数的服务器。ActivityPub:Mastodon使用一种标准化的、开放的协议来实现站点之间的互动,这种协议叫做ActivityPub。任何通过ActivityPub实现互联的软件都可以与Mastodon无缝通信,就像Mastodon站点之间的通信一样。实例(instance):每个人都可以在自己服务器上配置运行...

使用 The Graph 获取各大元宇宙项目交易信息
The graph 工作原理 Graph 根据subgraph描述(称为subgraph.graphq)学习什么以及如何索引以太坊数据。子图描述定义了subgraph感兴趣的智能合约,这些合约中要关注的事件,以及如何将事件数据映射到 The Graph 将存储在其数据库中的数据。该流程遵循以下步骤:去中心化应用程序通过智能合约上的交易将数据添加到以太坊。智能合约在处理交易时发出一个或多个事件。Graph Node 不断地扫描以太坊以寻找新的块以及它们可能包含的子图的数据。Graph Node 在这些块中为您的子图查找 Ethereum 事件并运行您提供的映射处理程序。映射是一个 WASM 模块,它创建或更新 Graph Node 存储的数据实体以响应以太坊事件。去中心化应用程序使用节点的GraphQL 端点查询 Graph 节点以获取从区块链索引的数据。Graph 节点反过来将 GraphQL 查询转换为对其底层数据存储的查询,以便利用存储的索引功能获取此数据。去中心化应用程序在丰富的 UI 中为最终用户显示这些数据,他们使用这些数据在以太坊上发布新交易。循环重复 (来自The ...

Subscribe to Yooma

Subscribe to Yooma
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers
在 PopCraft 游戏中,每一步操作都需要上链,这导致交互时间较长,用户体验较差。
通过在 Solidity 合约中使用零知识证明 (ZKP) 加速游戏性能。具体目标是确保游戏的过程不上链,但同时防止作弊。玩家的每一步操作会生成 ZKP 证明,最后将结果证明发送到智能合约进行验证。
**游戏过程与结果的防作弊:**仅对游戏结果生成 ZKP 证明是不够的,因为游戏的过程同样存在作弊的可能性。因此,既要对结果生成证明,也需要对游戏过程进行验证。
**逐步生成证明的技术挑战:**为了防止作弊,希望可以在游戏的每一步操作后生成一个 ZKP 证明,最终在游戏结束时将最后一个证明上链进行验证。这个过程中,每一步的证明都会依赖于前一步的证明,直到游戏结束为止。但难题是:
每次生成证明时需要依赖前一步的证明,这使得验证过程复杂化以及不确定能否实现,并且验证是在合约端做,第二次生成证明时又如何去验证第一步的证明是正确的。
在智能合约端验证每个步骤的证明是否正确时,如何确保每个证明与前一个证明的连贯性,这是一个不确定的问题。
公开游戏数据的问题: PopCraft 的游戏数据是公开的,因此隐藏数据没有必要。如果上述验证步骤都能实现的话,下一步需要考虑在合约端保存游戏数据。然而,问题在于,ZKP 证明的性质无法解出具体的游戏数据,此时也不可直接相信前端传到合约的游戏结果数据,这意味着合约无法直接存储这些数据。
Token 销毁问题: 当游戏涉及到 Token 的消耗时,例如使用Token消除物质时,要销毁对应的Token,如何处理这一步ZKP 生成和验证又是一个问题。
一个可能的思路是,这一步继续按照之前的流程生成 ZKP,验证消耗的 Token 数量并最终发给合约。然而,由于 ZKP 证明无法获取具体数据,合约端无法判断应销毁的 Token 数量。此外,假设玩家拥有 3 个 Token A,却尝试在游戏中消耗 4 个,这种错误可能会在游戏结束时才被发现,而不是在用户操作的最初阶段就得到提示。
另一个可能是,在使用Token消除时,这一步直接与合约交互去销毁,然后更新Token余额,生成的证明只负责保存此时游戏操作和状态的证明。那么此时在销毁成功之后这一步还需要像前面操作一样继续生成证明,如果不生成,那么在销毁Token操作的上一步生成的证明与下一次生成的中间多了一次与合约直接交互销毁的步骤,那么证明中的游戏的状态就会冲突,这样到最后证明是否还会有效也是个疑点。
ZKP 的数据隐藏问题: PopCraft 这种公开游戏数据的场景来说,数据的隐藏,这一步是多余的,并且增加了数据获取的难度以及实现的不确定性。PopCraft只需要确保游戏过程和结果无作弊,并不需要隐匿具体数据。
在 PopCraft 这样的游戏中,数据是公开的,因此隐藏信息并不必要。为了优化游戏的用户体验,提升响应速度,可以考虑将游戏过程不上链,仅将最终结果上链。关键在于找到一种方法,确保从游戏的第一步到最后一步都没有作弊可能,最后将正确的结果上链验证即可,如果进行了隐藏反倒是增加了更多的难度。其次就是确保游戏过程不作弊,使用ZKP能确保单个的操作得到证明,但是为了加速又不会生成一段证明就提交一次交易,所以从游戏第一步到结束整个过程又如何保证。
在 PopCraft 游戏中,每一步操作都需要上链,这导致交互时间较长,用户体验较差。
通过在 Solidity 合约中使用零知识证明 (ZKP) 加速游戏性能。具体目标是确保游戏的过程不上链,但同时防止作弊。玩家的每一步操作会生成 ZKP 证明,最后将结果证明发送到智能合约进行验证。
**游戏过程与结果的防作弊:**仅对游戏结果生成 ZKP 证明是不够的,因为游戏的过程同样存在作弊的可能性。因此,既要对结果生成证明,也需要对游戏过程进行验证。
**逐步生成证明的技术挑战:**为了防止作弊,希望可以在游戏的每一步操作后生成一个 ZKP 证明,最终在游戏结束时将最后一个证明上链进行验证。这个过程中,每一步的证明都会依赖于前一步的证明,直到游戏结束为止。但难题是:
每次生成证明时需要依赖前一步的证明,这使得验证过程复杂化以及不确定能否实现,并且验证是在合约端做,第二次生成证明时又如何去验证第一步的证明是正确的。
在智能合约端验证每个步骤的证明是否正确时,如何确保每个证明与前一个证明的连贯性,这是一个不确定的问题。
公开游戏数据的问题: PopCraft 的游戏数据是公开的,因此隐藏数据没有必要。如果上述验证步骤都能实现的话,下一步需要考虑在合约端保存游戏数据。然而,问题在于,ZKP 证明的性质无法解出具体的游戏数据,此时也不可直接相信前端传到合约的游戏结果数据,这意味着合约无法直接存储这些数据。
Token 销毁问题: 当游戏涉及到 Token 的消耗时,例如使用Token消除物质时,要销毁对应的Token,如何处理这一步ZKP 生成和验证又是一个问题。
一个可能的思路是,这一步继续按照之前的流程生成 ZKP,验证消耗的 Token 数量并最终发给合约。然而,由于 ZKP 证明无法获取具体数据,合约端无法判断应销毁的 Token 数量。此外,假设玩家拥有 3 个 Token A,却尝试在游戏中消耗 4 个,这种错误可能会在游戏结束时才被发现,而不是在用户操作的最初阶段就得到提示。
另一个可能是,在使用Token消除时,这一步直接与合约交互去销毁,然后更新Token余额,生成的证明只负责保存此时游戏操作和状态的证明。那么此时在销毁成功之后这一步还需要像前面操作一样继续生成证明,如果不生成,那么在销毁Token操作的上一步生成的证明与下一次生成的中间多了一次与合约直接交互销毁的步骤,那么证明中的游戏的状态就会冲突,这样到最后证明是否还会有效也是个疑点。
ZKP 的数据隐藏问题: PopCraft 这种公开游戏数据的场景来说,数据的隐藏,这一步是多余的,并且增加了数据获取的难度以及实现的不确定性。PopCraft只需要确保游戏过程和结果无作弊,并不需要隐匿具体数据。
在 PopCraft 这样的游戏中,数据是公开的,因此隐藏信息并不必要。为了优化游戏的用户体验,提升响应速度,可以考虑将游戏过程不上链,仅将最终结果上链。关键在于找到一种方法,确保从游戏的第一步到最后一步都没有作弊可能,最后将正确的结果上链验证即可,如果进行了隐藏反倒是增加了更多的难度。其次就是确保游戏过程不作弊,使用ZKP能确保单个的操作得到证明,但是为了加速又不会生成一段证明就提交一次交易,所以从游戏第一步到结束整个过程又如何保证。
No activity yet