# @gala-chain/gala-core-sdk 中文文档

规范地址：https://npmcn.com/package/%40gala-chain/gala-core-sdk/

版本：1\.2\.1
npm 元数据更新时间：2026-11-09T21:11:50.953Z
中文译文更新时间：2026-11-15T21:26:59.406Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40gala-chain/gala-core-sdk
原文对照：https://npmcn.com/package/%40gala-chain/gala-core-sdk/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：4.4 MB，128 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：6 个
- peer 依赖：react ^16\.8\.0 \|\| ^17\.0\.0 \|\| ^18\.0\.0 \|\| ^19\.0\.0，ethers ^6\.16\.0，@solana/web3\.js ^1\.99\.0，@solana/spl-token ^0\.4\.15
- 首次发布：2026-10-14T17:32:21.800Z
- 最新版本发布：2026-11-09T21:11:42.713Z
- 近 30 天下载量：4762（2026-10-16 至 2026-11-14，npm 官方下载统计）
- 已发布版本数：23（近 12 个月 23 个）

## 中文简介

GalaChain Core SDK:签名(本土,个人签名,EIP-712),网关运输,网关信使读取(余额,令牌类,NFT收藏)和写取(转移,燃烧,锁定,解锁)以及共享出错模式,每个产品SDK和app

## 安装

```sh
npm install @gala-chain/gala-core-sdk
```

也可以使用：`pnpm add @gala-chain/gala-core-sdk`、`yarn add @gala-chain/gala-core-sdk`、`bun add @gala-chain/gala-core-sdk`

## README

# 加拉钱核心SDK

