@ensdomains/ 地址编码器
类型脚本中的加密货币地址编码器/解码器
文本格式地址被解码为他们的本土二进制表示,反之亦然. 对于比特币衍生的链条,这意味着他们的脚本PubKey;对于以特鲁姆衍生的链条,这是他们的散列.
此库被写入用于 EIP 2304 就业政策,但对于寻找通用密码地址编码器的任何人可能有用.
EVM兼容链要么使用 SLIP44 硬币Type 指定,要么 0x80000000 | chainId 其中0x800000000是SLIP44所保留的msb(最显著的位数),在这个范围内没有硬币类型. 这是为了避免数字与已存在的硬币类型相合.
请阅读 更详细的规格页
安装
bun add @ensdomains/address-encoder
开始
// Import coder getter
import { getCoderByCoinName } from "@ensdomains/address-encoder";
// Get the coder for the address you want to encode/decode
const btcCoder = getCoderByCoinName("btc");
// Decode the address
const decodedAddress = btcCoder.decode("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa");
// Uint8Array(25) [ 118, 169, 20, 98, 233, 7, 177, 92, 191, 39, 213, 66, 83, 153, 235, 246, 240, 251, 80, 235, 184, 143, 24, 136, 172 ]
// Encode the address
const encodedAddress = btcCoder.encode(decodedAddress);
// 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
十六进制字符串编码
如果你正在编码的数据是十六进制字符串而不是 Uint8Array,您可以使用 hexToBytes() 从 @noble/hashes 转换为正确的类型。 它期望六分弦没有 0x 前缀.
import { getCoderByCoinName } from "@ensdomains/address-encoder";
import { hexToBytes } from "@noble/hashes/utils.js";
const btcCoder = getCoderByCoinName("btc");
// Convert hex encoded data to bytes
const dataAsBytes = hexToBytes(
"76a91462e907b15cbf27d5425399ebf6f0fb50ebb88f1888ac"
);
// Uint8Array(25) [ 118, 169, 20, 98, 233, 7, 177, 92, 191, 39, 213, 66, 83, 153, 235, 246, 240, 251, 80, 235, 184, 143, 24, 136, 172 ]
// Pass bytes to encoder
const encodedAddress = btcCoder.encode(dataAsBytes);
// 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
支持的密码
要查看此库中所有支持的密码, 请查看 这里。 。 。 .
其他功能
Async 编码器获取器
import { getCoderByCoinNameAsync } from "@ensdomains/address-encoder/async";
const btcCoder = await getCoderByCoinNameAsync("btc");
单币进口
import { btc } from "@ensdomains/address-encoder/coins";
const decodedAddress = btc.decode("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa");
const encodedAddress = btc.encode(decodedAddress);
单个代码函数导入
import {
decodeBtcAddress,
encodeBtcAddress,
} from "@ensdomains/address-encoder/coders";
const decodedAddress = decodeBtcAddress("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa");
const encodedAddress = encodeBtcAddress(decodedAddress);
EVM 链
支持的EVM链有多种,但除ETH外,其中没有任何一个出口来自 coins 或者说 coders。如果您想要单独导入一个 EVM 链,您只需使用 eth 导入为替换.
贡献指南
为了在这个图书馆里添加一分钱 或者如果你有兴趣以其他方式捐款 读一下 捐款指南 在提交公关前.