核心节点Js SDK
Coinbase Node.js SDK 允许将密码简单地整合到您的应用程序中. 通过呼叫 Coinbase 的平台 API, SDK 允许您提供加密钱包, 将加密输入/出这些钱包, 跟踪钱包余额, 将密码从一个资产交换到另一个资产 .
SDK 支持多个网络上的各种动词, 如文件所示 这里。 。 。 .
说明: 由于SDK提供了新的能力并改进了开发者的经验,更新可能偶尔会包括断裂变化. 这些文件将载入本报告 变动情况 文档.
文档
所需资源
Coinbase服务器侧SDK需要Node.js版本18或更高,npm版本9.7.2或更高. 要查看您当前已安装的 Node.js 版本, 请从命令行运行如下 :
node -v
npm -v
我们建议安装和管理节点和npm版本 nvm。见 安装和更新 输入 nvm 研究如何安装的指令 nvm。 。 。 .
一次 nvm ,您可以通过运行以下命令来安装和使用最新版本的Node.js和npm:
nvm install node # "node" is an alias for the latest version
nvm use node
安装
可选: npm 初始化
此命令初始化了一个新的 npm 工程, 并设置了默认设置, 通过设置类型字段为软件包. json 文件的"模块"来使用 ES 模块 .
npm init -y; npm pkg set type="module"
您可以导入 SDK 如下:
npm install @coinbase/coinbase-sdk
或者说
yarn add @coinbase/coinbase-sdk
使用量
初始化
您可以导入 SDK 如下 :
常见 Js :
const { Coinbase, Wallet } = require("@coinbase/coinbase-sdk");
ES模块 :
import { Coinbase, Wallet } from "@coinbase/coinbase-sdk";
开始, 创建 CDP API 密钥。然后,通过 API 键名和 API 键的私人密钥通过 API 键名 Coinbase 构造器 :
const apiKeyName = "Copy your API Key name here.";
const privateKey = "Copy your API Key's private key here.";
Coinbase.configure({ apiKeyName: apiKeyName, privateKey: privateKey });
如果您正在使用 CDP 服务器- Signer 来管理您的私人密钥, 请启用 constuctor 选项 :
Coinbase.configure({ apiKeyName: apiKeyName, privateKey: apiKeyPrivateKey, useServerSigner: true })
另一个初始化SDK的方法是从包含您API密钥的json文件取出API密钥,从CDP门户网站下载.
Coinbase.configureFromJson({ filePath: "path/to/your/api-key.json" });
这将允许您使用平台 API 认证 .
常见 Js :
const { Coinbase, Wallet } = require("@coinbase/coinbase-sdk");
Coinbase.configureFromJson("path/to/your/api-key.json");
// List all Wallets for the CDP Project.
Wallet.listWallets().then(resp => {
console.log(resp.data);
});
或使用ES模块和sync/await:
import { Coinbase, Wallet } from "@coinbase/coinbase-sdk";
Coinbase.configureFromJson("path/to/your/api-key.json");
// List all Wallets for the CDP Project.
const resp = await Wallet.listWallets();
console.log(resp.data);
钱包、地址和转账
现在, 创建一个钱包, 它将默认为 Base Sepolia 测试网网络( 如果没有指定 ) .
// Create a Wallet with one Address by default.
const wallet = await Wallet.create();
接下来查看您的钱包的默认地址 。 您需要这个默认地址, 才能为您的第一个转帐提供资金 .
// A Wallet has a default Address.
const address = await wallet.getDefaultAddress();
console.log(`Address: ${address}`);
钱包身上没有资金启动 为了资助这个地址,您需要向上面产生的钱包寄出资金。 如果你没有测试网的资金,从 水龙头。 。 。 .
为发展目的,我们提供 faucet 以EH在塞波利亚基地测试网的地址为您提供资金的方法。 我们允许每个地址 在24小时窗口里有一个水龙头索赔.
// Create a faucet request that returns you a Faucet transaction that can be used to track the tx hash.
const faucetTransaction = await wallet.faucet();
console.log(`Faucet transaction: ${faucetTransaction}`);
// Create a new Wallet to transfer funds to.
// Then, we can transfer 0.00001 ETH out of the Wallet to another Wallet.
const anotherWallet = await Wallet.create();
let transfer = await wallet.createTransfer({ amount: 0.00001, assetId: Coinbase.assets.Eth, destination: anotherWallet });
transfer = await transfer.wait();
无气UDC 转账
为了转移USDC而无需持有ETH气体,你可以使用 createTransfer 使用该方法 gasless 选项设置为 true。 。 。 .
let transfer = await wallet.createTransfer({ amount: 0.00001, assetId: Coinbase.assets.Usdc, destination: anotherWallet, gasless: true });
transfer = await transfer.wait();
默认情况下,无煤气转让与其他转让一起进行分批,提交可能需要更长的时间。 如果你想选择不进行批量,可以设置 skipBatching 选项到 true,将立即提交交易.
let transfer = await wallet.createTransfer({
amount: 0.00001,
assetId: Coinbase.assets.Usdc,
destination: anotherWallet,
gasless: true,
skipBatching: true
});
transfer = await transfer.wait();
交易基金
// Create a Wallet on `base-mainnet` to trade assets with.
let mainnetWallet = await Wallet.create({ networkId: Coinbase.networks.BaseMainnet });
console.log(`Wallet successfully created: ${mainnetWallet}`);
// Fund your Wallet's default Address with ETH from an external source.
// Trade 0.00001 ETH to USDC
let trade = await wallet.createTrade({ amount: 0.00001, fromAssetId: Coinbase.assets.Eth, toAssetId: Coinbase.assets.Usdc });
trade = await trade.wait();
console.log(`Trade successfully completed: ${trade}`);
重新证明钱包
SDK用开发者管理的密钥创建了钱包,这意味着您负责安全地存储重新建立钱包所需的密钥. 下面的代码会指引您 如何导出钱包并存储在一个安全的地方.
// Export the data required to re-instantiate the Wallet.
const data = wallet.export();
要坚持钱包的数据,您需要执行存储方法,将数据导出存储在一个安全的位置. 如果你不把钱包存放在一个安全的地方... ...你就会失去使用钱包和所有资金的机会.
// At this point, you should implement your own "store" method to securely persist
// the data required to re-instantiate the Wallet at a later time.
await store(data);
为了方便测试,我们提供 saveSeed 在本地文件系统中存储钱包种子的方法。 这是一种储存钱包种子的不安全方法,只能用于发展目的.
const seedFilePath = "";
wallet.saveSeedToFile(seedFilePath);
要加密已保存的数据, 请设置加密为真 。 请注意, 您的 CDP API 密钥也是本地持续的数据的加密密钥 。 要用加密数据重现钱包, 请使用相同的 API 键配置您的 SDK saveSeed 财务报告和审定财务报表 loadSeed。 。 。 .
wallet.saveSeedToFile(seedFilePath, true);
以下代码说明如何从数据导出时重新证明钱包.
// The Wallet can be re-instantiated using the exported data.
const importedWallet = await Wallet.import(data);
使用 saveSeed,使用以下代码.
const userWallet = await Wallet.fetch(wallet.getId());
await userWallet.loadSeedFromFile(seedFilePath);
承认
此工程包括来自 维姆 根据麻省理工学院颁发的许可证.