比特币扩展概念验证:在支持 OP_CAT 的比特币上实现桥契约

金色财经Publicado a 2024-12-03Actualizado a 2024-12-03

来源:Starknet 中文社区

精选速览

  • 深入探讨在比特币上构建 demo 桥契约,为 Starknet 的生产级桥奠定基础

  • 实施存取款聚合器、桥和取款扩展器四种智能合约

  • 利用递归契约和默克尔树有效地批量处理存款和取款请求,同时保持用户账户的完整性和安全性

引言

本文,我们深入探讨了 sCrypt 如何在比特币上构建一个 demo 桥契约。该概念验证实现旨在为 Starknet 二层(L2)网络的生产级桥奠定基础。该桥的设计允许将多个存款或取款请求交易合并为一个根交易,并将其并入主桥契约中,更新其状态,该状态由一组以默克尔树组织的账户组成。

由于桥契约脚本非常复杂,我们在 sCrypt 利用了 sCrypt 专属领域语言(DSL)来编写其实现方式。

概览

该桥由一个递归契约比特币脚本构成。在这里,「契约」意味着锁定脚本能够对支出交易施加条件,而「递归」则意味着上述规则足够强大,可以在链上实现持久的逻辑和状态(这是任何链上智能合约的基本要求)。

该脚本存在于一系列交易中,每笔交易都对后续交易结构施加约束,而后续交易解锁当前交易的输出。每当一笔新交易添加到这条链中时,就代表了桥状态的更新。因此,这条链的末端保存着当前的桥状态。

契约状态 — 具体来说,就是其哈希值 — 存储在一个不可消耗的 OP_RETURN 输出中。虽然我们不会花费这个 UTXO,但在执行契约脚本时可以检查其数据。具体来说,状态保存了包含账户数据的默克尔树的根哈希值,如下所示:


该默克尔树保存了一组固定账户槽的数据。叶节点包含各自账户数据的哈希值,其中包括地址和余额。为了表示空的账户槽,这些槽被标记为零字节。

每次桥的更新都会导致账户树发生变化。为了方便这种更新,我们依赖于默克尔证明,其验证在比特币脚本中非常高效。更新主要包含两个步骤。首先,我们验证一个默克尔证明,以证明证明默克尔树包含了特定账户的当前状态。然后,在计算该账户的新状态后,我们使用前述默克尔证明中的相同辅助节点来推导出新的根哈希值。

更新可以是存款,也可以是取款。桥可在单笔交易中执行这些更新的批量操作。

存款

我们的目标是让用户能够独立提交存款或取款请求。为此,用户分别创建交易,分别支付给存款或取款聚合契约。该契约将这些请求汇总成一棵默克尔树。该树的根哈希值可以合并到主桥契约中,主桥契约随后处理每笔存款或取款。


在存款交易中,除了对存款数据进行哈希并构建默克尔树之外,契约还确保锁定在契约输出中的存款 satoshis 按正确的方式累积至树的根节点。聚合契约确保只有正确的链上智能合约才能使用这些资金。(当然,在生产环境中,我们也会允许用户取消其存款交易)。

这种树形结构的设计源于契约脚本构建的限制,即不允许包含过多输入和输出的交易。树形结构使我们能够扩展到潜在的任意吞吐量。

取款请求

取款请求的聚合与存款类似,但有几处不同。首先,我们需要一种认证方法,以便用户可以从自己的账户取款。这与存款不同,存款是任何人可以向任何账户存款,这与比特币地址的使用方式类似。认证在聚合树的叶节点层完成。取款请求聚合契约会检查提款地址是否与叶交易中第一个输入的 P2WPKH 地址匹配。

这确保了地址的所有者批准取款,因为他们已经签署了请求取款的交易。与存款聚合相比,另一个细微的不同之处在于,我们还会将中间的累计金额进行哈希,向上传递到树结构中。这是因为在扩展取款时,我们需要这些数据,稍后会详细说明。

敏锐的读者可能会注意到这种取款请求认证模型的潜在问题。假如操作员决定作弊,创建一个聚合树的根交易,而聚合树的数据是通过未经认证的虚假取款请求在本地伪造的,那该怎么办?我们需要一种有效的方法来验证根交易是否来自有效的叶交易。

