สินค้าแห้ง | คำอธิบายโดยละเอียด ประสบการณ์ครั้งแรกของแอปพลิเคชันการปรับใช้ Thunderchain
นี่เป็นครั้งแรกที่ฉันรู้จัก Thunderchain และฉันคิดว่า Thunderchain เป็นตัวเลือกที่ดี ดังนั้นฉันจึงคิดว่ามันสามารถพัฒนาและนำไปใช้ได้ Thunderchain จัดเตรียมสภาพแวดล้อมแบบ Sandbox สำหรับการทดสอบและเอกสารอย่างเป็นทางการเขียนรายละเอียดเพิ่มเติม แต่ฉันได้ทำการปรับใช้ที่เกี่ยวข้องในสภาพแวดล้อมแซนด์บ็อกซ์นี้แล้ว ดังนั้นฉันจะจัดทำบทช่วยสอนสำหรับการโทร
ในการใช้สภาพแวดล้อมการทดสอบ คุณต้องเตรียมสภาพแวดล้อมการทดสอบ เช่น บัญชีนักพัฒนาสำหรับการทดสอบและกระเป๋าเงิน LinkToken สำหรับการทดสอบ เอกสารอย่างเป็นทางการมี API มากมายเพื่อตอบสนองความต้องการของนักพัฒนา ขั้นตอนแรกในการพัฒนาแอปพลิเคชันสัญญาของคุณเองโดยใช้ ThunderChain คือการลงทะเบียนอีเมลสำหรับนักพัฒนา
หากนักพัฒนาต้องการให้แอปของตนใช้บริการสัญญาของแพลตฟอร์มเปิด ThunderChain พวกเขาเพียงแค่เรียก URL โครงสร้าง และอินเทอร์เฟซที่เกี่ยวข้องสามารถดูได้จากเอกสารทางการ ตัวอย่างเช่น คำสั่ง curl ของบรรทัดคำสั่งสามารถใช้กับอีเมลได้ ลงทะเบียนและกรอกที่อยู่อีเมล json ด้วยตัวเอง ที่อยู่อีเมลของคุณจะทำ:
curl -H "Content-Type:application/json" -X POST -d
'{"email":"1191094115@qq.com"}' https://sandbox-
walletapi.onethingpcs.com/api/linktest/email_code
หากกล่องจดหมายยังไม่ได้ลงทะเบียน กล่องจดหมายจะส่งคืน:
{"code":0,"data":{},"msg":""}
ในเวลาเดียวกัน กล่องจดหมายจะได้รับอีเมลในเวลานี้:

นี่เป็นเพียงขั้นตอนแรกในการพัฒนา Thunderchain แน่นอน นอกจากการพิมพ์คำสั่งโดยตรงบนบรรทัดคำสั่งแล้ว คุณยังสามารถเรียก API ผ่านหน้าเว็บการเรียก API อย่างเป็นทางการได้อีกด้วย
ลิงค์เว็บไซต์:
https://thunderchain.docs.apiary.io/#reference/0
เปิดหน้าเพื่อดู:

คลิก รับรหัสยืนยันอีเมล เพื่อระบุ
ขึ้นอยู่กับความชอบของคุณว่าคุณใช้หน้าเว็บเพื่อเรียก API หรือเรียกผ่านบรรทัดคำสั่ง
คลิกปุ่มรับรหัสยืนยันอีเมล: หน้าจะเปลี่ยน

ในขณะนี้ คุณต้องกรอกเนื้อหาและตัวเลือกอื่นๆ พารามิเตอร์ URL ส่วนหัวสามารถละเว้นได้

หลังจากกรอกข้อมูลแล้วให้คลิกปุ่มโทรทรัพยากรและคำขอโพสต์จะถูกส่งสำเร็จ
ณ จุดนี้ คุณจะเห็นข้อมูลที่เกี่ยวข้องในหน้าต่างตอบกลับ:

ข้างต้นคุ้นเคยกับการดำเนินการเรียกพื้นฐานของ API เพื่ออธิบายกระบวนการทั้งหมดให้ง่ายขึ้น มาปรับใช้ผ่านหน้าเว็บอย่างสมบูรณ์และเรียกสัญญา แน่นอน แอปพลิเคชันจริงคือการปรับใช้สัญญาและการร้องขอโดยนักพัฒนาโดยใช้ไลบรารีเครือข่ายเพื่อทำการเรียก API ในซอฟต์แวร์ของตน
หลังจากได้รับรหัสยืนยันอีเมลแล้ว คุณสามารถลงทะเบียนที่อยู่อีเมลของคุณได้
ในหน้าเว็บก่อนหน้า ให้คลิกปุ่มลงทะเบียนที่ลงทะเบียนโดยที่อยู่อีเมลของผู้พัฒนา: คุณสามารถดูได้

