图解Wormhole (虫洞)

Wormhole(虫洞)正如其名,它是区块链的爱因斯坦-罗森桥,是一种跨链消息传递协议。

图解Wormhole (虫洞)
一键发币: SUI | SOL | BNB | ETH | BASE | ARB | OP | POLYGON | AVAX | FTM | OK

"墙不仅是为了把敌人挡在外面,也是为了把我们的兄弟锁在里面。" ——鲁米,波斯诗人

从平面角度来看,区块链是完全独立的。它们通常无法与链下世界或其他区块链进行交互。它们是自成一体的孤岛。

这种独立性本身是区块链的一个基本属性。

每条区块链都是自我包含的。它有自己的规则和交易历史,并且不需要依赖其他系统来运行。如果一条区块链出现问题,不会影响其他区块链。

这一特性在某些方面非常出色,但也付出了代价,流动性和用户分散在不同的链上。

这意味着加密资产、身份和流动性被局限于特定的链上。这使得在多个链之间导航(每个链都有自己的钱包、工具和协议)变得相当麻烦且耗时。

但如果这些碎片可以被利用为一个整体潜力呢?

众多之中,合一

在我的副标题中,我写道“连接孤立区块链的桥梁”。

在上下文中,“孤立”指的是不同区块链生态系统之间的隔离或缺乏连通性,每个生态系统都独立运作,有自己的规则、协议和原生资产。

“桥梁”一词表示一种连接或接口,用于在这些孤立的区块链之间传输资产、数据或交易。

最常见的桥梁类型是跨链桥。

简单来说,跨链桥是一个(虚拟)链接,允许消息在两条区块链之间传递。任何比特序列都可以用作消息(例如,将NFT或代币从链A转移到链B)。

假设你想将比特币从以太坊转移到Solana,你需要执行以下两个步骤:

  • 从以太坊源账户提取比特币。
  • 将比特币转移到指定的Solana账户。

但由于缺乏直接通信,无法在一个交易中同时触及两条链,因此需要一个中间人,他在这两条链上都有比特币并能协助你完成以下两个步骤:

  • 将比特币从你的源账户转移到他们的以太坊账户。
  • 将比特币(或其等值物)从目标的Solana账户转移到你的账户。

所以,跨链桥 = 中间人。

但这种方式存在一些困难……

  1. 如何确保这两个操作同步发生——即要么两者都成功,要么两者都失败?如果你或桥梁中的任何一个失败,你可能会损失资金。
  2. 如何确保消息准确发送到目标账户而不是其他账户——即只发送一个比特币,不是一只狗狗币,也不是其他硬币或两个比特币,并且发送到你的目标账户?
  3. 如何确保消息只发送一次(例如,他们的Solana账户永远不会向你的目标账户发送两次)?

什么回答了这些问题?

1、Wormhole (虫洞)

虫洞就像时空中的隧道,可以连接非常遥远的空间区域,甚至是不同的宇宙——约翰·惠勒

某个地方,正等待着令人难以置信的事情被发现——卡尔·萨根

Wormhole正如其名,它是区块链的爱因斯坦-罗森桥,是一种跨链消息传递协议。

最初,虫洞的设计是作为Solana和以太坊之间的跨链代币包装和交换协议。

自这个原始设计和实现以来,虫洞已扩展为一个跨链消息层,不仅允许链之间的代币包装和交换,还通过利用虫洞的跨链状态认证模型和消息传递功能,使外部协议能够在其基础上构建。

作为一个跨链消息协议,虫洞消息传递充当开发人员可以构建在其上的基础架构。它也是开源的。

消息传递提供了一种基本语言和框架,用于在不兼容的两个系统之间安全地发送数据。核心虫洞桥通过在源链(数据当前所在的链)和目标链(数据将要移动到的链)上运行智能合约来运作。

同时,顶层协议可以满足其他用例,例如代币桥(如Portal、Allbridge)、跨链DEX(如Mayan Swap、Hashflow)和货币市场(如Pike、Synonym)。

2、Wormhole的架构

虫洞不仅仅限于代币转移。它扩展了能力,支持独特数字资产如NFT和DAO的转移。

那么虫洞是如何实现这一点的呢?

