Multisig Lambda Contract เป็นการก้าวกระโดดครั้งสำคัญในการเขียนโปรแกรมสัญญาอัจฉริยะเนื่องจากการใช้ประเภท sp.lambda
โดยนำเสนอความเป็นไปได้ในการดำเนินการฟังก์ชันตามอำเภอใจที่ไม่ได้กำหนดไว้ล่วงหน้า ณ เวลาที่ปรับใช้สัญญา ต่อไปนี้เป็นภาพรวมโดยละเอียดของส่วนประกอบหลัก:
พารามิเตอร์เริ่มต้น: สัญญาเริ่มต้นแล้ว (__init__
) โดยมีรายชื่อสมาชิกที่ได้รับอนุญาตให้เสนอและลงนามข้อเสนอ และจำนวนลายเซ็นขั้นต่ำที่จำเป็นในการดำเนินการข้อเสนอ สิ่งเหล่านี้ถูกเก็บไว้ในที่เก็บข้อมูลของสัญญา (self.data
) สร้างบันทึกอ้างอิงสำหรับสัญญาในการดำเนินการ
ฟังก์ชั่นเสนอ: ฟังก์ชั่น propose
ทำหน้าที่สร้างข้อเสนอใหม่ สมาชิกสามารถส่งฟังก์ชัน lambda (ประกอบด้วยการดำเนินการตามอำเภอใจ) ที่ต้องการให้ดำเนินการตามสัญญาได้ ข้อเสนอเหล่านี้ถูกจัดเก็บไว้ในโครงสร้างข้อมูล big_map
โดยแต่ละข้อเสนอจะมีตัวระบุที่ไม่ซ้ำกัน
ฟังก์ชั่นการลงนาม: ฟังก์ชั่น sign
อำนวยความสะดวกในการรับรองข้อเสนอ สมาชิกสามารถลงนามสนับสนุนข้อเสนอได้ ลายเซ็นเหล่านี้ ซึ่งแนบมากับตัวระบุข้อเสนอที่ไม่ซ้ำกัน จะถูกรวบรวมและดูแลรักษาใน big_map
ที่แยกต่างหาก
ดำเนินการฟังก์ชัน: ฟังก์ชัน execute
การแสดงถึงปมของการดำเนินงานของสัญญา หากข้อเสนอรวบรวมลายเซ็นตามจำนวนที่ต้องการ สมาชิกสามารถเรียกใช้ฟังก์ชันนี้เพื่อดำเนินการฟังก์ชัน lambda ที่เสนอ โดยนำไปใช้กับพื้นที่จัดเก็บของสัญญา
Multisig Lambda Contract นำเสนอความหลากหลายที่หลากหลาย เหมาะสำหรับสถานการณ์ที่ต้องการโครงสร้างการควบคุมที่ซับซ้อน ยืดหยุ่น และอาจมีไดนามิก เช่น DAO (องค์กรอิสระแบบกระจายอำนาจ) บริการกระเป๋าเงินที่มีเจ้าของหลายราย และโปรโตคอล DeFi ที่ซับซ้อน
สัญญานี้กำหนดให้มีการดำเนินการฟังก์ชัน lambda โดยพลการพร้อมลายเซ็นหลายลายเซ็น โดยจะแนะนำแนวคิดในการส่งและลงนามฟังก์ชัน lambda มาดูฟังก์ชั่นของมันกัน:
send_lambda: ฟังก์ชันนี้อนุญาตให้สมาชิกส่งฟังก์ชัน lambda ไปยังสัญญาได้ นี่เป็นการนำเสนอการดำเนินการตามสัญญาที่ต้องได้รับการอนุมัติหลายลายเซ็น ในแผงด้านขวาของ SmartPy IDE เมื่อส่งฟังก์ชัน lambda สำเร็จ คุณจะสังเกตเห็นธุรกรรมใหม่ที่เริ่มต้นโดยที่อยู่ของผู้ส่งไปยังที่อยู่ของสัญญา
vote_lambda: ฟังก์ชั่นนี้อนุญาตให้สมาชิกลงคะแนนเสียง (ลายเซ็น) เพื่อสนับสนุนฟังก์ชันแลมบ์ดาที่ส่งมา หลังจากการลงคะแนน ในแผง IDE คุณจะสังเกตเห็นธุรกรรมใหม่จากที่อยู่ของสมาชิกไปยังที่อยู่ของสัญญา
MultisigAction Contract นำกลไกการลงคะแนนเสียงแบบประชาธิปไตยมาสู่ขอบเขตของสัญญาอัจฉริยะ ในรูปแบบนี้ สมาชิกเสนอการดำเนินการที่เฉพาะเจาะจง ลงคะแนน และดำเนินการเมื่อถึงองค์ประชุม สัญญานี้นำเสนอการผสมผสานระหว่างฉันทามติของมนุษย์กับการดำเนินการตามสัญญาแบบอัตโนมัติ ซึ่งบังคับใช้การควบคุมพฤติกรรมของสัญญาตามระบอบประชาธิปไตย
ส่วนประกอบหลักของสัญญานี้คือ:
พารามิเตอร์เริ่มต้น: เช่นเดียวกับในสัญญา Lambda MultisigAction Contract จะนำรายชื่อสมาชิกและจำนวนคะแนนเสียงที่ต้องการในระหว่างการเริ่มต้น
เสนอฟังก์ชันการดำเนินการ: ฟังก์ชันนี้ทำหน้าที่เพื่อเพิ่มข้อเสนอใหม่ สมาชิกสามารถส่งการดำเนินการที่กำหนดไว้ล่วงหน้าในสัญญา โดยเชื่อมโยงกับตัวระบุที่ไม่ซ้ำกัน การดำเนินการที่เสนอเหล่านี้จะถูกจัดเก็บไว้ใน big_map
ฟังก์ชั่นการลงคะแนนเสียง: ฟังก์ชั่นนี้ออกแบบมาเพื่อลงคะแนนเสียงสนับสนุนการดำเนินการที่เสนอ คะแนนโหวตจะเชื่อมโยงกับตัวระบุที่ไม่ซ้ำของข้อเสนอ และเก็บไว้ใน big_map
ที่แตกต่างกัน
ดำเนินการฟังก์ชันการดำเนินการ: ฟังก์ชันนี้จะมีผลเมื่อข้อเสนอได้รับคะแนนเสียงเพียงพอ สมาชิกสามารถเรียกใช้ฟังก์ชันนี้เพื่อดำเนินการตามที่เสนอได้
MultisigAction Contract เหมาะสำหรับสถานการณ์ที่กลุ่มบุคคลจำเป็นต้องได้รับความเห็นพ้องต้องกันในการดำเนินการตามสัญญาที่เฉพาะเจาะจง เช่น ใน DAO ที่สมาชิกลงคะแนนในการจัดสรรทรัพยากรหรือการเปลี่ยนแปลงโปรโตคอล
send_proposal: นี่คือกระบวนการเสนอการดำเนินการใหม่ ในบริบทของตัวอย่างของเรา สมาชิกกำลังเสนอให้เพิ่มผู้ลงนามใหม่ในสัญญา
เมื่อดำเนินการนี้บน SmartPy IDE คุณจะเห็นธุรกรรมใหม่ถูกสร้างขึ้นในแผงด้านขวาของ IDE สรุปธุรกรรมจะระบุผู้ส่ง (ที่อยู่ของสมาชิกผู้เสนอ) และผู้รับ (ที่อยู่ของสัญญา) อาจมีลักษณะดังนี้:
ที่นี่ สถานะ 'ตกลง' แสดงว่าส่งข้อเสนอสำเร็จแล้ว
vote_proposal: ขั้นตอนต่อไปคือการโหวตข้อเสนอ ฟังก์ชันนี้ช่วยให้ผู้ลงนามที่มีอยู่สามารถลงคะแนนในข้อเสนอที่ส่งมาในขั้นตอนก่อนหน้าได้
เมื่อผู้ลงนาม 1 โหวตสำหรับข้อเสนอ คุณจะเห็นธุรกรรมใหม่ โดยมีผู้ลงนาม 1 เป็นผู้ส่งและสัญญาเป็นผู้รับ ธุรกรรมที่คล้ายกันจะถูกบันทึกเมื่อผู้ลงนาม 2 โหวตสำหรับข้อเสนอ:
ธุรกรรมเหล่านี้บ่งชี้ว่าทั้งผู้ลงนาม 1 และผู้ลงนาม 2 ได้ลงคะแนนเสียงสำหรับข้อเสนอสำเร็จแล้ว
MultisigView Contract นำเสนอแนวคิดที่เป็นเอกฉันท์ประชาธิปไตย แต่นำไปใช้กับไบต์ที่กำหนดเองแทนการดำเนินการตามสัญญาที่กำหนดไว้ล่วงหน้า สัญญานี้เปิดช่องทางให้สามารถบรรลุฉันทามติเกี่ยวกับข้อมูลที่แสดงเป็นไบต์ โดยไม่ต้องนำไปสู่การดำเนินการทันที
โครงสร้างหลักของสัญญานี้คือ:
พารามิเตอร์เริ่มต้น: เช่นเดียวกับสัญญาก่อนหน้านี้ สัญญา MultisigView จะเริ่มต้นด้วยรายชื่อสมาชิกและตัวเลขที่ระบุคะแนนโหวตที่ต้องการ
ฟังก์ชั่นส่งข้อเสนอ: ฟังก์ชั่นนี้ช่วยให้สมาชิกแนะนำข้อเสนอใหม่ในรูปแบบของไบต์ที่กำหนดเอง ไบต์จะถูกจัดเก็บไว้ใน big_map
ซึ่งจัดทำดัชนีโดยไบต์นั้นเอง ซึ่งแสดงถึงตัวระบุข้อเสนอที่ไม่ซ้ำกัน
ฟังก์ชั่นข้อเสนอการลงคะแนนเสียง: ฟังก์ชั่นนี้อนุญาตให้สมาชิกรับรองข้อเสนอได้ การโหวตจะถูกติดตามใน big_map
แยกต่างหาก ซึ่งเชื่อมโยงกับตัวระบุไบต์ที่ไม่ซ้ำกันของข้อเสนอ
ฟังก์ชันที่ได้รับการโหวต: ฟังก์ชันนี้ ซึ่งเป็นมุมมองออนไลน์ ตรวจสอบว่าข้อเสนอได้รับการโหวตตามที่ต้องการหรือไม่ โดยจะส่งกลับค่าบูลีนที่ระบุสถานะการลงคะแนนเสียงของข้อเสนอ
MultisigView Contract มีประโยชน์อย่างยิ่งในกรณีที่ Smart Contract จำเป็นต้องเก็บรักษาบันทึกข้อเสนอที่ได้รับอนุมัติ เช่น ในแอปพลิเคชันการเข้ารหัสที่ไบต์สามารถแสดงถึงข้อตกลงที่แฮช หลักฐาน หรือข้อมูลรูปแบบอื่นใดที่ต้องได้รับการอนุมัติโดยรวม
Multisig Lambda Contract เป็นการก้าวกระโดดครั้งสำคัญในการเขียนโปรแกรมสัญญาอัจฉริยะเนื่องจากการใช้ประเภท sp.lambda
โดยนำเสนอความเป็นไปได้ในการดำเนินการฟังก์ชันตามอำเภอใจที่ไม่ได้กำหนดไว้ล่วงหน้า ณ เวลาที่ปรับใช้สัญญา ต่อไปนี้เป็นภาพรวมโดยละเอียดของส่วนประกอบหลัก:
พารามิเตอร์เริ่มต้น: สัญญาเริ่มต้นแล้ว (__init__
) โดยมีรายชื่อสมาชิกที่ได้รับอนุญาตให้เสนอและลงนามข้อเสนอ และจำนวนลายเซ็นขั้นต่ำที่จำเป็นในการดำเนินการข้อเสนอ สิ่งเหล่านี้ถูกเก็บไว้ในที่เก็บข้อมูลของสัญญา (self.data
) สร้างบันทึกอ้างอิงสำหรับสัญญาในการดำเนินการ
ฟังก์ชั่นเสนอ: ฟังก์ชั่น propose
ทำหน้าที่สร้างข้อเสนอใหม่ สมาชิกสามารถส่งฟังก์ชัน lambda (ประกอบด้วยการดำเนินการตามอำเภอใจ) ที่ต้องการให้ดำเนินการตามสัญญาได้ ข้อเสนอเหล่านี้ถูกจัดเก็บไว้ในโครงสร้างข้อมูล big_map
โดยแต่ละข้อเสนอจะมีตัวระบุที่ไม่ซ้ำกัน
ฟังก์ชั่นการลงนาม: ฟังก์ชั่น sign
อำนวยความสะดวกในการรับรองข้อเสนอ สมาชิกสามารถลงนามสนับสนุนข้อเสนอได้ ลายเซ็นเหล่านี้ ซึ่งแนบมากับตัวระบุข้อเสนอที่ไม่ซ้ำกัน จะถูกรวบรวมและดูแลรักษาใน big_map
ที่แยกต่างหาก
ดำเนินการฟังก์ชัน: ฟังก์ชัน execute
การแสดงถึงปมของการดำเนินงานของสัญญา หากข้อเสนอรวบรวมลายเซ็นตามจำนวนที่ต้องการ สมาชิกสามารถเรียกใช้ฟังก์ชันนี้เพื่อดำเนินการฟังก์ชัน lambda ที่เสนอ โดยนำไปใช้กับพื้นที่จัดเก็บของสัญญา
Multisig Lambda Contract นำเสนอความหลากหลายที่หลากหลาย เหมาะสำหรับสถานการณ์ที่ต้องการโครงสร้างการควบคุมที่ซับซ้อน ยืดหยุ่น และอาจมีไดนามิก เช่น DAO (องค์กรอิสระแบบกระจายอำนาจ) บริการกระเป๋าเงินที่มีเจ้าของหลายราย และโปรโตคอล DeFi ที่ซับซ้อน
สัญญานี้กำหนดให้มีการดำเนินการฟังก์ชัน lambda โดยพลการพร้อมลายเซ็นหลายลายเซ็น โดยจะแนะนำแนวคิดในการส่งและลงนามฟังก์ชัน lambda มาดูฟังก์ชั่นของมันกัน:
send_lambda: ฟังก์ชันนี้อนุญาตให้สมาชิกส่งฟังก์ชัน lambda ไปยังสัญญาได้ นี่เป็นการนำเสนอการดำเนินการตามสัญญาที่ต้องได้รับการอนุมัติหลายลายเซ็น ในแผงด้านขวาของ SmartPy IDE เมื่อส่งฟังก์ชัน lambda สำเร็จ คุณจะสังเกตเห็นธุรกรรมใหม่ที่เริ่มต้นโดยที่อยู่ของผู้ส่งไปยังที่อยู่ของสัญญา
vote_lambda: ฟังก์ชั่นนี้อนุญาตให้สมาชิกลงคะแนนเสียง (ลายเซ็น) เพื่อสนับสนุนฟังก์ชันแลมบ์ดาที่ส่งมา หลังจากการลงคะแนน ในแผง IDE คุณจะสังเกตเห็นธุรกรรมใหม่จากที่อยู่ของสมาชิกไปยังที่อยู่ของสัญญา
MultisigAction Contract นำกลไกการลงคะแนนเสียงแบบประชาธิปไตยมาสู่ขอบเขตของสัญญาอัจฉริยะ ในรูปแบบนี้ สมาชิกเสนอการดำเนินการที่เฉพาะเจาะจง ลงคะแนน และดำเนินการเมื่อถึงองค์ประชุม สัญญานี้นำเสนอการผสมผสานระหว่างฉันทามติของมนุษย์กับการดำเนินการตามสัญญาแบบอัตโนมัติ ซึ่งบังคับใช้การควบคุมพฤติกรรมของสัญญาตามระบอบประชาธิปไตย
ส่วนประกอบหลักของสัญญานี้คือ:
พารามิเตอร์เริ่มต้น: เช่นเดียวกับในสัญญา Lambda MultisigAction Contract จะนำรายชื่อสมาชิกและจำนวนคะแนนเสียงที่ต้องการในระหว่างการเริ่มต้น
เสนอฟังก์ชันการดำเนินการ: ฟังก์ชันนี้ทำหน้าที่เพื่อเพิ่มข้อเสนอใหม่ สมาชิกสามารถส่งการดำเนินการที่กำหนดไว้ล่วงหน้าในสัญญา โดยเชื่อมโยงกับตัวระบุที่ไม่ซ้ำกัน การดำเนินการที่เสนอเหล่านี้จะถูกจัดเก็บไว้ใน big_map
ฟังก์ชั่นการลงคะแนนเสียง: ฟังก์ชั่นนี้ออกแบบมาเพื่อลงคะแนนเสียงสนับสนุนการดำเนินการที่เสนอ คะแนนโหวตจะเชื่อมโยงกับตัวระบุที่ไม่ซ้ำของข้อเสนอ และเก็บไว้ใน big_map
ที่แตกต่างกัน
ดำเนินการฟังก์ชันการดำเนินการ: ฟังก์ชันนี้จะมีผลเมื่อข้อเสนอได้รับคะแนนเสียงเพียงพอ สมาชิกสามารถเรียกใช้ฟังก์ชันนี้เพื่อดำเนินการตามที่เสนอได้
MultisigAction Contract เหมาะสำหรับสถานการณ์ที่กลุ่มบุคคลจำเป็นต้องได้รับความเห็นพ้องต้องกันในการดำเนินการตามสัญญาที่เฉพาะเจาะจง เช่น ใน DAO ที่สมาชิกลงคะแนนในการจัดสรรทรัพยากรหรือการเปลี่ยนแปลงโปรโตคอล
send_proposal: นี่คือกระบวนการเสนอการดำเนินการใหม่ ในบริบทของตัวอย่างของเรา สมาชิกกำลังเสนอให้เพิ่มผู้ลงนามใหม่ในสัญญา
เมื่อดำเนินการนี้บน SmartPy IDE คุณจะเห็นธุรกรรมใหม่ถูกสร้างขึ้นในแผงด้านขวาของ IDE สรุปธุรกรรมจะระบุผู้ส่ง (ที่อยู่ของสมาชิกผู้เสนอ) และผู้รับ (ที่อยู่ของสัญญา) อาจมีลักษณะดังนี้:
ที่นี่ สถานะ 'ตกลง' แสดงว่าส่งข้อเสนอสำเร็จแล้ว
vote_proposal: ขั้นตอนต่อไปคือการโหวตข้อเสนอ ฟังก์ชันนี้ช่วยให้ผู้ลงนามที่มีอยู่สามารถลงคะแนนในข้อเสนอที่ส่งมาในขั้นตอนก่อนหน้าได้
เมื่อผู้ลงนาม 1 โหวตสำหรับข้อเสนอ คุณจะเห็นธุรกรรมใหม่ โดยมีผู้ลงนาม 1 เป็นผู้ส่งและสัญญาเป็นผู้รับ ธุรกรรมที่คล้ายกันจะถูกบันทึกเมื่อผู้ลงนาม 2 โหวตสำหรับข้อเสนอ:
ธุรกรรมเหล่านี้บ่งชี้ว่าทั้งผู้ลงนาม 1 และผู้ลงนาม 2 ได้ลงคะแนนเสียงสำหรับข้อเสนอสำเร็จแล้ว
MultisigView Contract นำเสนอแนวคิดที่เป็นเอกฉันท์ประชาธิปไตย แต่นำไปใช้กับไบต์ที่กำหนดเองแทนการดำเนินการตามสัญญาที่กำหนดไว้ล่วงหน้า สัญญานี้เปิดช่องทางให้สามารถบรรลุฉันทามติเกี่ยวกับข้อมูลที่แสดงเป็นไบต์ โดยไม่ต้องนำไปสู่การดำเนินการทันที
โครงสร้างหลักของสัญญานี้คือ:
พารามิเตอร์เริ่มต้น: เช่นเดียวกับสัญญาก่อนหน้านี้ สัญญา MultisigView จะเริ่มต้นด้วยรายชื่อสมาชิกและตัวเลขที่ระบุคะแนนโหวตที่ต้องการ
ฟังก์ชั่นส่งข้อเสนอ: ฟังก์ชั่นนี้ช่วยให้สมาชิกแนะนำข้อเสนอใหม่ในรูปแบบของไบต์ที่กำหนดเอง ไบต์จะถูกจัดเก็บไว้ใน big_map
ซึ่งจัดทำดัชนีโดยไบต์นั้นเอง ซึ่งแสดงถึงตัวระบุข้อเสนอที่ไม่ซ้ำกัน
ฟังก์ชั่นข้อเสนอการลงคะแนนเสียง: ฟังก์ชั่นนี้อนุญาตให้สมาชิกรับรองข้อเสนอได้ การโหวตจะถูกติดตามใน big_map
แยกต่างหาก ซึ่งเชื่อมโยงกับตัวระบุไบต์ที่ไม่ซ้ำกันของข้อเสนอ
ฟังก์ชันที่ได้รับการโหวต: ฟังก์ชันนี้ ซึ่งเป็นมุมมองออนไลน์ ตรวจสอบว่าข้อเสนอได้รับการโหวตตามที่ต้องการหรือไม่ โดยจะส่งกลับค่าบูลีนที่ระบุสถานะการลงคะแนนเสียงของข้อเสนอ
MultisigView Contract มีประโยชน์อย่างยิ่งในกรณีที่ Smart Contract จำเป็นต้องเก็บรักษาบันทึกข้อเสนอที่ได้รับอนุมัติ เช่น ในแอปพลิเคชันการเข้ารหัสที่ไบต์สามารถแสดงถึงข้อตกลงที่แฮช หลักฐาน หรือข้อมูลรูปแบบอื่นใดที่ต้องได้รับการอนุมัติโดยรวม