> **自己签DTO? 现在每个签名的字都需要 `dtoOperation`。 。 。 .** 每端绘图,前后 有效载荷和错误: [移动到数字操作。 md](https://npmcn.com/package/%40gala-chain/gala-core-sdk/MIGRATING-TO-DTO-OPERATION.md)使用SDK签名器? 升级; 它为您设置了字段 .

`@gala-chain/gala-core-sdk` 是 GalaChain 产品 SDK 和 app 股份的分层: 签名 (原始、个人签名、EIP-712和任意输入的数据),签名者(私钥、懒惰的私钥) 键, Gala 钱包, EIP-1193 浏览器钱包,网关传输(`fetch` 请求者与 超时、有线选项、轴和醚适配器),网关符号读取(平衡和持有, 符号类、 NFT 收藏授权)和写作( 传输、 燃烧、 锁定、 解锁)、 符号 类密钥并写入 `uniqueKey`s,以及共享错误模型(`GalaSDKError`页:1 目录, 失败视图). 它对加拉钱说 网关一般;产品后端(DEX和LOUSTPAD后端)有自己的SDK (单位:千美元)`@gala-chain/gswap-sdk`, (中文(简体) ), `@gala-chain/launchpad-sdk`以它为基础.

## 安装

```bash
npm install @gala-chain/gala-core-sdk
```

将准确的版本输入到应用程序构建中 。 产品 SDK 将核心作为 **同伴依赖**: 安装它 旁边的产品SDK,一次.

## 快开始

```typescript
import { PrivateKeySigner, serialize, signNative, normalizePrivateKey, withDtoOperation } from '@gala-chain/gala-core-sdk';

const signer = new PrivateKeySigner(process.env.GALACHAIN_PRIVATE_KEY!);
// The chain refuses a signed DTO without the `dtoOperation` of the call it is sent to, and the field is
// part of what is signed: set it BEFORE signing (GatewayWrites and the product SDKs already do).
const dto = withDtoOperation('asset/token-contract', 'TransferToken', { quantity: '1', uniqueKey: 'k-1' });
const signed = await signer.signObject('TransferToken', dto);

// The primitives the signer is built on, byte-identical to @gala-chain/api:
const key = normalizePrivateKey(process.env.GALACHAIN_PRIVATE_KEY!);
console.log(serialize({ b: 1, a: 2 }), signNative(key, { a: 1 }));
key.fill(0);
```

## 里面有什么东西

| 区域 | 出口 |
| --- | --- |
| 签名人 | `PrivateKeySigner`, (中文(简体) ), `createLazyPrivateKeySigner`, (中文(简体) ), `GalaWalletSigner`, (中文(简体) ), `BrowserWalletSigner`, (中文(简体) ), `signPreSend`, (中文(简体) ), `signPreSendFor`类型 `GalaChainSigner` |
| 签名 | `serialize`, (中文(简体) ), `getPayloadToSign`, (中文(简体) ), `signNative`, (中文(简体) ), `signPersonalMessage`, (中文(简体) ), `personalSignPrefixFor`, (中文(简体) ), `fixpointPrefixFor`, (中文(简体) ), `signChainDto*`, (中文(简体) ), `signRawObject`, (中文(简体) ), `generateEIP712Types`, (中文(简体) ), `buildEIP712Payload`, (中文(简体) ), `hashTypedData`, (中文(简体) ), `signTypedDataPayload`; 签名 `dtoOperation`数字 : `withDtoOperation`, (中文(简体) ), `dtoOperationOf`, (中文(简体) ), `CHAIN_CONTRACT_OPERATION_PREFIXES`类型 `ChainContractPath` |
| 运输 | `fetchRequestor`, (中文(简体) ), `requestWithTimeout` (单位:千美元)`kind: { write: false }` 使读取的超时 和运输故障说 `write: false`, (中文(简体) ), `buildRequestHeaders`, (中文(简体) ), `buildQueryString`, (中文(简体) ), `readRetryAfter`, (中文(简体) ), `httpRequestorFromAxios`, (中文(简体) ), `eip1193ProviderFromEthers`, (中文(简体) ), `isFetchTransportFailure`,类型 `HttpRequestor`, (中文(简体) ), `WireOptions`, (中文(简体) ), `RequestKind` |
| 网关已读 | `GatewayReads` (单位:千美元)`fetchBalances`, (中文(简体) ), `fetchTokenBalance`, (中文(简体) ), `fetchNftBalances`, (中文(简体) ), `fetchTokenClasses`, (中文(简体) ), `fetchTokenClassesWithSupply`, (中文(简体) ), `fetchTokenClass`, (中文(简体) ), `fetchTokenDetails`, (中文(简体) ), `fetchTokenClassesPage`, (中文(简体) ), `fetchAllTokenClasses`, (中文(简体) ), `fetchNftCollectionAuthorizationsPage`, (中文(简体) ), `fetchAllNftCollectionAuthorizations`, (中文(简体) ), `fetchPublicKey`, (中文(简体) ), `GATEWAY_READ_METHODS`, (中文(简体) ), `GATEWAY_READ_LIMITS`,类型 `GalaChainTokenBalance`, (中文(简体) ), `GalaChainTokenBalanceSummary`, (中文(简体) ), `GalaChainTokenClass`, (中文(简体) ), `GalaChainTokenDetails`, (中文(简体) ), `GalaChainPage`, (中文(简体) ), `GalaChainPublicKey` |
| 网关写入 | `GatewayWrites` (单位:千美元)`transferGala`, (中文(简体) ), `transferToken`, (中文(简体) ), `burnTokens`, (中文(简体) ), `lockTokens`, (中文(简体) ), `unlockTokens`; NFTs 键 : `claimNftCollection`, (中文(简体) ), `createNftCollection`, (中文(简体) ), `mintNft`, (中文(简体) ), `estimateNftFee`, (中文(简体) ), `galaChainUserRef` (网关所接受的拼法中的用户参考), `GATEWAY_WRITE_METHODS`, (中文(简体) ), `GATEWAY_WRITE_BATCH_LIMITS`, (中文(简体) ), `GALA_TOKEN_CLASS_KEY`, (中文(简体) ), `NFT_WRITE_METHODS`, (中文(简体) ), `NFT_MINT_LIMIT`,类型 `GatewayWritesOptions`, (中文(简体) ), `GatewayWriteReceipt`, (中文(简体) ), `WriteReceipt`, (中文(简体) ), `TokenNameResolver`, (中文(简体) ), `TokenQuantityInput`, (中文(简体) ), `NftFeeRequest`, (中文(简体) ), `NftFeeQuote`, (中文(简体) ), `ClaimNftCollectionInput`, (中文(简体) ), `CreateNftCollectionInput`, (中文(简体) ), `MintNftInput` |
| 部署 | `GALA_CHAIN_ENVIRONMENTS` (出入口和DEX API `prod` 编号 : `stage`(中文(简体) ) |
| 密钥 | `compositeKeyOf`, (中文(简体) ), `tryParseTokenClassKey`, (中文(简体) ), `tryParseCompositeKey`, (中文(简体) ), `createUniqueKey`, (中文(简体) ), `assertUniqueKey`, (中文(简体) ), `isValidUniqueKey` |
| 钱包 | `createWallet` (随机,从私钥取出,或从12/24-字元取自: `m/44'/60'/0'/0/0`, (中文(简体) ), `validateWalletInput`, (中文(简体) ), `getPublicKeyFromPrivateKey`, (中文(简体) ), `getEthereumAddressFromPrivateKey`, (中文(简体) ), `checksumEthereumAddress`,类型 `GeneratedWallet`, (中文(简体) ), `PublicKeyResult` |
| 错误 | `GalaSDKError`, (中文(简体) ), `isGalaError`, (中文(简体) ), `GALA_ERROR_CATALOG`, (中文(简体) ), `galaErrorTemplates`, (中文(简体) ), `GALA_ERROR_PHASE_BY_CODE`, (中文(简体) ), `toFailureView`, (中文(简体) ), `isWriteView`, (中文(简体) ), `FAILURE_OUTCOMES` |
| 钱包助手( E)`./wallet`(中文(简体) ) | `isWalletUserRejection`, (中文(简体) ), `walletDeclineCode`, (中文(简体) ), `isGalaErrorLike` |
| 钱包提供者(`./providers`(中文(简体) ) | `PrivateKeyProvider`, (中文(简体) ), `ExternalWalletProvider`, (中文(简体) ), `GalaWalletProvider`, (中文(简体) ), `detectWallets`, (中文(简体) ), `subscribeToWalletChanges`, (中文(简体) ), `getWalletByRdns`, (中文(简体) ), `isWalletAvailable`, (中文(简体) ), `findMetaMaskWallet`, (中文(简体) ), `getMetaMaskWallet`, (中文(简体) ), `findTrustWallet`, (中文(简体) ), `getTrustWallet`, (中文(简体) ), `hasAnyWallet`, (中文(简体) ), `getInjectedEip1193Provider`, (中文(简体) ), `KNOWN_WALLET_RDNS`, (中文(简体) ), `createWalletProvider`, (中文(简体) ), `createProviderFromEip1193`, (中文(简体) ), `ensureConnected`, (中文(简体) ), `getPrivateKeyIfAvailable`, (中文(简体) ), `isPrivateKeyProvider`, (中文(简体) ), `isExternalProvider`, (中文(简体) ), `isEip1193Provider`类型 `WalletProvider` |
| 反应( E)`./react`(中文(简体) ) | `WalletProvider` (内容部分), `WalletContext`, (中文(简体) ), `useWallet`, (中文(简体) ), `useWalletContext`, (中文(简体) ), `useWalletConnection`, (中文(简体) ), `useWalletDetection`, (中文(简体) ), `useWalletAddress`, (中文(简体) ), `useGalaAddress`, (中文(简体) ), `useWalletProvider`, (中文(简体) ), `useIsWalletConnected` |
| 桥 (`./bridge`(中文(简体) ) | `BridgeService` (进出伊特鲁姆和索拉纳的桥梁,费用、状况、外部余额), `EthereumBridgeStrategy`, (中文(简体) ), `SolanaBridgeStrategy`, (中文(简体) ), `BaseBridgeStrategy`, (中文(简体) ), `GalaConnectClient`, (中文(简体) ), `BridgeableTokenService`, (中文(简体) ), `WrappableTokenService`, (中文(简体) ), `WrapService` (通道包装/未包装), `createSolanaWallet`, (中文(简体) ), `buildBridgeOutPayload` (签名的桥出请求),桥常数和符号表,桥型, `RateLimiter`,指代金额帮助者(`toBaseUnits`, (中文(简体) ), `fromBaseUnits`, (中文(简体) ), `formatTokenAmount`, (中文(简体) ), `compareAmounts`(中文(简体) ) |

## 子路径

每一个子路径都是它自己的构造:它加载了根(和 `./react` 通过包, 从来没有复制,所以一个应用程序有一个 `GalaSDKError` 类, 一组签名和一组提供者类 (在包装的柏油球上检查,由 `pnpm run check:pack`源代码 `tests/subpath_isolation.test.ts`) (中文(简体) ). 根从不载下道.

| 条目 | 它是为了什么 | 负载( 在根外) | 需要的对等 |
| --- | --- | --- | --- |
| `@gala-chain/gala-core-sdk` | 签名、签名、运输、网关读写、密钥、钱包、出错 | `@noble/*`, (中文(简体) ), `@scure/bip32`, (中文(简体) ), `@scure/bip39`, (中文(简体) ), `bignumber.js` | 无 |
| `@gala-chain/gala-core-sdk/wallet` | 无依赖钱包助手( 应用程序 shell) | 什么都没有(甚至连根也没有) | 无 |
| `@gala-chain/gala-core-sdk/providers` | 一个 `WalletProvider` 每个钱包类型, EIP-6963 检测 | `@noble/hashes` | 无 |
| `@gala-chain/gala-core-sdk/react` | 钱包上下文和钩子 | `./providers` | `react` (可选对等者,16.8至19; `react-dom` 无需) |
| `@gala-chain/gala-core-sdk/bridge` | 连接到埃特鲁姆和索拉纳的GalaChain, 频道包装/未包装, 可桥接和可包装的代币列表 | `ethers`, (中文(简体) ), `@solana/web3.js`, (中文(简体) ), `@solana/spl-token`, (中文(简体) ), `@scure/base`, (中文(简体) ), `bignumber.js` | `ethers` 6, (简体中文), `@solana/web3.js` 1.99+, (中文(简体) ), `@solana/spl-token` 0.4.15+(可选的同位素:在导入时安装) `./bridge`(中文(简体) ) |

仅 `./bridge` 负载 `ethers` 或者说 `@solana/*`:根和其他子路径从不做 (资料来源: `pnpm run check:rn-safety` 和隔离测试,以及已建文件 以烟雾盟誓.

## 桥

```typescript
import { BridgeableTokenService, BridgeService, GalaConnectClient } from '@gala-chain/gala-core-sdk/bridge';

const walletAddress = 'eth|...';
// The DEX API's bridgeable token list (production by default; `baseUrl` for another deployment)
const tokens = new BridgeableTokenService(new GalaConnectClient({ walletAddress }));
const bridge = new BridgeService({
  environment: 'prod', // or 'stage': GalaConnect, the gateway and the RPCs of that deployment
  galaChainWalletAddress: walletAddress,
  ethereumPrivateKey: process.env.ETH_PRIVATE_KEY!, // signs the bridge-out request and Ethereum deposits
  bridgeableTokenService: tokens, // resolves a token id to its bridge symbol
});
// Token ids are class keys (pipe form or object): a bare symbol is refused (symbols are not unique)
const GALA = 'GALA|Unit|none|none';
const fee = await bridge.estimateBridgeFee({ tokenId: GALA, destinationChain: 'Ethereum' });
const out = await bridge.bridgeOut({ tokenId: GALA, amount: '10', destinationChain: 'Ethereum', recipientAddress: '0x...' });
const status = await bridge.waitForBridgeCompletion(out.transactionHash);
```

未完成的桥接或包裹 `GalaSDKError` (从来没有"失败"的结果). 一次a 关闭请求被接受 `BRIDGE_OUT_OUTCOME_UNKNOWN` (与台阶相接,接通桥请求id和 `uniqueKey`页:1 可能已经发送的保证金是 `BRIDGE_DEPOSIT_OUTCOME_UNKNOWN`也从未被重审过 SDK(英语:SDK). `WrapService` 从自己的频道将一个符号包裹到资产频道(MUSIC到GMUSIC)并 背面,由本地人签名 `GalaChainSigner`· ; `createWrapService({ environment, walletAddress, signer })` 为 `prod` 或者说 `stage` (环境提供GalaConnect、互换后端和网关URL; 因此,一个选项可以覆盖任意一个),所以包装不需要产品SDK. A 类 `RequestTokenBridgeOut` (结束和包装) 未包装)在Token合同上签字 `dtoOperation` (单位:千美元)`asset-channel_basic-asset_GalaChainToken:RequestTokenBridgeOut`而不是桥的合同,什么的 链式拒绝;在2026-11-02年舞台上作为EIP-712的一个领域加以核实 `GalaTransaction` 类型,所以 签字盖上; `buildBridgeOutPayload` 这样做。 包/ 未包请求没有 `wrap` 字段 : 链条的严格验证拒绝了它,方向是目的地通道id(在舞台上验证) )). 它根据资源频道的代号合同签署 (单位:千美元)`asset-channel_basic-asset_GalaChainToken:RequestTokenBridgeOut` 打开, `music_music_GalaChainToken:RequestTokenBridgeOut` 关闭; 网关以赤裸的 401 答错操作 `UNAUTHORIZED`然后通过交换后端 链路由 (`GalaConnectClient.requestWrapOut`,需要客户端的 `dexBackendBaseUrl`: 后端根 无 `/api/v1`;它检查签名器,金额和操作,然后接通链条,而不是通过 加拉康纳克特 `/RequestTokenBridgeOut`,它只把一个请求当作一个包,当它携带 `wrap: true` 页:1 链子拒绝。 仅完成 (单位:千美元)`BridgeTokenOut`)是GalaConnect的:链条要桥务局为其签名(用户签名的有: 拒绝使用 `NOT_A_BRIDGE_AUTHORITY`) (中文(简体) ). 其他的桥弦,都看到在舞台上直播,由GalaConnect(这个SDK)签名 他们中没有任何一个人 `BridgeTokenOut` 打开 `/asset/bridge-contract` 实值 `asset-channel_bridge-chaincode_BridgeContract:BridgeTokenOut` (操作台的桥-合同条目) 和其中包含的赠款 `BridgeTokenOut` 签名 `asset-channel_bridge-chaincode_GalaChainToken:GrantAllowance`,这在平台的操作中没有 页:1.

类型脚本: 该 `./bridge` 声明名称 `@solana/web3.js` 类型,其自己的声明导入 节点的 `http` 财务报告和审定财务报表 `https`,所以导入的 TypeScript 应用程序 `./bridge` 已经 `@types/node` (与 类型脚本 6, `"types": ["node"]`)或(或) `skipLibCheck`。其他条目需要节点类型.

## 钱包提供者

Gala钱包浏览器扩展(Install, what it sign, its professor methods)有自己的页面: [文件/wallet-extension.md](https://npmcn.com/package/%40gala-chain/gala-core-sdk/docs/wallet-extension.md)。 。 。 .

```typescript
import { detectWallets, ExternalWalletProvider, PrivateKeyProvider } from '@gala-chain/gala-core-sdk/providers';

const { wallets } = await detectWallets();            // EIP-6963 announcements, then window.ethereum / window.gala
const first = wallets[0];
if (first === undefined) throw new Error('No wallet announced itself');
const provider = new ExternalWalletProvider(first.provider);
await provider.connect();
await provider.signMessage('Hello');                   // personal_sign
const signer = provider.getSigner();                  // a GalaChainSigner for GatewayWrites, gswap-sdk, ...

const server = new PrivateKeyProvider(process.env.GALACHAIN_PRIVATE_KEY!); // Node, CLI, bots
```

提供者在连接时只听钱包, 遵循 `accountsChanged` (为空或 错误的账户列表断开它),每次操作一次读取它的连接,所以一个 操作从不命名两个账户. `getSigner()` 绑定在已连接的账户上 调用 : 在账户更改后, 获取新的签名 . `GalaWalletProvider` 选择其在 每个签名之前的扩展名,与同一扩展名的所有其他签名符一起序列化。 每个 失败是 `GalaSDKError`数字 : `WALLET_CONNECTION_FAILED` (单位:千美元)`user_rejected`, (中文(简体) ), `no_accounts`, (中文(简体) ), `failed`, (中文(简体) ), `WALLET_NOT_CONNECTED`, (中文(简体) ), `SIGNING_FAILED` (单位:千美元)`user_rejected` 当他拒绝的时候, `INVALID_SIGNATURE`, (中文(简体) ), `PRIVATE_KEY_NOT_ACCESSIBLE`, (中文(简体) ), `INVALID_WALLET_PROVIDER_CONFIG`检测 工作没有窗口(Node, SSR, React Industrial):它什么也没有找到,扔什么也没有.

## 反应

```tsx
import { WalletProvider, useWalletConnection, useWalletDetection, useWallet } from '@gala-chain/gala-core-sdk/react';

<WalletProvider autoDetect>
  <App />
</WalletProvider>;

const { wallets } = useWalletDetection();
const { connectDetected } = useWalletConnection(); // a GalaWalletProvider for Gala Wallet, an ExternalWalletProvider otherwise
const { address, galaAddress, isConnected } = useWallet();
```

地址跟随钱包( 账户开关, 钱包侧断接); 最近的连接 胜过一个较慢的早期; 创建的上下文在替换时释放, 当 其连接失败并卸载; `initialProvider` 连接一次。 外面的钩子 `<WalletProvider>` 实值 `WALLET_CONTEXT_MISSING`。它在服务器上制作(没有窗口,什么都没有) 发现). `./react` 不再出口提供者:从 `./providers`。 。 。 .

每个出错的核心投出都是 `GalaSDKError` 拥有稳定 `code`平顶 `params` 对于一个应用的自己 本地化和a `phase` (单位:千美元)`pre_send`:没有转发)。 编码列于 [文件/目录.md](https://npmcn.com/package/%40gala-chain/gala-core-sdk/docs/error-catalog.md)。一个产品 SDK 错误类扩展 `GalaSDKError` 并增加自己的代码; `isGalaError(error)` 认清其中任何一个的错误.

## 网关写入

```typescript
import { GatewayWrites, PrivateKeySigner } from '@gala-chain/gala-core-sdk';

const writes = new GatewayWrites({
  gatewayBaseUrl: 'https://gateway-mainnet.galachain.com',
  signer: new PrivateKeySigner(process.env.GALACHAIN_PRIVATE_KEY!),
  walletAddress: 'eth|70997970C51812dc3A010C7d01b50e0d17dc79C8', // or a client| alias
});

const { transactionId, blockNumber } = await writes.transferGala({ to: 'client|abc', quantity: '1.5' });
await writes.lockTokens({ tokens: [{ tokenClassKey: 'GALA|Unit|none|none', quantity: '10' }], expires: 0 });
```

-   数量是WALE 符号,因为链条收到的小数字符串;它们被签为 写( a)`"1.50"` 留下来 `"1.50"`并且从来没有缩放.
-   脚指: `tokenClassKey` (单位:千美元)`collection|category|type|additionalKey` 四个部分 `$` 复合键,或对象)+ `instance` (默认) `"0"`),或 `tokenName` 通过 选项 `tokenNameResolver`。赤色符号从来不是类键.
-   身份( E)`to`, (中文(简体) ), `walletAddress`, (中文(简体) ), `lockAuthority`以物配主的账户`eth|<40 hex>`, (中文(简体) ), `0x<40 hex>`,赤色六角体;除了错误的EIP-55校验和之外,任何外壳都总是作为 `eth|<checksummed>`,是网关接受的唯一拼写; `client|<id>` 现按书面方式发送. `eth|0x<hex>` 实值 **没有** 地址表:在签署或发送任何信息之前被拒绝 `INVALID_ETH_USER_REF_PREFIX` (单位:千美元) `eth|` 引用时使用 40 位数字,没有 `0x`; 错误 `expected` 是正确的拼写)。 一个赤裸的 `0x<40 hex>` 是一个普通的Ethereum地址,并且是 转换.
-   签名人被递出裸露的 DTO;送出的尸体正是 DTO 外加签名(一个签名人) 以添加或更改字段的方式拒绝)。 A 类 `uniqueKey` 除非您通过一个,否则每张纸都是薄荷的.
-   每个DTO携带一个 `dtoOperation` (单位:千美元)`<channel>_<chaincode>_<Contract>:<Method>`,例如 `asset-channel_basic-asset_GalaChainToken:TransferToken`),在签名器运行前设置,因为它是 签名的一部分。 连锁拒绝一个没有它的DTO("DTO操作不提供"). 签名 请求必须包括 dto 操作." ) 或与它所发送的电话无关("dto was") 签名将调用 X 操作,但当前操作是 Y"). 写入及其操作的 URL 来自一个表格(`CHAIN_CONTRACT_OPERATION_PREFIXES`因此,他们不能不同意。 为了一个呼叫 SDK 不制作,使用 `withDtoOperation(contractPath, method, dto)` (合同路径是: 路线的 `<channel>/<contract>`,例如 `asset/token-contract`)或(或) `signPreSendFor(signer, contractPath, method, dto)`它能设置它和迹象`signPreSend(signer, method, dto)` 保留其 1. 0. 0 签名并按给定的 DTO 签名; 已经命名不同名称的 DTO 拒绝操作为 `SIGNING_FAILED`。签字后绝不添加:签名不会 盖住它。 在发射板的捆绑内 操作是捆绑者的 `BatchSubmit` (单位:千美元)`asset-channel_basic-asset_Launchpad:BatchSubmit`),而不是内置DTO自己的方法:发射板-sdk设置.
-   已打入的数据( E)`BrowserWalletSigner` 与 `{ scheme: 'eip712' }`,则 `./bridge` 下签) eIP-712域名,其部署必须接受: 舞台链拒绝任何东西,但有自己的 ("EIP-712域名必须是GalaChainStage这个部署"). 过 `GALA_CHAIN_ENVIRONMENTS[env].eip712DomainName` (单位:千美元)`GalaChainStage` 在舞台上; 缺席在 prod 上, 其中有一个签名者 保留它一直签名的名字: `ethereum`,以及 `GalaConnect` 作为签注者 `eip712DomainName`· ; `BridgeService` 环境就靠自己 连锁ID保持钱包的活口.
-   加拉钱的 `Status` 在信任其它东西之前选中; 超时或断开的连接是 `GATEWAY_WRITE_OUTCOME_UNKNOWN`: 写入可能已经应用过, 请检查它的 `uniqueKey` 财务报告和审定财务报表 永远不要在新密钥下重新发送.