为了解决这个问题,我们执行了所谓的「创世检查(genesis check)」。本质上,我们让聚合契约检查其前一笔交易以及前两笔交易,即其「祖先交易」。契约验证这些交易是否包含相同的契约脚本,并执行相同的检查。通过这种方式,我们实现了一个归纳式的交易历史检查。由于前两笔交易与当前契约一样,执行了相同的检查,我们可以确认这些交易的「祖先」也执行了相同的检查,一直追溯到叶节点(即创世交易)。

当然,我们对树的两个分支都执行了验证。因此,每个聚合节点交易总共检查最多六笔交易。

取款扩展

现在让我们进入解决方案的最后部分:取款扩展。在处理一批取款请求后,主桥契约会强制执行一个输出,将总取款金额支付给扩展契约。我们可以将这个契约视为执行取款请求聚合契约所做操作的逆向过程。其从取款树的根节点开始,将其扩展为两个分支,每个分支包含应支付到该分支的相应取款金额。这个过程一直延续到取款树的叶节点。叶交易强制执行一个简单的支付输出,向账户所有者的地址支付他们要求提取的金额。

实现方式

为了实现我们的桥契约,我们开发了四个 sCrypt 智能合约,分别处理系统的不同方面。本节,我们将简要概述每个合约的功能。

存款聚合器合约

存款聚合器(DepositAggregator)合约将单个存款聚合成一棵默克尔树,然后将其合并到主桥契约中。这种聚合可实现批量存款处理,减少需要由桥单独处理的交易数量。此外,它还允许用户独立提交存款,稍后由操作员进行处理。

6uuhZz8QuXcSA2IQG6n855uvlpijR4WYvlAmosKK.jpeg

Q9fj89kaNInS2ExQ6Y2yCzaP4GaKdOgL1oqhpjuA.jpeg

合约构建函数有两个参数:

  • operator:桥操作员的公钥,该操作员有权聚合存款。

  • bridgeSPK:主桥契约的脚本公钥(SPK),确保聚合存款正确合并。

存款聚合器的核心功能封装在「聚合(aggregate)」方法中。该方法执行以下步骤:

验证 Sighash 原像和操作员签名:确保交易经过桥操作员授权,并且 sighash 原像格式正确且属于正在执行的交易。通过这篇文章了解关于 sighash 原像验证的更多信息。

eaGvWfaCN18mXcdrAT07WJhz79NuP8apHHsJB4ST.jpeg


构建和验证前置交易 ID:检查已聚合的前置交易是否有效并正确引用。

rEnq9qEO4cCSkK9cEmetlRSO3iIRrHBZiFHMKjrz.jpeg


默克尔树聚合:验证作为见证哈希值传递的存款数据是否与前置交易中存储的状态匹配。

Sjs5K1aLcD7r93Y2AHzrZXSpurLEty2Ky425DqUu.jpeg


金额验证:确认前置输出中的金额与指定的存款金额匹配,确保资金在聚合中正确计算。

S8nokA5BMs2N0rxM3D7ptTf2RrJP2ME6qy8h4ttS.jpeg

状态更新:通过连接前置交易的哈希值计算新的哈希值,并更新 OP_RETURN 输出中的状态。

HjOkgelwgvfzFcH2zMPrpoXevEFIU6WNDPjObezU.jpeg

重入攻击防范:强制执行严格的输出脚本和金额,以防止未经授权的修改或双花。

iir6d4fLJt3DMzDJGllXSR288tHCj3XRfmSPxzYM.jpeg

一旦存款被聚合,它们必须合并到主桥契约中。这一过程由「最终确认(finalize)」方法处理,其步骤包括:

验证前置交易:与「聚合(aggregate)」方法类似,验证前置交易,以确保合并数据的完整性。

与桥契约的集成:通过引用桥的交易 ID 和脚本公钥,检查聚合后的存款是否正确地合并至主桥契约中。

存款聚合合约的完整源代码可查看 GitHub。

取款聚合器合约

取款聚合器(WithdrawalAggregator)合约旨在将单个取款请求聚合成一棵默克尔树,与存款聚合器处理存款的方式类似。不过,取款操作需要额外的认证,以确保只有合法的账户所有者才能从其账户中提取资金。

