คำเตือนความเสี่ยง: ระวังความเสี่ยงจากการระดมทุนที่ผิดกฎหมายในนาม 'สกุลเงินเสมือน' 'บล็อกเชน' — จากห้าหน่วยงานรวมถึงคณะกรรมการกำกับดูแลการธนาคารและการประกันภัย
ข่าวสาร
ค้นพบ
ค้นหา
เข้าสู่ระบบ
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
ดูตลาด
รูปแบบการออกแบบ DApp ที่น่าสนใจ: สินทรัพย์ชั้นหนึ่ง
Nervos
特邀专栏作者
2018-12-20 09:46
บทความนี้มีประมาณ 5548 คำ การอ่านทั้งหมดใช้เวลาประมาณ 8 นาที
สินทรัพย์ชั้นหนึ่ง ซึ่งทำให้สินทรัพย์ที่เข้ารหัสเป็น "พลเมืองชั้นหนึ่ง" ในบล็อกเชน

ผู้เขียนบทความนี้คือ Jan บทความนี้อธิบายถึงรูปแบบการออกแบบ DApp ที่น่าสนใจมากซึ่งรองรับในโมเดล Cell: First-class Asset ซึ่งทำให้สินทรัพย์ที่เข้ารหัสเป็น "พลเมืองชั้นหนึ่ง" ในบล็อกเชน

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

ชื่อเรื่องรอง

ไพรเมอร์อย่างรวดเร็วในแบบจำลองสถานะ

ก่อนโมเดลเซลล์ โดยทั่วไปจะมีโมเดลสถานะสองโมเดลที่ใช้โดยบล็อกเชนต่างๆ: โมเดล UTXO และโมเดลบัญชี

ตัวแทนของรูปแบบ UTXO คือ Bitcoin UTXO เป็นตัวย่อของ Unspent Transaction Output UTXO สามารถเข้าใจได้ง่ายว่าเป็น Bitcoin อย่างไรก็ตาม ไม่เหมือนกับเหรียญทั่วไปตรงที่มูลค่าที่ตราไว้ของ UTXO แต่ละอันจะแตกต่างกัน แต่ละ UTXO จะบันทึกว่าใครเป็นเจ้าของเหรียญผ่านสคริปต์การล็อก (Lock Script) และในขณะเดียวกันก็ช่วยให้แน่ใจว่ามีเพียงเจ้าของเหรียญเท่านั้นที่สามารถใช้เหรียญได้ โหนดเต็มของ Bitcoin แต่ละโหนดจะเก็บคอลเลกชันของ UTXO ปัจจุบันทั้งหมด ซึ่งเราเรียกว่าสถานะปัจจุบันของบัญชีแยกประเภท Bitcoin (นั่นคือบัญชีแยกประเภทปัจจุบัน) การโอน Bitcoin ทุกครั้งเป็นกระบวนการในการลบเหรียญหลาย ๆ เหรียญ (เป็นของผู้ส่ง) ออกจากชุด UTXO และเพิ่มเหรียญใหม่หลาย ๆ เหรียญ (เป็นของผู้รับเงินและ/หรือผู้ส่ง) เนื่องจากสถานะบัญชีแยกประเภททั้งหมดถูกสร้างขึ้นตามหน่วยที่เล็กที่สุดของ UTXO เราจึงเรียกว่าแบบจำลอง UTXO



ข้อความ

First-class Coin

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

ดังนั้นเราจึงกล่าวว่าเหรียญ (Coin) เป็นพลเมืองชั้นหนึ่งในรูปแบบ UTXO แต่ละ UTXO เป็นวัตถุที่มีตัวระบุอิสระ (Transaction ID + Output Index) และ Coin เป็นวัตถุที่ดำเนินการโดยตรงโดยผู้ใช้ (ผู้ใช้สร้าง การทำธุรกรรมมี UTXO) และบัญชีจะขึ้นอยู่กับแนวคิดขั้นสูงที่สร้างโดย Coin (มีอยู่ในกระเป๋าเงินเท่านั้น) ดังนั้น UTXO จึงเป็นเหรียญชั้นหนึ่ง


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

ในประเด็นเหล่านี้ Kelvin Fitcher เขียนLooking at ownership in the EVMการวิเคราะห์ทำได้ดีและฉันจะไม่ทำซ้ำที่นี่



ด้วยภูมิหลังเหล่านี้ เราน่าจะเข้าใจแนวคิดการออกแบบของ CKB ได้ง่ายขึ้น:

ด้วยโมเดลเซลล์ เราสามารถลดความซับซ้อนของการออกแบบและใช้สินทรัพย์ที่กำหนดโดยผู้ใช้ (สินทรัพย์ที่กำหนดโดยผู้ใช้) เป็น "พลเมืองชั้นหนึ่ง" บน Nervos CKB ซึ่งเรียกว่าสินทรัพย์ชั้นหนึ่ง

