Getting Started with Web3 and Blockchain
Published:
This is a description of a teaching experience. You can use markdown like any other post.
Heading 1
Heading 2
Heading 3
当然可以!以下是为你整理后的 Markdown 精简版,适合直接写入博客,语义清晰、结构合理,方便读者快速理解该函数的背景与用途。
⸻
export function isNativeTokenAddress(address: string) { return address === ‘0x0000000000000000000000000000000000000000’ || address === ‘11111111111111111111111111111111’; }
📌 函数用途
判断一个地址是否代表原生代币(Native Token),用于 Web3 开发中区分 ETH、BNB 等原生币和标准 ERC-20 代币。
⸻
💡 背景解释
在 EVM 系区块链中,原生币(如 ETH)没有合约地址,但为了统一处理逻辑,常用以下占位符地址:
地址 含义 0x0000000000000000000000000000000000000000 常用于表示“原生代币” ‘11111111111111111111111111111111’ 一些跨链桥或非 EVM 链的原生币占位(如 Wormhole、Solana)
⸻
✅ 使用场景示例
- 判断转账方式
if (isNativeTokenAddress(token)) { // 原生币转账:通过 msg.value } else { // ERC-20 代币:调用合约 transfer }
- UI 渲染符号
const symbol = isNativeTokenAddress(token) ? ‘ETH’ : getTokenSymbol(token)
⸻
✅ 总结 • 原生币没有 ERC-20 合约地址,但需要在代码中进行区分 • 使用特殊地址可统一转账逻辑、图标展示、符号渲染等处理 • 在多链钱包、Swap、桥接等前端应用中十分常见
⸻
如你有多链支持需求,也可以封装更通用的工具函数,比如按链 ID 判断、返回符号或图标地址等。需要可以另起一节扩展。
是否需要我再帮你附带封装一个支持多链原生币判断的 isNativeTokenAddress(chainId, address) 版本?
https://www.investopedia.com/what-are-native-tokens-6754173