バーン
バーンは、ユーザーが発行されたNFTを焼却し、ゲームで使用できるアイテムに変換することを可能にする機能です。ユーザーがNFTをアイテムに変換するプロセスは、主に以下のようになります。
- ユーザーはNFT表示ページで所有しているNFTを確認します。\n2. ユーザーはチェックしたNFTを選択し、それをゲームで再利用するためのアイテムに変換します(=NFTの焼却)。
バーン関数の実装フロー¶
以下は、Burn機能の実装プロセスです。Burn機能を実装するには、フローチャート画像とガイド内容に従って、ゲームクライアント (Hive SDK、ゲームクライアント) およびゲームサーバーエリアにコードを実装してください。下の画像で青いアスタリスクでマークされた部分が、開発者が作業する必要があるエリアです。主なタスクの詳細については、以下のガイドを参照してください。
Note
最初に、Burn機能を実装する前に準備を完了する必要があります。
Note
Burn機能を実装するには、Hive SDKを使用する必要があります。
hive SDKでのログインの実装¶
ゲームクライアントにコードを実装して、ユーザーがHive SDK認証機能を使用してIdPログインでログインできるようにします。Webログインもログイン方法としてサポートされています。
NFTクエリボタンの実装¶
ゲームクライアントでユーザーが自分のNFTリストを開けるUIを実装します。例えば、ユーザーキャラクターのインベントリに所有NFTリストを表示するボタンを実装します。このボタンが押されると、以下の内容に従ってNFT表示ページを開く実装が必要です。
NFTクエリリクエスト¶
ユーザーのNFTをゲームクライアントからゲームサーバーにリクエストするコードを実装します。これは、ユーザーがNFTクエリボタンを選択したときのアクションを実装するためです。ゲームサーバーがゲームクライアントからのリクエストを受け取ると、NFTクエリページリンク作成APIを呼び出して、ユーザーのNFTリストを表示します。
NFTリンクページ生成API呼び出し¶
NFT閲覧ページは、ユーザーが所有するNFTのリストを表示できるウェブページです。このウェブページは、Hiveブロックチェーンサーバーによって提供されています。ゲームサーバーは、リンク生成APIを呼び出してこのウェブページのURL(webLinkUrl
)を取得します。ユーザーがこのウェブページにアクセスすると、所有するNFTのリストを表示でき、特定のNFTをブロックチェーン上で燃やす(破壊する)ことができます。
ノート¶
API呼び出しを行う際の開発者向けの注意事項は以下の通りです。
ゲームサーバーURL¶
gameServerUrl
は、Hive ブロックチェーンサーバーがゲームサーバーに呼び出すAPIのための リクエストURL として使用されます(アイテム検証API と 結果確認API)。
ゲームサーバーURLとトークン¶
Hiveブロックチェーンサーバーがアイテム検証APIまたは結果確認APIを呼び出すと、ゲームサーバーはAPI呼び出しのために認証トークン(ヘッダー パラメーター)を使用できます。これは開発者にとってオプションです。API呼び出しに認証トークンを使用する場合、ゲームサーバーはこの認証トークンをtoken
(クエリ パラメーター)としてgameServerUrl
に添付し、NFTルックアップページリンク生成APIを呼び出す際にHiveブロックチェーンサーバーに事前に送信する必要があります。以下に例を示します。
NFTクエリページリンクの有効期間¶
一度作成されたページへのリンクは、最初にアクセスされたセッションに基づいて10分間のみ有効です。
リクエストURL¶
アイテム | 値 |
---|---|
ライブURL | https://bc-platform-api.withhive.com/web3/v1/web-link |
サンドボックスURL | https://sandbox-bc-platform-api.withhive.com/web3/v1/web-link |
HTTPメソッド | POST |
コンテンツタイプ | application/json |
ヘッダー パラメータ¶
フィールド名 | 説明 | タイプ | 必須 |
---|---|---|---|
Authorization | API呼び出しのための認証トークン | 文字列 | Y |
リクエストボディ¶
フィールド名 | 説明 | タイプ | 必須 |
---|---|---|---|
type | HOME | 文字列 | Y |
playerId | プレイヤーID | 数字 | Y |
characterId | キャラクターID | 文字列 | Y |
gameServerUrl | アイテム検証と機能実行後の成功/失敗結果を受け取るためのアドレス。認証トークンをtoken クエリパラメーターとしてアイテム検証/結果確認APIヘッダーに送信します | 文字列 | Y |
リクエストサンプル¶
curl -X 'POST' \
'https://sandbox-bc-platform-api.withhive.com/web3/v1/web-link' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXlObyI6NiwiaWQiOiIvVWpXN....' \
-H 'Content-Type: application/json' \
-d '{
"type": "HOME",
"playerId": 1276814678,
"characterId": "zeratu",
"gameServerUrl": "https://api.com2us.com/hive" //인증 토큰 전송 시: "gameServerUrl": "https://api.com2us.com/hive?token=sInR5cCI6IkpXVC..."
}'
応答¶
フィールド名 | 説明 | 型 |
---|---|---|
code | API呼び出し結果コード、0: 成功 | 数値 |
message | 結果メッセージ | 文字列 |
data | APIレスポンスデータ | json |
data.webLinkId | ウェブリンクID (UUID) | 文字列 |
data.webLinkUrl | 生成されたワンタイムウェブリンク (URL) | 文字列 |
data.expiration | ウェブリンクの有効期限 (ISO 8601) | 文字列 |
応答サンプル¶
{
"code": 0,
"message": "success",
"data": {
"webLinkid": "b6d2ca1b-b43a-4129-bf54-9a189e3aa664",
"webLinkUrl": "https://sandbox-xpla-platform.withhive.com/api/v1/web-link/redirect?token=b256c85c-aee8-4837-b54d-9a03fe8a7435.f94140b71c9ebf058956547753131adde9968a0266f208d7e3059bbb6dd0c7bc",
"expiration": "2024-08-05T08:33:15.448Z"
}
}
Hive SDKを使用したNFTビューページの実装¶
NFTクエリページリンク作成APIは、外部ブラウザで開くためにHive SDKを使用して受信したウェブページのURLを公開します。
以下はNFTビューイングページの例です。
所有しているNFTリスト |
---|
![]() |
NFTビューページを開くと、X-PLANETウォレットまたはXLPA Vaultにログインするためのウィンドウが表示されます。ユーザーは、X-PLANETウォレットまたはXLPA Vaultにログインした後、MintまたはBurnを実行するために特定のウォレットアドレスを選択する必要があります。
Note
XPLA Vaultは2025年6月にサポート予定です。
X-PLANET | XPLA Vault |
---|---|
![]() | ![]() |
NFTバーン実行¶
NFT表示ページで、ユーザーはNFTを選択し、次にBurnを実行します。
リストから燃やすNFTを選択 | 手数料を確認 |
---|---|
![]() | ![]() |
アイテム検証API呼び出し (ハイブブロックチェーンサーバー → ゲームサーバー)¶
Note
このAPIはゲームサーバーがHiveブロックチェーンサーバーを呼び出すAPIではなく、Hiveブロックチェーンサーバーがゲームサーバーを呼び出すAPIです。したがって、ゲームサーバーはHiveブロックチェーンサーバーが望む形式でAPIエンドポイントを設定する必要があります。
Hive ブロックチェーンサーバーは、ユーザーが所有するNFTがゲーム内で使用可能なアイテムかどうかを確認するために、ゲームサーバーにアイテムの検証を要求します。
Hiveブロックチェーンサーバーは、ゲームサーバーから送信されたレスポンス値を通じて、アイテムがゲームで使用可能かどうかを検証します。検証が完了すると、Hiveブロックチェーンサーバーはブロックチェーン上でNFTを焼却します。アイテムの検証に失敗した場合、HiveブロックチェーンサーバーはNFTを焼却しません。
ノート¶
APIエンドポイントを設定する際の開発者向けの考慮事項をいくつか紹介します。
ゲームサーバーのURL¶
このAPIは、NFTルックアップページリンク作成APIから要求されたgameServerUrl
を使用して、ゲームサーバーからの検証をリクエストします。
認証ヘッダー¶
token
クエリパラメータがNFTクエリページリンク作成APIから要求されたgameServerUrl
に存在する場合、このtoken
値をBearer形式で使用します。
属性¶
NFT発行ページリンク作成APIを呼び出すと、要求されたattributes
がアイテム検証APIのリクエストボディに含まれます。
リクエストURL¶
ゲームサーバーで準備する必要があるAPIエンドポイント情報は以下の通りです。
アイテム | 値 |
---|---|
URL | {gameServerUrl}/items/validate |
HTTPメソッド | POST |
コンテンツタイプ | application/json |
ヘッダーパラメータ¶
フィールド名 | 説明 | タイプ | 必須 |
---|---|---|---|
Authorization | NFT ルックアップページ API の gameServerUrl に token クエリパラメータとして送信される認証トークン。Bearer ${token} 形式で呼び出されます。 | Bearer | N |
User-Agent | HiveBlockchain/1.0 | string | Y |
リクエストボディ¶
フィールド名 | 説明 | タイプ | 必須 |
---|---|---|---|
type | BURN | 文字列 | Y |
itemId | NFTアイテム識別コード | 文字列 | Y |
playerId | プレイヤーID | 数字 | Y |
characterId | キャラクターID | 文字列 | N |
webLinkId | ウェブリンクID (UUID) | 文字列 | Y |
tokenId | NFT ID | 文字列 | Y |
attributes | トークンごとに適用されるメタデータプロパティ (例: ユニークアイテムコード、強さ、敏捷性など、NFTに含まれるプロパティ) | json配列 | N |
attributes.traitType | 属性を構成するアイテム名 | 文字列 | N |
attributes.value | 特性値 | 文字列 | N |
リクエストサンプル¶
curl -X 'POST' \
'https://api.com2us.com/hive/items/validate' \
-H 'accept: */*' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoieHBsYS13ZWJ2aWV3IiwiYXBwIjoiY29tLmdjcC5zdGVwYnlzdGVwLnBjd2ViLmJs...' \
-H 'User-Agent: HiveBlockchain/1.0' \
-d '{
"type": "BURN",
"itemId": "HIVE",
"playerId": 2319123897,
"characterId": "zeratu",
"webLinkId": "b6d2ca1b-b43a-4129-bf54-9a189e3aa664",
"attributes": [ // NFT 조회 페이지 링크 생성 시 attributes
{
"traitType": "item_id",
"value": "sward-3283272101239"
},
{
"traitType": "strength",
"value": "50"
},
{
"traitType": "agility",
"value": "10"
}
],
"tokenId": "HIVE#01"
}'
レスポンス¶
HTTPステータスコードは次のとおりです。
- 成功
- 200
- 失敗
- 4xx: 不正なリクエストのエラーステータスコード
- 5xx: サーバーエラーのエラーステータスコード
結果確認API呼び出し (ハイブブロックチェーン → ゲームサーバー)¶
Note
このAPIは、ゲームサーバーがHiveブロックチェーンサーバーを呼び出すAPIではなく、Hiveブロックチェーンサーバーがゲームサーバーを呼び出すAPIです。したがって、ゲームサーバーはHiveブロックチェーンサーバーが望む形式で提供するためにAPIエンドポイントを構成する必要があります。
HiveブロックチェーンサーバーがNFTバーニング結果をゲームサーバーにリクエストボディとして送信すると、ゲームサーバーはゲーム内でアイテムを生成し、その後結果をAPIを通じてHiveブロックチェーンサーバーに返送します。
ゲームサーバーが焼却結果に基づいて行うアクションは以下の通りです。
- NFTの焼却に成功しました
- ゲーム内のアイテムを使用するために処理されました(例:ゲームユーザーのインベントリにアイテムを作成する)
- NFTの焼却に失敗しました
- ゲーム内での別途処理は不要です
- ユーザーがNFTの焼却をキャンセルした場合や、時間が一定の制限を超えた場合にNFT焼却失敗の結果を送信します
以下は、HiveブロックチェーンサーバーがNFTのバーニングを正常に通信したときのNFTバーニングページ画面の例です。
ノート¶
APIエンドポイントを設定する際の開発者向けの考慮事項は以下の通りです。
属性¶
NFT発行ページリンク作成APIを呼び出す際に要求されるattributes
は、結果確認APIリクエストボディに含まれています。attributes
にユニークコードが含まれている場合、そのユニークコードでアイテムのステータスを更新できます。
認証ヘッダー¶
token
クエリパラメータがNFTクエリページリンク作成APIから要求されたgameServerUrl
に存在する場合、このtoken
値をBearer形式で使用します。
リクエストURL¶
アイテム | 値 |
---|---|
URL | {gameServerUrl}/items/callback |
HTTP メソッド | POST |
コンテンツタイプ | application/json |
ヘッダーパラメータ¶
フィールド名 | 説明 | タイプ | 必須 |
---|---|---|---|
Authorization | NFTクエリページリンク作成APIのgameServerUrl におけるtoken クエリパラメータとして送信される認証トークン。Bearer ${token}の形式で呼び出されます。 | Bearer | N |
User-Agent | HiveBlockchain/1.0 | string | Y |
リクエストボディ¶
フィールド名 | 説明 | タイプ | 必須 |
---|---|---|---|
type | BURN | 文字列 | Y |
itemId | NFTアイテム識別コード | 文字列 | Y |
playerId | プレイヤーID | 数字 | Y |
characterId | キャラクターID | 文字列 | N |
webLinkId | ウェブリンクID (UUID) | 文字列 | Y |
tokenId | NFT ID (成功した場合に含まれる) | 文字列 | N |
status | トランザクション結果 (成功、失敗) | 文字列 | Y |
attributes | トークンごとに適用する追加のメタデータプロパティ (例: ユニークアイテムコード、強さ、敏捷性など、NFTに含まれるプロパティ) | json配列 | N |
attributes.traitType | 属性を構成するアイテム名 | 文字列 | N |
attributes.value | 特性値 | 文字列 | N |
リクエストサンプル¶
curl -X 'POST' \
'https://api.com2us.com/hive/items/callback' \
-H 'accept: */*' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoieHBsYS13ZWJ2aWV3IiwiYXBwIjoiY29tLmdjcC5zdGVwYnlzdGVwLnBjd2ViLmJs...' \
-H 'User-Agent: HiveBlockchain/1.0' \
-d '{
"type": "BURN",
"itemId": "HIVE",
"playerId": 2319123897,
"characterId": "zeratu",
"webLinkId": "b6d2ca1b-b43a-4129-bf54-9a189e3aa664",
"tokenId": "HIVE#348",
"status": "success",
"attributes": [ // NFT 조회 페이지 링크 생성 시 attributes
{
"traitType": "item_id",
"value": "sward-3283272101239"
},
{
"traitType": "strength",
"value": "50"
},
{
"traitType": "agility",
"value": "10"
}
]
}'
応答¶
HTTPステータスコードは次のとおりです。
- 成功
- 200
- 失敗
- 4xx: 不正なリクエストのエラーステータスコード
- 5xx: サーバーエラーのエラーステータスコード