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