### NFT 写作

打开 `writes` 上文:

```typescript
import { getPublicKeyFromPrivateKey } from '@gala-chain/gala-core-sdk';

const claim = await writes.claimNftCollection({ collection: 'MyArt' });            // GrantNftCollectionAuthorization
await writes.createNftCollection({                                                  // CreateNftCollection
  collection: 'MyArt', category: 'Item', type: 'Sword',
  name: 'Sword', symbol: 'SWD', description: 'A sword', image: 'https://example.com/sword.png',
  maxSupply: '1000',                                                                // required: the chain refuses an unbounded NFT supply
});
const { tokenInstances } = await writes.mintNft({                                   // MintTokenWithAllowance (the minter grants itself the allowance)
  collection: 'MyArt', category: 'Item', type: 'Sword', quantity: '2',
});
const quote = await writes.estimateNftFee(                                          // the chain's DryRun, nothing is written
  { write: 'mintNft', collection: 'MyArt', category: 'Item', type: 'Sword', quantity: '2' },
  { callerPublicKey: getPublicKeyFromPrivateKey(process.env.GALACHAIN_PRIVATE_KEY!).compressedPublicKey },
);
console.log(quote.fee, quote.feeToken); // "1" "GALA" on stage; each environment has its own fees
```

-   每个书写都接受每个核心书写的检查(在签名前拒绝输入) 或发送, `INVALID_NFT_INPUT`页:1 `uniqueKey` 除非您通过一个文件,否则,每件文件都要计价,并且有超时 实值 `GATEWAY_WRITE_OUTCOME_UNKNOWN`: 重试于相同ME `uniqueKey`从来没有新鲜的.
-   收据载有链条所回答、阅读和检查的内容,从未发明过: `collection` 财务报告和审定财务报表 `authorizedUsers` 索赔的赔偿额 `tokenClass` 创建者 `tokenInstances` 薄荷(作为 - 任何其它答案都是: `GATEWAY_RESPONSE_INVALID`) (中文(简体) ).
-   `authorizedUser`, (中文(简体) ), `owner` 财务报告和审定财务报表 `authorities` 是用户引用(见上文身份);a `eth|` 引用由账户下的链条存储 `client|` 别名. `authorities` 财务报告和审定财务报表 `owner` 在省略时默认为写入器.
-   连锁店拒绝另一个账户持有的名称(`COLLECTION_NAME_ALREADY_CLAIMED` 在另一个名称中同名 弹壳, `USER_NOT_AUTHORIZED_FOR_COLLECTION` 对于一个不同的帐户,准予了),但接受了对一个帐户的第二项索赔 说明已经持有的SAME账户的名称(第2026-11-04阶段):索赔不是一元索赔,因此,首先检查是否有可用性,然后 只用同样的重试 `uniqueKey` (单位:千美元)`UNIQUE_TRANSACTION_CONFLICT` 拒绝重播).
-   `mintNft` 实值 `MintTokenWithAllowance` 除非 `existingAllowance: true` (单位:千美元)`MintToken`,哪个 用于作者已经持有的津贴.
-   `estimateNftFee` 价格与网关的 DryRun 相同,需要作者的公开 键`callerPublicKey`因为没有要求签字人自己签字。 收费是网络的 这一环境的数字(阶段为索赔收取5GALA,5为创造,1为薄荷) 2026-11-04; 固定费用 `getNftCollectionClaimFee` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}是主网的 {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}连锁店会写 拒绝是 `GATEWAY_READ_REJECTED`从不收费.