ชื่อเรื่องรอง

First-class State

จะตระหนักถึงสินทรัพย์ชั้นหนึ่งได้อย่างไร?

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

ชื่อของ Nervos CKB มาจากตัวย่อของ Common Knowledge Base (ฐานความรู้ทั่วไป) สาเหตุที่เราเรียกบล็อกเชนในเครือข่าย Nervos ว่า "ฐานความรู้ทั่วไป" เนื่องจากความรับผิดชอบของบล็อกเชนคือการสร้างฉันทามติระดับโลกอย่างต่อเนื่องเกี่ยวกับสถานะทั่วไปของเครือข่าย กล่าวอีกนัยหนึ่ง CKB คือสถานะที่ดูแลโดยห้องสมุดฉันทามติทั่วโลก รูปแบบพื้นฐานของห้องสมุดของรัฐจะแบ่งรัฐทั้งหมดออกเป็นหน่วยของรัฐที่เล็กกว่าเพื่อจัดระเบียบ หน่วยสถานะที่เล็กกว่าเหล่านี้คือเซลล์

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

ดังที่แสดงในรูปด้านล่าง เจ้าของ Cell สามารถอัปเดตสถานะที่บันทึกไว้ใน Cell ได้โดยตรงโดยไม่ต้องมีคนกลาง ในรูปแบบบัญชี ผู้ใช้สามารถดำเนินการสถานะในบัญชีผ่านรหัสสัญญาเท่านั้น (รหัสในบัญชี) ในความเป็นจริงมันเป็นเจ้าภาพในมือของสัญญา