FCSmn0hw1XGu19i75VmpEyQpss5kgBrznai4IMN1.jpeg

ek1vaICUc7cYd7wq6R1U0vxRV1q5sYUtDABLYfMb.jpeg

取款聚合器的核心功能封装在 「聚合(aggregate)」方法中,该方法执行以下步骤:

sR9kAqxxKBnd8qe0GH6zVZo21cKGwUyMsM6Rptzh.jpeg

构建和验证前置交易 ID:该过程验证已聚合的前置交易是否有效并正确引用。

55Tswk12jQ8L6wkNSbffmMgjmHj2x2DRPpPEj9hF.jpeg

所有权证明验证:验证所有权证明交易确保只有合法的所有者才能从账户中提取资金。

  • 所有权证明交易:一种证明控制取款地址的交易。合约检查取款请求中的地址是否与所有权证明交易中的地址匹配。

WcUYTn6ZbzCbWbG1Pb5Wvtb1BDAVDsRv01IAjePb.jpeg

通过「祖先交易」进行创世检查:与存款聚合器类似,合约通过验证祖先交易执行归纳检查。这确保了交易历史的完整性,并防止操作员插入未经授权的取款请求。

ECUfdrM2BVM7XXXvF6v2hqlOIEWuRvsfQDBaR1YQ.jpeg

金额验证和总金额计算:该方法通过将取款请求或之前的聚合进行金额相加,计算出要提取的总金额。

VITvasG1qtrCqgRklE7TJOQAW6LigLXCq0qoLWfT.jpeg

状态更新:计算一个新的哈希值,其中包含前置交易的哈希值和取款金额的总和。这个哈希值存储在 OP_RETURN 输出中,以更新状态。

pZ7C2y68eX9DnweTwC8SB4VjpWU47fPEfApn2TG7.jpeg

重入攻击防范和输出强制:确保严格定义输出,以防止未经授权的修改或重入攻击。

PKHtH27ZMeZYgRX97ofy4JL7JnyeQRhdIMSb36za.jpeg

取款聚合合约的完整源代码可查看 GitHub。

桥合约

桥(Bridge)合约是我们系统的核心组件,是维护桥状态的主要契约,包括以默克尔树组织的账户及其余额。其通过与我们之前讨论的聚合器合约集成,处理存款和取款操作。

juImqu1xxrTC2Tq7jG6WggfOoBldgXorqjhpBz3Z.jpeg

4gJisepHSYkBm7DZ0DX0LNqfo7FEePAAWNRUM4d7.jpeg

cZojff0vjL97aSdMk3ER6ErdEFVySpnvHwGnJkYi.jpeg

合约构建函数有两个参数:

  • operator:桥操作员的公钥,该操作员有权更新桥状态。

  • expanderSPK:取款扩展器(WithdrawalExpander)合约的脚本公钥(SPK),在取款过程中使用。

存款方法负责处理聚合的存款交易,并相应更新账户余额。

QXyFh7Urp1WwUWl9Xd0j1tnloErVLHhIFU7t8wLC.jpeg

KQWileQ0AFapniJoIRFe2yjCJetPLlzxpnxKhGDo.jpeg

存款方法执行的步骤包括:

处理存款并更新账户:

  • 遍历存款,并使用「应用存款(applyDeposit)」方法将每笔存款应用到相应的账户。

更新桥状态和输出:

  • 处理存款后,计算新的账户默克尔根。

  • 创建新的状态哈希值,表示更新后的桥状态。

  • 构建合约输出,将总存款金额添加至桥余额中。

  • 保证输出符合预期格式,以维护数据完整性。

取款方法处理聚合的取款交易,更新账户余额,并通过取款扩展器准备分配的资金。

6fIIIIpi1GvwKUarjd94LKYEyBuhAaPML5yMGKH0.jpeg

vXlGx3uewC8GiI2ID0vW6ds13sVMjxSsnFdQUkvR.jpeg

La24kZ8yaQPqmZHYJNclv703ASuhgAlCvAiSEYeE.jpeg

取款方法执行的步骤包括:

处理取款请求并更新账户:

  • 遍历取款请求,并使用「应用存款(applyDeposit)」方法将每笔取款应用到相应的账户。

