深入探讨SuiBridge技术架构

转载
124 天前
8601
Sui Network

文章转载来源: Sui Network

Sui Bridge是Sui的原生桥,为Sui资产的跨链转移提供一个最小化信任的途径。

在过去几个月中,Sui生态的原生桥Sui Bridge开发取得了重大进展。这一举措不仅提高了Sui对更广泛社区的可访问性,还改善了与其他区块链的互操作性。

作为Sui生态的关键组成部分,Sui Bridge促进了Sui与其他区块链网络之间的资产和数据的安全高效转移。这一功能不仅拓宽了在Sui上构建的应用程序的影响范围,还提供了更深入集成到更广泛区块链环境的途径。互操作性增加了Sui的增长和采用,使其他网络(如以太坊)的资产能够安全且轻松地迁移到Sui。

? Sui Bridge:

https://bridge.testnet.sui.io

Sui Bridge背景

在区块链生态中,跨链桥是一种协议,允许独立的区块链网络之间进行交互和通信。跨链桥促进了跨链数据的转移,允许用户将其资产从一个链转移到另一个链,甚至进行更复杂的操作如跨链消息传递。

在众多跨链桥设计选择中,Sui Bridge采用了锁定和铸造机制,这是最广泛使用的解决方案之一。作为一种锁定和铸造设计,Sui Bridge在以太坊智能合约中持有以太坊原生资产,而在桥接交互的方向上,Sui资产会被铸造或销毁。

作为Sui的原生桥,Sui Bridge不需要额外的信任。Sui Bridge由Sui网络的节点来保障安全,其代码已经嵌入到Sui框架中。

在其当前状态下,Sui Bridge在测试网上可用,支持在以太坊Sepolia和Sui测试网之间桥接ETH、WETH、WBTC和USDT等tokens。Sui Bridge在主网上线后,将优先支持更多的资产。未来版本的Sui Bridge将添加新功能,如自定义跨链消息传递和与其他区块链的集成。

高级架构

Sui Bridge有四个关键组件:Sui Bridge委员会或节点网络、Sui Bridge智能合约、运行在以太坊和Sui上的全节点,以及桥接客户端。

客户端是用户与Sui Bridge基础设施之间的接口。它通过提交格式正确的交易和收集Sui Bridge节点签名来协调用户的桥接操作。客户端使用全节点在桥的两侧提交交易。Sui Bridge节点还运行以太坊和Sui全节点,以监听桥接操作并通过以下交易响应这些操作。虽然桥接客户端是无需许可的,任何人都可以执行,但许多桥接节点会开启桥接客户端以确保网络的活跃性。

Sui Bridge使用运行在以太坊和Sui上的基础设施以及Sui Bridge节点网络

从以太坊桥接到Sui时,用户将资产存入以太坊上的Sui Bridge智能合约。客户端随后观察该交易并协调桥接过程。Sui Bridge委员会操作以太坊全节点,监听此类桥接操作以验证客户端请求的合法性。

验证后,通过Sui上的Sui Bridge包为用户铸造桥接资产,从而完成桥接操作。由于桥接成本较低,Sui验证节点目前补贴与Sui上桥接交易相关的gas费,允许客户端自动执行交易,创造了无缝的桥接体验。

从Sui桥接到以太坊时,过程类似,只是用户必须在以太坊上手动提交认领交易。此交易包括Sui Bridge节点的签名数据,允许以太坊账户赎回锁定在桥接合约中的指定资产。

此外,所有桥接记录和批准都存储在链上的桥接对象中。这在Sui上是可行的,因为其存储和gas费相对低廉。Sui Bridge合约还处理治理操作,这些操作由Sui Bridge委员会控制。

桥接消息

为了确保低gas费,Sui Bridge构建的消息轻量且易于接收链解码。采用了通用消息格式,以确保每个链都能高效地解码、验证消息和签名。

Move编码示例:

public struct BridgeMessage has copy, drop, store { message_type: u8, message_version: u8, seq_num: u64, source_chain: u8, payload: vector }

Solidity编码示例:

struct Message { uint8 messageType; uint8 version; uint64 nonce; uint8 chainID; bytes payload; }

这些桥接消息设计简单高效,结构极简,仅包含消息类型、版本、序列号、源链标识符和有效载荷等基本字段。这种简化设计减少了复杂性和计算开销,确保低gas费,同时促进快速可靠的跨链通信。

桥接安全性