เป็นมูลค่าที่ชี้ให้เห็นว่าด้วย Cells นั้น CKB จะได้รับรูปแบบการเขียนโปรแกรมแบบ stateful มุมมองทั่วไปคือพลังการแสดงออกของรูปแบบการเขียนโปรแกรม Ethereum มาจากเครื่องเสมือนที่สมบูรณ์ของ Turing อันที่จริง การเปิดใช้งานสัญญาอัจฉริยะเพื่อบันทึกสถานะการประมวลผลผ่านบัญชีถือเป็นข้อได้เปรียบเหนือ EVM (ภาษาที่ไม่สมบูรณ์ของ Turing นั้นทรงพลังมากเช่นกัน พลังในการแสดงออก: https //en.wikipedia.org/wiki/Total_functional_programming)

CKB ใช้รูปแบบการเขียนโปรแกรมสัญญาอัจฉริยะแบบ stateful ใหม่ผ่านการรวมกันของ Cell และ CKB-VM (เรียบง่าย แต่ทรงพลัง! นี่คือบทความอื่น) รูปแบบการเขียนโปรแกรมนี้เหมาะสำหรับเลเยอร์ 2 มากกว่า เนื่องจากจากการวิเคราะห์รูปแบบทั่วไปของโปรโตคอลเลเยอร์ 2 เราจะเห็นว่าวัตถุปฏิสัมพันธ์ระหว่างเลเยอร์โปรโตคอลควรเป็นวัตถุสถานะ (State Transaction) แทนที่จะเป็นวัตถุเหตุการณ์ (Event Transaction) และ Layer 1 ควรเป็นชั้นสถานะแทนที่จะเป็นชั้นการคำนวณ

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

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

หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับการเขียนสัญญาบน CKB-VM โปรดอ่านบทความทั้งสองนี้:

ชื่อเรื่องรอง

First-class Asset

สินทรัพย์ที่กำหนดโดยผู้ใช้ใน CKB สามารถจัดโครงสร้างได้ดังนี้:

  • ออกแบบสัญญาคำจำกัดความของสินทรัพย์ (Asset Definition) ระบุข้อจำกัดหลักของสินทรัพย์ (เช่น ปริมาณรวม ผู้ออก ปริมาณที่ไม่เปลี่ยนแปลงก่อนและหลังการทำธุรกรรม เป็นต้น)

  • บันทึกรหัสสัญญาลงในเซลล์คำนิยามสินทรัพย์

  • เมื่อหน่วยงานออกใบรับรองเป็นที่พอใจ ผู้ออกจะออกสินทรัพย์และบันทึกสถานะสินทรัพย์ใน State Cell อื่น ฟิลด์สัญญาของ State Cell หมายถึง Code Cell ที่บันทึกคำจำกัดความของสินทรัพย์ เพื่อให้มั่นใจว่าการเปลี่ยนแปลงของ State Cell อยู่ภายใต้ข้อจำกัดของคำจำกัดความของสินทรัพย์

  • เจ้าของเซลล์สินทรัพย์สามารถเปลี่ยนเจ้าของเซลล์สินทรัพย์ได้โดยการอัพเดทล็อค

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

  • สามารถอ้างอิงและส่งผ่านเซลล์สินทรัพย์โดยตรงเป็นพารามิเตอร์ของสัญญาอื่นๆ ตราบใดที่อินพุตที่อ้างอิงเซลล์สินทรัพย์มีการให้สิทธิ์ผู้ใช้ที่ถูกต้อง สัญญาจะสามารถใช้เซลล์สินทรัพย์ของผู้ใช้ได้ตามปกติ

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

  • สินทรัพย์ของผู้ใช้จะแยกออกจากกัน และสถานะสินทรัพย์ของผู้ใช้จะเป็นอิสระจากกัน โมเดลทางเศรษฐกิจของ CKB มุ่งเน้นไปที่สิ่งจูงใจในการจัดเก็บข้อมูลของรัฐ: ผู้ใช้ไม่เพียงต้องจ่ายค่าธรรมเนียมการเขียนเพื่อประหยัดสถานะในบล็อกเชนเท่านั้น แต่ยังต้องแบกรับต้นทุนการจัดเก็บที่เป็นสัดส่วนกับเวลาในการจัดเก็บด้วย หากสถานะสินทรัพย์ของผู้ใช้ถูกผสมและจัดเก็บไว้ในที่เดียว (เช่น ERC 20) ใครจะเป็นผู้จ่ายค่าใช้จ่ายในการจัดเก็บสถานะเหล่านี้จะเป็นปัญหา (CKB Economics Paper กำลังทำงานอย่างหนัก...);

  • คำจำกัดความของสินทรัพย์สามารถปรับปรุงได้อย่างอิสระตราบเท่าที่ลอจิกล็อคของเซลล์คำจำกัดความของสินทรัพย์อนุญาต

ชื่อเรื่องรอง

Summary

โมเดลเซลล์เป็นโมเดลที่มีความเป็นนามธรรมสูง อันที่จริง คุณไม่เพียงแต่สามารถนำสินทรัพย์ชั้นหนึ่งไปใช้ในเซลล์ได้เท่านั้น แต่ยังสามารถจำลองบัญชีบนเซลล์ได้อีกด้วย จากการแนะนำของบทความนี้ เราจะเห็นว่าโมเดล Cell เป็นการออกแบบใหม่ที่แตกต่างจากโมเดล UTXO และโมเดลบัญชี นอกจากความแตกต่างในโมเดลสถานะแล้ว CKB ยังถ่ายโอนการคำนวณ (นั่นคือ การสร้างสถานะ) ไปยังภายนอกห่วงโซ่ และจำเป็นต้องตรวจสอบตรรกะของสถานะในห่วงโซ่เท่านั้น การแยกเฉพาะของแบบจำลองสถานะและการตรวจสอบการคำนวณกำหนดว่ากระบวนทัศน์และรูปแบบการออกแบบใหม่ของ DApp จะปรากฏบนแบบจำลองการเขียนโปรแกรม CKB อย่างหลีกเลี่ยงไม่ได้

ในช่วงเกือบหนึ่งปีนับตั้งแต่การจัดทำเอกสารไวท์เปเปอร์ของ CKB เสร็จสิ้น เราได้เห็นผู้คนจำนวนมากขึ้นเรื่อยๆ เริ่มให้ความสนใจและหารือเกี่ยวกับแนวคิดใหม่สองประการของ First-class State และ First-class Asset (แม้ว่าคำศัพท์ที่ทุกคนใช้จะแตกต่างกัน เหมือนกัน) เรารู้สึกตื่นเต้นมากกับการพัฒนาเหล่านี้ หากคุณสนใจที่จะพูดคุยเพิ่มเติมเกี่ยวกับ First-class State และ First-class Asset หรือมีแนวคิดที่น่าสนใจเกี่ยวกับรูปแบบการเขียนโปรแกรมของ CKB โปรดติดต่อเราเพื่อพูดคุย~

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

  • https://github.com/nervosnetwork/ckb-demo-ruby-sdk (ตัวอย่างการเขียนโปรแกรมด้วยสคริปต์ Ruby บน CKB ซึ่งเป็นรายการที่ดีที่สุดในการทำความเข้าใจโมเดลการเขียนโปรแกรมบน CKB)

  • https://github.com/nervosnetwork/ckb

  • https://github.com/nervosnetwork/ckb-vm

ขอบคุณ Ian Yang, Xuejie Xiao, Kevin Wang สำหรับความช่วยเหลือในการออกแบบโมเดล CKB และ Cell ~

ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
สรุปโดย AI
กลับไปด้านบน
สินทรัพย์ชั้นหนึ่ง ซึ่งทำให้สินทรัพย์ที่เข้ารหัสเป็น "พลเมืองชั้นหนึ่ง" ในบล็อกเชน
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android