虫洞的架构包括既相互协作又共同工作的链上和链下组件,以实现安全高效的跨链通信。

链上组件

链上组件始于与虫洞核心合约交互以发布消息的发射器合约。此操作会在交易日志中记录一个事件,提供关于发射器和序列号的详细信息以识别消息。

多个合约可以充当发射器,包括:

  • 资产转换和桥接的x资产合约
  • 消息分发跨链的中继合约
  • 启用Dapp跨链功能的虫洞路由器合约
链下组件

链下组件构成了虫洞架构的另一半。

链下组件包括:

  • 监护人网络:由点对点网络中的验证者组成。
  • 监护人:这些验证者为VAA多签做出贡献。
  • 间谍:帮助扩展VAA分布的验证者。

虫洞基于这样一个理念而构建:一组去中心化的“监护人”(即节点/验证者)可以被信任,以警惕地观察、验证和确认来自每个支持链上的虫洞核心桥合约的消息。监护人网络由19个验证者或监护人组成。

虫洞还具有一个API,允许您检索VAA或监护人网络的详细信息。

最后,Relayers——链下进程将VAA传递到目标链。这包括自动Relayers,它们形成一个去中心化的网络,交付链上请求的消息,以及专门的Relayers,它们处理特定协议或跨链应用的VAAs,并在链下执行自定义逻辑以节省gas成本并提高跨链兼容性。

3、Wormhole的VAAs

简单来说,Guardians就像你试图进入不同国家时的边境官员,他们会盖章确认签证是否有效。

他们创建了可验证的操作批准(VAAs),即对观察到的消息的签名证明。

他们实现了emitVAA()verifyVAA()函数。emitVAA()verifyVAA()函数被实现。可验证的操作批准(VAA)是一个结构体,包含Guardian签名和消息负载。

每个VAA都表示为一个两部分的字节数组,称为Body和Header。

在Header中可以找到Guardian及其签名的信息:

byte        version                  (VAA Version)
u32         guardian_set_index       (Indicates which guardian set is signing)
u8          len_signatures           (Number of signatures stored)
[][66]byte  signatures               (Collection of ecdsa signatures)

Body中包含消息的完整详细信息,包括消息负载、序列、发送者链、发送者地址和源交易的时间戳

u32         timestamp                 (Timestamp of the block where the source transaction occurred)
u32         nonce                     (A grouping number)
u16         emitter_chain             (Wormhole ChainId of emitter contract)
[32]byte    emitter_address           (Emitter contract address, in Wormhole format)
u64         sequence                  (Strictly increasing sequence, tied to emitter address & chain)
u8          consistency_level         (What finality level was reached before emitting this message)
[]byte      payload                   (VAA message content)

VerifyVAA接受VAA并与Guardian的签名进行比较,以确保证明的有效性。emitVAA读取并发布消息到VAA的“内存池”。

VAA负载如下:

// head

byte        version                  // VAA Version
u32         guardian_set_index       // Indicates which guardian set is signing
u8          len_signatures           // Number of signatures stored[][66]byte    signatures       // Collection of ecdsa signatures

// body

u32         timestamp
u32         nonce
u16         emitter_chain
[32]byte    emitter_address
u64         sequence
u8          consistency_level
[]byte      payload

每个Guardian独立观察并签署消息,结果收集的签名代表了Wormhole网络对某条消息达成一致的证明。所有这些签名随后组合并保存在stored[][66]byte中。

具体来说,序列在保证每条消息的VAA都是唯一的方面起着关键作用(也就是说,两条具有相同消息内容的不同消息会有不同的VAAs)。每次调用publishMessage函数时,useSequence函数会将序列号增加1:

这确保了相同的消不会被传递两次。

消息内容包含在负载字节数组中。例如,在代币转移中,包括转移金额、代币地址、代币链、接收者地址、目标链ID、转移费用等:

struct Transfer {
        // PayloadID uint8 = 1
        uint8 payloadID;
        // 转移的金额(大端uint256)
        uint256 amount;
        // 代币地址,如果少于32字节则左填充零
        bytes32 tokenAddress;
        // 代币的链ID
        uint16 tokenChain;
        // 接收者的地址,如果少于32字节则左填充零
        bytes32 to;
        // 接收者的链ID
        uint16 toChain;
        // 用户愿意支付给Relayer的代币金额(大端uint256),必须小于等于Amount。
        uint256 fee;
    }

