1个不稳定版本
0.1.0 | 2023年8月23日 |
---|
#1873 在 加密学
11KB
Orochimaru
Orochimaru是Orochi网络的完整节点客户端,采用纯Rust编程语言实现。Orochi网络不是区块链,而是一个用于执行多方计算(MPC)和零知识证明(ZKP)的分布式网络,从而提供无需信任的验证计算。我们的使命是建立高性能的dApp。
Orochi网络
在Orochi网络,我们相信可验证计算是建立Web3和去中心化自治经济的关键原语。然而,为了达到这个阶段,这个行业中还有许多重大挑战需要克服。
- 计算限制: EVM无法保证半原生性能,除了执行计算时成本极高和延迟极大之外。现在的dApps对大众不友好,不稳定,成本高且速度慢。换句话说,它们目前无法使用,我们无法用dApp来替代一个普通应用程序。
- 数据正确性: 由于所有数据管道都存储在黑盒中,因此无法证明数据的正确性。我们不知道数据是如何处理的。
- 数据可用性: 智能合约执行器和应用程序执行器与互联网隔离,这阻止了从运行时环境中访问数据。始终需要第三方服务来提供必要的数据。这种方法是无效的,因为我们无法验证数据。此外,第三方服务的延迟是不可接受的。
┌─────────────────────────────┐
│ │
│ ┌─────────────────────────┐ │
│ │ Orosign - zkOS's UI │ │
│ └─────────────────────────┘ │
│ │
│ ┌─────────────────────────┐ │
│ │ High Performance dApp │ │
│ └─────────────────────────┘ │
│ │
│ ┌───────────┐ ┌───────────┐ │
│ │zkDatabase │ │ Orand │ │
│ └───────────┘ └───────────┘ │
│ │
│ ┌─────────────────────────┐ │
│ │ zkWasm │ │
│ └─────────────────────────┘ │
│ │
└─────────────────────────────┘
┌─────────────────────────────┐
│ Settlement Layer │
└─────────────────────────────┘
我们的解决方案是构建一个通用的运行时环境(zkWasm),它提供可验证计算。我们可以在我们的zkWasm之上构建可验证的数据管道,以解决数据的正确性和可用性挑战。
组件
Orand:去中心化随机数生成器
允许在兼容EVM的区块链上的任何智能合约中生成和提供可验证的随机数。Orand使用椭圆曲线可验证随机函数(ECVRF)来证明和验证随机数。您可以在我们的博客blog.orochi.network上了解更多关于ECVRF的信息。
请求随机数
┌───────────┐ ┌─────┐ ┌──────────────┐
│Application│ │Orand│ │Smart Contract│
└─────┬─────┘ └──┬──┘ └──────┬───────┘
│ │ │
│Request Randomness│ │
│─────────────────>│ │
│ │ │
│ │Get latest epoch│
│ │───────────────>│
│ │ │
│ │ Latest epoch │
│ │<───────────────│
│ │ │
│ ECVRF Proof │ │
│<─────────────────│ │
│ │ │
│ ECVRF Proof │
│──────────────────────────────────>│
┌─────┴─────┐ ┌──┴──┐ ┌──────┴───────┐
│Application│ │Orand│ │Smart Contract│
└───────────┘ └─────┘ └──────────────┘
Orand v1.0提供
-
可验证随机数: 我们在这里使用椭圆曲线可验证随机函数(ECVRF)来生成随机数https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-vrf-05#section-5.3中描述的过程。曲线secp256k1和keccak256(Ethereum变体)用于降低智能合约的验证成本。
-
多样性: 一个由许多参与者/节点组成的分布式系统将通过使用多方计算(MPC)来加入生成随机数。
-
不可预测性:当输入是先前的随机性时,VRF 将执行,并且它还需要一半的参与者参与 MPC。
-
高吞吐量:游戏服务器可以从 Orand 系统请求随机性。当一半的参与者参与 MPC 时,结果将立即提供。
-
廉价且安全:对于免费层,每月前 20,000 次随机性将免费提供。
-
容错:如果游戏服务器试图延迟喂食过程以操纵结果,将提交容错以保证起诉游戏服务器。
-
多链:所有兼容 EVM 的区块链都可以支持。
API 测试
首先启动服务
~ $ cargo run
请求为给定网络生成一个纪元
curl -X POST --data '{"method":"orand_newEpoch","params":["56"]}' https://127.0.0.1:3000
结果
{
"id": 20,
"network": 56,
"keyring_id": 1,
"epoch": 19,
"alpha": "2979a78ca2e72317dacf8ac511b48486eeac234dbdcf68c82c787d4adb9a2b17",
"gamma": "ce809816f05ae6be2c30a8ae9133a53e2095d4d65d15d009e3c5d6be39a83d8eca32382fd95549dd5d3f82d55c71b7d002e5518897d29f20b9ddefc8f137bf36",
"c": "563103eac20acbec7ed2b2abb0327614f38f7bb2b51c12b049d4a184372bdae2",
"s": "56af973100d38743a144dab6e70278f09dfa5aba96531ad271b99eb68c89e44e",
"y": "db2ad98900d91b67a117fc388a20d193ea7152cc05c70479bd9b40beab51d2bd",
"created_date": "2022-11-11 07:22:36"
}
列出最近的纪元
curl -X POST --data '{"method":"orand_getPublicEpoch","params":["56","15"]}' https://127.0.0.1:3000
结果
[{
"id": 16,
"network": 56,
"keyring_id": 1,
"epoch": 15,
"alpha": "3bc01ff25a742df287f7038063829a8822e91c3f31aeb75b13a6b6eb8950e31b",
"gamma": "84b4d75c4c7f5d72e155c4b4652286e25f3ade2bbdf391adf9ca0e9e464c60cc2c181327795728913d1f6dd2b407cc61c8d30190455b3a626d8a969219f6e8c3",
"c": "d7b9aca852b932ce253776402f8c607149366819140fd6d58cfbcfa3b93c9ce5",
"s": "e34344e4a35f153fbd95b5b44f192160a8fa397a4008af6b4f6ac31ffcc60c80",
"y": "7b639ee0ee5807b39f012a4f181374e17a36f94b8c35ec4dfc1962069fd8d426",
"created_date": "2022-11-11 04:56:28"
},
//...
, {
"id": 20,
"network": 56,
"keyring_id": 1,
"epoch": 19,
"alpha": "2979a78ca2e72317dacf8ac511b48486eeac234dbdcf68c82c787d4adb9a2b17",
"gamma": "ce809816f05ae6be2c30a8ae9133a53e2095d4d65d15d009e3c5d6be39a83d8eca32382fd95549dd5d3f82d55c71b7d002e5518897d29f20b9ddefc8f137bf36",
"c": "563103eac20acbec7ed2b2abb0327614f38f7bb2b51c12b049d4a184372bdae2",
"s": "56af973100d38743a144dab6e70278f09dfa5aba96531ad271b99eb68c89e44e",
"y": "db2ad98900d91b67a117fc388a20d193ea7152cc05c70479bd9b40beab51d2bd",
"created_date": "2022-11-11 07:22:36"
}]
安装
您必须首先安装 sea-orm-cli
cargo install sea-orm-cli
为 sqlite 生成实体 (您不需要执行此步骤)
sea-orm-cli generate entity -o ./entity
迁移数据库或首次初始化数据库
sea-orm-cli migrate
许可
Orochi 网络的源代码根据 Apache License 2.0 许可
用 ❤️ 构建