มาดูคุณสมบัติหลักของ Corda และความเป็นเอกลักษณ์ของบล็อกเชนอื่น ๆ กัน:
- Corda ไม่มีสกุลเงินดิจิตอลของตัวเอง
- Corda ไม่ได้ใช้แนวคิดเรื่องการขุดและระบบ Proof-of-Work
- การถ่ายโอนข้อมูลเกิดขึ้นระหว่างคู่สัญญาในธุรกรรม/สัญญาเท่านั้น ไม่มีการออกอากาศทั่วโลกไปยังโหนดเครือข่ายทั้งหมด
- ไม่มีผู้ควบคุมส่วนกลางที่จัดการธุรกรรมทั้งหมด
- Corda สนับสนุนกลไกฉันทามติต่างๆ
- ฉันทามติจะเกิดขึ้นระหว่างผู้เข้าร่วมในระดับข้อตกลง/สัญญาแต่ละรายการ และไม่ใช่ในระดับของระบบทั้งหมด
- ธุรกรรมจะได้รับการยืนยันโดยผู้เข้าร่วมที่เกี่ยวข้องเท่านั้น
- Corda นำเสนอการเชื่อมต่อโดยตรงระหว่างภาษากฎหมายมนุษย์อย่างเป็นทางการและรหัสสัญญาอัจฉริยะ
บัญชีแยกประเภท
แนวคิดของบัญชีแยกประเภทใน Corda นั้นเป็นอัตนัย ไม่มีที่เก็บข้อมูลส่วนกลางเพียงแห่งเดียว แต่แต่ละโหนดจะรักษาฐานข้อมูลข้อเท็จจริงที่แยกจากกัน
ตัวอย่างเช่น ลองจินตนาการถึงเครือข่ายที่มี 5 โหนด โดยที่วงกลมนั้นเป็นข้อเท็จจริงที่โหนดทราบ
ดังที่เราเห็น เอ็ด คาร์ล และเดมีรู้เกี่ยวกับข้อเท็จจริง 3 แต่อลิซและบ็อบไม่รู้ด้วยซ้ำ Corda รับประกันว่าข้อเท็จจริงทั่วไปจะถูกจัดเก็บไว้ในฐานข้อมูลของแต่ละโหนด และข้อมูลจะเหมือนกัน
รัฐ
รัฐอยู่ ไม่เปลี่ยนรูป วัตถุที่แสดงถึงข้อเท็จจริงที่โหนดเครือข่ายตั้งแต่หนึ่งโหนดขึ้นไปทราบ ณ จุดใดจุดหนึ่ง
รัฐสามารถจัดเก็บข้อมูลตามอำเภอใจได้ เช่น หุ้น พันธบัตร เงินกู้ ข้อมูลระบุตัวตน
ตัวอย่างเช่น สถานะต่อไปนี้แสดงถึง IOU ซึ่งเป็นข้อตกลงที่อลิซเป็นหนี้ Bob เป็นจำนวน X:
วงจรชีวิตของข้อเท็จจริงในช่วงเวลาหนึ่งจะแสดงด้วยลำดับสถานะ เมื่อจำเป็นต้องอัปเดตสถานะปัจจุบัน เราจะสร้างสถานะใหม่และทำเครื่องหมายสถานะปัจจุบันเป็นข้อมูลในอดีต
การทำธุรกรรม
ธุรกรรมเป็นข้อเสนอเพื่ออัพเดตบัญชีแยกประเภท สิ่งเหล่านี้ไม่ได้เผยแพร่ไปยังผู้เข้าร่วมบัญชีแยกประเภททั้งหมดและพร้อมใช้งานสำหรับผู้เข้าร่วมเครือข่ายที่มีสิทธิ์ตามกฎหมายในการดูและจัดการพวกเขาเท่านั้น
ธุรกรรมจะถูกเพิ่มลงในบัญชีแยกประเภทหาก:
- ถูกต้องตามสัญญา
- ลงนามโดยผู้เข้าร่วมที่จำเป็นทั้งหมด
- ไม่มีการใช้จ่ายซ้ำซ้อน
Corda ใช้โมเดล UTXO (เอาต์พุตธุรกรรมที่ยังไม่ได้ใช้) ซึ่งสถานะบัญชีแยกประเภทแต่ละสถานะจะไม่เปลี่ยนรูป
เมื่อสร้างธุรกรรม สถานะเอาต์พุตของธุรกรรมก่อนหน้า (ตามแฮชและดัชนี) จะถูกโอนไปยังอินพุต
วงจรชีวิตของธุรกรรม:
- การสร้าง (ขณะนี้ธุรกรรมเป็นเพียงข้อเสนอเพื่ออัพเดตบัญชีแยกประเภท)
- รวบรวมลายเซ็น (ฝ่ายที่ต้องการในธุรกรรมอนุมัติข้อเสนอการอัปเดตโดยเพิ่มลายเซ็นในธุรกรรม)
- ยืนยันธุรกรรมไปยังบัญชีแยกประเภท
เมื่อธุรกรรมถูกเพิ่มลงในบัญชีแยกประเภท สถานะอินพุตจะถูกทำเครื่องหมายเป็นประวัติและไม่สามารถใช้ในธุรกรรมในอนาคตได้
นอกเหนือจากสถานะอินพุตและเอาต์พุตแล้ว ธุรกรรมอาจประกอบด้วย:
- คำสั่ง (พารามิเตอร์ธุรกรรมที่ระบุวัตถุประสงค์ของธุรกรรม)
- ไฟล์แนบ (ปฏิทินวันหยุด, ตัวแปลงสกุลเงิน)
- กรอบเวลา (ระยะเวลาที่มีผล)
- ทนายความ (ทนายความ ผู้เข้าร่วมเครือข่ายพิเศษตรวจสอบธุรกรรม)
สัญญา
เมื่อเราพูดถึงความถูกต้องของธุรกรรม เราหมายถึงไม่เพียงแต่การมีอยู่ของลายเซ็นที่จำเป็น แต่ยังรวมถึงความถูกต้องตามสัญญาด้วย แต่ละธุรกรรมเชื่อมโยงกับสัญญาที่ยอมรับและตรวจสอบสถานะอินพุตและเอาต์พุต ธุรกรรมจะถือว่าถูกต้องก็ต่อเมื่อสถานะทั้งหมดถูกต้อง
สัญญาใน Corda เขียนด้วยภาษา JVM ใดก็ได้ (เช่น Java, Kotlin)
class CommercialPaper : Contract {
override fun verify(tx: LedgerTransaction) {
TODO()
}
}
มีความจำเป็นต้องสืบทอดจากคลาส สัญญา และแทนที่วิธีการ ตรวจสอบ. หากธุรกรรมไม่ถูกต้อง จะมีการยกเว้นข้อยกเว้น
การตรวจสอบความถูกต้องของธุรกรรมจะต้องถูกกำหนดไว้ เช่น สัญญาจะต้องยอมรับหรือปฏิเสธธุรกรรมเสมอ ด้วยเหตุนี้ความถูกต้องของธุรกรรมจึงไม่สามารถขึ้นอยู่กับเวลา หมายเลขสุ่ม ไฟล์โฮสต์ ฯลฯ
ใน Corda สัญญาจะดำเนินการในสิ่งที่เรียกว่าแซนด์บ็อกซ์ ซึ่งเป็น JVM ที่ได้รับการแก้ไขเล็กน้อยซึ่งรับประกันการดำเนินการตามสัญญาตามที่กำหนด
สตรีม
เพื่อทำให้การสื่อสารระหว่างโหนดเครือข่ายเป็นแบบอัตโนมัติ เธรดจึงถูกเพิ่มเข้าไป
โฟลว์คือลำดับของขั้นตอนที่บอกโหนดถึงวิธีการดำเนินการอัพเดตบัญชีแยกประเภทเฉพาะ และจุดที่ธุรกรรมจำเป็นต้องลงนามและตรวจสอบความถูกต้อง
บางครั้งอาจต้องใช้เวลาเป็นชั่วโมงหรือเป็นวันจนกว่าทุกฝ่ายจะลงนามธุรกรรมและเข้าสู่บัญชีแยกประเภท จะเกิดอะไรขึ้นหากคุณยกเลิกการเชื่อมต่อโหนดที่เข้าร่วมในการทำธุรกรรม? เธรดมีจุดตรวจสอบซึ่งสถานะของเธรดจะถูกเขียนไปยังฐานข้อมูลของโหนด เมื่อโหนดถูกกู้คืนไปยังเครือข่าย โหนดจะดำเนินการต่อจากจุดที่ค้างไว้
ฉันทามติ
ในการเข้าสู่บัญชีแยกประเภท ธุรกรรมจะต้องได้รับความเห็นพ้องต้องกัน 2 ประการ: ความถูกต้องและความเป็นเอกลักษณ์
การตัดสินใจเกี่ยวกับความถูกต้องของธุรกรรมจะกระทำโดยฝ่ายที่เกี่ยวข้องโดยตรงเท่านั้น
โหนดโนตารีตรวจสอบธุรกรรมเพื่อดูความเป็นเอกลักษณ์และป้องกันการใช้จ่ายซ้ำซ้อน
สมมติว่า Bob มีเงิน $100 และต้องการโอนเงิน $80 ให้ Charlie และ $70 ให้ Dan โดยใช้สถานะอินพุตเดียวกัน
Corda จะไม่ยอมให้คุณใช้กลอุบายดังกล่าว แม้ว่าธุรกรรมจะผ่านการตรวจสอบความถูกต้อง แต่การตรวจสอบเอกลักษณ์จะล้มเหลว
ข้อสรุป
แพลตฟอร์ม Corda ที่พัฒนาโดยกลุ่มความร่วมมือบล็อกเชน R3 ไม่ใช่กรณีการใช้งานเทคโนโลยีบล็อกเชนเพียงอย่างเดียว Corda เป็นเครื่องมือเฉพาะทางสำหรับสถาบันการเงิน
ที่มา: will.com