ZetaChain 通用资产与跨链 DeFi 开发

Universal BlockChain(ZetaChain<一层网络>中重要的底层逻辑)

能在原生的状态下去连接任意区块链的L1公链(第一层公有区块链:有自己的主权<共识机制>,有自己的货币<原生代币>,有自己的法律<智能合约规则>,有自己的领土<区块空间>)

ZetaChain 希望加密世界能够像互联网一样易触达,多样并且互联互通

ZetaChain的连接方式

以太坊 (ETH)    ←→    ZetaChain    ←→    比特币 (BTC)
        ↘           ↗           ↘           ↗
         智能合约交互      ↔      原生BTC转移

Universal EVM(通用以太坊虚拟机)

能从任意的外部连接链去调用EVM的可执行环境(能在ZetaChain上面直接操作以太坊上的资产,也能操作比特币的资产)

全链智能合约(通用智能合约)

原生部署在ZetaChain上,可以读写任意连接链的智能合约作为模板

合约可以操作多个链,比如可以在以太坊上提取数据,在比特币上进行交互操作执行

还可以编排多链的复杂操作,比如实现一些复杂的跨链逻辑

提供统一的用户体验(一致性):用户无需理解底层的跨链逻辑,只要接口的规范是一致的,就可以在这个接口中操作所有的链

通用Dapp(全链应用、跨链应用)

可以实时的读取并更新所有连接网络的状态

聚合多个链的流动性

Gateway

作为连接不同链的跨链桥接主键,在监听原链上面的跨链的请求的时候,Gateway就会检测到这个请求,即观测者监测到了,然后就把消息(原链的ID,目标链的ID,资产的信息<资产的合约地址,资产的数量,相对应的价值>,操作类型)传递给ZetaChain,ZetaChain的通用智能合约会处理这些跨链逻辑,再给Gateway,去在目标链上进行相对应的操作

架构

BTC                          EVM                        WASAN 

   ⬇                                 ⬇                               ⬇

                                Gateway

                                      ⬇

                                ZetaChain

                                      ⬇

                            USC(通用智能合约)

┌─────────────────────────────────┐
│    应用层 (全链DApps, 跨链DeFi)    │
├─────────────────────────────────┤
│    ZetaChain Layer (核心层)       │
│    • 全链智能合约                 │
│    • 通用EVM                      │
│    • 跨链消息路由器               │
├─────────────────────────────────┤
│    Gateway层 (网关层)             │
│    • 链上观察者                   │
│    • 消息验证器                   │
│    • 交易中继器                   │
├─────────────────────────────────┤
│    外部链层 (连接的所有L1公链)     │
│    • 以太坊、比特币、Solana等     │
└─────────────────────────────────┘

ZRC20 的标准

作为多链资产的统一表示标准,来实现不同区块链资产的统一表示和管理

ERC20是单链的,要么是在以太坊的网络上用,要么就把合约copy一份放到其他网络上再去部署,当部署多了以后,中间用中间键进行桥接,才能实现多链的标准和多链的资产

但是ZRC20 本来是一个多链的标准,可以跨链使用