记住,只有当2/3以上的Guardians签署了消息后,该消息才是有效的。这类似于用户在Gnosis多签钱包中独立签署交易。

4、Wormhole查询

Wormhole查询功能允许您快速且安全地访问存储在区块链上的数据,即使您当前正在其他区块链上工作。

在Wormhole查询之前,为了获取某个链的状态数据,需要将智能合约放置到另一个区块链上,定期“推送”(发布)数据。另一种访问跨链数据的方式是使用Wormhole查询,它为用户提供了一种“拉取”机制,可以从Wormhole Guardian处寻求信息并获得证明。通过拉取查询,气体费用减少了约84%,使此操作比以前更便宜更快。

开发人员可以通过Guardian网络提交查询并从兼容的区块链检索状态数据,从而消除Guardian广播数据的需求。

Guardian网络接收查询请求,通过执行RPC节点将其发送到所需链,接收结果,验证请求并返回所需的数据。

经过验证的响应成为结果。

5、Wormhole Portal桥接

xLabs团队创建了Portal,这是一个令牌桥接器,使用Wormhole的消息协议实现锁定和铸造程序来在链之间移动资产。

锁定和铸造程序本质上涉及锁定资产在一个智能合约中,而不是在源链上烧毁资产。接下来,在目标链上创建IOU,即代币的包装版本。

源链发出一条消息,表明代币已被锁定,其结构如下:

u8      payload_id = 1          转移
u256    amount                  转移的代币数量。
u8[32]  token_address           来源链上的代币地址。
u16     token_chain             来源链的数字ID。
u8[32]  to                      目标链上的地址。
u16     to_chain                目标链的数字ID。
u256    fee                     金额的一部分支付给Relayer。

然而,这种事件中并未指定代币是如何锁定的。代币桥的实现将决定它们是被托管还是由智能合约持有。

用户可以通过Portal连接任何Wormhole支持的链之间的代币。截至2月18日,Wormhole支持42个区块链(包括测试网)。

Circle构建的USDC桥接器能够在CCTP支持的链之间无Gas费桥接USDC。CCTP使用烧毁和铸造过程,并支持Arbitrum、Avalanche、Base、Ethereum、Noble、OP Mainnet和Polygon PoS,预计很快将支持Solana。

除了代币桥接,Wormhole的消息层也可以用于NFT桥接。

最著名的例子之一是DeGods和y00ts的迁移,它们最初分别从Solana迁移到Ethereum和Polygon。这次迁移是通过Wormhole使用烧毁和铸造过程完成的。

Solana上的NFT持有者通过智能合约烧毁他们的原始NFT,并直接在其钱包中赎回在Ethereum和Polygon上新铸造的ERC-721代币。

来源:DeFiLlama.com

关于费用,有两种类型的费用:

  • 桥梁为促进跨链服务而收取的交易费用
  • 发送方和接收方链上需要支付的气体费用。

气体费用通常在目标链上支付,因为交易在那里得到解决。如果用户在目标链上没有原生货币,他们可以利用桥梁通过中继器支付部分发送的代币。然后由中继器覆盖目标链上的气体成本。为了使其更易于使用,基于Wormhole开发的去中心化应用程序(dapps)通常通过元交易补偿用户。

像BSC和Solana这样的原生链通常收取较低的气体费用。然而,如果转移涉及稳定币,则可能会收取额外的稳定性费用。

以太坊的气体费用远高于其他链,经常飙升至两位数,这使得涉及以太坊的跨链转移可能更加昂贵。

尽管Wormhole目前最受欢迎的用例是资产桥接,但该协议还支持其他更成熟的用例,如跨链治理和预言机。

例如,Uniswap利用Wormhole进行 跨链治理。Uniswap治理位于以太坊主网上,这意味着决策是在以太坊上通过代币投票做出的。然而,Uniswap存在于许多链上,包括L2和alt-EVM。

在这些部署中,持有者必须能够参与并继承在以太坊主网上做出的治理决策。这可以通过Wormhole的消息层以去中心化的方式完成,使Uniswap治理能够将数据从以太坊主网发送到目标链。