ในตอนนี้ ให้กรอกอีเมลที่คุณลงทะเบียนไว้ก่อนหน้าและรหัสยืนยันที่ได้รับทางอีเมล
หลังจากลงทะเบียน คุณจะได้รับอีเมล:

นี่คือสองลายเซ็นสำหรับการดำเนินการต่าง ๆ ของสัญญา
ในการเรียกสัญญา คุณต้องจัดหาเชื้อเพลิงให้กับเครื่องเสมือนสัญญา ThunderChain ซึ่งเป็นค่าธรรมเนียมการทำธุรกรรม และคุณสามารถรับโทเค็นสภาพแวดล้อมการทดสอบผ่านอินเทอร์เฟซการเติมบัญชีทดสอบ (อินเทอร์เฟซนี้สามารถเรียกได้ 10 ครั้งต่อวันเท่านั้น) ที่นี่อาจมีเด็กที่ไม่เข้าใจตรรกะที่นักพัฒนาสัญญาและแพลตฟอร์มการพัฒนา ThunderChain ต้องเรียก นี่คือผังงานของเอกสารอย่างเป็นทางการ

รูปภาพด้านบนค่อนข้างชัดเจนและจำเป็นต้องชี้แจง:
ประการแรก กระเป๋า LinkToken ไม่สามารถแยกออกจากการเรียกสัญญาทั้งหมดได้ รหัสส่วนตัว LinkToken ที่บันทึกไว้ในกระเป๋าจะออกการทำธุรกรรมและที่อยู่ LinkToken จะถูกใช้เป็นผู้ส่งสัญญา
ดังนั้น ขั้นตอนแรกคือการเติมเงินในกระเป๋า LinkToken เพื่อทดสอบ อินเทอร์เฟซการทดสอบสำหรับการชาร์จคือ:
https://sandbox-walletapi.onethingpcs.com/api/linktest/recharge。
คำอธิบายพารามิเตอร์:

ในการเติมเงิน ก่อนอื่นคุณต้องมีที่อยู่ LinkToken และสร้างบัญชีผ่านกระเป๋า LinkToken

สร้างข้อมูล json บัญชีคือที่อยู่
ในขณะที่ลายเซ็นคือ:
md5(email=xxx&address=xxx&secret=xxx)
ที่นี่ xxx จะถูกแทนที่ด้วยข้อมูลส่วนบุคคล: ดังที่แสดงในรูปด้านล่าง ข้อมูลส่วนบุคคลถูกโมเสก วิธีนี้ทำให้สามารถรับลายเซ็นได้ และในขณะนี้ อินเทอร์เฟซ api สามารถเรียกใช้เพื่อเรียกอินเทอร์เฟซได้

สร้าง json ดังแสดงในรูป:

หนึ่งในผู้พัฒนาสามารถเรียกใช้อินเทอร์เฟซนี้ได้ 10 ครั้งต่อวัน หลังจากโทรแล้ว ให้รีเฟรช LinkToken Pocket:

ณ จุดนี้ 1 LinkToken มาแล้ว!
หลังจากที่คุณมี LinkToken แล้ว คุณสามารถปรับใช้สัญญาของคุณบน Thunder Chain เพื่อให้ปรับใช้สัญญาได้สำเร็จ คุณต้องเตรียมก๊าซพื้นฐาน
เช่นเดียวกับแผนผังลำดับงานด้านบน ในการปรับใช้สัญญา คุณต้องสร้างข้อมูล json ที่สอดคล้องกันก่อนแล้วส่งไปที่
https://sandbox-walletapi.onethingpcs.com/api/linktest/contract/deploy อินเทอร์เฟซ
คำอธิบายพารามิเตอร์:

หลังจากเตรียมสิ่งต่างๆ ข้างต้นแล้ว ก็สามารถพัฒนาและปรับใช้สัญญาได้ การพัฒนาสัญญาสามารถพัฒนาได้ด้วยทรัฟเฟิล
ใช้ทรัฟเฟิลเพื่อพัฒนาสัญญา Simplestorege โปรดทราบว่ารหัสไบต์ที่นี่เป็นเลขฐานสิบหก หากสัญญาอ้างอิงถึงสัญญา Library คุณต้องปรับใช้สัญญา Library บน Thunder Chain และเปลี่ยนฟิลด์ Library ที่อ้างอิงของสัญญาจริงเป็น ที่อยู่ห้องสมุด.. ด้วยวิธีนี้ bytecode เป็นไบนารีทั้งหมด และสามารถรับโฟลเดอร์ build ผ่านคำสั่งคอมไพล์ truffle ค้นหาข้อมูลฟิลด์ bytecode ในสัญญาที่ต้องเรียกใช้
สัญญาที่นี่คือ:
pragma solidity ^0.4.21;
contract SimpleStorage {
uint myVariable;
function set(uint x) public {
myVariable = x;
}
function get() constant public returns (uint) {
return myVariable;
}
}
หลังจากสร้างป้ายแล้ว

รับ json:
{
"email": "1191094115@qq.com",
"bytecode": "0x608060405234801561001057600080fd5b5060df8061001f6000396000f3006080604052600436106049576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360fe47b114604e5780636d4ce63c146078575b600080fd5b348015605957600080fd5b5060766004803603810190808035906020019092919050505060a0565b005b348015608357600080fd5b50608a60aa565b6040518082815260200191505060405180910390f35b8060008190555050565b600080549050905600a165627a7a72305820101eb74d2d65698a7fd1e63666842673ffb013a500c768f84643fc6b896519430029",
"params": "",
"sign": "0d0734ca430c7b79d332d700b0b44cd9"
}
ได้คำตอบ:

หลังจากได้รับรหัส คุณสามารถใช้รหัสเพื่อค้นหาที่อยู่ของสัญญา
ข้อมูลที่ต้องการคือ:
วิธีการ: โพสต์
URL: /api/linktest/contract/address
BODY: JSON
คำอธิบายพารามิเตอร์:
ชื่อพารามิเตอร์
ประเภทพารามิเตอร์
อธิบาย
อธิบาย
string
ใช่
อีเมลที่ใช้สำหรับการทดสอบส่วนใหญ่จะใช้เพื่อรับข้อความทดสอบ
Id
int
ใช่
รหัสที่ส่งคืนโดยการปรับใช้สัญญา
Sign
string
ใช่
ลายเซ็น md5(email=xxx&id=xxx&secret=xxx), xxx กรอกค่าที่แท้จริงของคำขอ
การตอบสนอง
ชื่อพารามิเตอร์
ประเภทพารามิเตอร์
อธิบาย
อธิบาย
Code
int
ใช่
รหัสข้อผิดพลาด 0: สำเร็จ ไม่ใช่ 0: ล้มเหลว
Msg
string
ใช่
ข้อความผิดพลาด
Data
object
เลขที่
ขอคืนข้อมูล
รับเครื่องหมาย:

ที่อยู่ตามสัญญาได้ในภายหลัง

หลังจากได้ที่อยู่สัญญาแล้วก็สามารถเรียกสัญญาได้

ตามผังงานด้านบน หากคุณต้องการโทรตามสัญญา คุณต้องได้รับ prepay_id ก่อนเพื่อใช้ LinkToken Pocket ในบุคคลที่สาม ต่อไปนี้คือขั้นตอนการรับ prepay_id จากบุคคลที่สาม แต่เป็นเพียง สาธิต.
สภาพแวดล้อมการทดสอบ:
https://sandbox-walletapi.onethingpcs.com/getPrepayId
วิธีการขอ: โพสต์

เมื่อได้รับ prepay_id คีย์ส่วนตัวที่ป้อนเป็นความลับที่ส่งโดยอีเมลก่อนหน้า:

ได้ป้ายแบบนี้
เนื่องจากพารามิเตอร์เหมือนกัน json ของแต่ละคำขอจึงเหมือนกัน และได้รับการตอบกลับในขณะนี้:

มีวิธีสัญญาสองวิธีวิธีหนึ่งคือวิธีคงที่และอีกวิธีหนึ่งคือวิธีที่ต้องใช้ก๊าซ คราวนี้เราเรียกเมธอด get() ของ Simplestore จากนั้นคุณต้องพบกับ:
วิธีการ: โพสต์
URL: /call
BODY: JSON
คำอธิบายพารามิเตอร์:

รายละเอียดพารามิเตอร์

