@ chipi- stack/ 后端
服务器侧SDK为Chipi Pay. 处理钱包创建,交易,SKU购买,以及交换.
安装
npm install @chipi-stack/backend
快速启动
import { ChipiSDK } from "@chipi-stack/backend";
const sdk = new ChipiSDK({
apiPublicKey: process.env.CHIPI_API_PUBLIC_KEY!,
apiSecretKey: process.env.CHIPI_API_SECRET_KEY!,
});
const bearerToken = "your-bearer-token"; // From your auth provider (e.g., Clerk)
// Create a wallet
const wallet = await sdk.createWallet({
params: {
externalUserId: "user-123",
chain: "STARKNET",
encryptKey: "user-pin-or-passkey",
},
bearerToken,
});
// Transfer USDC
const tx = await sdk.transfer({
params: {
wallet: wallet.wallet,
token: "USDC",
recipient: "0x...",
amount: 10,
encryptKey: "user-pin-or-passkey",
},
bearerToken,
});
确认交易
每个无油的书写都回了一笔散文,没有别的,所以
waitForTransaction 回答以下两个问题:它是否成功,以及
它释放出什么.
import { waitForTransaction } from "@chipi-stack/backend";
const receipt = await waitForTransaction(tx);
if (!receipt.success) {
throw new Error(receipt.revertReason ?? "reverted on chain");
}
// Raw events, decode against your own ABI.
const transferred = receipt.events.filter((e) => e.from_address === USDC);
回来的回来作为 结果 (单位:千美元)success: false 加号 revertReason(没有)
投出一个球,因为回转是正常的结果... ...你枝了。 只是"我们没有
也就是超时或运输故障 重试就是
正确的反应.
选项 : nodeUrl, (中文(简体) ), retryIntervalMs (违约3000)和 timeoutMs
(默认为300000). nodeUrl 是你喜欢的终点 而不是唯一的终点
尝试过,因为阅读收据是一意孤行的,并落入RPC链.
国库
sdk.treasury 从自己的服务器驱动 SHHH 多西格 。 三者以下都需要
(单位:千美元) sk_,所以保持他们的服务器侧.
// Discover a treasury instead of pinning its id in an env var.
const { items } = await sdk.treasury.list();
const ops = items.find((t) => t.name === "Ops Treasury");
// Require more signatures to borrow than to repay.
await sdk.treasury.setPolicy(ops.id, { sensitiveQuorum: 3 });
const policy = await sdk.treasury.getPolicy(ops.id);
// A transport bound to one treasury + owner, wireable into chipi-react's hooks.
const transport = sdk.treasury.forTreasury({ treasuryId: ops.id, ownerPubkey });
法定人数只能 提高 requiredApprovals 在钱包上方的链上
阈值。 连锁店是硬楼 所以下面的法定人数能产生建议
达到批准,然后在执行时返回.
Bramble 和其他 Starknet 钱包
已经拥有 Bramble, Braavos 或 Ready 的用户可以和 Chipi 一起使用. 他们的钥匙从不离开钱包.
签到史塔克网 (14.16.0+): Bramble 签下SNIP-12信息,一次性非ce,账户检查.
import { createStarknetSignInTypedData, verifyStarknetSignIn } from "@chipi-stack/backend";
import { RpcProvider } from "starknet";
const now = Math.floor(Date.now() / 1000);
const typedData = createStarknetSignInTypedData({
domain: "app.example.com",
uri: "https://app.example.com",
address: brambleAddress, // from wallet_requestAccounts
nonce,
issuedAt: now,
expirationTime: now + 600,
});
// The browser asks Bramble: wallet_signTypedData(typedData) → signature
const result = await verifyStarknetSignIn({
typedData,
signature,
provider: new RpcProvider({ nodeUrl }),
expected: { domain: "app.example.com", uri: "https://app.example.com", nonce },
});
if (result.ok) console.log("signed in as", result.address);
信任的钱包 (14.17.0+):Bramble可以是Chipi钱包的共同所有人或回收监护人,通过 STARK_SNIP12 签字人种. 一旦加入为共同所有者,Bramble批准与 wallet_signTypedData 奇皮毫无气息地传达他们:
const txHash = await sdk.executeWithExternalSigner({
params: {
walletAddress: chipiWallet.publicKey,
ownerIndex: brambleOwnerId,
calls,
signTypedData: async (typedData) =>
(await bramble.request({ type: "wallet_signTypedData", params: typedData })) as string[],
// Checked off-chain before relaying (key from resolveStarkSnip12Signer).
signer: { address: brambleAddress, starkPubkey },
},
bearerToken,
});
这个 STARK_SNIP12 主网公布核查员类别; isShhhVerifierDeclared 检查任何网络。 指南: 签到史塔克网 财务报告和审定财务报表 信任的钱包。 。 。 .
USDC(环CCTP V2)
原生的USDC从Base,Arbitrum,Optimism,Polygon或Ethereum进入了Chipi钱包,然后返回出局,一个链条上燃烧Circle,另一个链条上薄荷. Chipi支付斯塔克内薄荷;用户免费(15–20分从一L2)或快取(Circle的收费,约一分). 反应钩子( R)useCrossChainDeposit, (中文(简体) ), useCrossChainWithdraw)做整流;棋子在这里用于服务器和自定义流.
import { ChipiServerSDK, CCTP_EVM_CHAINS, cctpQuote, formatCctpEta } from "@chipi-stack/backend";
export async function depositFromBase(sdk: ChipiServerSDK, burnTxHash: string) {
const base = CCTP_EVM_CHAINS.find((c) => c.key === "base")!;
const quotes = await cctpQuote({ sourceDomain: base.domain, destinationDomain: 25, amount: "25" });
console.log(`free in ${formatCctpEta(quotes.standard.eta)}, or ${quotes.fast.feeUsdc} USDC fee for ${formatCctpEta(quotes.fast.eta)}`);
// Once the user's EVM wallet burned (depositFromEvm in the browser), register the burn:
// Chipi mints on Starknet even if the user's page is gone.
await sdk.registerCctpDeposit({
burnTxHash,
sourceDomain: base.domain,
mintRecipient: wallet.address,
amountUsdc: quotes.standard.amountUsdc,
});
return sdk.getCctpDepositStatus(burnTxHash); // PENDING | MINTED | FAILED | UNREGISTERED
}
索拉纳是一个单独的入口, @chipi-stack/backend/solana,则需要 @solana/web3.js (可选的同伴依赖性) : depositFromSolana 烧穿了主人的钱包 等待烧到着陆, buildCctpWithdrawToSolanaCalls 命名所有者的 USDC 令牌账户( 唯一的账户) receiveMessage 薄荷到, solanaUsdcAtaExists 财务报告和审定财务报表 isSolanaWalletAddress 打开接收器.
指南 : 交叉链路。 。 。 .
你可以运送的东西
- 现职钱包 APIs ——从后端为用户提供和管理钱包
- SKU市场(机票、账单、礼品卡) - 将现实世界的采购与加密铁路结合起来
- 加密汇款后端 ——建设有稳定币结算的跨境支付服务
- Fintechs的无气支付处理 ——接受并发送USDC而不由用户支付汽油
有主意吗? 告诉我们你想建什么
文档
完整文件时间 页面存档备份,存于互联网档案馆. docs.chipipay.com
许可证
麻省理工学院