## 网关已读

```typescript
import { GALA_CHAIN_ENVIRONMENTS, GatewayReads } from '@gala-chain/gala-core-sdk';

const reads = new GatewayReads({ gatewayBaseUrl: GALA_CHAIN_ENVIRONMENTS.prod.gatewayBaseUrl });

const gala = await reads.fetchTokenBalance({ owner: 'client|abc', tokenClassKey: 'GALA|Unit|none|none' });
console.log(gala?.quantity, gala?.lockedQuantity, gala?.availableQuantity); // whole-token strings

const { symbol, decimals } = await reads.fetchTokenDetails('GUSDC|Unit|none|none');
const classes = await reads.fetchAllTokenClasses({ collection: 'BONKTactics' }, { maxPages: 10 });
```

-   阅读没有签名, 应用什么也没有: 请求左后每一次失败都这么说 (单位:千美元)`error.write === false`),重试总是安全的.
-   拥有者被拼写为写作者拼写(Ethereum账户以任何形式拼写为: `eth|<checksummed>`, (中文(简体) ), `client|` ); 类密钥以相同的形式被接受. `$MUSIC` 余额在网关上读取 `music` 频道.
-   每一个答案都会被检查(GalaChain) `Status`(每行)在返回之前,有一份平衡 拒绝另一个比要求的主人。 数量保持链条全小数 字符串; 持有的总数是准确的, 并且从未以形容的形式出现 .
-   不存在的符号类是 `TOKEN_CLASS_NOT_FOUND`页:1 `fetchAll...` 读作: 需要超过 `maxPages` 页面为 `PAGINATION_LIMIT_EXCEEDED` (从来没有一个短名单).
-   `fetchPublicKey(user)` 读取 GalaChain 为用户注册的密钥(`{ publicKey, signing? }`, (中文(简体) ), `undefined` 当时,没有任何人得救了。 公共网关不路径 公钥合同;通过连接-api代理读取: `new GatewayReads({ gatewayBaseUrl: 'https://api-galaswap.gala.com/galachain' })`。 。 。 .

## 签署均等

签名代码被标注为字节 `@gala-chain/api` 和加拉钱包和 gSwap 网络应用程序的签名代码由黄金矢量在 `tests/fixtures/wallet-signing-golden.json` 财务报告和审定财务报表 `tests/fixtures/frontend-signing-golden.json` (单位:千美元)`tests/signing-golden.test.ts`) (中文(简体) ). 他们永远不会 重新生成以通过测试。 那两个人把签名的原始字节和网络应用字节钉上 携带无 `dtoOperation`SDK自己的书写和桥接录音 (单位:千美元)`tests/fixtures/writes-signing-golden.json`, (中文(简体) ), `bridge-out-recorded.json`钉上签名的尸体 包括它.

