แต่ Coin set model จะทำ transaction ไม่เหมือนแบบ Account Model ... เรามาดูตัวอย่างจากรูปกัน โดยเริ่มต้นจาก state n … ดูรูปประกอบคำอธิบาย
ณ state n …. Account A มี coin ที่ unspent อยู่ 20 unit …
unspent หรือภาษา account model คือยอด balance นั้นเอง
ตัวเลข n หมายถึงตัวเลขใดๆ ก็ได้… เนื่องจากเราไม่ได้อยากรู้ว่าเงิน 20 unit มีที่มาจากไหน … เราจึงตั้งต้นที่ ณ state นี้และเรียกว่าลำดับที่ n
ณ state (n+1) หรือลำดับที่ n+1 …. Account A โอนเงินไปให้ Account B จำนวน 8 unit … coin unspent ของ Account A จึงเหลือ 12 และ blockchain จะสร้าง coin ใหม่ให้ Account B โดยมี unspent เหลือ 8 unit … ณ ตอนนี้จะมี state เกิดขึ้น 2 state แล้วน่ะครับคือ state ที่ n+1 ของ Account A และ state ที่ 1 ของ Account B ที่ได้รับเงินมาจาก Account A …
จนถึงตรงนี้ยังไม่ งง น่ะ …
ต่อไป ณ state (n+2) Account A โอนเงินไปให้ Account B อีก 2 unit ดัง
นั้น coin ของ Account A จึงเหลือ unspent เท่ากับ 10 ….. highlight อยู่ที่ Account B … Account B จะมี coin เพิ่มมาอีก 1 coin … blockchain ไม่ได้เอาเงินจำนวน 2 unit ไปรวมกันกับ coin ที่ 1 ของ Account B น่ะครับ … ดูรูปประกอบที่ state (n+2) จะเห็นว่า Account B มี coin ทั้งหมด 2 อันคือ unspent 8 unit กับ unspent 2 unit …. แต่ coin ของ Account A ยังมีแค่ 1 coin เหมือนเดิม
ถ้ายังไม่เข้าใจอย่าเพิ่งไปดู state (n+3) เพราะจะยิ่ง งง เข้าไปอีก 5555 .. ลองย้อนอ่านอีกสักรอบน่ะครับ
ถ้าเข้าใจแล้ว … มาดูที่ state (n+3) … ณ ตอนนี้ chialisp จะเข้ามามีบทบาทแล้วครับ … เงื่อนไขคือว่า Account A จะโอนเงินไปให้ Account C จำนวน 5 unit แต่จะโอนก็ต่อเมื่อ Account B โอนเงินมาให้ Account A จำนวน 1 unit ก่อน …
ถ้า Account B ยังไม่โอนเงิน … แต่ Account A ใช้เงินไปอย่างอื่นจนเงิน unspent เหลือ 1 unit … เมื่อ Account B โอนเงินมาให้ Account A จำนวน 1 unit ตามเงื่อนไขที่ระบุ แต่ Account A ไม่สามารถโอนเงินได้แล้วเพราะเงินเหลือไม่พอ … ที่นี้จะยุ่งแล้วล่ะครับเพราะ transaction ระหว่าง B->A->C ต้องยกเลิกทั้งหมด … ซึ่ง Account A ก็แค่โอนเงินคืนกลับไปให้ Account B จำนวน 1 unit ก็ถือว่าเป็นการยกเลิกได้เหมือนกัน … แต่ถ้าเงื่อนไขที่ซับซ้อนกว่านั้นหรือ Account A ชักดาบไม่ยอมโอนเงินคืนล่ะ … อืมมมม มันคงวุ่นวายน่าดู
chialisp จึงเข้ามามีบทบาทโดยที่ state (n+3) Account A ทำการสร้าง colored coin ที่มีจำนวน 5 unit และเขียน chialisp ลงไปใน coin ว่าจะโอนเงินไปให้ Account C ทั้งหมดใน colored coin แต่จะโอนก็ต่อเมื่อ Account B โอนเงินมาให้ จำนวน 1 unit ก่อนน่ะ … ดังนั้นในระหว่างที่รอ Account B โอนเงิน … เงินของ Account A จำนวน 5 unit ก็โดน lock เรียบร้อย โดยถือว่าเป็น uncompleted transaction … เมื่อ Account B โอนเงินจำนวน 1 unit มาให้ Account A … chialisp ก็จะ execute การโอนเงินไปให้ Account C ทันที …