更新桥状态和输出:

  • 处理取款后,计算新的账户默克尔根。

  • 创建新的状态哈希值,表示更新后的桥状态。

  • 构建合约输出,将总取款金额从桥余额中扣除。

  • 为取款扩展器合约创建一个扩展输出,其中包含总取款金额。

  • 保证输出符合预期格式,以维护数据完整性。

完整源代码可查看 GitHub。

取款扩展器合约

取款扩展器(WithdrawalExpander)是我们桥系统的最终组件,负责根据用户的取款请求将聚合的取款金额分发回各个用户。它逆转了取款聚合器执行的聚合过程,将聚合的取款数据扩展回单个用户的支付。

pygpFaaZ5Al3uS0oWTEuTI9iHUlWNGRM0C9diHbG.jpeg

取款扩展器的核心功能封装在「扩展(expand)」方法中。该方法接受聚合的取款数据,并通过递归的方式将其扩展为单独的取款交易,向用户支付相应的金额。

扩展到叶节点:如果方法扩展到叶节点(单个取款),它会验证取款数据,并构建直接支付到用户地址的输出。

YqKpamtkBxqmV4fUoOZkWnmA7Bgnq3VORWKfdbRv.jpeg

进一步扩展: 如果该方法尚未达到叶节点层,则会继续扩展,将聚合数据分成两个分支,并创建输出,以供进一步扩展的交易消费。

dB9oeytrVpWH6xbjqiaN5Dac8Yes6sS2n12j73W7.jpeg

6YQAiFGQtiyEC10AdhATWiFGa4duEw0TlGiNTTYc.jpeg

结语

在这个概念验证实现中,我们使用 sCrypt 嵌入式领域专属语言(DSL)开发了一个基于 OP_CAT 支持的比特币的桥契约。该桥利用递归契约和默克尔树有效地批量处理存款和取款请求,同时保持用户账户的完整性和安全性。通过设计和实施存款聚合器(DepositAggregator)、取款聚合器(WithdrawalAggregator)、(Bridge)和取款扩展器(WithdrawalExpander)这四种智能合约,我们提供了一种在比特币上管理有状态交互的方法,促进了与像 Starknet 这样的二层网络的互操作性。这项工作为构建生产级桥提供了技术基础,可能增强比特币生态系统中的可扩展性和功能性。

所有代码实现以及端到端测试均可在 GitHub 上获取。

[全文完]

原文链接:https://starkware.co/blog/implementing-a-bridge-covenant-on-op-cat-bitcoin/

Mirror: https://mirror.xyz/starknet-zh.eth/zFbhQB7gfmSTV4CcTv5MRqJBUnKuwMLTNOgZ6jUgDK8

Criptos en tendencia

Lecturas Relacionadas

La estratagema contable de Strategy: el límite de venta de monedas está muy por encima de los 12.500 millones de dólares

Strategy reveló la venta de 3588 BTC (unos 216 millones de dólares) para pagar dividendos y reponer su reserva en dólares. Aunque anunció previamente un límite de venta de 1250 millones de dólares para "construir" dicha reserva, esta venta no se contabiliza en ese cupo, ya que se clasifica como "reposición". El plan de monetización de BTC de la compañía contempla tres usos principales para los fondos de las ventas: 1) Construir la reserva en dólares (hasta 1250 millones), 2) Cubrir costos de dividendos e intereses de acciones preferentes y deuda, y 3) Financiar recompras de acciones (hasta 2000 millones). Solo los dos últimos puntos con límites explícitos suman potencialmente más de 3000 millones en ventas, sin contar las ventas para cubrir obligaciones, que no tienen tope definido. La distinción clave es contable: vender BTC para *añadir* efectivo a la reserva es "construir", mientras que usarla para pagar obligaciones y luego vender BTC para *volver a llenarla* es "reponer". Ambas acciones terminan inyectando dólares al mismo fondo para el mismo propósito. Este marco marca un cambio fundamental: Strategy ha pasado de ser un simple acumulador de Bitcoin a un gestor de capital activo que utiliza su BTC como una herramienta en el balance para mantener en funcionamiento su compleja estructura de capital, lo que genera nuevos conflictos de interés entre sus diferentes partes (acciones comunes, preferentes, reserva y BTC). Los inversores ahora deben analizar minuciosamente la terminología de sus comunicados para evaluar el impacto real en las futuras ventas de BTC.