Wormhole的另一个相关用例是其被Pyth所利用。Pyth是一个低延迟、拉取式的预言机网络,提供跨多个链的价格馈送。Pyth利用Wormhole的消息层在链间发送价格馈送和数据。

Pyth从做市商、金融机构等处获取数据,这些机构将价格馈送广播到Pythnet——一个Solana SVM的分支,目的是从不同的发布者那里聚合价格馈送。Wormhole使Pyth能够通过收集聚合的数据并在链之间桥接,将这些价格馈送跨链传递给所有Wormhole支持的链上的dApps。

6、掌握工具

Wormhole有两种与协议交互的方式:

  • Wormhole Connect
  • Wormhole SDK

名为Wormhole Connect的前端嵌入式小部件使开发人员轻松地集成使用Wormhole消息传递的桥梁。它允许在应用内进行跨各种区块链的桥接,无需离开应用即可进行转账,并支持无gas和gas-dropoff(仅在源链上支付气体)的转账。

虽然功能与Wormhole Connect相同,但Wormhole SDK需要更多的工作和实现。与Connect一样,Wormhole SDK使开发人员能够在Wormhole消息传递的基础上创建协议,并使用TypeScript模块与Wormhole支持的链进行通信。

Wormhole有一个SDK,作为构建在Wormhole网络上的门户。

该SDK当前支持流行的编程语言如Rust、JavaScript和Go,允许开发人员选择他们喜欢的环境。它提供了无缝资产转移、数据消息交换以及与Guardian网络交互的API。

Wormhole的SDK可以在核心存储库这里找到,并且可以在npm上获得。

可以使用npm安装:

npm i @certusone/wormhole-sdk

这些RPC节点由Guardians维护,以帮助获取VAAs并查询Wormhole网络。对于主网Guardian RPC:

const MAINNET_GUARDIAN_RPC: string[] =  [
    "https://api.wormholescan.io", // 探索器提供了一个相当于Guardian的端点来获取VAAs
    "https://wormhole-v2-mainnet-api.mcf.rocks",
    "https://wormhole-v2-mainnet-api.chainlayer.network",
    "https://wormhole-v2-mainnet-api.staking.fund",
]

对于测试网Guardian RPC:

const TESTNET_GUARDIAN_RPC: string[] =  [
    "https://api.testnet.wormholescan.io", // 探索器提供了一个相当于Guardian的端点来获取VAAs
]

对于测试网Guardian公钥:

const TESTNET_GUARDIAN_PUBKEY: string = "0x13947Bd48b18E53fdAeEe77F3473391aC727C638"

7、将理论付诸实践

让我们使用Wormhole从Solana向以太坊传输消息。

在Solana上,调用另一个合约的方法需要我们提供某些账户。这可以通过跨程序调用(CPI)来实现。

为了方便这个过程,Wormhole TypeScript SDK有一个方便的函数叫做getWormholeCpiAccounts,我们将使用它来获取所需的账户。

const wormhole = getWormholeCpiAccounts(
        CORE_BRIDGE_PID,       // Solana的Wormhole核心合约
        KEYPAIR.publicKey,
        program.programID,     // 您的Solana程序ID
				// 下面是一个用于序列跟踪器账户的PDA
        deriveAddress([Buffer.from("sent"), 0], program.programID)
 );

上述提到的函数将在Anchor中返回以下账户:

	#[account(
      mut,
      seeds = [wormhole::BridgeData::SEED_PREFIX],
      bump,
      seeds::program = wormhole_program,
  )]
  pub wormhole_bridge: Account<'info, wormhole::BridgeData>,

  #[account(
      mut,
      seeds = [wormhole::FeeCollector::SEED_PREFIX],
      bump,
      seeds::program = wormhole_program
  )]
  pub wormhole_fee_collector: Account<'info, wormhole::FeeCollector>,

  #[account(
      init,
      payer = owner,
      seeds = [WormholeEmitter::SEED_PREFIX],
      bump,
      space = WormholeEmitter::MAXIMUM_SIZE
  )]
  pub wormhole_emitter: Account<'info, WormholeEmitter>,

  #[account(
      mut,
      seeds = [
          wormhole::SequenceTracker::SEED_PREFIX,
          wormhole_emitter.key().as_ref()
      ],
      bump,
      seeds::program = wormhole_program
  )]
  pub wormhole_sequence: UncheckedAccount<'info>,

  #[account(
      mut,
      seeds = [
          SEED_PREFIX_SENT,
          &wormhole::INITIAL_SEQUENCE.to_le_bytes()[..]
      ],
      bump,
  )]
  pub wormhole_message: UncheckedAccount<'info>,
  pub clock: Sysvar<'info, Clock>,
  pub rent: Sysvar<'info, Rent>,