## 原生反应

已运出的来源使用已建的节点, 不 `Buffer`,没有 `process`,从不装载 `ethers`, (中文(简体) ), `axios` 或者说 `@gala-chain/api` (单位:千美元)`pnpm run check:rn-safety`,同样由测试套房运行). 唯一一个 多填充 React 本地/Hermes 需求为 `crypto.getRandomValues`,用于薄荷 `uniqueKey`s和新设 随机钱包( e)`createWallet()`:

```typescript
import 'react-native-get-random-values'; // once, before the SDK mints a key
```

没有钥匙或钱包就扔出去 `CSPRNG_UNAVAILABLE` (从来没有一个弱后退).

`./bridge` 是例外: 它装入 `ethers`, (中文(简体) ), `@solana/web3.js` 财务报告和审定财务报表 `@solana/spl-token`,则 在 React Industrial 上导入的应用程序也会安装这些库要求的 (单位:千美元)`crypto.getRandomValues` (b) 上文,其中 `createSolanaWallet` 需求; `@solana/web3.js`'反应' 本土指导增加了全球指导 `Buffer` 从 `buffer` 软件包)。 科雷自己来的 `./bridge` 代码使用 没有 `Buffer` 或者说 `process` 全球( 索拉纳指令数据为 `Uint8Array`(s) 没有触摸到 模块负载: 守护允许 `./bridge` 完全就是这三套套,没有别的(base58是) `@scure/base`纯洁的JS像其他核心.

## 套装大小

`sideEffects: false`,浏览器构建为每个源模块一个文件,所以是一个app(或产品) SDK的光能模块),它导入一个辅助器只装入该模块. `@gala-chain/gala-core-sdk/wallet` 只持有无依赖钱包助手( 大约1.2 kB) 精密化,封顶为2克B. `tests/tree_shaking.test.ts` 给每个无外壳的助手预算 这个 浏览器构建 `./providers` (约17 kB 的精度, 7.6 kB gziped, 其中多数已知钱包) 图标, `./react` (约4kB,1.7kB gziped)和 `./bridge` (约60 kB 微调, 16 kB) 击出,之前 `ethers` 财务报告和审定财务报表 `@solana/*`) 只能由导入它们的应用程序来装入.

