33 个版本
0.4.7 | 2024年1月8日 |
---|---|
0.4.6 | 2022年7月25日 |
0.4.5 | 2022年6月14日 |
0.4.3 | 2022年1月11日 |
0.1.4 | 2019年7月31日 |
#437 in 神奇豆子
69 每月下载
用于 6 个存储库(直接使用 2 个)
1MB
24K SLoC
Transact
Transact 是一个平台无关的库,用于执行具有智能合约的交易。
如何参与
我们欢迎贡献者,包括组织和个人,帮助我们塑造项目方向,贡献想法,提供用例,并在特定工具和示例上工作。加入我们的 #transact Discord 频道。
更多信息
许可证
Transact 软件根据 Apache License Version 2.0 软件许可证授权。
lib.rs
:
Transact
Transact 通过提供一个共享的软件库来处理智能合约的执行(包括调度、事务调度和状态管理等方面),使编写分布式账本软件变得更容易。
框架级别的项目和自定义分布式账本可以使用 Transact 的先进事务执行和状态管理功能,简化其项目中的事务执行代码,并利用 Transact 的附加功能。
更具体地说,Transact 提供了一种可扩展的方法来实现新的智能合约语言,称为“智能合约引擎”。每个智能合约引擎实现一个虚拟机或解释器来处理智能合约。
深入了解
Transact本质上是一种状态转换的事务处理系统。状态数据通常存储在Merkle-Radix树、键值数据库或SQL数据库中。给定初始状态和事务,Transact执行事务以生成新的状态。这些状态转换被认为是“纯”的,因为只使用初始状态和事务作为输入。(相比之下,其他系统如Ethereum将状态和区块信息结合以生成新的状态。)因此,Transact对除了事务执行和状态之外的框架功能不关心。棒极了,不是吗?
Transact故意省略了其他功能,如共识、区块、链式和对等。这些功能的责任由框架和其他分布式账本实现承担。关注智能合约执行意味着Transact可以用于智能合约执行,而不会与平台级架构设计元素发生冲突。
Transact包含以下组件
- 状态。Transact状态实现提供对数据库的get、set和delete操作。对于Merkle-Radix树状态实现,树结构是在LMDB或内存数据库之上实现的。
- 上下文管理器。在Transact中,状态读取和写入被限制(沙盒化)到包含对状态ID(如Merkle-Radix状态根哈希)和一或多个前一个上下文引用的特定“上下文”。上下文管理器实现了上下文生命周期,并为读取、写入和从状态删除数据的服务调用提供服务。
- 调度器。此组件控制要执行的交易的顺序。具体实现包括串行调度器和并行调度器。并行事务执行是提高网络吞吐量的重要创新。
- 执行器。Transact执行器从调度器获取事务,并针对特定上下文执行它们。执行通过将事务发送到特定的执行适配器(如ZMQ或静态进程内适配器)来处理,这些适配器随后将事务发送到特定的智能合约。
- 智能合约引擎。这些组件提供了运行智能合约的虚拟机和解释器。引擎的示例包括WebAssembly、Ethereum虚拟机、Sawtooth事务处理器和Fabric链码。
Sawtooth兼容层
Transact通过sawtooth-compat
功能提供对为Sawtooth实现的智能合约引擎的可选支持。
依赖
~0–2.3MB
~36K SLoC