完成这些配置后,我们可以继续下一步。

我们的发射器与Wormhole的主要交互方式是通过核心合约。我们将调用post_message方法,这本质上是我们通过链发送消息的一种方式。函数实现如下:

pub fn post_message<'info>(
    ctx: CpiContext<'_, '_, '_, 'info, PostMessage<'info>>,
    nonce: u32,
    payload: Vec<u8>,
    finality: Finality,
) -> Result<()> {

以下是每个部分的含义:

  • payload: 这是我们的实际消息——区块链的“来自另一边的问候”。它是一个任意字节数组,由于某些区块链的限制,可能有最大长度。
  • finality: 这是我们的防护装备,防止重组和回滚,指定在Wormhole VAA获取我们的消息之前最终性的水平。
  • nonce: 这是消息的独特索引,将用于生成批量VAAs。
  • sequenceNumber: 消息的独特索引。当与发射器合约地址和发射器链ID结合时,可以从守护者网络节点检索相应的VAA。

有了这些解释,我们现在准备查看我们的Rust代码片段,用于发布消息:

let payload: Vec<u8> = "Hello from the other side".as_bytes().to_vec();
let nonce: u32 = 0;
let finality = wormhole::Finality::Confirmed as u8;

match wormhole::post_message(
    CpiContext::new_with_signer(
        ctx.accounts.wormhole_program.to_account_info(),
        wormhole::PostMessage {
            config: ctx.accounts.wormhole_bridge.to_account_info(),
            message: ctx.accounts.wormhole_message.to_account_info(),
            emitter: ctx.accounts.wormhole_emitter.to_account_info(),
            sequence: ctx.accounts.wormhole_sequence.to_account_info(),
            payer: ctx.accounts.owner.to_account_info(),
            fee_collector: ctx.accounts.wormhole_fee_collector.to_account_info(),
            clock: ctx.accounts.clock.to_account_info(),
            rent: ctx.accounts.rent.to_account_info(),
            system_program: ctx.accounts.system_program.to_account_info(),
        },
        &[
            &[
                SEED_PREFIX_SENT,
                &wormhole::INITIAL_SEQUENCE.to_le_bytes()[..],
                &[*ctx.bumps.get("wormhole_message")?,
            ],
            &[wormhole::SEED_PREFIX_EMITTER, &[&ctx.accounts.wormhole_emitter.bump]],
        ],
    ),
    nonce,
    payload,
    finality.into(),
) {
    Ok(_) => {}
    Err(e) => {
        msg!("Error Posting Message: {:?}", e);
        return Err(e);
    }
}

在上面的Rust代码中,payload设置为我们想要发送的消息(“来自另一边的问候”)。然后调用了post_message方法,并传入了多个参数。如果在此方法执行期间发生错误,它会被捕获并记录下来以便调试。

一旦我们成功执行CPI,我们就会得到一个序列号。这个特殊的数字允许我们检索我们的可验证操作批准(VAA)。如果你正在运行本地Wormhole验证器(‣),你离获取你的VAA只有一小步!你所需要做的就是访问以下URL,替换[wormholeChainId], [emitterAddr], 和 [[seq]带有你的具体信息:

<http://localhost:7071/v1/signed_vaa/${wormholeChainId}/${emitterAddr}/${seq}>

这里是我们的一条VAA,看起来像外星科技的神秘代码片段:

010000000001009ba8eca3ad035da554498a113bc460b05f18849c1fb256540c05cedc9e9918846326ac799d548392319ea93e0721da8fc231f71e64097b398cff133d4d9843e7000000000100000001000104a97fa4da1675cf1a83750edcc176e956fe37fc0ffd8db87eeff6cc78ebd51b000000000000000001656c6c6f2066726f6d20746865206f746865722073696465

你可以使用Wormhole的 vaa解析器来解码它并查看有效负载。

我们的最终任务是将上述VAA传输到以太坊并解码有效负载以访问其内容。

这里 是应用程序与Wormhole核心合约交互的接口,用于发布VAAs或验证和解析接收到的VAAs。实例化接口将取决于你开发环境的合约地址和区块链。

以下是在主网以太坊实例化接口的示例代码:

address private wormhole_core_bridge_address = address(0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B);
IWormhole core_bridge = IWormhole(wormhole_core_bridge_address);

现在,我们可以解析其他链上发出的VAAs。

function receiveEncodedMsg(bytes memory encodedMsg) public {
        (IWormhole.VM memory vm, bool valid, string memory reason) = core_bridge.parseAndVerifyVM(encodedMsg);

        // 检查Wormhole监护人签名
        // 如果VM无效,将返回不有效的理由
        // 如果VM有效,reason将为空白
        require(valid, reason);

        // 检查消息是否已被处理过
        require(!_completedMessages[vm.hash], "Message already processed");
        _completedMessages[vm.hash] = true;

        // 执行操作
        current_msg = string(vm.payload);
        emit message(current_msg);
    }

假设你在以太坊主网上部署了你的合约,但你想向Solana发送一条消息。那么,使用Wormhole SDK,你可以用IWormhole包装你的地址,并使用_wormhole.publishMessage()

import "./interfaces/IWormhole.sol";

contract Messenger {

    // 硬编码Wormhole核心桥合约地址
    // 在实际合约中,我们会在构造函数中设置此地址
    address a = address(0xC89Ce4735882C9F0f0FE26686c53074E09B0D550);
    IWormhole _wormhole = IWormhole(a);

    function sendStr(bytes memory str, uint32 nonce) public returns (uint64 sequence) {
        sequence = _wormhole.publishMessage(nonce, str, 1);
        return sequence;
    }

    function wormhole() public view returns (IWormhole) {
        return _wormhole;
    }
}

将以太坊代币转移到Solana:

// 提交交易
const receipt = await transferFromEth(
  ETH_TOKEN_BRIDGE_ADDRESS, // 在文档中指定
  signer, 
  tokenAddress, // WETH代币地址
  amount,
  CHAIN_ID_SOLANA, 
  recipientAddress // 已认证的Solana地址
);

// 需要获取signedVAA
const { signedVAA } = await getSignedVAA(
  WORMHOLE_RPC_HOST,
  CHAIN_ID_ETH,
  emitterAddress,
  sequence
);

// 发送signedVAA
await postVaaSolana(
  connection,
  wallet,
  SOL_BRIDGE_ADDRESS,
  payerAddress,
  signedVAA
);

// 在Solana上赎回WETH
const transaction = await redeemOnSolana(
  connection,
  SOL_BRIDGE_ADDRESS,
  SOL_TOKEN_BRIDGE_ADDRESS,
  payerAddress,
  signedVAA,
  isSolanaNative,
  mintAddress
);

就这样!你已经成功地跨链发送了一条消息。

现在,我们谈到了桥梁和跨链构建,但这些为什么重要?

真正的答案——xDapps。

8、xDapps

xDapps是由Wormhole的强大功能构建的任何应用。

它们是那种不受限于特定链的应用程序,可以利用xAssets(跨链资产)和xData(跨链数据)。

“Wormhole是一种让用户不必关心开发者选择的方式。”

想象一下,你的银行基础设施基于Google Cloud,而你想在Amazon上购买一些东西,而Amazon的基础设施是基于AWS的。由于你的银行使用的是不同的开发基础设施,你无法从Amazon购买商品,这很荒谬。

目前,在以太坊上拥有资金的情况下,在Solana上购买东西并不容易。

xDapps,作为跨链应用,解决了这个问题。

简而言之,它让Web3用户体验更接近Web2。

例如,一个基于Solana的应用程序可能支持直接的以太坊存款!如果开发者只是在其前端集成Wormhole SDK,Portal Token Bridge将会拾取存款并将它发送到目标链,即Solana。你现在可以直接从你的银行购买这个Amazon商品,而不必担心背后的技术。

但是,为什么需要xDapps?

更多的链意味着更多的用户!

这意味着你的产品可以在任何链上的任何用户使用。开发人员只是希望维护用户的权利,并将加密货币引入下一个十亿用户。因此,扩展到新链将覆盖更多用户,从而增加用户数量。

这就是几个项目展示给我们的。

超过1.4亿人在web2和web3平台上玩Sweat Economy这款运动赚钱游戏。

他们的代币SWEAT最初存在于NEAR区块链上,作为NEP-141代币。由于NEAR肯定没有所有用户,他们使用Wormhole将其桥接到以太坊。现在它也可以作为原生ERC-20代币使用。这意味着以太坊上的用户可以直接使用它,并且所有来自以太坊的流动性都可以应用于Sweat Economy。

9、产品构思

“过去的链条必须被打破,我们才能自由塑造未来”——富兰克林·D·罗斯福

这些智慧的话语对今天的区块链行业来说依然适用。孤立的生态系统阻碍了创新并限制了用户体验。

为此,让我们来看看一些利用Wormhole框架的独特且可行的产品创意:

  1. 使用Wormhole的互操作性构建一个单一登录系统,管理用户在不同区块链上的声誉和数字足迹。这允许用户在任何链上的dApp上无缝交互,同时保持统一的身份。
  2. 开发一个DEX,利用Wormhole桥聚合来自不同DeFi协议的流动性,这些协议位于不同的区块链上。用户可以在以太坊、Solana和Avalanche等链之间无缝交换代币,拥有深度流动池,所有这些都包含在一个界面中。
  3. 创建一个统一的借贷和借款平台,利用Wormhole的互操作性。该平台可以让用户连接到各种DeFi协议中最吸引人的利率和贷款选项,无论这些协议所在的底层区块链是什么。
  4. 开发一款游戏,利用Wormhole桥实现跨不同区块链虚拟世界的游戏中资产(角色、物品)的无缝转移和使用。这为玩家提供了一个真正互联的游戏体验,使他们在各个元宇宙中都能利用自己的资产。
  5. 构建一个由Wormhole驱动的NFT市场,允许用户购买、出售和交易不依赖于其原生区块链的NFT。这消除了多个钱包和碎片化生态系统的需要,促进了更统一的NFT交易体验。
  6. 目前,由于不同区块链上的数据孤岛现象,很难获得DeFi活动、NFT趋势和整体市场洞察的全面视图。因此,有人可以开发一个数据分析平台,利用Wormhole桥聚合和分析来自不同区块链的数据。

10、WORMHOLE 和 COSMOS

值得注意的是,Osmosis将是首批集成Wormhole Gateway的应用链之一。

作为Cosmos生态系统中在IBC活动、交易量和费用收集方面领先的领跑者,它在更大的DeFi场景中享有盛誉。Osmosis实验室的联合创始人Sunny Aggarwal在巴黎举行的社区会议Osmocon上展示了这一合作关系。

Cosmos上的Gateway诞生于多种因素。

但主要原因是Cosmos SDK,因为它提高了Wormhole的开放性和独立性。通过SDK,Wormhole还能够使用被视为行业标准的安全性的IBC轻客户端。这也增强了Wormhole在区块链之间持续进行资产和数据流动的能力。

11、结束语

区块链的未来无疑是多链的。

Wormhole提供了工具和基础设施,成为这场革命的先锋。凭借其强大的SDK和蓬勃发展的社区,Wormhole赋予开发人员构建下一代dApps的能力。

所以,深入探索Wormhole,探索它的潜力,并成为塑造真正互联的区块链生态系统未来的参与者。

记住,这只是个起点。随着区块链空间的发展,Wormhole的可能性也会随之增长。保持好奇心,继续探索,并成为多链开发激动人心未来的参与者!


原文链接:Understanding Wormhole

DefiPlot翻译整理,转载请标明出处

免责声明:本站资源仅用于学习目的,也不应被视为投资建议,读者在采取任何行动之前应自行研究并对自己的决定承担全部责任。
通过 NowPayments 打赏