## 状态

1.2.1(1.2:NFT收集读取和收费估算,NFT写作)

`claimNftCollection`, (中文(简体) ), `createNftCollection` 财务报告和审定财务报表 `mintNft` 打开 `GatewayWrites`,并引用他们的干流费 `estimateNftFee`; 弧点7: `eth|0x<hex>` 被拒绝,因为 `INVALID_ETH_USER_REF_PREFIX`,而不是地址表;rc.6: `fetchPublicKey`, MetaMask 和 Trust 钱包检测, 无声 `restore()`· ; rc.5:每个Etereum账户 读取、写入或GalaConnect客户端发送是 `eth|<EIP-55>`,唯一的拼写 网关接受,和 `galaChainUserRef` 导出; rc.4: `bridgeableTokenService` (见E/CN.4/Sub.2/2003/L.10。) 在:签名、签名、运输和出错模式(rc.0从gswap-sdk) 网关令牌写作(rc. 1出自启动板-sdk的转接和锁定服务,现已授权使用) 这里);网关符号读取(rc.2:余额,符号类,NFT收藏授权,来自 a. 发射板-sdk的平衡和象征性服务,现在在此授权)和部署终点; 钱包提供者( e)`./providers`),反应钩(`./react`),钱包助手(`createWallet` 和那座桥梁`./bridge`: 桥接, 符号列表, 包装/ 取消包装, `createSolanaWallet`) (rc.3,来自发射板-sdk's `/wallet`, (中文(简体) ), `/react`, (中文(简体) ), `helpers/wallet`, (中文(简体) ), `bridge/` 及其可通融的/可包装的代币和包裹服务,这些已经不复存在.

## 从gswap-sdk 1.x移动

见 [(原始内容存档于2013-10-12). Migrating-FROM-GSWAP.md](https://npmcn.com/package/%40gala-chain/gala-core-sdk/MIGRATING-FROM-GSWAP.md): 每个已移动导出, 旧路径为新 路径,以及重新命名的错误和品牌标识符.

## 许可证

阿帕奇许可证2.0.

## 常见问题

### @gala-chain/gala-core-sdk 是什么？

GalaChain Core SDK:签名\(本土,个人签名,EIP-712\),网关运输,网关信使读取\(余额,令牌类,NFT收藏\)和写取\(转移,燃烧,锁定,解锁\)以及共享出错模式,每个产品SDK和app

### 如何安装 @gala-chain/gala-core-sdk？

在项目目录运行 npm install @gala-chain/gala-core-sdk，或使用 pnpm add / yarn add / bun add。

### @gala-chain/gala-core-sdk 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @gala-chain/gala-core-sdk 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @gala-chain/gala-core-sdk 可以商用吗？

@gala-chain/gala-core-sdk 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @gala-chain/gala-core-sdk 的下载量有多少？

根据 npm 官方下载统计，@gala-chain/gala-core-sdk 在 2026/10/16 – 2026/11/14 这 30 天内被下载 4,762 次，日均约 159 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @gala-chain/gala-core-sdk 还在维护吗？

最新版本 1\.2\.1 发布于 2026/11/10（6 天前）；至今共发布 23 个版本，其中过去 12 个月发布了 23 个；首次发布于 2026/10/15。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