确定桥的信任模型是开发跨链桥以支持繁荣生态和大规模流动时最重要的设计决策之一。跨链桥应既安全又去中心化,在某些桥梁设计中,这些属性可能相互矛盾,而开发原生桥提供了利用Sui安全性的机会来保护Sui Bridge。

与运行验证节点以保障Sui安全的节点操作者一样,他们也管理和维护Sui Bridge运行的基础设施。Sui Bridge继承了一个去中心化的节点操作者网络,这些操作者非常有能力运行和保护Sui基础设施。

如上所述,大多数Sui Bridge操作都在Sui上进行,并将Sui视为桥的控制面板。这得益于Move中开发的软件所继承的安全性。

桥接委员会

Sui Bridge由保障Sui安全的相同验证节点集保护。在测试网阶段,委员会由部分测试网验证节点组成。上线主网后,大多数(如果不是全部)活跃的Sui验证节点将成为桥接委员会的一部分。主网上线后将实施动态管理委员会,以便新的验证节点加入。只允许Sui验证节点成为Sui Bridge委员会的一部分,确保继承其安全假设、属性和社会共识。

为了保持高安全性并兼容其他区块链网络,Sui Bridge使用椭圆曲线数字签名算法(ECDSA)进行委员会签名。通过利用ECDSA,Sui Bridge确保无缝互操作性和安全的交易验证,强化系统的完整性和可信度。

签名验证

Sui Bridge使用可恢复的ECDSA签名,允许直接从签名中恢复公钥。这一特性简化了验证过程,使我们能够检索公钥并确认签名的真实性和完整性,而无需事先了解公钥。

当签名的总权重达到或超过预定的阈值时,消息才被视为有效。此阈值机制确保需要足够数量的认证签名来验证消息,从而增强系统的安全性和可靠性。通过实施这种方法,我们可以防止欺诈活动,确保只有合法交易被处理。

Move编码示例:

...let mut message_bytes = SUI_MESSAGE_PREFIX;message_bytes.append(message.serialize_message());

let mut threshold = 0;while (i < signature_counts) { let pubkey = ecdsa_k1::secp256k1_ecrecover(&signatures[i], &message_bytes, 0);

// check duplicate // and make sure pub key is part of the committee assert!(!seen_pub_key.contains(&pubkey), EDuplicatedSignature); assert!(self.members.contains(&pubkey), EInvalidSignature);

// get committee signature weight and check pubkey is part of the committee let member = &self.members[&pubkey]; if (!member.blocklisted) { threshold = threshold + member.voting_power; }; seen_pub_key.insert(pubkey); i = i + 1;};...

Solidity编码示例:

function verifySignatures(bytes[] memory signatures, BridgeUtils.Message memory message) external view override{ uint32 requiredStake = BridgeUtils.requiredStake(message);

uint16 approvalStake; address signer; uint256 bitmap;

// Check validity of each signature and aggregate the approval stake for (uint16 i; i < signatures.length; i++) { bytes memory signature = signatures[i]; // recover the signer from the signature (bytes32 r, bytes32 s, uint8 v) = splitSignature(signature);

(signer,,) = ECDSA.tryRecover(BridgeUtils.computeHash(message), v, r, s);

require(!blocklist[signer], "BridgeCommittee: Signer is blocklisted"); require(committeeStake[signer] > 0, "BridgeCommittee: Signer has no stake");

uint8 index = committeeIndex[signer]; uint256 mask = 1 << index; require(bitmap & mask == 0, "BridgeCommittee: Duplicate signature provided"); bitmap |= mask;

approvalStake += committeeStake[signer]; }

require(approvalStake >= requiredStake, "BridgeCommittee: Insufficient stake amount"); }

构建互操作性

Sui原生桥不仅提供了在区块链网络之间转移资产的安全高效手段,还为更高级的跨链交互奠定了基础。通过利用其强大的信任模型、整合ECDSA进行安全和可验证的交易、并采用基于委员会的签名验证过程Sui Bridge确保高安全性和可靠性,同时保持灵活性。

Sui bridge架构的可扩展性和灵活性允许未来的扩展和与其他区块链网络的集成。随着生态的发展,桥将支持更广泛的资产和功能,如自定义跨链消息传递,允许独特的跨链交互。

Sui Bridge代表了Sui互操作性领域的重要进步,提供了无缝且高度安全的跨链资产转移解决方案。随着Sui Bridge在主网上线,用户可以期待一个越来越强大和多功能的跨链桥,满足当前需求,同时也预见未来的需求。