#smart-contracts #execution #invoke #state #v0 #execution-engine #concordium

concordium-smart-contract-engine

康德瑞姆的智能合约执行引擎

9 个稳定版本 (4 个主要版本)

5.0.0 2024 年 3 月 25 日
4.0.0 2024 年 1 月 22 日
3.1.0 2023 年 10 月 18 日
2.0.0 2023 年 6 月 16 日
1.0.1 2023 年 3 月 20 日

#1822神奇豆

Download history 331/week @ 2024-04-18 439/week @ 2024-04-25 58/week @ 2024-05-02 48/week @ 2024-05-09 58/week @ 2024-05-16 72/week @ 2024-05-23 103/week @ 2024-05-30 142/week @ 2024-06-06 78/week @ 2024-06-13 86/week @ 2024-06-20 42/week @ 2024-06-27 72/week @ 2024-07-04 87/week @ 2024-07-11 136/week @ 2024-07-18 113/week @ 2024-07-25 229/week @ 2024-08-01

575 每月下载次数
3 个包中使用 2 个直接使用

自定义许可证

1.5MB
26K SLoC

concordium-smart-contract-engine

一个库,它提供了在 concordium-wasm 库之上执行智能合约的实现,该库实现了底层的 Wasm 执行。

特别是这个库被 康德瑞姆节点 用于执行 V0 和 V1 智能合约。它还用于其他康德瑞姆工具,例如 cargo-concordium,以提供构建和测试功能。

版本控制

这个包遵循语义版本控制指南。最低支持的 Rust 版本的变化将伴随着小版本的提升。


lib.rs:

这个库提供了在 Wasm 引擎 之上构建的功能,并为在康德瑞姆链上执行智能合约添加了高级功能。

康德瑞姆支持两种智能合约版本,旧版本 [v0] 和新版本 [v1]。后者在各方面都更好。它们主要有两个不同之处

  • [v0] 使用消息传递进行合约间通信,并且具有扁平状态。状态限制在 16kB,并且每次合约更新时都会写入整个状态。
  • 版本[v1]使用同步调用进行合约间通信,其状态是基于trie的结构,支持高效的局部状态更新。trie是在v1::trie模块中实现的。

版本[v0]和[v1]模块的结构相似。此库用户使用的主要入口点是v0::invoke_init(相应地v1::invoke_init)和v0::invoke_receive(相应地v1::invoke_receive)函数及其变体。

相应的模块提供了涉及的数据类型以及不同版本的详细信息。

功能

此crate具有以下功能。默认情况下均未启用。

display-state

此功能暴露了display_tree函数,用于以可读的格式显示V1合约状态。这对于深入检查智能合约状态和调试非常有用。

async

暴露从键值对流构建智能合约状态的功能,例如从节点的API接收到的流。见

enable-ffi

此功能启用外部函数导出。这是一个内部功能,对外部导出的稳定性没有保证。

fuzz-coveragefuzz

这些功能也是内部的,存在是为了支持模糊测试。它们用于推导Arbitrary实例和禁用内联,后者是必要的,因为使用的模糊器存在错误,这会阻止在函数内联时生成覆盖率报告。

依赖关系

约15MB
约225K SLoC