探险家核心
@ar.io/wayfinder-core 是 Wayfinder 项目的核心库。 它提供了通过ar.io网络来进行路由和核实数据的核心功能.
快速启动
安装
要安装最新版本, 请运行 :
npm install @ar.io/wayfinder-core
# or
yarn add @ar.io/wayfinder-core
基本用途
import { createWayfinderClient } from '@ar.io/wayfinder-core';
// Creates a Wayfinder client with sensible defaults:
// - Trusted peers gateway provider with caching (5 minute TTL)
// - Random routing strategy
// - Verification disabled
const wayfinder = createWayfinderClient();
// Use Wayfinder to fetch data using ar:// protocol
const response = await wayfinder.request('ar://example-name');
使用AR.IO网络
import {
createWayfinderClient,
FastestPingRoutingStrategy,
NetworkGatewaysProvider,
} from '@ar.io/wayfinder-core';
import { ARIO } from '@ar.io/sdk';
import { createSolanaRpc } from '@solana/kit';
// AR.IO Solana mainnet — program-id overrides are not needed on mainnet
// (the SDK ships defaults). For devnet, pass explicit program IDs.
const ario = ARIO.init({
rpc: createSolanaRpc('https://api.mainnet-beta.solana.com'),
});
const wayfinder = createWayfinderClient({
routingStrategy: new FastestPingRoutingStrategy({
gatewaysProvider: new NetworkGatewaysProvider({
ario,
sortBy: 'operatorStake',
sortOrder: 'desc',
limit: 10,
}),
}),
});
启用校验
import {
createWayfinderClient,
HashVerificationStrategy,
} from '@ar.io/wayfinder-core';
const wayfinder = createWayfinderClient({
verificationStrategy: new HashVerificationStrategy({
trustedGateways: [new URL('https://turbo-gateway.com')],
}),
strict: true, // Fail requests on verification errors
});
Wayfinder Core为构建路由和核查战略提供辅助功能:
创建策略
以简单的字符串标识符创建路由策略 :
import { createRoutingStrategy } from '@ar.io/wayfinder-core';
// Create a random routing strategy
const randomStrategy = createRoutingStrategy({
strategy: 'random',
gatewaysProvider: myGatewaysProvider,
logger: myLogger,
});
// Available strategies: 'random', 'fastest', 'balanced', 'preferred'
创建验证战略
以简单的字符串标识符创建验证策略 :
import { createVerificationStrategy } from '@ar.io/wayfinder-core';
// Create a hash verification strategy
const hashStrategy = createVerificationStrategy({
strategy: 'hash',
trustedGateways: [new URL('https://turbo-gateway.com')],
logger: myLogger,
});
// Available strategies: 'hash', 'data-root', 'remote', 'disabled'
ar://礼宾
Wayfinder 支持几种 ar:// URL 格式 :
ar://TRANSACTION_ID # Direct transaction ID
ar://NAME # ArNS name (paths supported)
ar:///info # Gateway endpoint (/info)
动态运行
向导支持 a resolveUrl 生成动态重定向 URL 到目标网关的方法。 此功能可以直接用于替换任何硬码网关URL,取而代之的是使用Wayfinder的路由逻辑来选择请求的网关.
ANS 名称
给一个ArNS名称,重定向URL会与原URL相同,但有由Wayfinder的路由策略所选择的网关.
const redirectUrl = await wayfinder.resolveUrl({
arnsName: 'ardrive',
});
// results in https://ardrive.<selected-gateway>
交易编号
由于txId,重定向的URL会与原URL相同,但带有由Wayfinder的路由策略所选择的网关.
const redirectUrl = await wayfinder.resolveUrl({
txId: 'example-tx-id',
});
// results in https://<selected-gateway>/example-tx-id
遗产 URL
鉴于遗留的arweave.net或arweave.dev URL,重定向的URL会与原URL相同,但与由Wayfinder的路由策略所选择的网关相同.
const redirectUrl = await wayfinder.resolveUrl({
originalUrl: 'https://arweave.net/example-tx-id',
});
// results in https://<selected-gateway>/example-tx-id
ar://URLs (韩语)
鉴于一个 ar:// URL, 重定向的 URL 会与原 URL 相同, 但有 Wayfinder 的路由策略所选择的网关 .
const redirectUrl = await wayfinder.resolveUrl({
originalUrl: 'ar://example-name/subpath?query=value',
});
// results in https://<selected-gateway>/example-name/subpath?query=value
网关提供者
网关提供者提供网关列表用于路由. 默认, createWayfinderClient 财务报告和审定财务报表 new Wayfinder() 使用缓存 CompositeGatewaysProvider 尝试 TrustedPeersGatewaysProvider 先掉回信任的网关. 同行发现是一个失败点——一个网关可以回答 /ar-io/peers 与 200 和一个空的列表——而倒置使请求继续工作(通过一个已经信任的网关)而不是彻底失败. 打电话 createDefaultGatewaysProvider() 自己造同样的东西.
| 提供者 | 说明 | 使用大小写 |
|---|---|---|
NetworkGatewaysProvider | 从AR.IO网络返回网关 | 利用AR.IO 带有质量过滤的网络 |
TrustedPeersGatewaysProvider | 从信任的网关端获取 | 动态网关发现( 默认) |
StaticGatewaysProvider | 返回网关的静态列表 | 测试或特定网关 |
SimpleCacheGatewaysProvider | 隐形棺材包装器 | 减少API 调用( 默认使用) |
LocalStorageGatewaysProvider | 浏览器本地缓存 | 持续缓存( 默认用于浏览器) |
CompositeGatewaysProvider | 链条式多供应商倒置 | 多种来源的最大复原力 |
网络Gateways 提供
返回基于链路的ARIO网络的网关列表 网关地址登记。您可以指定网关的链上计量标准,以优先排列最高质量网关。 要求数 @ar.io/sdk 财务报告和审定财务报表 @solana/kit。 。 。 .
import { NetworkGatewaysProvider } from '@ar.io/wayfinder-core';
import { ARIO } from '@ar.io/sdk';
import { createSolanaRpc } from '@solana/kit';
const ario = ARIO.init({
rpc: createSolanaRpc('https://api.mainnet-beta.solana.com'),
});
const gatewayProvider = new NetworkGatewaysProvider({
ario,
sortBy: 'operatorStake',
sortOrder: 'desc',
limit: 10,
filter: (gateway) => gateway.status === 'joined',
});
关于排序的说明. 索拉纳的后端
@ar.io/sdk接受sortBy财务报告和审定财务报表sortOrder但不应用它,它的贴花助手会切除账户 以链条顺序列出。 因此,这个供应商将客户端排序,这意味着 它在申请前先阅读整个登记处limit。这就是limit: 10其实是十个最高的网关 而不是十个 专断的.sortBy并接受点路径, 如weights.stakeWeight; 缺少字段类型的网关0。 。 。 .
信任的PeersGateways 提供工具
从 AR 获取可信任的对等网关的动态列表。 IO网关 /ar-io/peers 终点 此提供者对于从可信来源发现可用的网关很有用 .
import { TrustedPeersGatewaysProvider } from '@ar.io/wayfinder-core';
const gatewayProvider = new TrustedPeersGatewaysProvider({
trustedGateway: 'https://turbo-gateway.com',
retries: 3, // optional, defaults to 3
});
一个网关可以回答 /ar-io/peers 与 200 和一个空的 gateways 地图——在
当一个实例没有同步其对登记处的看法时,就会发生这种情况.
在此情况下, 提供者重复, 如果列表仍然是空的, 则丢入
命名终点而不是返回错误 [] (会浮出水面)
稍后作为不透明的“ 无网关可用” 从任何路由策略
已经消耗了。 两者 CompositeGatewaysProvider 财务报告和审定财务报表 SimpleCacheGatewaysProvider
将这个投出当作回倒的信号, 将这个提供者包入其中之一
一个让你有一条干净的堕落之路.
复合通道提供
将多个网关提供者连在一起,按顺序对每个网关进行测试,直到成功。 这对于建立具有弹性的网关发现和后退很有用.
如何运作:
- 按提供顺序给每个供应商打个电话
- 如果提供者返回一个非空的网关列表,则使用这些网关
- 如果提供者扔出错误或返回空列表,请移动到下一个提供者
- 如果所有提供者都失败, 则丢出错误
import {
CompositeGatewaysProvider,
NetworkGatewaysProvider,
StaticGatewaysProvider,
TrustedPeersGatewaysProvider,
} from '@ar.io/wayfinder-core';
import { ARIO } from '@ar.io/sdk';
import { createSolanaRpc } from '@solana/kit';
const ario = ARIO.init({
rpc: createSolanaRpc('https://api.mainnet-beta.solana.com'),
});
// Example: Network-first with static fallback
const gatewayProvider = new CompositeGatewaysProvider({
providers: [
// Try fetching from AR.IO network first
new NetworkGatewaysProvider({
ario,
sortBy: 'operatorStake',
limit: 10,
}),
// Fallback to trusted peers if network fetch fails
new TrustedPeersGatewaysProvider({
trustedGateway: 'https://turbo-gateway.com',
}),
// Final fallback to static list
new StaticGatewaysProvider({
gateways: ['https://turbo-gateway.com', 'https://g8way.io'],
}),
],
});
例行战略
Wayfinder 支持多个路由策略,为您的请求选择目标网关.
| 战略 | 说明 | 使用大小写 |
|---|---|---|
RandomRoutingStrategy | 从列表中选择随机网关 | 有利于负载平衡和弹性 |
StaticRoutingStrategy | 总是使用单一的网关 | 需要使用特定网关时 |
RoundRobinRoutingStrategy | 选择按圆周期顺序排列的网关 | 有利于负载平衡和弹性 |
FastestPingRoutingStrategy | 根据 Ping 时间选择最快的网关 | 善于表现和耐久 |
PingRoutingStrategy | 在失败时用不同的网关重试 | 过滤未响应的网关 。 默认使用 new Wayfinder() |
PreferredWithFallbackRoutingStrategy | 使用首选网关, 如果首选网关没有可用, 则使用倒置策略 | 良好的性能和韧性。 对管理自己门户的建筑者来说是理想的. |
SimpleCacheRoutingStrategy | 为 TTL 设置另一个策略所选择的网关 | 避免在每次请求中重运行选择 |
CompositeRoutingStrategy | 将多个路由策略连在一起,按顺序尝试,直到成功 | 适合复杂的后退情景和最大限度的复原能力 |
随机循环战略
从网关列表中选择随机网关.
import { RandomRoutingStrategy } from '@ar.io/wayfinder-core';
const strategy = new RandomRoutingStrategy({
gatewaysProvider: myGatewaysProvider,
});
最快的接力战略
根据平分时间选择最快的网关。 此策略会拨打所有可用的网关, 并选择时间最短的网关 .
import { FastestPingRoutingStrategy } from '@ar.io/wayfinder-core';
const strategy = new FastestPingRoutingStrategy({
timeoutMs: 1000,
gatewaysProvider: myGatewaysProvider,
probePath: '/', // optional, defaults to '/'
});
平陆战略
环绕另一个策略,检查其选择的出入口,用一个
如果检查失败, 则不同 。 这是默认策略
new Wayfinder() (编) RandomRoutingStrategy) (中文(简体) ).
import { PingRoutingStrategy, RandomRoutingStrategy } from '@ar.io/wayfinder-core';
const strategy = new PingRoutingStrategy({
routingStrategy: new RandomRoutingStrategy({ gatewaysProvider: myGatewaysProvider }),
retries: 5, // optional
timeoutMs: 1000, // optional
probePath: '/', // optional
});
被探测到的. 双打策略都发出 HEAD 改为 probePath 编辑
网关自己的主机——而不是正在路由中的请求的沙箱URL.
测试内容 URL 使得网关在解析数据之前,
因此,一个短暂的超时结束 测量“ 是否此天体已经在这里缓存 ”
而不是"是这个网关" 以1s预算对抗直播网络,a HEAD 联 合 国
网关根成功对等方为 ~85%,对沙箱为 ~23%
内容 URL - 区别在于暂时性而不是断裂,因为
沙盒式URL在给定10s后达到~78%. 设定 probePath 改为
/ar-io/healthcheck,或任何你喜欢的路径, 覆盖.
首选的Fall BackRouting战略
使用首选网关, 如果没有首选网关, 则使用倒置策略 。 这对于运行自己的网关并想使用自己的网关作为首选网关的建设者来说是有用的,但同时也想有一个后退策略,以防他们的网关没有.
[!INFO] 这个策略是利用
CompositeRoutingStrategy内部。 它首先尝试拨打首选网关( 使用 :PingRoutingStrategy与StaticRoutingStrategy)),如果失败,则回归到指定的倒置策略.
import { PreferredWithFallbackRoutingStrategy, FastestPingRoutingStrategy } from '@ar.io/wayfinder-core';
const strategy = new PreferredWithFallbackRoutingStrategy({
preferredGateway: 'https://my-gateway.com',
fallbackStrategy: new FastestPingRoutingStrategy({ timeoutMs: 500 }),
});
综合战略
这个 CompositeRoutingStrategy 允许您将多个路由策略连在一起,通过按顺序尝试每个策略以提供最大回弹力,直到一个策略成功. 这对于复杂的倒置情景来说是理想的,在这种情景中,你想结合不同的路由方法.
如何运作:
- 按提供顺序尝试每个策略
- 如果策略成功返回一个网关,则使用该网关(剩余策略被跳过)
- 如果策略出现出错, 请移动到下一个策略
- 如果所有策略都失败, 则丢出错误
常用案例:
- 业绩+复原力:先尝试最快的打法,如果打法失败,则倒回随机
- 首选 + 网络:先用自有网关,倒回AR. IO 网络选择
- 多级倒计时: 尝试溢价网关,然后是标准网关,然后是任何可用的网关
import {
createWayfinderClient,
CompositeRoutingStrategy,
FastestPingRoutingStrategy,
RandomRoutingStrategy,
StaticRoutingStrategy,
NetworkGatewaysProvider,
} from '@ar.io/wayfinder-core';
import { ARIO } from '@ar.io/sdk';
import { createSolanaRpc } from '@solana/kit';
const ario = ARIO.init({
rpc: createSolanaRpc('https://api.mainnet-beta.solana.com'),
});
// Example 1: Performance-first with resilience fallback
const performanceWayfinder = createWayfinderClient({
routingStrategy: new CompositeRoutingStrategy({
strategies: [
// Try fastest ping first (high performance, but may fail if all gateways are slow)
new FastestPingRoutingStrategy({
timeoutMs: 500,
gatewaysProvider: new NetworkGatewaysProvider({
ario,
sortBy: 'operatorStake',
limit: 10,
}),
}),
// Fallback to random selection (guaranteed to work if gateways exist)
new RandomRoutingStrategy({
gatewaysProvider: new NetworkGatewaysProvider({
ario,
sortBy: 'operatorStake',
limit: 20, // Use more gateways for fallback
}),
}),
],
}),
});
// Example 2: Preferred gateway with multi-tier fallback
const preferredWayfinder = createWayfinderClient({
routingStrategy: new CompositeRoutingStrategy({
strategies: [
// First, try your preferred gateway
new StaticRoutingStrategy({
gateway: 'https://my-preferred-gateway.com'
}),
// If that fails, try fastest ping from top-tier gateways
new FastestPingRoutingStrategy({
timeoutMs: 1000,
gatewaysProvider: new NetworkGatewaysProvider({
ario,
sortBy: 'operatorStake',
limit: 5, // Only top 5 gateways
}),
}),
// Final fallback: any random gateway from a larger pool
new RandomRoutingStrategy({
gatewaysProvider: new NetworkGatewaysProvider({
ario,
limit: 50, // Larger pool for maximum availability
}),
}),
],
}),
});
数据检索策略
Wayfinder支持多个数据检索策略从AR获取交易数据. IO网关. 这些战略决定了如何从基础储存层索取并组装数据.
| 战略 | 使用大小写 | 所需资源 |
|---|---|---|
ContiguousDataRetrievalStrategy | 通过直接获取标准数据 | 网关已缓存数据或能够从信任的端点获取数据 |
ChunkDataRetrievalStrategy | 基于 Chunk 的数据组装 | 网关支持 /chunk/<offset>/data 端点(r58)并请求交易索引 |
毗连数据检索战略
使用直接获取数据的默认策略 。 这是最直截了当的办法,对大多数案件都有效.
import { Wayfinder, ContiguousDataRetrievalStrategy } from '@ar.io/wayfinder-core';
const wayfinder = new Wayfinder({
dataRetrievalStrategy: new ContiguousDataRetrievalStrategy(),
});
春克数据检索策略
先进的战略,通过AR提供的坚固的块API,为装入储存在Arweave节点上的块提供最便捷的方法. IO网关. 这种办法特别有助于:
- 直接块访问: 高效地从下方块存储层直接取回数据
- 捆绑数据项: 无缝取取自 ANS-104 捆绑内的数据项,使用计算抵销
- x402 付款兼容性: 两种策略都支持自定义获取客户端, 用于基于支付的请求
- 大型文件处理: 对可能提出直接请求的大型交易更为可靠
所需经费:
- 网关必须支持
/chunk/<offset>/data结束点( 加入 第58号(中文(简体) ) - 网关必须设置所要求的交易索引( 直接取自块需要解码)
import { Wayfinder, ChunkDataRetrievalStrategy } from '@ar.io/wayfinder-core';
const wayfinder = new Wayfinder({
dataRetrievalStrategy: new ChunkDataRetrievalStrategy(),
});
如何运作:
- 请求获取交易元数据( 根交易ID、 数据抵消、 内容长度)
- 查询
/tx/{root-tx-id}/offset在编织中获得根交易的绝对相抵 - 计算请求的数据项的绝对偏移
- 使用块获取数据
/chunk/<offset>/data并组装完整的数据流 - 验证属于安全预期根交易的块
序列图 :
sequenceDiagram
participant Client
participant Wayfinder
participant Gateway as AR.IO Gateway
participant Arweave as Arweave Nodes
Client->>Wayfinder: request('ar://data-item-id')
activate Wayfinder
Wayfinder->>Gateway: HEAD /tx/{data-item-id}
Note over Gateway: Lookup data item metadata<br/>from indexed bundles
Gateway-->>Wayfinder: Headers:<br/>- x-root-tx-id (bundle ID)<br/>- x-data-offset<br/>- content-length
Wayfinder->>Gateway: GET /tx/{root-tx-id}/offset
Gateway->>Arweave: GET /tx/{root-tx-id}/offset
Note over Arweave: Lookup transaction offset<br/>in the weave
Arweave-->>Gateway: Root transaction offset
Gateway-->>Wayfinder: Root transaction offset in weave
Note over Wayfinder: Calculate absolute offset:<br/>absolute = root_offset + data_offset
loop For each chunk needed
Wayfinder->>Gateway: GET /chunk/{absolute-offset}/data
Note over Gateway: Serve chunk data from<br/>indexed storage using<br/>root transaction ID
Gateway-->>Wayfinder: Chunk data + validation headers<br/>(x-root-tx-id for security)
Note over Wayfinder: Validate chunk belongs<br/>to expected root TX
Wayfinder-->>Client: Stream chunk data
end
Wayfinder-->>Client: Complete response
deactivate Wayfinder
创建WayfinderClient 的示例:
import { createWayfinderClient, ChunkDataRetrievalStrategy } from '@ar.io/wayfinder-core';
const wayfinder = createWayfinderClient({
dataRetrievalStrategy: new ChunkDataRetrievalStrategy(),
});
// Fetch a data item from within an ANS-104 bundle
const response = await wayfinder.request('ar://data-item-id');
x402 辅助
两种数据检索策略都支持自定义取取执行,允许您使用x402启用取用客户端进行付费网关请求.
import { createWayfinderClient, ChunkDataRetrievalStrategy } from '@ar.io/wayfinder-core';
import { createX402Fetch } from '@ar.io/wayfinder-x402-fetch';
const x402Fetch = createX402Fetch({ /* payment config */ });
const wayfinder = createWayfinderClient({
fetch: x402Fetch,
dataRetrievalStrategy: new ChunkDataRetrievalStrategy({
fetch: x402Fetch,
}),
});
核查战略
Wayfinder包括确保检索数据完整性的核查机制。 核查战略在复杂性、绩效和安全性之间提供了不同的取舍.
| 验证人 | 复杂性 | 业绩 | 警卫 | 说明 |
|---|---|---|---|---|
RemoteVerificationStrategy | 低级 | 低级 | 低级 | 检查 x-ar-io-verified 返回数据的网关头 。 若为 true,则数据被视为已核实和可信. |
HashVerificationStrategy | 低级 | 高级 | 低级 | 计算返回数据的 SHA-256 散列,并将其比作 a 的散列 信任的网关 (单位:千美元)建议大多数用户使用) (中文(简体) ). |
DataRootVerificationStrategy | 中型 | 中型 | 低级 | 计算交易的数据根( 对 L1 交易最有用) 并将其与 a 提供的数据根进行比较 信任的网关。 。 。 . |
SignatureVerificationStrategy | 中型 | 中型 | 中型 | - 说吧 ANS-104 数据项目:使用范围请求从信任的网关获取签名组件(所有者,签名类型,标签等),然后按照ANS-104标准使用深度散列计算对数据有效载荷进行签名验证. - 说吧 L1 交易:从网关/tx/端点获取交易元数据,从所提供的数据流中计算出数据根,并使用Arweave的加密验证来验证签名. |
远程验证战略
采用这一策略通过检查数据来核实数据 x-ar-io-verified 返回数据的网关头 。 如果信头被设定为 true,则数据被视为已核实和可信.
[大 这一策略只被推荐给用户从自己的网关取来数据,并想避免其他核查策略的间接费用.
import { Wayfinder, RemoteVerificationStrategy } from '@ar.io/wayfinder-core';
const wayfinder = new Wayfinder({
verificationSettings: {
// no trusted gateways are required for this strategy
enabled: true,
strategy: new RemoteVerificationStrategy(),
},
});
质量检验战略
通过SHA-256散列比较验证数据完整性. 这是默认的验证策略,被推荐给大多数寻求安全和性能平衡的用户.
import { Wayfinder, HashVerificationStrategy } from '@ar.io/wayfinder-core';
const wayfinder = new Wayfinder({
verificationSettings: {
enabled: true,
strategy: new HashVerificationStrategy({
trustedGateways: [new URL('https://turbo-gateway.com')],
}),
},
});
数据旋转验证策略
通过计算交易的数据根来通过Arweave验证数据完整性. 这对L1交易有用,被推荐给希望确保其数据完整性的用户.
import { Wayfinder, DataRootVerificationStrategy } from '@ar.io/wayfinder-core';
const wayfinder = new Wayfinder({
verificationSettings: {
enabled: true,
strategy: new DataRootVerificationStrategy({
trustedGateways: [new URL('https://turbo-gateway.com')],
}),
},
});
验证战略
验证Arweave交易和数据项目的签名。 从信任的网关取回信头,供核查时使用。 对于一项交易,其数据根在流出其数据时被计算出,然后与其头一起用于核查。 对于数据项,则采用ANS-104深度散列法来验证签名.
import { Wayfinder, SignatureVerificationStrategy } from '@ar.io/wayfinder-core';
const wayfinder = new Wayfinder({
verificationSettings: {
enabled: true,
strategy: new SignatureVerificationStrategy({
trustedGateways: [new URL('https://turbo-gateway.com')],
}),
},
});
x402 付款额
可用 Wayfinder 配置与 x402 付款协议 提供付费网关服务和更高的费率限制。 这使得您可以无缝地提出可能需要支付的请求,而无需手动处理支付流程.
[大 要开始,请安装
@ar.io/wayfinder-x402-fetch软件包.
这个 @ar.io/wayfinder-x402-fetch 软件包是一个简单的包装 x402- 牵引 库,它创建一个抓取执行,以自动处理x402的支付流量。 您可以通过 Wayfinder 获取执行, 以允许您的请求的x402 支付 .
import { createWayfinderClient, StaticRoutingStrategy } from '@ar.io/wayfinder-core';
import { createX402Fetch } from '@ar.io/wayfinder-x402-fetch';
import { privateKeyToAccount } from 'viem/accounts';
// Set up your wallet for x402 payments
const privateKey = process.env.X402_PRIVATE_KEY; // Your private key
const account = privateKeyToAccount(privateKey);
// Create x402-enabled fetch implementation
const x402Fetch = createX402Fetch({
walletClient: account,
});
// Create Wayfinder client with x402 fetch to handle payments
const wayfinder = createWayfinderClient({
fetch: x402Fetch,
routingSettings: {
// Configure to use x402-enabled gateways
strategy: new StaticRoutingStrategy({
gateway: 'https://paid-gateway.example.com',
}),
},
});
// Requests will now automatically handle x402 payments
const response = await wayfinder.request('ar://transaction-id');
如何运作:
- 当网关返回时
402 Payment Required状态 - X402 获取自动处理支付流程
- 申请经重审后发给付款证
- 你能得到优惠网关服务
使用大小写 :
- 对数据请求的较高费率限制
- 使用溢价网关功能
- 通过支付支持网关运营商
为了了解更多x402付款情况,请访问 x402 文档。 。 。 .
事件和监测
全球活动
const wayfinder = createWayfinderClient({
routingSettings: {
events: {
onRoutingStarted: (event) => console.log('Routing started:', event),
onRoutingSucceeded: (event) => console.log('Gateway selected:', event),
},
},
verificationSettings: {
events: {
onVerificationProgress: (event) => {
const percentage = (event.processedBytes / event.totalBytes) * 100;
console.log(`Verification: ${percentage.toFixed(2)}%`);
},
onVerificationSucceeded: (event) => console.log('Verified:', event.txId),
},
},
});
请求特定事件
const response = await wayfinder.request('ar://example', {
verificationSettings: {
events: {
onVerificationProgress: (event) => {
console.log(`This request: ${event.txId}`);
},
},
},
});
遥测
Wayfinder可以为每个请求可选地放出OpenTeleometry跨度. 默认情况下, 遥测被禁用。您可以通过 telemetry 选项.
import { createWayfinderClient } from '@ar.io/wayfinder-core';
const wayfinder = createWayfinderClient({
// other settings...
telemetrySettings: {
enabled: true,
sampleRate: 0.1, // 10% sampling
exporterUrl: 'https://your-otel-exporter',
clientName: 'my-app',
clientVersion: '1.0.0',
},
});
复原力
Wayfinder 包括内置的复原功能:
- 网关重试:如果网关返回了5xx错误或网络出故障,Wayfinder会自动重新选择不同的网关并重试(最多3个尝试). 客户端错误( 4xx) 立即返回而不重试 .
- 获取超时:所有外出请求包括可配置的超时请求——元数据(HEAD,同级列表)为10s,数据检索为30s,以防止被无限期地挂在缓慢或死亡的网关上.
- 卫生检查网关数字 :
PingRoutingStrategy校验所选网关在通路前响应,如果没有,则用不同的网关重复. - 同行列表重试数字 :
TrustedPeersGatewaysProvider当一个网关返回一个空对等列表时,然后响亮地失败而不是默默地不产生任何网关——而默认的提供者倒回了被信任的网关,这样失败会降解出路由而不是阻止. - 登记失败是致命的数字 :
NetworkGatewaysProvider重试失败的页面, 一旦重试用完就扔出, 而不是返回部分注册 。 因为limit在排序后应用,部分读取会返回错误的网关,而不是仅仅减少. - 全注册页数字 :
NetworkGatewaysProvider在应用之前先阅读整个链上登记册limit这样limit选择排名最高的网关, 而不是首先返回的网关。 它在 SDK 最大时页面, 所以这是对当前大小的注册的单一请求 .
请求流量
sequenceDiagram
participant Client
participant Wayfinder
participant Gateways Provider
participant Routing Strategy
participant Selected Gateway
participant Verification Strategy
participant Trusted Gateways
Client->>Wayfinder: request('ar://example')
activate Wayfinder
Wayfinder->>+Gateways Provider: getGateways()
Gateways Provider-->>-Wayfinder: List of gateway URLs
Wayfinder->>+Routing Strategy: selectGateway()
Routing Strategy-->>-Wayfinder: Selected gateway
Wayfinder->>+Selected Gateway: HTTP request
Selected Gateway-->>-Wayfinder: Response data
opt Verification enabled
Wayfinder->>+Verification Strategy: verifyData()
Verification Strategy->>Trusted Gateways: Get verification data
Trusted Gateways-->>Verification Strategy: Verification headers
Verification Strategy-->>-Wayfinder: Verification result
end
Wayfinder-->>Client: Response or error
deactivate Wayfinder