批处理程序是卡尔达诺上的一些去中心化交易所(DEX)用来收集订单和执行掉期的概念。 快来了解更多关于他们的信息吧。 我们还将解释为什么卡尔达诺需要批处理程序而以太坊不需要。
配料员的作用
批处理程序是一些去中心化交易所(DEX)用来收集用户订单和执行掉期的概念。 批处理程序是在卡尔达诺网络上运行节点的实体,能够创建和提交调用 DEX 链上代码(验证器脚本)的交易。
批处理程序的目标是通过减少区块链必须处理的交易数量来提高 DEX 的效率和可扩展性。 批处理程序将多个用户事务聚合到一个批处理事务中,并同时执行所有事务。 与每个用户向 DEX 提交自己的交易相比,这是一种更有效的方法。
批处理程序收集用户订单并创建涉及锁定资金的交易。 这是在智能合约的链下逻辑中完成的。 它们匹配所有用户订单并通过创建支出交易来执行交换,这再次发生在智能合约的链外部分。
批处理程序根据用户交易的优先级和价格对用户交易进行排序,这有助于避免冲突或失败。
用户必须支付通常的网络费用,还要向批次商支付交换费用。 批处理商从他们创建的每笔交易中扣除少量费用作为奖励。
在下图中,您可以看到 DEX 处理订单、匹配订单和执行掉期的简化图。 为此,批处理程序需要创建在智能合约的链上部分进行验证的交易。
让我们用一个例子来展示它。 我们将强调一些重要的细节。
Alice 想要出售 HOSKY 并拥有更多 ADA。 Bob 想购买 HOSKY 并出售 ADA。 批处理节点可以组合这些订单并执行交换。
首先,Alice 和 Bob 需要找到一个他们信任且能够执行交换的批处理程序。 它可以由 DEX 自动完成,也可以选择他们想要的批处理程序,具体取决于 DEX 的设计和实现。 一些 DEX 允许用户选择一个特定的节点来执行交换任务,而另一些则使用抽签来确保随机选择。
一旦选择了批处理程序,Alice 和 Bob 必须锁定 ADA 和 HOSKY。 只有当批量器能够控制资金的支出时,交换才能执行。
Alice 将 HOSKY 代币发送到由批处理程序控制的脚本地址。 在脚本中,定义了花费 HOSKY 的条件(例如 Alice 请求的 ADA 数量)。 任何能够创建有效支出交易(满足脚本条件)的人都可以解锁资金。 这通常(不一定)是锁定资金的批处理者。
请注意,批处理程序负责构建包含锁定脚本的事务。 用户必须使用私钥签署交易。 这样,资金就不会被批处理者窃取,因为他们无法访问用户的私钥。 批处理程序仅控制锁定和解锁资金的脚本,但在不满足交换条件的情况下无法使用资金。
用户需要在使用私钥对批处理程序提供的交易进行签名之前对其进行验证。 他们可以检查交易是否符合交换条件和参数,例如代币金额、汇率和到期时间。
Bob 必须执行与 Alice 类似的操作,但使用的是 ADA 币。 因此 ADA 币被锁定在批处理程序控制的脚本地址上。
HOSKY 和 ADA 被锁定,批处理器可以匹配这两个订单。 它验证是否可以满足锁定资金的两个脚本的支出条件。 如果是这样,批处理程序将创建两个支出交易,从脚本地址解锁 HOSKY 和 ADA,并将它们精确地根据接收者的要求发送到接收者的地址,即 Alice 和 Bob。
批处理程序将两笔支出交易作为单个原子交易提交到卡尔达诺网络。 这意味着要么两个事务都成功执行,要么根本没有执行。 这确保了爱丽丝和鲍勃收到他们的代币和硬币,而没有任何损失资金或被批量器或彼此欺骗的风险。
我们展示了一个所谓的直接交换的例子,它需要各方之间更多的协调和沟通。 如果 Alice 知道 Bob 的地址和她想要交换的代币数量,她就可以明确地向 DEX 说交易对手一定是 Bob。 Alice 和 Bob 必须事先就交换条件和参数达成一致,然后使用批处理程序来执行他们的交换交易。 直接互换比基于池的互换更安全、更高效,在基于池的互换中,Alice 和 Bob 彼此不认识,依靠流动性池来为他们的互换找到合适的匹配。
为什么卡尔达诺需要批处理程序?
配料机在实现智能控制方面发挥着至关重要的作用卡尔达诺上的交易和互换。 然而,它们也带来了一些挑战和权衡。 我们先来看看有哪些优点:
它们减少了区块链上的负载并增加了 DEX 的吞吐量,因为需要由节点验证并存储在区块链中的交易更少。 包含 10 笔交易的批量交易的大小小于 10 笔单独交易的大小。 这是因为批量事务可以将多个输入和输出合并到单个事务中,从而减少创建单独事务的开销和冗余。
他们降低了用户的费用,因为他们可以在用户之间分担批量交易的成本。 卡尔达诺的费用取决于交易的规模,而交易规模取决于(除其他外)见证人(签名)的数量。
它们改善了用户体验,因为它们可以提供更快、更可靠的交易执行。
批处理机的一些缺点是:
它们降低了 DEX 的去中心化和安全性,因为它们为用户交易引入了故障点。 如果批处理程序是恶意的或受到损害,它可以操纵、审查或抢先运行用户交易。
它们增加了用户的复杂性和风险,因为他们必须信任批处理程序并与之交互。 用户必须将资金和数据发送给批处理程序,然后批处理程序代表他们创建并提交批量交易。
用户必须依赖批处理节点的可用性和性能来执行他们的订单。 如果批处理节点离线或过载,事务可能会延迟或失败。
批处理商通常大多是持有高股份的质押池运营商 (SPO)。 这对感兴趣的各方构成了进入壁垒。 该机制旨在确保诚实行为,因为它将池的操作与批处理节点的操作结合起来。 如果批处理者行为不诚实,可能会阻止委托人将 ADA 质押到运营商池中。 除了批量交易的费用外,不诚实的批量交易者还可能面临失去质押奖励的风险。
现在我们来到了关键问题。 为什么卡尔达诺需要批处理程序而以太坊不需要?
批处理是一种允许多个交易作为区块链上单个原子交易执行的技术。 这意味着要么所有事务都成功执行,要么根本没有执行。 从安全性和正确性的角度来看,原子性是绝对必要的。 如果批次的任何部分无效或冲突,则整个批次应该失败。 这可以防止部分或不一致的交易执行,从而导致资金损失、双重支出或欺诈。
之所以需要批处理程序,是因为卡尔达诺不像以太坊或其他区块链那样支持智能合约,因为它使用不同的会计模型。
在UTXO模型中,每个UTXO只能被花费一次。 每笔交易都会消耗一些 UTXO 作为输入,并创建新的 UTXO 作为输出。 用户的余额计算为其地址关联的所有 UTXO 的总和。
输出可以通过指定支出条件的脚本来锁定。 脚本中定义的支出资金的逻辑可能需要了解某些上下文或状态的能力。 状态是表示系统或程序当前状况的一组数据。 状态信息对于许多需要在区块链上进行交互、计算或验证的应用程序至关重要。
与智能合约可以存储和操作状态变量的以太坊不同,卡尔达诺脚本只能访问当前交易的输入和输出(只有本地上下文或状态可用)。 这意味着 Cardano 脚本无法执行复杂的逻辑或与 DEX 智能合约链上部分的其他脚本交互。
UTXO模型的局限性在于它不支持复杂的逻辑或状态信息。
为了克服这一限制,批处理程序充当中介,收集、订购和执行涉及使用脚本锁定和解锁资金的交易。 换句话说,DEX 的业务逻辑是在链外执行的,因为可以使用应用程序的状态。
UTXO 模型没有可以由交易更新或访问的全局状态。 相反,每个交易只能访问当前交易的输入和输出。 UTxO 的 Datum、支出交易的 Redeemer 和交易(本地)上下文在脚本执行期间可用。
这意味着事务无法执行依赖于外部变量或条件的操作,例如算术运算、条件语句、循环或函数调用。 此外,交易无法与区块链上的其他交易或脚本交互,这限制了应用程序的功能和互操作性。
批处理程序可以在卡尔达诺上实现交换,因为它们可以实现可行的算法同时处理多个交易(订单)并维护应用程序状态。
以太坊不需要批处理程序,因为它使用不同的会计模型,称为基于帐户的模型。 基于账户的模型将每个账户的余额作为全局状态进行跟踪。 每个事务根据事务中包含的逻辑和数据更新系统的状态。 基于账户的模型支持复杂的逻辑和状态信息,因为它允许交易访问和修改系统的全局状态。 简单来说,以太坊通过智能合约实现了 DEX 逻辑。
卡尔达诺和以太坊之间的简短比较
UTXO 和基于账户的模型之间的差异与以太坊的全局状态有关。 以太坊具有可以通过交易更新或访问的全局状态。
卡尔达诺没有全局状态。 事务的执行是相互独立的,因为它仅取决于本地上下文。 这使得以太坊比卡尔达诺更适合智能合约和交换,但它也带来了一些挑战和权衡:
以太坊的全局状态比卡尔达诺的 UTXO 模型更复杂,这使得验证和维护变得更加困难。 更高的复杂性通常会带来漏洞和攻击向量。
以太坊的全局状态比卡尔达诺的 UTXO 模型需要更多的存储和计算,这限制了其可扩展性和性能。 EVM 按顺序、一个接一个地执行事务,并相应地更新状态。 在块验证期间必须遵循该顺序。
以太坊的全局状态比卡尔达诺的 UTXO 模型暴露了更多的信息,这降低了其隐私性和匿名性。
IOG 团队选择了 UTxO 模型,他们故意不希望拥有全局状态之类的东西。 他们希望利用 UTxO 模型的优势,同时克服其局限性。 他们通过引入 UTxO 模型的扩展版本(称为 eUTXO)来做到这一点,该模型允许交易携带一些状态信息并使用智能合约执行自定义逻辑。
eUTXO 模型保留了 UTxO 模型的简单性、隐私性和可扩展性(正如您从比特币中了解到的那样),同时支持应用程序的更多功能和互操作性。
eUTxO 模型,即没有全局状态,对卡尔达诺来说具有一定的优势。
验证器脚本(链上逻辑)非常小且易于验证。 这节省了分布式网络的计算资源。 团队被迫在可以轻松升级的链下部分实现大部分应用逻辑。 在链上验证期间,可以通过 Datum 和 Redeemer 与本地状态合作(与比特币的 UTxO 模型不同)。
eUTxO 模型允许用户创建多个地址并为每笔交易使用不同的 UTxO,这使得将交易链接到单个身份或追踪资金历史变得更加困难。
eUTxO 模型支持事务的并行处理,因为每个 UTxO 都可以由不同节点独立并发地验证。 这减少了网络的瓶颈和延迟。 在区块验证期间,不必遵循顺序,因为交易是相互独立的。
选择 eUTXO 模型而不是基于账户的模型的主要原因之一是更好的可扩展性和并行性。 eUTXO模型允许交易由不同的节点并行处理,只要它们不互相冲突。 这意味着可以通过添加更多节点和资源来提高网络的吞吐量和性能。
另一方面,基于账户的模型需要顺序处理交易,因为每笔交易都取决于系统的全局状态。 这意味着网络的吞吐量和性能受到单个节点的速度和容量的限制。
这个话题比较复杂,卡尔达诺和以太坊之间的比较值得单独写一篇文章。 我们想解释批处理程序的工作原理以及为什么卡尔达诺需要它们,与以太坊不同。 我希望我们成功了。
结论
以太坊的好处是可以在智能合约中实现 DEX 逻辑,而不需要链下逻辑。 另一方面,它的效率也很低。 如果更多用户想要使用 DEX,以太坊可能会出现可扩展性问题。 如今,以太坊生态系统中已经存在 DEX,它们具有类似卡尔达诺的链外逻辑,用于匹配订单和执行交换。 以太坊生态系统中使用最多的 DEX 是 Uniswap,它是一个链上 DEX。
卡尔达诺生态系统中的大多数去中心化交易所都使用批处理程序。 批处理程序可以被视为单点故障。 如果一个批处理程序锁定资金并随后离线,则可能无法创建支出交易(另一个批处理程序可能可以在一个 DEX 中创建它们)。 另一方面,必须说经济激励措施设置得很好。 批处理机是他们有动力诚实地执行批处理,因为他们冒着失去业务和潜在的委托 ADA 币的风险。