ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Wagmi 中的 Tempo 链与默认手续费代币配置指南

Wagmi 中的 Tempo 链与默认手续费代币配置指南 Wagmi 中的 Tempo 链与默认手续费代币配置指南【免费下载链接】wagmiReactive primitives for Ethereum apps项目地址: https://gitcode.com/GitHub_Trending/wa/wagmiTempo 是专为支付场景设计的 Layer 1 区块链将代币管理TIP-20、Fee AMM、稳定币 DEX 以及支持批量调用、费用赞助、可配置手续费代币的 Tempo 交易类型直接内置于协议层。Wagmi包括 React 与 Core对其提供了一等公民支持本文基于仓库文档 site/tempo/chains.md 为核心讲解如何通过wagmi/chains引入四条 Tempo 链并重点剖析「默认手续费代币Default Fee Token」这一核心配置的用法、类型与源码依据。读完本文你将掌握在 Wagmi 项目中接入 Tempo 链、设置链级默认手续费代币、以及通过交易级参数覆盖默认值的完整方案。Tempo 提供的四条链Wagmi 将 Tempo 相关的链定义集中暴露在wagmi/chains入口中目前共有四条可用的 Tempo 链import { tempo, // [!code hl] tempoDevnet, // [!code hl] tempoLocalnet, // [!code hl] tempoTestnet, // [!code hl] } from wagmi/chainstempoTempo 主网tempoTestnetTempo 测试网tempoDevnet开发者专用网络tempoLocalnet本地开发网络可用于本地容器化运行与自动化测试。从源码结构看Wagmi 的 chains 入口文件 直接export * from viem/chains即这些链定义实际由 Viem 维护Wagmi 通过 re-export 统一对外提供保证了与 Viem 生态的链对象结构如id、name、contracts等字段完全一致。Vue 与 Solid 框架的接入方式同理统一从对应框架包的chains子路径导入。在 Wagmi 配置中接入 Tempo 链接入 Tempo 的第一步是创建一个包含 Tempo 链与tempoWallet连接器的 Config。以 Tempo 快速上手文档 中的配置为例React 与 Core 版本等价import { createConfig, http } from wagmi import { tempo } from wagmi/chains import { tempoWallet } from wagmi/tempo export const config createConfig({ connectors: [tempoWallet()], chains: [tempo], multiInjectedProviderDiscovery: false, transports: { [tempo.id]: http(), }, })要点说明connectors中通过tempoWallet()创建 Tempo 专用连接器相关连接器实现位于 packages/connectors/src源码中tempoWallet类型为TempoWalletParameters见 tempo 入口文件multiInjectedProviderDiscovery: false用于关闭多注入提供方发现避免与 Tempo 钱包的注入逻辑冲突transports以[tempo.id]为键挂载http()传输层运行时按链 ID 路由。仓库的集成测试也印证了这一模式packages/test/src/tempo/config.ts 中通过defineChain({ ...chains.tempoLocalnet }).extend({ feeToken: 1n })构造本地测试链并将它放入createConfig的chains数组配合[tempoLocal.id]: http()传输层使用。默认手续费代币Default Fee TokenTempo 交易默认以链原生代币支付 Gas但协议允许为整条链设置一个默认手续费代币fee token。文档给出的配置方式是为链对象添加feeToken扩展属性import { tempo } from wagmi/chains const chain tempo.extend({ feeToken: 0x20c0000000000000000000000000000000000001, })其语义非常明确一旦在链上设置了feeToken该链上的所有交易都会默认使用这个代币作为手续费代币如果某个交易在交易级别提供了覆盖参数override则以交易级参数为准。上面示例中的地址0x20c0000000000000000000000000000000000001并非随意取值——在 Tempo 快速上手文档 的示例中同一个地址被定义为alphaUsdAlphaUSD 稳定币并用于查询代币元数据、发起交易等场景可视为 Tempo 生态中常见的稳定币手续费代币示例。feeToken 的类型地址或 IDfeeToken既可以是一个TIP-20 代币合约地址Address也可以是一个代币 IDbigint。这一点在交易参数文档 site/shared/tempo-write-parameters.md 中有明确定义Type:Address | bigint可以是 TIP-20 代币地址或 ID。仓库测试同时覆盖了这两种形态地址形态packages/test/src/tempo/setup.ts 与 amm.test.ts 中直接使用Addresses.pathUsdViem Tempo 提供的 USD 稳定币地址常量作为feeTokenID 形态packages/test/src/tempo/config.ts 中tempoLocalnet.extend({ feeToken: 1n })以bigint类型的 ID1n作为链级默认手续费代币并通过defineChain从 viem 的chains.tempoLocalnet派生展示了「基于现成链对象做扩展」的标准做法。这种「地址或 ID」的双形态设计对应 Tempo 协议中 TIP-20 代币既可通过合约地址、也可通过协议内建 ID 引用的特性。交易级别的覆盖链级默认值只在交易未显式指定时生效。每个 Tempo 交易都可以通过feeToken参数覆盖链级默认值同时还可以配合feePayer实现手续费赞助。完整的交易级可选参数摘自 tempo-write-parameters.md包括参数类型说明accountAccount \| Address可选发送交易的账户默认使用当前连接的 Wagmi 账户feeTokenAddress \| bigint可选交易手续费代币可为 TIP-20 代币地址或 IDfeePayerAccount \| true可选手续费支付方true表示使用 Fee Payer 服务gasbigint可选交易 Gas 上限maxFeePerGasbigint可选每单位 Gas 的最大费用maxPriorityFeePerGasbigint可选每单位 Gas 的最大优先费noncenumber可选交易 noncenonceKeyexpiring \| bigint可选并发交易的 nonce 键validBeforenumber可选交易必须被打包前的时间戳validAfternumber可选交易可被打包后的时间戳throwOnReceiptRevertboolean默认true可选仅*Sync类操作适用收据显示回滚时是否抛错典型的使用方式是在useSendTransactionSync等 Hook 中传入feeToken覆盖链级默认值import { useSendTransactionSync } from wagmi export function PayWithUsd() { const sendTransactionSync useSendTransactionSync() return ( button onClick{() sendTransactionSync.mutate({ to: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045, value: 1_000_000n, feeToken: 0x20c0000000000000000000000000000000000001, // 覆盖链级默认手续费代币 }) } Send transaction /button ) }使用场景与注意事项按网络隔离配置建议为不同环境使用不同的链与默认手续费代币。本地开发用tempoLocalnet测试基建通过 Docker 镜像ghcr.io/tempoxyz/tempo拉起本地节点见 packages/test/src/tempo/setup.global.ts上线前切换至tempoTestnet或tempo主网。链级默认值服务于「免打扰」体验将常用稳定币设为链级默认手续费代币后业务代码无需在每个交易中重复指定仅当个别交易需要不同代币或原生币支付时才在交易级覆盖。覆盖优先级交易级feeToken 链级feeToken 协议默认原生代币设置后所有交易默认使用该代币除非交易级提供覆盖。类型一致性feeToken支持地址与 ID 两种形态需与目标 TIP-20 代币的注册方式保持一致从 packages/test/src/tempo 的测试代码可以看出官方测试同时验证了两种形态在真实本地节点上的可用性。版本前提使用 Tempo 相关能力需要viem 2.55.2并安装与连接器匹配的accounts包详见 site/tempo/getting-started.md 的安装命令。小结本文基于 site/tempo/chains.md 梳理了 Wagmi 生态中 Tempo 链的接入方式四条链tempo、tempoDevnet、tempoLocalnet、tempoTestnet统一从wagmi/chains导入链定义由 Viem 维护并经由 packages/core/src/exports/chains.ts re-export通过chain.extend({ feeToken })可设置链级默认手续费代币TIP-20 地址或 ID 两种形态交易级feeToken参数可覆盖默认值feePayer等参数进一步支持手续费赞助等高级场景。结合仓库测试代码可以看出地址形态与 ID 形态的默认手续费代币均已在实际节点环境中得到验证可直接用于生产级集成。【免费下载链接】wagmiReactive primitives for Ethereum apps项目地址: https://gitcode.com/GitHub_Trending/wa/wagmi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表