4 个版本
0.2.0 | 2023 年 1 月 17 日 |
---|---|
0.1.2 | 2022 年 7 月 13 日 |
0.1.1 | 2022 年 5 月 18 日 |
0.1.0 | 2022 年 5 月 17 日 |
#3 in #hapi
72KB
1.5K SLoC
HAPI Core
HAPI Core 合约是基于 Anchor 构建在 Solana 上的。如果您想了解更多关于 HAPI 协议的信息,请访问我们的官方网站和gitbook。如果您想提出任何对智能合约的修改建议,请访问我们的治理论坛。欢迎提出对客户端库改进的建议。
依赖项
要安装使用此项目所需的所有内容,您需要安装如 Anchor 文档中所述的依赖项。
程序
hapi-core 程序的源代码位于 ./programs/hapi-core
。
构建
要构建 hapi-core 程序,您需要执行以下命令
anchor build
您将得到以下输出
- 程序二进制文件在
./target/deploy/hapi_core.so
- IDL 文件在
./target/idl/hapi_core.json
- TypeScript 类型定义在
./target/types/hapi_core.ts
测试
要测试程序,您需要运行以下命令
anchor test
此命令启动本地验证器,在链上设置程序并运行针对它的 Jest 测试套件。
部署
要部署程序,请运行以下命令
anchor deploy \
--provider.cluster https://api.mainnet-beta.solana.com \
--provider.wallet ~/.config/solana/id.json
其中 provider.cluster
是目标节点 API,provider.wallet
是您想要用于部署程序的密钥对路径。
JavaScript 客户端
此程序的 JavaScript/TypeScript 客户端是一个 NPM 包,可以在以下位置找到: @hapi.one/core-cli。
它通过以下命令发布
npm publish
请查看测试套件(./tests/hapi-core/**.spec.ts
)以了解如何在 NodeJS 环境中使用此客户端。
浏览器中的基本用法示例
import { Connection, PublicKey } from "@solana/web3.js";
import { Provider } from "@project-serum/anchor";
import { initHapiCore } from "@hapi.one/core-cli";
// Setup web3 Connection
const connection = new Connection("https://api.mainnet-beta.solana.com");
// Use Phantom wallet provider
const wallet = window.solana;
// Setup Anchor provider
const provider = new Provider(connection, wallet as any);
// hapi-core program ID is a well-known public key
const HAPI_PROGRAM_ID = new PublicKey(
"hapiAwBQLYRXrjGn6FLCgC8FpQd2yWbKMqS6AYZ48g6"
);
// Setup the client
const hapiCore = initHapiCore(HAPI_PROGRAM_ID, provider);
// HAPI community account is a well-known public key
const communityAccount = new PublicKey(
"31gQ11Qsd7dPcnkdCJ2ZGnY2ijRXsvFCPWagpcFxYwem"
);
// Use client to fetch community account data
const communityData = await hapiCore.account.community.fetch(communityAccount);
console.log(communityData);
// Find a PDA for a particular network
const [networkAccount] = await program.pda.findNetworkAddress(
communityAccount,
"solana"
);
// Encode address buffer
const addressEncoded = hapiCore.util.encodeAddress(
"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB",
"Solana"
);
// Find a PDA for an address, which we want to check
const [addressAccount] = await program.pda.findAddressAddress(
networkAccount,
addressEncoded
);
// Fetch address risk scoring data
const addressData = await hapiCore.account.address.fetch(addressAccount);
console.log(addressData);
依赖项
~21–30MB
~519K SLoC