多链资产的映射:将以太坊上的ETH映射到ZetaChain上面,变成ETH.ETH(后缀表示原链是从哪儿来的

统一的接口:提供统一的代币接口操作,使得所有的ZRC20 的代币都遵循着标准

跨链的转移:支持不同链间转移资产,是因为在所有连接链上,都能使用ZRC20 资产,将资产映射到ZetaChain上面去

核心的函数

interface IZRC20{
    function deposit() external payable;//存款
    function withdraw (uint256 amount) external;//提取
    function transfer (address to, uint256 amount) external returns(bool);/转账
    function balanceOf (address account) external view returns(uint256);//查询余额
}

通用代币

多个链上流动的Token

打破单链限制的同时,也可以增强资产的流动性,一般放在跨链的支付上

通用NFT(非同质化代币)

跨链身份认证

跨链Swap

工作流程:将原链上的ETH存进来获得ZRC20 ETH,在ZetaChain上执行Swap,将它换成对应的Bitcoin,最后再把它提到目标链上

Ethereum ETH -> ZRC20 ETH.ETH ‘’‘’‘Swap’‘’‘’ ZRC20 BTC.BTC -> Bitcoin

function onCrossChainCall(
    bytes calldata origin,//源链信息
    uint256 originChainID,//源链 ChainID
    address zrc20,//源链 ZRC-20 代币合约地址
    uint256 amount,//代币数量
    bytes calldata message//跨链信息(包括了目标链ID,目标资产,数量等等)
)external {
    //1. 解析信息
    (address targetToken, uint256 minAmount) = abi.decode(
        message,
        (address, uint256)
    );
    //2. 跨链交互逻辑的实现
    uint256 amountOut = calculateSwapAmount(amount);
    require(amountOut >= minAmount, "invalid output");

    //3. 提前到目标链上
    IZRC20(targetToken).withdraw(amountOut, recipient, targetChainID);
}
...

    

Qwen Agent 与 ZetaChain 全链交互实战

Monallo Hub => Transfer,Swap,Cross-Chain TX(三种不同的交互形式)

Qwen3: 理解自然语言,转换成结构化,可执行的命令

Qwen3 Agent 在全链应用中的角色

Qwen API Key(从阿里云获取),通过百炼平台
获取地址:https://dashscope.console.aliyun.com/
QwEN_API_KEY=sk-your-qwen-api-key-here


Qwen模型名称(可以选择qwen-max<迄今为止最强大的模型,主参数超过一万亿>,qwen-plus<最均衡的模型,性价比高,逻辑推理,编程>,qwen-turbo<速度快,成本低,适合一般的任务,小参数模型,支持思考和非思考>)
QWEN_MODEL=qwen-max


ZetaChain Gateway纽约地址
NEXT_PUBLIC_ZETACHAIN_GATEWAY= 0XF0a3F93Ed1B126142E61423F9546bf1323Ff82 DF

用户交互架构

核心架构解析

1. 用户层

  • 角色:这是整个流程的起点与终点,是普通用户与去中心化应用交互的界面。

  • 表现形式:通常是一个友好的网页前端(DApp UI),也可以是移动App、命令行工具或其他形式的客户端。

  • 关键交互

    • 输入意图:用户通过点击按钮(如“转账”、“授权”、“铸造NFT”)、填写表单、签署消息等方式,表达想要进行的链上操作。

    • 连接钱包:用户需要连接自己的Web3钱包(如MetaMask、WalletConnect等),该钱包持有用户的私钥,负责签名交易。

    • 接收反馈:在交易被发送、确认或失败后,用户层需要以清晰的方式(如交易哈希、成功提示、错误信息)将结果反馈给用户。

2. 意图识别层
  • 角色:这是架构中的智能中枢,负责将用户模糊、高层的“意图”翻译成具体、可执行的“指令”。

  • 工作原理

    • 解析输入:接收来自用户层的事件或数据。例如,用户在界面上点击了“用100 USDC购买1个ETH”,并选择了最优交易路径。

    • 抽象化理解:系统需要理解这个“购买”意图包含的深层操作:授权(approve)USDC给某个交易合约,然后调用该合约的 swap 方法。

    • 结构化输出:将意图转化为一个结构化的交易请求对象。这个对象不仅包含要调用的合约地址、函数名和参数,还可能包含链ID、价值估算、燃料费建议等元数据。

  • 设计要点

    • 简化复杂性:这一层的最大价值是对用户隐藏区块链的复杂性。用户不需要知道什么是ABI、gas price、nonce。

    • 语义化:这一层决定了产品的用户体验是否“智能”和“友好”。

3. 功能分发层
  • 角色:作为执行编排器,它接收结构化的交易请求,并决定如何、何时以及以何种配置来最终构造和发送交易。

  • 关键功能

    • 路由决策:对于同一个意图(如兑换代币),可能有多个去中心化交易所(DEX)或协议可以完成。这一层需要根据价格、滑点、流动性、手续费等因素,选择最优路径。

    • 参数组装:将意图识别层输出的参数,与当前链状态(如实时gas price、用户nonce)结合,组装成完整的交易参数。

    • 模拟与预估:在真正发送交易前,可能会先在本地或通过节点进行一次 eth_call 模拟执行,以预估成本、检查交易是否会失败,为用户提供确认信息。

    • 策略执行:对于复杂操作(如跨链、批量交易),负责编排多个子交易的执行顺序和依赖关系。

4. ethers.js(工具执行层)
  • 角色:这是与以太坊区块链(或其他EVM兼容链)进行直接、底层交互的JavaScript工具库。它是功能分发层命令的最终执行者。

  • 核心工作

    • 提供Provider:连接到以太坊网络节点(如Infura、Alchemy或本地节点),获取链上数据(余额、nonce、gas price)。

    • 生成Signer:与用户的钱包(如MetaMask)交互,获取钱包账户,以便对交易进行签名。

    • 构建交易对象:使用 Contract 类加载智能合约的ABI和地址,将函数调用编码为底层的数据字节码。

    • 发送与跟踪

      1. 调用 contract.functionName(...args) 并传入 { gasLimit, gasPrice, value... } 等参数,创建一个待签名的交易。

      2. 通过 signer.sendTransaction(tx) 发起签名请求到用户钱包。

      3. 钱包弹出请求,用户确认后,交易被签名并广播到网络。

      4. 通过 provider.waitForTransaction(txHash) 监听交易在链上的打包确认状态。

5. 用户层(反馈闭环)

    \bullet 角色:流程在此完成闭环。

  • 最终反馈

    • 从ethers.js层接收到交易哈希(txHash),立即展示给用户,表示交易已广播。

    • 持续监听交易状态(确认中、成功、失败),并实时更新UI。

    • 交易成功后,更新用户界面上的余额、状态等信息

核心设计哲学与优势

  1. 关注点分离:每一层职责明确。意图识别层关心“做什么”,功能分发层关心“怎么做最好”,ethers.js层关心“如何与链对话”。这使得代码更易维护和升级。

  2. 用户体验至上:通过意图识别,将区块链的复杂性封装起来,用户无需成为区块链专家即可使用DApp。这是DApp走向主流的关键。

  3. 灵活性与可扩展性:可以轻松地在功能分发层集成新的协议、路由或策略,而无需改动用户界面或底层交互逻辑。

  4. 安全性:尽管意图被简化,但最终交易仍需用户钱包私钥签名。私钥始终由用户掌控,应用无法擅自操作。


 一个典型流程示例(用户想质押代币)

  1. 用户层:用户在DApp的质押页面上,输入“100 ABC”并点击“质押”按钮。

  2. 意图识别层:识别出“质押”意图。确定需要调用“质押合约”的 stake(uint256 amount) 方法,并在此之前可能先需要调用“ABC代币合约”的 approve 方法。

  3. 功能分发层:检查当前质押池的奖励率,并可能为用户选择最优的质押池。预估本次操作所需的gas费用。编排逻辑:先执行 approve,待其确认后再执行 stake

  4. ethers.js

    • 加载ABC代币合约和质押合约的ABI。

    • 构造 approve(spender, amount) 交易,通过钱包签名并发送。

    • 监听 approve 交易确认。

    • 确认后,构造 stake(amount) 交易,再次签名并发送。

  5. 用户层:向用户展示“授权交易已发送,哈希为0x...”,然后显示“质押交易已发送,哈希为0x...”。最终在两条交易都成功后,显示“质押成功!”并更新用户的质押余额和待领取奖励。

要构建两个Prompt, SP: AI 的角色和规则; UP: 包含用户的实际输入

用户输入、构建Prompt、调用 Qwen3 API

技术栈

Next.js 14

React UI

Tailwind CSS

ethers.js v6, 可以降到v5

持久化建议: MongoDB(更自然,无需图片)

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