#transaction #state #smart-contracts #execution #distributed #component #ledger

transact

Transact 是一个交易执行平台,旨在用作库或组件,在实现分布式账本(包括区块链)时使用

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 神奇豆子

Download history 42/week @ 2024-04-15 19/week @ 2024-04-22 4/week @ 2024-05-20 8/week @ 2024-05-27 17/week @ 2024-06-03 9/week @ 2024-06-10 2/week @ 2024-06-24 56/week @ 2024-07-01 1/week @ 2024-07-08 7/week @ 2024-07-15 8/week @ 2024-07-29

69 每月下载
用于 6 个存储库(直接使用 2 个)

Apache-2.0

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