มิ้นต์
Mint เป็นฟีเจอร์ที่ออกไอเท็มเกมในรูปแบบ NFT มันออก NFT ตาม เนื้อหาที่กำหนด ในแท็บการออกของผู้ใช้ในเมนู Blockchain > XPLA > NFT ในคอนโซล Hive
การไหลของการดำเนินการของฟังก์ชัน mint¶
ด้านล่างนี้คือกระบวนการดำเนินการสำหรับฟีเจอร์ Mint เพื่อดำเนินการฟีเจอร์ Mint กรุณาปฏิบัติตามภาพแผนภูมิการไหลและเนื้อหาคำแนะนำด้านล่างเพื่อดำเนินการโค้ดใน เกมไคลเอนต์ (Hive SDK, เกมไคลเอนต์) และพื้นที่เซิร์ฟเวอร์เกม ส่วนที่มี ดอกจันสีน้ำเงิน ในภาพด้านล่างคือพื้นที่ที่นักพัฒนาต้องทำงาน สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับงานหลัก กรุณาอ้างอิงจากคำแนะนำด้านล่าง
Note
หลังจากที่คุณทำการ เตรียมการ เสร็จแล้ว คุณต้องดำเนินการฟีเจอร์ Mint
Note
เพื่อดำเนินการฟีเจอร์ Mint คุณต้องใช้ Hive SDK
การนำไปใช้การเข้าสู่ระบบใน hive SDK¶
Implement โค้ดในเกมไคลเอนต์เพื่อให้ผู้ใช้สามารถเข้าสู่ระบบโดยใช้ IdP login ด้วยฟีเจอร์การตรวจสอบสิทธิ์ SDK Hive การเข้าสู่ระบบผ่าน Web login ก็ได้รับการสนับสนุนเช่นกันในฐานะวิธีการเข้าสู่ระบบ
การ implement ปุ่มการสร้าง NFT¶
สร้าง UI ในไคลเอนต์เกมที่อนุญาตให้ผู้ใช้เปิดหน้าการออก NFT ตัวอย่างเช่น เมื่อผู้ใช้เลือกไอเท็มจากคลังตัวละครหลังจากเข้าถึงเกม ปุ่ม แปลงไอเท็มเป็น NFT ควรปรากฏขึ้น เมื่อกดปุ่มนี้ หน้าการออก NFT ควรเปิดขึ้นตามเนื้อหาด้านล่าง
ขอแปลงรายการเป็น NFT¶
ดำเนินการโค้ดที่ขอการออกไอเทมเกมของผู้ใช้เป็น NFT จากไคลเอนต์เกมไปยังเซิร์ฟเวอร์เกม นี่คือการดำเนินการเมื่อผู้ใช้เลือก ปุ่มออก NFT เมื่อเซิร์ฟเวอร์เกมได้รับคำขอจากไคลเอนต์เกม มันจะตรวจสอบไอเทมเกมที่จะออกเป็น NFT และจากนั้นเรียกใช้ API การสร้างลิงก์หน้าออก NFT เพื่อออกไอเทมเป็น NFT
การสร้างลิงก์หน้า NFT¶
หน้าเว็บการออก NFT เป็นหน้าเว็บที่อนุญาตให้ผู้ใช้แปลงไอเท็มที่เป็นเจ้าของของตนให้เป็น NFT หน้าเว็บนี้จัดทำโดยเซิร์ฟเวอร์บล็อกเชน Hive เซิร์ฟเวอร์เกมเรียก API การสร้างลิงก์เพื่อดึง URL หน้าเว็บนี้ (webLinkUrl
) เมื่อผู้ใช้เข้าถึงหน้าเว็บนี้ พวกเขาสามารถสร้างไอเท็มในเกมเป็น NFT บนบล็อกเชน
หมายเหตุ¶
นี่คือข้อควรระวังที่นักพัฒนาควรปฏิบัติเมื่อทำการเรียก API.
เกมเซิร์ฟเวอร์ URL¶
gameServerUrl
ถูกใช้เป็น Request URL สำหรับ API ที่เซิร์ฟเวอร์บล็อกเชน Hive เรียกไปยังเซิร์ฟเวอร์เกม (Item Validation API และ Result Check API).
URL เกมเซิร์ฟเวอร์และโทเค็น¶
เมื่อเซิร์ฟเวอร์บล็อกเชน Hive เรียกใช้ API การตรวจสอบรายการ หรือ API การยืนยันผล เซิร์ฟเวอร์เกมสามารถเลือกใช้ โทเค็นการตรวจสอบสิทธิ์ (Header Parameters) สำหรับการเรียก API ซึ่งขึ้นอยู่กับดุลยพินิจของนักพัฒนา หากต้องการใช้โทเค็นการตรวจสอบสิทธิ์สำหรับการเรียก API เซิร์ฟเวอร์เกมต้องแนบโทเค็นการตรวจสอบสิทธิ์นี้ล่วงหน้าเป็น token
(Query Parameter) ไปยัง gameServerUrl
เมื่อเรียกใช้ API การสร้างลิงก์การออก NFT และส่งไปยังเซิร์ฟเวอร์บล็อกเชน Hive ตัวอย่างแสดงด้านล่าง
คุณสมบัติ¶
attributes
ถูกใช้เป็น Request Body เมื่อเซิร์ฟเวอร์บล็อกเชน Hive เรียกใช้ API การตรวจสอบรายการ และ API การยืนยันผลลัพธ์ ไปยังเซิร์ฟเวอร์เกม.
เมื่อคุณเรียก API ด้วยรหัสเฉพาะของรายการใน attributes
รหัสเฉพาะสามารถรวมอยู่ใน Request Body attributes
ของ Result Check API ได้เช่นกัน ในกรณีนี้ คุณสามารถอัปเดตสถานะของรายการด้วยรหัสเฉพาะที่ตรงกัน
ระยะเวลาความถูกต้องของลิงก์หน้าออก NFT¶
ลิงก์ไปยังหน้าที่สร้างขึ้นครั้งเดียวจะใช้ได้เป็นเวลา 10 นาทีเท่านั้น ตามเซสชันที่เข้าถึงครั้งแรก
URL การร้องขอ¶
รายการ | ค่า |
---|---|
URL ที่ใช้งานจริง | https://bc-platform-api.withhive.com/web3/v1/web-link |
URL สำหรับ Sandbox | https://sandbox-bc-platform-api.withhive.com/web3/v1/web-link |
วิธีการ HTTP | POST |
ประเภทเนื้อหา | application/json |
พารามิเตอร์ส่วนหัว¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
---|---|---|---|
Authorization | โทเค็นการตรวจสอบสิทธิ์สำหรับการเรียก API | string | Y |
เนื้อหาคำขอ¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
---|---|---|---|
type | MINT | สตริง | ใช่ |
playerId | รหัสผู้เล่น | หมายเลข | ใช่ |
characterId | รหัสตัวละคร | สตริง | ใช่ |
gameServerUrl | ที่อยู่เพื่อรับผลลัพธ์ความสำเร็จ/ความล้มเหลวหลังจากการตรวจสอบรายการและการดำเนินการฟังก์ชัน ส่งโทเค็นการรับรองความถูกต้องผ่านพารามิเตอร์ Query token สำหรับการตรวจสอบรายการ/การยืนยันผลลัพธ์ API header | สตริง | ใช่ |
data | ข้อมูลพารามิเตอร์คำขอตามประเภท | json | ไม่ |
วัตถุข้อมูล¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
---|---|---|---|
itemId | ตัวระบุเทมเพลต NFT ของผู้ใช้ (การลงทะเบียนในคอนโซล) | สตริง | ใช่ |
attributes | เมตาดาต้าเพิ่มเติมที่จะนำไปใช้ต่อแต่ละโทเคน (เช่น รหัสสินค้าที่ไม่ซ้ำกัน, ความแข็งแกร่ง, ความคล่องตัว, ฯลฯ คุณลักษณะที่จะรวมอยู่ใน NFT) | อาร์เรย์ json | ไม่ |
attributes.traitType | ชื่อรายการที่ประกอบขึ้นเป็นคุณลักษณะ | สตริง | ไม่ |
attributes.value | ค่าคุณลักษณะ | สตริง | ไม่ |
ตัวอย่างคำขอ¶
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": "MINT",
"playerId": 1276814678,
"characterId": "zeratu",
"gameServerUrl": "https://api.com2us.com/hive" // When sending authentication token: "gameServerUrl": "https://api.com2us.com/hive?token=sInR5cCI6IkpXVC..."
"data": {
"itemId": "HIVE",
"attributes": [
{
"traitType": "item_id",
"value": "sward-3283272101239"
},
{
"traitType": "strength",
"value": "50"
},
{
"traitType": "agility",
"value": "10"
}
]
},
}'
การตอบสนอง¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท |
---|---|---|
code | รหัสผลลัพธ์การเรียก API, 0: สำเร็จ | number |
message | ข้อความผลลัพธ์ | string |
data | ข้อมูลการตอบสนองของ API | json |
data.webLinkId | รหัสลิงก์เว็บ (UUID) | string |
data.webLinkUrl | ลิงก์เว็บแบบใช้ครั้งเดียวที่สร้างขึ้น (URL) | string |
data.expiration | วันที่หมดอายุของลิงก์เว็บ (ISO 8601) | string |
ตัวอย่างการตอบกลับ¶
{
"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"
}
}
การสร้างหน้าออก NFT ด้วย hive SDK¶
API การสร้างลิงก์หน้าเพจการออก NFT NFT issuance page link creation API จะเปิดเผย URL ของหน้าเว็บที่ได้รับเป็นการตอบกลับเพื่อเปิดในเบราว์เซอร์ในเกมโดยใช้ Hive SDK.
ด้านล่างนี้คือตัวอย่างของหน้าออก NFT
ข้อมูลรายการที่จะออกเป็น NFT |
---|
![]() |
เมื่อคุณเปิดหน้าการออก NFT จะมีหน้าต่างเข้าสำหรับ X-PLANET wallet หรือ XLPA Vault ปรากฏขึ้น ผู้ใช้ต้องเลือกที่อยู่กระเป๋าเงินเฉพาะเพื่อทำการ Mint หรือ Burn หลังจากเข้าสู่ระบบ X-PLANET wallet หรือ XLPA Vault
X-PLANET | XPLA Vault | XPLA Games |
---|---|---|
![]() | ![]() | ![]() |
การสร้าง NFT (การดำเนินการสร้าง)¶
ในหน้าการออก NFT ผู้ใช้เลือกสินค้าที่ต้องการและจากนั้นดำเนินการ Mint
ตรวจสอบค่าธรรมเนียมก่อนการออก NFT |
---|
![]() |
การตรวจสอบรายการ API call (เซิร์ฟเวอร์บล็อกเชนฮีฟ → เซิร์ฟเวอร์เกม)¶
Note
API นี้ไม่ใช่ API ที่เซิร์ฟเวอร์เกมเรียกเซิร์ฟเวอร์บล็อกเชน Hive แต่เป็น API ที่เซิร์ฟเวอร์บล็อกเชน Hive เรียกเซิร์ฟเวอร์เกม ดังนั้นเซิร์ฟเวอร์เกมจะต้องกำหนดค่าและจัดเตรียมจุดสิ้นสุด API ในรูปแบบที่เซิร์ฟเวอร์บล็อกเชน Hive ต้องการ
ก่อนที่จะเปลี่ยนไอเท็มเกมเป็น NFT เซิร์ฟเวอร์บล็อกเชน Hive จะขอการตรวจสอบไอเท็มจากเซิร์ฟเวอร์เกม เซิร์ฟเวอร์บล็อกเชน Hive จะออก NFT บนบล็อกเชนหลังจากยืนยันข้อมูลไอเท็มจากการตอบกลับที่ให้โดยเซิร์ฟเวอร์เกม หากการ ตรวจสอบไอเท็มล้มเหลว เซิร์ฟเวอร์บล็อกเชน Hive จะไม่ออก NFT
Note
ในเซิร์ฟเวอร์เกม จนกว่าคุณจะได้รับผลการออก NFT ผ่านทาง API ยืนยันผล คุณต้องจำกัดการใช้ไอเท็มที่ได้รับการตรวจสอบในเกม
หมายเหตุ¶
นี่คือข้อพิจารณาสำหรับนักพัฒนาขณะกำหนดค่า API endpoints.
Gameserverurl¶
API นี้ขอการตรวจสอบจากเซิร์ฟเวอร์เกมโดยใช้ gameServerUrl
ที่ร้องขอจาก API สร้างลิงก์การออก NFT
หัวข้อการอนุญาต¶
หากพารามิเตอร์การค้นหา token
มีอยู่ใน gameServerUrl
ที่ร้องขอจาก API การสร้างลิงก์หน้า NFT ให้ใช้ค่า token
นี้ในรูปแบบ Bearer.
คุณสมบัติ¶
รวม attributes
ในเนื้อหาคำขอ API สำหรับการสร้างลิงก์หน้าออกใบ NFT
URL การร้องขอ¶
นี่คือข้อมูลจุดสิ้นสุด API ที่ต้องเตรียมไว้บนเซิร์ฟเวอร์เกม
รายการ | ค่า |
---|---|
URL | {gameServerUrl}/items/validate |
HTTP Method | POST |
PORT | 80, 443 |
Content-Type | application/json |
พารามิเตอร์หัวเรื่อง¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
---|---|---|---|
Authorization | โทเค็นการตรวจสอบสิทธิ์ที่ส่งเป็นพารามิเตอร์ Query token ไปยัง gameServerUrl ของ API หน้าการออก NFT. เรียกว่าในรูปแบบ Bearer ${token}. | Bearer | N |
User-Agent | HiveBlockchain/1.0 | string | Y |
เนื้อหาคำขอ¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
---|---|---|---|
type | MINT | สตริง | ใช่ |
itemId | รหัสระบุรายการ NFT | สตริง | ใช่ |
playerId | รหัสผู้เล่น | หมายเลข | ใช่ |
characterId | รหัสตัวละคร | สตริง | ไม่ |
webLinkId | รหัสลิงก์เว็บ (UUID) | สตริง | ใช่ |
tokenId | รหัส NFT | สตริง | ไม่ |
attributes | คุณสมบัติเพิ่มเติมที่ต้องนำไปใช้ต่อแต่ละโทเค็น (เช่น รหัสรายการเฉพาะ, ความแข็งแกร่ง, ความคล่องตัว, ฯลฯ คุณสมบัติที่รวมอยู่ใน NFT) | อาร์เรย์ json | ไม่ |
attributes.traitType | ชื่อรายการที่ประกอบขึ้นเป็นคุณสมบัติ | สตริง | ไม่ |
attributes.value | ค่าคุณสมบัติ | สตริง | ไม่ |
ตัวอย่างคำขอ¶
curl -X 'POST' \
'https://api.com2us.com/hive/items/validate' \
-H 'accept: */*' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoieHBsYS13ZWJ2aWV3IiwiYXBwIjoiY29tLmdjcC5zdGVwYnlzdGVwLnBjd2ViLmJs...' \ // When using authentication token
-H 'User-Agent: HiveBlockchain/1.0' \
-d '{
"type": "MINT",
"itemId": "HIVE",
"playerId": 2319123897,
"characterId": "zeratu",
"webLinkId": "b6d2ca1b-b43a-4129-bf54-9a189e3aa664",
"attributes": [ // Attributes when generating NFT issuance page link
{
"traitType": "item_id",
"value": "sward-3283272101239"
},
{
"traitType": "strength",
"value": "50"
},
{
"traitType": "agility",
"value": "10"
}
]
}'
การตอบสนอง¶
รหัสสถานะ HTTP มีดังต่อไปนี้
- ความสำเร็จ
- 200
- ความล้มเหลว
- 4xx: รหัสสถานะข้อผิดพลาดสำหรับคำขอที่ไม่ถูกต้อง
- 5xx: รหัสสถานะข้อผิดพลาดสำหรับข้อผิดพลาดของเซิร์ฟเวอร์
การตรวจสอบผล API call (บล็อกเชน hive → เซิร์ฟเวอร์เกม)¶
Note
API นี้ไม่ใช่ API ที่เซิร์ฟเวอร์เกมเรียกเซิร์ฟเวอร์บล็อกเชน Hive แต่เป็น API ที่เซิร์ฟเวอร์บล็อกเชน Hive เรียกเซิร์ฟเวอร์เกม ดังนั้นเซิร์ฟเวอร์เกมต้องกำหนดค่า endpoint API ในรูปแบบที่เซิร์ฟเวอร์บล็อกเชน Hive ต้องการ
เมื่อเซิร์ฟเวอร์บล็อกเชน Hive ส่งผลการออก NFT ไปยังเซิร์ฟเวอร์เกมใน Request Body เซิร์ฟเวอร์เกมจะประมวลผลเพื่อให้ไอเท็มไม่สามารถใช้งานในเกมได้ จากนั้นจึงส่งผลกลับไปยังเซิร์ฟเวอร์บล็อกเชน Hive ผ่าน API
การกระทำที่เซิร์ฟเวอร์เกมจะดำเนินการตามผลการออกใบอนุญาตมีดังนี้
- การออก NFT สำเร็จ
- ประมวลผลเพื่อป้องกันการใช้ไอเท็มในเกม (เช่น ลบไอเท็มจากคลังของผู้ใช้เกม)
- การออก NFT ล้มเหลว
- ประมวลผลเพื่ออนุญาตให้ใช้ไอเท็มในเกม (เช่น ยกเลิกข้อจำกัดการใช้งานเพื่ออนุญาตให้ไอเท็มถูกนำกลับมาใช้ใหม่ในคลังของผู้ใช้เกม)
- ส่งผลลัพธ์การล้มเหลวในการออก NFT หากผู้ใช้ยกเลิกการออก NFT หรือหากเกินเวลาที่กำหนด
Warning
คุณต้องจำกัดการใช้รายการที่เกี่ยวข้องในเกมบนเซิร์ฟเวอร์เกมจนกว่าคุณจะได้รับผลการออก NFT.
ด้านล่างเป็นตัวอย่างของหน้าจอหน้า NFT issuance เมื่อเซิร์ฟเวอร์เกมตอบกลับด้วยการออก NFT ที่สำเร็จ
หมายเหตุ¶
นี่คือข้อพิจารณาสำหรับนักพัฒนาขณะกำหนดค่า API endpoints.
คุณสมบัติ¶
โดยการรวมรหัสรายการที่ไม่ซ้ำใน attributes
คุณสามารถเรียกใช้ API การสร้างลิงก์หน้า NFT issuance และยังรวมรหัสที่ไม่ซ้ำใน Request Body attributes
ในกรณีนี้ คุณสามารถอัปเดตสถานะรายการด้วยรหัสที่ไม่ซ้ำที่เกี่ยวข้อง
หัวข้อ Authorization¶
หากพารามิเตอร์การค้นหา token
มีอยู่ใน gameServerUrl
ที่ร้องขอจาก API การสร้างลิงก์การออก NFT ให้ใช้ค่า token
นี้ในรูปแบบ Bearer.
URL การร้องขอ¶
รายการ | ค่า |
---|---|
URL | {gameServerUrl}/items/callback |
HTTP Method | POST |
PORT | 80, 443 |
Content-Type | application/json |
พารามิเตอร์หัวเรื่อง¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
---|---|---|---|
Authorization | โทเค็นการตรวจสอบสิทธิ์ที่ส่งเป็นพารามิเตอร์ token ในการสร้างลิงก์ API หน้าออกใบ NFT มันถูกเรียกในรูปแบบ Bearer ${token}. | Bearer | N |
User-Agent | HiveBlockchain/1.0 | string | Y |
เนื้อหาคำขอ¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
---|---|---|---|
type | MINT | สตริง | ใช่ |
itemId | รหัสการระบุ NFT item | สตริง | ใช่ |
playerId | รหัสผู้เล่น | หมายเลข | ใช่ |
characterId | รหัสตัวละคร | สตริง | ไม่ |
webLinkId | รหัสลิงก์เว็บ (UUID) | สตริง | ใช่ |
tokenId | รหัส NFT (รวมถ้าสำเร็จ) | สตริง | ไม่ |
status | ผลลัพธ์การทำธุรกรรม (สำเร็จ, ล้มเหลว) | สตริง | ใช่ |
attributes | คุณสมบัติเพิ่มเติมที่ใช้ต่อแต่ละโทเค็น (เช่น รหัสเฉพาะ, ความแข็งแกร่ง, ความคล่องตัว, ฯลฯ คุณสมบัติที่รวมอยู่ใน NFT) | json array | ไม่ |
attributes.traitType | ชื่อรายการที่ประกอบขึ้นเป็นคุณสมบัติ | สตริง | ไม่ |
attributes.value | ค่าคุณสมบัติ | สตริง | ไม่ |
ตัวอย่างคำขอ¶
curl -X 'POST' \
'https://api.com2us.com/hive/items/callback' \
-H 'accept: */*' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoieHBsYS13ZWJ2aWV3IiwiYXBwIjoiY29tLmdjcC5zdGVwYnlzdGVwLnBjd2ViLmJs...' \ // When using authentication token
-H 'User-Agent: HiveBlockchain/1.0' \
-d '{
"type": "MINT",
"itemId": "HIVE",
"playerId": 2319123897,
"characterId": "zeratu",
"webLinkId": "b6d2ca1b-b43a-4129-bf54-9a189e3aa664",
"tokenId": "HIVE#348",
"status": "success",
"attributes": [ // Attributes when generating NFT issuance page link
{
"traitType": "item_id",
"value": "sward-3283272101239"
},
{
"traitType": "strength",
"value": "50"
},
{
"traitType": "agility",
"value": "10"
}
]
}'
การตอบสนอง¶
รหัสสถานะ HTTP มีดังนี้
- ความสำเร็จ
- 200
- ความล้มเหลว
- 4xx: รหัสสถานะข้อผิดพลาดสำหรับคำขอที่ไม่ถูกต้อง
- 5xx: รหัสสถานะข้อผิดพลาดสำหรับข้อผิดพลาดของเซิร์ฟเวอร์