รายละเอียดวัตถุ
วัตถุ - วัตถุการโทรธุรกรรม

โดยที่ data คือสตริงแฮชของฟังก์ชันการโทร
โดยมีวิธีการคำนวณดังนี้
สมมติว่าแถบฟังก์ชันเมธอด (fixed[2] x,bool y) โดยที่ x คือ 1 และ y คือ 2
ขณะนี้ ข้อมูลที่คำนวณได้คือ:
1. ดำเนินการ sha3 บนรหัส ascii ของ bar(fixed[2], bool) และใช้ 8 หลักแรกของการแสดงเลขฐานสิบหกของผลลัพธ์
2. แปลงค่า x เป็นตัวเลข uint32 และแปลงค่า y เป็นตัวเลข uint32
3. รวบรวมสตริงที่ได้รับในขั้นตอนที่ 1 และ 2 เพื่อรับข้อมูล
คุณสามารถรับค่า sha3-256 ของ get()
6d4ce63caa65600744ac797760560da39ebd16e8240936b51f53368ef9e0e01f
เอา 8 หลักแรก
เนื่องจากไม่มีพารามิเตอร์ คุณจึงสร้าง json ได้

ณ จุดนี้ผลลัพธ์คือ

เนื่องจากเมธอด get ได้รับ 0 เมื่อปรับใช้สัญญา จึงส่งคืน 0
หลังจากเรียกใช้เมธอดคงที่แล้ว คุณสามารถเรียกเมธอดที่ต้องใช้แก๊สได้
เรียกใช้ฟังก์ชัน set(uint x) ในครั้งนี้ เนื่องจากแม้ว่าจะเขียน uint ไว้ แต่ก็จะถูกแปลงเป็น uint256 ดังนั้น
ตามรูปแบบ json ในขณะนี้ ควรได้รับค่าแฮชของ sha3-256 ของ set(uint256) และควรใช้ 8 บิตแรก:
cccdda2c
ณ จุดนี้สามารถสร้าง json ได้
ในเวลาเดียวกันเราสร้าง x 256 เราคำนวณเลขฐานสิบหก 100 ของ 256 เป็นทศนิยมแล้วเติม 100 ถึง 32 บิตเพื่อรับ
0x00000000000000000000000000000100
ใส่กันอีกครั้ง
0x60fe47b100000000000000000000000000000100
สิ่งนี้เรียกว่าข้อมูล
นี่คือที่อยู่ คุณสามารถเลือกที่อยู่โทรกลับของ LinkToken Pocket ได้โดยตรง สำหรับ gas_limit ใน json สามารถรับได้ผ่านคำขอดังกล่าว แน่นอน หากสัญญาสำเร็จ
ผลตอบแทนเป็นเลขฐานสิบหก แค่แปลงเป็นเลขฐานสิบ

แปลงเป็นทศนิยม: 26477 แต่จริง ๆ แล้วสัญญาใช้ 41605 ดังนั้นจึงถูกต้องที่จะมีก๊าซขนาดใหญ่กว่า
สร้าง json

ได้คำตอบ:

ในขณะนี้ การเรียกกลับที่ได้รับคือ URL การเรียกกลับของ LinkToken Pocket แปลง URL เป็นรหัส QR
จากนั้นใช้ LinkToken Pocket เพื่อสแกน:
หากสำเร็จ:

หากสัญญาดำเนินการสำเร็จ

หากล้มเหลว: ที่นี่ฉันเรียกวิธีที่ผิด (สร้างข้อมูลผิด)

ถึงตอนนี้ กระบวนการเรียกสัญญาสิ้นสุดลงแล้ว
เราเปลี่ยนตัวแปรของสัญญาจาก 0 เป็น 256 ดังนั้นลองตรวจสอบผ่านเมธอด get กันตอนนี้
ด้วยวิธีคงที่ก่อนหน้านี้ การตอบสนองในเวลานี้คือ: ps วิธีคงที่สามารถรันได้ด้วยค่าธรรมเนียมการทำธุรกรรมผ่านเครื่องเสมือน แต่ไม่จำเป็น

แปลงเลขฐานสิบหกเป็นทศนิยม มันคือ 256!
ข้างต้นเป็นประสบการณ์ครั้งแรกของกระบวนการทำสัญญาการใช้งาน Thunder Chain ฉันหวังว่ามันจะสามารถช่วยรองเท้าเด็กได้บ้างในอนาคต ^.^ นักเรียนที่รัก


