使用 zkGraph 实现抽奖
2023-06-20 07:07
ORA
2023-06-20 07:07
订阅此专栏
收藏此文章

0. 简介

临近 EthCC 时, 我们将为幸运的中奖者赠送一张门票.

同时, 我们意识到这是一个展示开发者可以如何用 Hyper Oracle 构建应用的好机会.

在这篇文章中,我们将展示通过基于 Hyper Oracle 的技术栈, 以以太坊智能合约和 Hyper Oracle zkGraph 为核心, 进行抽奖的完整应用流程.

你可以在这里查看应用的源码和以及区块链浏览器中的链接: https://gist.github.com/fewwwww/472a08039680bf6c79d5379c8533a2fd.

1. 开发与部署智能合约

为了让 zkGraph 实现随机数生成的计算, 我们首先需要将数据放在链上.

我们从开发一个基本的智能合约开始. 合约的核心部分会发出一个事件 (emit event), 其中会包含我们输入的随机数的种子数据.

然后我们直接将合约部署到以太坊主网 (0x65747849E7033cd1da6bF5Aeb753460F61743B18). 部署后, 我们通过调用智能合约上的一个函数, 将随机数 ( 在我们的案例中, 我们使用原始推文的转发数 ) 输入到智能合约中.

这个交易发出了我们输入的数字作为 event 数据. 你可以在区块链浏览器中看到我们刚刚发送的交易的事件数据.

2. 开发 zkGraph

我们现在知道了 event 在以太坊链上的交易哈希, 我们需要在 zkGraph 中写一个 handleEvent 函数来处理 event 数据.

在我们的 handleEvent 代码中, 有三个主要部分:

  • 从区块链 event 中获取数据
  • 对数据进行随机化
  • 输出随机化的结果

对于数据随机化, 我们通过使用今天的日期和时间来增加额外的复杂性. 在整个 zkGraph 的开发过程中, 开发人员可以自由地编写更复杂和精密的操作: 索引, 自动化, 甚至机器学习!

这个例子仅仅是通过最简的形式来展示你可以用 zkGraph 做什么. 在最后阶段, 我们部署这个 zkGraph, 使其可执行, 并生成零知识证明!

3. 部署, 运行, 并生成证明

Hyper Oracle’s MVP 是一个易于上手的开发平台, 供开发者使用库编写 zkGraph 代码并进行部署.

对于使用 MVP, 你可以查看我们的 MVP 测试指南.

a) 部署 zkGraph

我们把刚才写的 zkGraph 代码粘贴到 MVP 的代码编辑器中, 并在右边输入相应的源合同地址和源事件名称.

接下来, 我们使用代码编辑器来生成编译好的 WASM 代码, 并点击 “SET UP” 将其部署到我们的节点上.

b) 执行 zkGraph 并生成 ZK 证明

在输入正确的交易哈希值 ( 发出事件的哈希值 ) 后, 我们可以进行 zkGraph 的计算, 并为其计算生成一个零知识证明.

我们可以看到, 我们已经知道了抽奖的最终赢家, 也就是输出状态数据中显示的第 9 个成员.

c) 链上验证 zkGraph

作为最后一步, 我们部署了一个链上验证者智能合约来验证零知识证明. 这是为了确保执行是正确的, 从而证明抽奖的输出是根据 zkGraph 中的代码来进行的.

4. 与 Hyper Oracle 构建 zkGraph

这就是用 Hyper Oracle 和 zkGraph 构建一个应用程序的流程.

在现实的例子中, 整个开发过程可能是:

  • 更简单: 因为你可能不需要建立一个新的智能合约或新的 zkGraph, 而是直接利用区块链和生态系统以及 Hyper Oracle 网络的开源性质.
  • 更复杂: 你可以建立更复杂的计算 ( 包括机器学习 ), 而不用担心计算的安全性和完整性, 因为所有的计算都可以通过零知识证明灵活地生成.

现在开始构建 zkGraph!

我们很想听听你目前是如何使用智能合约自动化的, 以及你想使用哪些功能. 因此, 我们创建了一个简短的开发调查, 以更好地了解您的需求, 以及我们如何定制我们的产品以满足您的要求.

Twitter 上关注我们并加入我们的 Discord, 以了解 Hyper Oracle 的最新情况. 在我们的网站上了解更多关于 Hyper Oracle 的信息.

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

ORA
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开