compose-reference
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseGoldsky Compose Reference
Goldsky Compose 参考文档
Reference for the manifest, the full CLI surface, the API, wallets, gas sponsorship, contract codegen, the dashboard, and pricing. For interactive build flows use ; for debugging use .
compose.yamlgoldsky composeTaskContext/compose/compose-doctorAlways validate the manifest before deploying.catches schema errors fast.goldsky compose dev
本文档为清单、完整 CLI功能、 API、钱包、Gas赞助、合约代码生成、仪表板及定价提供参考。如需交互式构建流程,请使用;如需调试,请使用。
compose.yamlgoldsky composeTaskContext/compose/compose-doctor部署前请务必验证清单。可快速捕获 schema 错误。goldsky compose dev
Quick Reference
快速参考
Most common lookups:
- Manifest top-level / task / trigger fields → compose.yaml Manifest
- CLI flags → CLI Commands
- TaskContext shape, IWallet, Collection → TaskContext API
- Smart wallet vs BYO EOA, gas sponsorship defaults → Wallets — Deep Dive
- Contract codegen workflow → Contract Codegen
- output shapes → CLI JSON Schemas
--json - Dashboard URL → Dashboard
最常见的查询内容:
- 清单顶层/任务/触发器字段 → compose.yaml 清单
- CLI标志 → CLI命令
- TaskContext结构、IWallet、Collection → TaskContext API
- 智能钱包 vs BYO EOA、Gas赞助默认设置 → 钱包——深入解析
- 合约代码生成流程 → 合约代码生成
- 输出结构 → CLI JSON Schema
--json - 仪表板URL → 仪表板
compose.yaml Manifest
compose.yaml 清单
Top-level fields
顶层字段
| Field | Type | Required | Notes |
|---|---|---|---|
| string | yes | RFC 1123: lowercase, letters/numbers/hyphens, letter-start |
| string | deploy-only | semver (e.g. |
| array | yes | Non-empty |
| string[] | no | Names only — values set via |
| | no | Each is |
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| string | 是 | 符合RFC 1123规范:小写字母、数字、连字符,以字母开头 |
| string | 仅部署时需填 | 语义化版本(如 |
| array | 是 | 不能为空 |
| string[] | 否 | 仅需填写名称——值通过 |
| | 否 | 每个属性为 |
Task fields
任务字段
| Field | Type | Required | Notes |
|---|---|---|---|
| string | yes | |
| string | yes | Relative path to the |
| array | yes | One or more; at most one per type |
| object | no | |
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| string | 是 | 符合正则 |
| string | 是 | 指向 |
| array | 是 | 至少一个;每种类型最多一个 |
| object | 否 | |
Trigger types
触发器类型
cron
yaml
- type: cron
expression: "*/15 * * * *" # 5-field cronhttp
yaml
- type: http
authentication: auth_token # or "none"
ip_whitelist: ["1.2.3.4", "10.0.0.0/8"] # optional, IPv4/IPv6/CIDRonchain_event
yaml
- type: onchain_event
network: polygon_amoy # snake_case required
contract: "0xYourContractAddress" # 0x + 40 hex
events:
- "Transfer(address,address,uint256)" # viem signature strings, optional
dataset_version: "..." # optionalcron
yaml
- type: cron
expression: "*/15 * * * *" # 5字段cron表达式http
yaml
- type: http
authentication: auth_token # 或 "none"
ip_whitelist: ["1.2.3.4", "10.0.0.0/8"] # 可选,支持IPv4/IPv6/CIDRonchain_event
yaml
- type: onchain_event
network: polygon_amoy # 必须使用蛇形命名
contract: "0xYourContractAddress" # 0x开头加40位十六进制字符
events:
- "Transfer(address,address,uint256)" # viem签名格式字符串,可选
dataset_version: "..." # 可选Full manifest example
完整清单示例
yaml
name: my-app
api_version: stable
secrets:
- COINGECKO_API_KEY
- ORACLE_SIGNER_KEY
env:
cloud:
LOG_LEVEL: info
local:
LOG_LEVEL: debug
tasks:
- name: update_oracle
path: src/tasks/update-oracle.ts
retry_config:
max_attempts: 3
initial_interval_ms: 1000
backoff_factor: 2
triggers:
- type: cron
expression: "*/5 * * * *"
- name: manual_trigger
path: src/tasks/manual-trigger.ts
triggers:
- type: http
authentication: auth_tokenyaml
name: my-app
api_version: stable
secrets:
- COINGECKO_API_KEY
- ORACLE_SIGNER_KEY
env:
cloud:
LOG_LEVEL: info
local:
LOG_LEVEL: debug
tasks:
- name: update_oracle
path: src/tasks/update-oracle.ts
retry_config:
max_attempts: 3
initial_interval_ms: 1000
backoff_factor: 2
triggers:
- type: cron
expression: "*/5 * * * *"
- name: manual_trigger
path: src/tasks/manual-trigger.ts
triggers:
- type: http
authentication: auth_tokenCLI Commands
CLI命令
All commands accept and ; the flag selects the app by name (falls back to , then ).
-t/--token--api-server-n/--name-m/--manifest./compose.yaml所有命令均支持和;标志用于按名称选择应用(优先级高于,最后会回退到)。
-t/--token--api-server-n/--name-m/--manifest./compose.yamlLifecycle
生命周期管理
| Command | Purpose | Key flags |
|---|---|---|
| Scaffold new app | (interactive) |
| Run locally (alias: | |
| Bundle + upload to cloud | |
| Show runtime status | |
| List all apps | |
| Pause | |
| Resume | |
| Delete (type-to-confirm; | |
| View / tail logs | |
| Wipe local | |
| Re-download the compose binary | |
| POST payload to a local task |
| 命令 | 用途 | 关键标志 |
|---|---|---|
| 搭建新应用模板 | (交互式) |
| 本地运行(别名: | |
| 打包并上传至云端 | |
| 显示运行状态 | |
| 列出所有应用 | |
| 暂停应用 | |
| 恢复应用 | |
| 删除应用(需输入确认;CI环境可使用 | |
| 查看/跟踪日志 | |
| 清空本地 | |
| 重新下载compose二进制文件 | |
| 向本地任务发送POST请求 |
Secrets
密钥管理
| Command | Purpose |
|---|---|
| Set a secret |
| Delete |
| List |
| Upload all of |
| 命令 | 用途 |
|---|---|
| 设置密钥 |
| 删除密钥 |
| 列出密钥 |
| 将所有 |
Wallets
钱包管理
| Command | Purpose |
|---|---|
| Create managed wallet; prints address |
| Table: name, address, type (privy / private_key / tevm), created_at |
| 命令 | 用途 |
|---|---|
| 创建托管钱包;会输出钱包地址 |
| 表格形式展示:名称、地址、类型(privy/private_key/tevm)、创建时间 |
Codegen
代码生成
compose codegensrc/contracts/*.json.compose/generated/index.ts.compose/types.d.tscompose initcompose devcompose codegensrc/contracts/*.json.compose/generated/index.ts.compose/types.d.tscompose initcompose devTaskContext API
TaskContext API
main(context: TaskContext, params?: Record<string, unknown>): Promise<unknown>ts
type TaskContext = {
env: Record<string, string>;
fetch: FetchFn;
callTask: <Args, T>(name: string, args: Args, retryConfig?: RetryConfig) => Promise<T>;
logEvent: (event: { code: string; message: string; data?: unknown }) => Promise<void>;
evm: {
chains: Record<string, Chain>; // re-exported from viem/chains
wallet: (config: WalletConfig) => Promise<IWallet>;
decodeEventLog: <T>(abi: AbiItem[], log: EventLog) => Promise<T>;
contracts: Record<string, ContractClass>; // populated by codegen
};
collection: <T>(name: string, indexes?: string[]) => Promise<Collection<T>>;
};No or namespace. Secrets flatten into . Use for free-form logging, for structured events.
loggersecretscontext.envconsole.loglogEventmain(context: TaskContext, params?: Record<string, unknown>): Promise<unknown>ts
type TaskContext = {
env: Record<string, string>;
fetch: FetchFn;
callTask: <Args, T>(name: string, args: Args, retryConfig?: RetryConfig) => Promise<T>;
logEvent: (event: { code: string; message: string; data?: unknown }) => Promise<void>;
evm: {
chains: Record<string, Chain>; // 从viem/chains导出
wallet: (config: WalletConfig) => Promise<IWallet>;
decodeEventLog: <T>(abi: AbiItem[], log: EventLog) => Promise<T>;
contracts: Record<string, ContractClass>; // 由代码生成自动填充
};
collection: <T>(name: string, indexes?: string[]) => Promise<Collection<T>>;
};不存在或命名空间。密钥会被扁平化到中。使用进行自由格式日志记录,使用进行结构化事件记录。
loggersecretscontext.envconsole.loglogEventfetch
(overloads)
fetchfetch
(重载)
fetchts
interface FetchFn {
<T>(url: string, retryConfig?: RetryConfig): Promise<T | undefined>;
<T>(url: string, body: unknown, retryConfig?: RetryConfig): Promise<T | undefined>;
}- is serialized as JSON and sent as POST. Omit
bodyfor GET.body - Response is JSON-parsed; returns when the body isn't JSON.
undefined - Not — use this, not native
window.fetch.fetch
ts
interface FetchFn {
<T>(url: string, retryConfig?: RetryConfig): Promise<T | undefined>;
<T>(url: string, body: unknown, retryConfig?: RetryConfig): Promise<T | undefined>;
}- 会被序列化为JSON并以POST方式发送。省略
body则使用GET请求。body - 响应会被解析为JSON;若响应体不是JSON则返回。
undefined - 此方法并非——请使用本方法,而非原生
window.fetch。fetch
callTask
callTaskcallTask
callTaskts
callTask<Args, T>(name: string, args: Args, retryConfig?: RetryConfig): Promise<T>- is whatever the callee returns. A
T-returning task resolves tovoid.undefined - Use for task-to-task invocation (parent/child patterns).
ts
callTask<Args, T>(name: string, args: Args, retryConfig?: RetryConfig): Promise<T>- 为被调用任务的返回值类型。返回
T的任务会解析为void。undefined - 用于任务间调用(父/子任务模式)。
RetryConfig
RetryConfigRetryConfig
RetryConfigts
type RetryConfig = {
max_attempts: number; // ≥0
initial_interval_ms: number; // >0
backoff_factor: number; // >0
};No defaults — supply all three when you pass a . Without it, the task runs once and any thrown error surfaces to the run record.
retryConfigts
type RetryConfig = {
max_attempts: number; // ≥0
initial_interval_ms: number; // >0
backoff_factor: number; // >0
};无默认值——传递时需提供所有三个属性。若未传递,则任务仅运行一次,任何抛出的错误都会显示在运行记录中。
retryConfigEventLog
(for decodeEventLog
and onchain_event
triggers)
EventLogdecodeEventLogonchain_eventEventLog
(用于decodeEventLog
和onchain_event
触发器)
EventLogdecodeEventLogonchain_eventts
type EventLog = {
address: Address; // "0x…"
topics: Hex[]; // indexed topics
data: Hex; // non-indexed data
blockNumber?: bigint;
transactionHash?: Hex;
logIndex?: number;
};For -triggered tasks, contains plus chain-specific metadata. returns the decoded struct.
onchain_eventparams{ log: EventLog }decodeEventLog(abi, params.log)ts
type EventLog = {
address: Address; // "0x…"
topics: Hex[]; // 索引化主题
data: Hex; // 非索引化数据
blockNumber?: bigint;
transactionHash?: Hex;
logIndex?: number;
};对于由触发的任务,包含以及链相关元数据。会返回解码后的结构体。
onchain_eventparams{ log: EventLog }decodeEventLog(abi, params.log)IWallet
IWallet
ts
interface IWallet {
readonly name: string;
readonly address: Address;
writeContract(
chain: Chain,
address: Address,
signatureOrAbi: string | AbiItem,
args?: unknown[],
options?: WriteOptions,
): Promise<TxResult>;
readContract(
chain: Chain,
address: Address,
signatureOrAbi: string | AbiItem,
args?: unknown[],
): Promise<unknown>;
sendTransaction(
chain: Chain,
to: Address,
value: bigint,
data?: Hex,
options?: WriteOptions,
): Promise<TxResult>;
simulate(
chain: Chain,
address: Address,
signatureOrAbi: string | AbiItem,
args?: unknown[],
): Promise<SimulateResult>;
getBalance(chain: Chain): Promise<bigint>;
}
type WriteOptions = {
confirmations?: number;
onReorg?: { action: { type: "replay" | "skip" }; depth: number };
retryConfig?: RetryConfig;
gas?: bigint;
gasPrice?: bigint;
};
type TxResult = {
hash: Hex;
userOpHash?: Hex; // only for sponsored transactions
chainId: number;
blockNumber?: bigint; // present after mining
};
type SimulateResult = {
success: boolean;
result?: unknown;
error?: string;
};ts
interface IWallet {
readonly name: string;
readonly address: Address;
writeContract(
chain: Chain,
address: Address,
signatureOrAbi: string | AbiItem,
args?: unknown[],
options?: WriteOptions,
): Promise<TxResult>;
readContract(
chain: Chain,
address: Address,
signatureOrAbi: string | AbiItem,
args?: unknown[],
): Promise<unknown>;
sendTransaction(
chain: Chain,
to: Address,
value: bigint,
data?: Hex,
options?: WriteOptions,
): Promise<TxResult>;
simulate(
chain: Chain,
address: Address,
signatureOrAbi: string | AbiItem,
args?: unknown[],
): Promise<SimulateResult>;
getBalance(chain: Chain): Promise<bigint>;
}
type WriteOptions = {
confirmations?: number;
onReorg?: { action: { type: "replay" | "skip" }; depth: number };
retryConfig?: RetryConfig;
gas?: bigint;
gasPrice?: bigint;
};
type TxResult = {
hash: Hex;
userOpHash?: Hex; // 仅赞助交易返回该字段
chainId: number;
blockNumber?: bigint; // 挖矿完成后返回该字段
};
type SimulateResult = {
success: boolean;
result?: unknown;
error?: string;
};Collection
Collection
ts
interface Collection<T> {
insertOne(doc: T): Promise<void>;
findOne(filter: Filter<T>): Promise<T | null>;
findMany(filter: Filter<T>, options?: { limit?: number; skip?: number }): Promise<T[]>;
getById(id: string): Promise<T | null>;
setById(id: string, doc: T, opts?: { upsert?: boolean }): Promise<void>; // upsert defaults true
deleteById(id: string): Promise<void>;
drop(): Promise<void>;
}Filter operators: , , , , , , , . Equality: .
$gt$gte$lt$lte$in$ne$nin$exists{ field: value }ts
interface Collection<T> {
insertOne(doc: T): Promise<void>;
findOne(filter: Filter<T>): Promise<T | null>;
findMany(filter: Filter<T>, options?: { limit?: number; skip?: number }): Promise<T[]>;
getById(id: string): Promise<T | null>;
setById(id: string, doc: T, opts?: { upsert?: boolean }): Promise<void>; // upsert默认值为true
deleteById(id: string): Promise<void>;
drop(): Promise<void>;
}过滤运算符:、、、、、、、。相等匹配:。
$gt$gte$lt$lte$in$ne$nin$exists{ field: value }CLI JSON Schemas
CLI JSON Schema
For agents parsing output:
--json供Agent解析输出使用:
--jsoncompose status -n <app> --json
compose status -n <app> --jsoncompose status -n <app> --json
compose status -n <app> --jsonjson
{
"name": "my-app",
"status": "RUNNING",
"created_at": 1771630350411,
"updated_at": 1774473580871
}statusRUNNING | PAUSED | ERROR | STARTING | STOPPED | PROVISIONINGjson
{
"name": "my-app",
"status": "RUNNING",
"created_at": 1771630350411,
"updated_at": 1774473580871
}statusRUNNING | PAUSED | ERROR | STARTING | STOPPED | PROVISIONINGcompose list --json
compose list --jsoncompose list --json
compose list --jsonjson
[
{ "name": "my-app", "status": "RUNNING", "created_at": 1771630350411, "updated_at": 1774473580871 }
]json
[
{ "name": "my-app", "status": "RUNNING", "created_at": 1771630350411, "updated_at": 1774473580871 }
]compose logs --json
compose logs --jsoncompose logs --json
compose logs --jsonNDJSON (one object per line):
json
{"timestamp":"2026-04-20T10:00:00Z","level":"info","message":"...","dashboard_url":"https://app.goldsky.com/<project_id>/dashboard/compose/<app>/runs/<run_id>"}NDJSON格式(每行一个对象):
json
{"timestamp":"2026-04-20T10:00:00Z","level":"info","message":"...","dashboard_url":"https://app.goldsky.com/<project_id>/dashboard/compose/<app>/runs/<run_id>"}compose secret list -n <app> --json
compose secret list -n <app> --jsoncompose secret list -n <app> --json
compose secret list -n <app> --jsonjson
[{ "name": "MY_SECRET" }]Values are never returned.
json
[{ "name": "MY_SECRET" }]永远不会返回密钥值。
compose wallet list --json
compose wallet list --jsoncompose wallet list --json
compose wallet list --jsonjson
[{ "name": "updater", "address": "0x...", "type": "privy", "created_at": 1771630350411 }]typeprivyprivate_keytevmjson
[{ "name": "updater", "address": "0x...", "type": "privy", "created_at": 1771630350411 }]typeprivyprivate_keytevmWallets — Deep Dive
钱包——深入解析
Smart wallet (managed, Privy-backed)
智能钱包(托管式,基于Privy)
ts
const w = await evm.wallet({ name: "my-oracle" }); // sponsorGas defaults TRUECreated cloud-side by Privy. Address is persisted. Gas-sponsored by default. Cannot be used in plain local dev — throws Use or switch to a BYO EOA for local iteration.
"You cannot use a smart wallet in local dev unless you use chain forking."compose dev --fork-chainsts
const w = await evm.wallet({ name: "my-oracle" }); // sponsorGas默认值为TRUE由Privy在云端创建。地址会被持久化。默认启用Gas赞助。无法在纯本地开发环境中使用——会抛出错误。请使用或切换为自备EOA进行本地开发。
"You cannot use a smart wallet in local dev unless you use chain forking."compose dev --fork-chainsBYO EOA (private key)
自备EOA(私钥)
ts
const w = await evm.wallet({
privateKey: env.MY_KEY,
name: "my-pk-wallet", // optional; defaults to the derived address
sponsorGas: true, // DEFAULTS TO FALSE — opt in explicitly
});Works in both cloud and local. When , the wallet configures EIP-7702 delegation per chain on first use, then submits UserOperations through a sponsored bundler.
sponsorGas: truets
const w = await evm.wallet({
privateKey: env.MY_KEY,
name: "my-pk-wallet", // 可选;默认值为派生地址
sponsorGas: true, // 默认值为FALSE——需显式开启
});可在云端和本地环境中使用。当时,钱包会在首次使用时为每条链配置EIP-7702委托,然后通过赞助打包器提交UserOperations。
sponsorGas: trueGas Sponsorship
Gas赞助
Bundler fallback order: Alchemy → Pimlico → Gelato. Override via env var.
BUNDLER_PROVIDER=<alchemy|pimlico|gelato>打包器 fallback 顺序:Alchemy → Pimlico → Gelato。可通过环境变量覆盖默认顺序。
BUNDLER_PROVIDER=<alchemy|pimlico|gelato>Supported chains
支持的链
See the Goldsky docs chains page for the current list (don't hardcode — this changes). Highlights include Ethereum, Base, Arbitrum, Optimism, Polygon, Unichain, Monad (mainnet + testnet), MegaETH testnet, Lisk, Linea, Scroll, Avalanche, Blast, BNB, Celo, Zora, Sonic, Worldchain, plus major Sepolia testnets and Polygon Amoy.
请查看Goldsky文档的链列表获取最新支持链(请勿硬编码——列表会更新)。主要支持链包括Ethereum、Base、Arbitrum、Optimism、Polygon、Unichain、Monad(主网+测试网)、MegaETH测试网、Lisk、Linea、Scroll、Avalanche、Blast、BNB、Celo、Zora、Sonic、Worldchain,以及主要的Sepolia测试网和Polygon Amoy测试网。
Error on unsupported chain
不支持链的错误提示
No bundler provider available for chain <id>. Providers: alchemy: chain not supported; pimlico: missing keys (PIMLICO_API_KEY); gelato: …Either use a supported chain or set and fund the EOA manually.
sponsorGas: falseNo bundler provider available for chain <id>. Providers: alchemy: chain not supported; pimlico: missing keys (PIMLICO_API_KEY); gelato: …请使用支持的链,或设置并手动为EOA充值Gas。
sponsorGas: falseCaveats
注意事项
- is not supported for gas-sponsored transactions (warning logged, not fatal).
onReorg - Passing a custom to a sponsored
nonceis ignored (ERC-4337 smart wallets use a different nonce structure).sendTransaction
- Gas赞助交易不支持(会记录警告,但不会导致任务失败)。
onReorg - 向赞助的传递自定义
sendTransaction会被忽略(ERC-4337智能钱包使用不同的nonce结构)。nonce
Contract Codegen (full example)
合约代码生成(完整示例)
Input
输入
Drop ABI JSON files into :
src/contracts/src/contracts/
├── ERC20.json
└── PriceFeed.jsonAccepted ABI shapes: bare ABI array (), or wrapped object (), or a Foundry/Hardhat artifact (the generator extracts the field). The filename (without extension) becomes the generated class name.
[{ "type": "function", ... }, ...]{ "abi": [...] }abi将ABI JSON文件放入目录:
src/contracts/src/contracts/
├── ERC20.json
└── PriceFeed.json支持的ABI格式:纯ABI数组()、包装对象()或Foundry/Hardhat工件(生成器会提取字段)。文件名(不含扩展名)会成为生成类的名称。
[{ "type": "function", ... }, ...]{ "abi": [...] }abiGenerate
生成
bash
goldsky compose codegen(Also runs automatically during , , and .)
initdevdeploybash
goldsky compose codegen(该命令也会在、和过程中自动运行。)
initdevdeployOutput
输出
.compose/generated/index.ts.compose/types.d.tscomposetsconfig.json.compose/generated/index.ts.compose/types.d.tscomposetsconfig.jsonConsume in a task
在任务中使用
ts
import type { TaskContext } from "compose";
export async function main({ evm, env }: TaskContext) {
const PriceFeed = evm.contracts.PriceFeed;
const feed = new PriceFeed(evm.chains.ethereum, env.FEED_ADDRESS);
const price = await feed.latestAnswer();
return { price: price.toString() };
}Classes are exposed under . Codegen names ending in (e.g. ) are exposed as at runtime.
context.evm.contracts.<Name>ClassERC20ClassERC20ts
import type { TaskContext } from "compose";
export async function main({ evm, env }: TaskContext) {
const PriceFeed = evm.contracts.PriceFeed;
const feed = new PriceFeed(evm.chains.ethereum, env.FEED_ADDRESS);
const price = await feed.latestAnswer();
return { price: price.toString() };
}类会暴露在下。代码生成的名称以结尾的(如),在运行时会以的名称暴露。
context.evm.contracts.<Name>ClassERC20ClassERC20Supported Chains
支持的链
context.evm.chainsviem/chainsevm.chains.<name>evm.chains.polygonAmoyevm.chains.monadTestnetevm.chains.baseSepoliacontext.evm.chainsviem/chainsevm.chains.<name>evm.chains.polygonAmoyevm.chains.monadTestnetevm.chains.baseSepoliaDashboard
仪表板
URL pattern:
https://app.goldsky.com/<project_id>/dashboard/compose/<app-name>
https://app.goldsky.com/<project_id>/dashboard/compose/<app-name>/runs/<run_id>The dashboard shows status, secrets, logs, and per-run traces. Log lines include a attribute in their metadata so agents can link the user directly to the relevant run.
dashboard_urlURL格式:
https://app.goldsky.com/<project_id>/dashboard/compose/<app-name>
https://app.goldsky.com/<project_id>/dashboard/compose/<app-name>/runs/<run_id>仪表板会显示应用状态、密钥、日志以及每次运行的追踪信息。日志行的元数据中包含属性,Agent可通过该属性直接将用户引导至相关运行记录页面。
dashboard_urlPricing
定价
Compose is in Beta. Pricing is enterprise-only — schedule a call with Goldsky to discuss your use case. Source: https://goldsky.com/pricing (Compose section).
Internally, usage is tracked across three metered dimensions:
- Function calls () — number of task invocations.
compose_function_calls - Worker hours () — runtime consumed.
compose_worker_hours - Gas spend () — gas paid for sponsored transactions.
compose_gas_spend
These metrics drive enterprise-tier billing; per-unit prices are set per contract, not published.
Compose目前处于Beta阶段。定价仅面向企业客户——请联系Goldsky团队讨论您的使用场景。来源:https://goldsky.com/pricing(Compose章节)。
内部会通过三个计量维度跟踪使用情况:
- 函数调用次数()——任务调用次数。
compose_function_calls - 工作时长()——消耗的运行时间。
compose_worker_hours - Gas花费()——赞助交易支付的Gas费用。
compose_gas_spend
这些指标用于企业级计费;单价会根据合同约定,不对外公开。
Related
相关工具
- — Build a new app or explain what Compose is.
/compose - — Diagnose and fix broken apps.
/compose-doctor - —
/auth-setuphelp.goldsky login - — General secret management.
/secrets
- —— 构建新应用或了解Compose的功能。
/compose - —— 诊断并修复故障应用。
/compose-doctor - ——
/auth-setup相关帮助。goldsky login - —— 通用密钥管理。
/secrets