Odaily星球日报Hace 17 min(s)

La estratagema contable de Strategy: el límite de venta de monedas está muy por encima de los 12.500 millones de dólares

Odaily星球日报Hace 17 min(s)

El juego de conexiones entre la élite de Silicon Valley: ¿Quién tiene contactos consigue 50 millones, y el que tiene talento real no encuentra financiación?

El ecosistema de Silicon Valley ha experimentado un cambio fundamental: la meritocracia está siendo desplazada por un sistema de favoritismos y conexiones personales. Los fundadores con antecedentes prestigiosos, como graduados de Stanford o ex-empleados de OpenAI, consiguen inversiones millonarias con facilidad, mientras que talentos externos y disruptivos luchan por obtener financiación. Este fenómeno se debe a tres factores principales: 1) las expectativas de crecimiento distorsionadas por la IA, 2) la concentración de capital en unos pocos fondos de capital de riesgo establecidos, y 3) la profesionalización de la industria de VC, que atrae a seguidores en lugar de pensadores independientes. Como consecuencia, los emprendedores se ven obligados a adaptarse a un molde predefinido, priorizando las relaciones con inversores sobre la construcción de su producto. Esto ha llevado a prácticas cuestionables, como la manipulación de métricas de ingresos y la venta temprana de participaciones secundarias por parte de los fundadores. A pesar de esta tendencia, el autor argumenta que la historia demuestra que las compañías más valiosas no suelen surgir de las modas del momento. Se muestra optimista ante un eventual regreso a la meritocracia, donde los talentos outsiders e infravalorados triunfarán, y aquellos que solo siguen la corriente terminarán perdiendo.

marsbitHace 34 min(s)

El juego de conexiones entre la élite de Silicon Valley: ¿Quién tiene contactos consigue 50 millones, y el que tiene talento real no encuentra financiación?

marsbitHace 34 min(s)

De 2 millones de usuarios activos mensuales a cero: Zapper fallece por la 'madurez' de DeFi

De Zapper, una herramienta emblemática de DeFi que llegó a tener 2 millones de usuarios mensuales y procesó más de 13.000 millones de dólares en volumen, anunció su cierre definitivo para agosto de 2026. Nacida en 2020 de la fusión de DeFiZap y DeFiSnap, Zapper se popularizó durante el "DeFi Summer" al ofrecer un panel unificado para rastrear carteras, posiciones de liquidez y rendimientos a través de múltiples protocolos. En su apogeo, cubría 14 cadenas y más de 450 protocolos. Su función "Zap", que permitía operaciones complejas en una sola transacción, era su principal ventaja. Sin embargo, el modelo de negocio dependía de comisiones mínimas de agregación de intercambios descentralizados (DEX), un sector con competencia feroz y márgenes reducidos. Los altos costes de mantenimiento de la infraestructura de datos, junto con un cambio en el ecosistema DeFi, resultaron decisivos. El mercado se consolidó en torno a protocolos líderes, los rendimientos atractivos y las expectativas de airdrops disminuyeron, y la necesidad de herramientas complejas para usuarios minoristas se redujo. Zapper intentó varias reinvenciones sin éxito: un sistema de puntos y NFTs en 2021, la app social Chainchat en 2023 y el anuncio de un protocolo con token ZAP en 2024. Ninguna generó ingresos sostenibles. La empresa centró sus esfuerzos en productos de coste elevado para consumidores finales, en lugar de potenciar sus funciones generadoras de ingresos, y no logró adaptarse a la consolidación del mercado y a la fuerte competencia de proyectos como DeBank. Su cierre sirve como advertencia para los proyectos puramente instrumentales en Web3: la adhesión excesiva a un idealismo blockchain sin adaptarse a las realidades del mercado y sin construir un modelo de ingresos sólido puede ser fatal, incluso tras un inicio prometedor.

marsbitHace 58 min(s)

De 2 millones de usuarios activos mensuales a cero: Zapper fallece por la 'madurez' de DeFi

marsbitHace 58 min(s)

