1个不稳定版本

0.1.0 2023年8月23日

#1873加密学

Apache-2.0

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 许可

用 ❤️ 构建

无运行时依赖