Goldman prohíbe, Google también prohíbe: la zona gris de los mercados de predicción se estrecha cada vez más

El 9 de julio, Goldman Sachs actualizó su política de trading personal, prohibiendo a sus empleados participar en contratos de eventos de predicción relacionados con información privilegiada de empresas, resultados electorales, rendimiento financiero (incluido el precio del Bitcoin), datos macroeconómicos, eventos geopolíticos y resultados regulatorios. Solo se permiten apuestas deportivas y de entretenimiento. Las sanciones por violaciones incluyen posible despido y la recuperación de ganancias superiores a 200 dólares. Paralelamente, la Chrome Web Store de Google actualizó sus políticas, prohibiendo a partir del 1 de agosto de 2026 las extensiones que faciliten mercados de predicción con dinero real. Esto afecta un canal de acceso para usuarios, aunque no a las plataformas principales como Polymarket o Kalshi. El detonante de estas medidas fue el caso de Michele Spagnuolo, un ingeniero de Google acusado por la CFTC de usar datos internos confidenciales para operar ilegalmente en Polymarket y ganar 1,2 millones de dólares. Este es el primer caso de uso de información privilegiada corporativa en un mercado de predicción, lo que alertó a instituciones financieras sobre riesgos similares al insider trading. El sector enfrenta una creciente presión regulatoria y política. La CFTC investiga a Polymarket por prácticas cuestionables, mientras en el Congreso de EE.UU. hay esfuerzos para limitar su actuación. Argentina bloqueó el acceso a Polymarket, sumándose a más de 30 países con restricciones. A pesar de esto, el volumen de trading mensual en estos mercados alcanzó un récord histórico y continúa la inversión de capital. Sin embargo, la identidad legal de los mercados de predicción sigue en disputa: la CFTC los considera instrumentos financieros derivados, mientras que algunos estados y críticos los equiparan al juego, señalando que una minoría de usuarios obtiene la mayoría de las ganancias. Las restricciones desde múltiples frentes están reduciendo el espacio de operación para esta industria.

Foresight NewsHace 1 hora(s)

Goldman prohíbe, Google también prohíbe: la zona gris de los mercados de predicción se estrecha cada vez más

Foresight NewsHace 1 hora(s)

Trading

Spot

Artículos destacados

Cómo comprar OP

¡Bienvenido a HTX.com! Hemos hecho que comprar Optimism (OP) sea simple y conveniente. Sigue nuestra guía paso a paso para iniciar tu viaje de criptos.Paso 1: crea tu cuenta HTXUtiliza tu correo electrónico o número de teléfono para registrarte y obtener una cuenta gratuita en HTX. Experimenta un proceso de registro sin complicaciones y desbloquea todas las funciones.Obtener mi cuentaPaso 2: ve a Comprar cripto y elige tu método de pagoTarjeta de crédito/débito: usa tu Visa o Mastercard para comprar Optimism (OP) al instante.Saldo: utiliza fondos del saldo de tu cuenta HTX para tradear sin problemas.Terceros: hemos agregado métodos de pago populares como Google Pay y Apple Pay para mejorar la comodidad.P2P: tradear directamente con otros usuarios en HTX.Over-the-Counter (OTC): ofrecemos servicios personalizados y tipos de cambio competitivos para los traders.Paso 3: guarda tu Optimism (OP)Después de comprar tu Optimism (OP), guárdalo en tu cuenta HTX. Alternativamente, puedes enviarlo a otro lugar mediante transferencia blockchain o utilizarlo para tradear otras criptomonedas.Paso 4: tradear Optimism (OP)Tradear fácilmente con Optimism (OP) en HTX's mercado spot. Simplemente accede a tu cuenta, selecciona tu par de trading, ejecuta tus trades y monitorea en tiempo real. Ofrecemos una experiencia fácil de usar tanto para principiantes como para traders experimentados.

636 Vistas totalesPublicado en 2024.12.12Actualizado en 2026.06.02

Cómo comprar OP

Discusiones

Bienvenido a la comunidad de HTX. Aquí puedes mantenerte informado sobre los últimos desarrollos de la plataforma y acceder a análisis profesionales del mercado. A continuación se presentan las opiniones de los usuarios sobre el precio de OP (OP).

活动图片