ในโครงสร้างข้อมูล FIFO องค์ประกอบแรกที่เพิ่มในคิวจะเป็นองค์ประกอบแรกที่จะถูกลบออก ซึ่งเทียบเท่ากับข้อกำหนดที่ว่าเมื่อเพิ่มองค์ประกอบใหม่แล้ว องค์ประกอบทั้งหมดที่เพิ่มเข้ามาก่อนหน้านี้จะต้องถูกลบออกก่อนจึงจะสามารถลบองค์ประกอบใหม่ได้
ที่มา: Invostopedia
ในบริบทของสัญญาอัจฉริยะ การใช้คิว FIFO จะมีประโยชน์สำหรับหลายๆ สถานการณ์ เช่น ระบบคิวที่ยุติธรรมซึ่งทุกคนจะได้รับบริการ (หรือประมวลผล) ตามลำดับที่เข้ามา
เรามาเขียนสัญญา FIFO กันดีกว่า การดำเนินการหลักสำหรับสัญญาของเราคือ push
เพื่อเพิ่มองค์ประกอบลงในคิว และ pop
เพื่อลบองค์ประกอบออกจากคิว
สัญญาจะจัดเก็บคิวไว้ในรายการในพื้นที่จัดเก็บข้อมูล และการดำเนินการ push
ทุกครั้งจะเพิ่มองค์ประกอบต่อท้ายรายการ ในขณะที่การดำเนินการ pop
ทุกครั้งจะลบองค์ประกอบออกจากจุดเริ่มต้นของรายการ
สัญญาอาจมีลักษณะดังนี้:
Python
นำเข้า smartpy เป็น sp
@sp.module
def main():
# คลาส Fifo กำหนดสัญญาง่ายๆ ที่จัดการคำสั่งแบบพุชและป๊อป
# บนพื้นฐานเข้าก่อนออกก่อน
คลาส SimpleFifo (sp.Contract):
def __init__(ตนเอง):
self.data.first = 0
self.data.last = -1
self.data.saved = {}
@sp.entrypoint
def ป๊อป (ตัวเอง):
ยืนยัน self.data.first < self.data.last
del self.data.saved [self.data.first]
self.data.first += 1
@sp.entrypoint
def push (ตนเององค์ประกอบ):
self.data.last += 1
self.data.saved [self.data.last] = องค์ประกอบ
@sp.onchain_view
def head(self):
return self.data.saved[self.data.first]
หาก "เทมเพลต" ไม่ได้อยู่ใน __name__:
@sp.add_test(name="Fifo")
def test():
สถานการณ์ = sp.test_scenario(main)
สถานการณ์.h1("ง่าย สัญญา Fifo")
c1 = main.SimpleFifo()
สถานการณ์ += c1
c1.push(4)
c1.push(5)
c1.push(6)
c1.push(7)
c1.pop( )
สถานการณ์ ตรวจสอบ (sp.View (c1, "หัว") () == 5)
วิธีทดสอบสัญญา FIFO:
ขั้นตอนที่ 1: คัดลอกรหัสสัญญาและวางลงใน SmartPy IDE
ขั้นตอนที่ 2: คลิกปุ่ม Run
ที่ด้านบนขวาเพื่อรวบรวมและจำลองสัญญา
ขั้นตอนที่ 3: ตรวจสอบทางด้านขวาของ IDE เพื่อดูผลการจำลอง คุณจะเห็นสถานะของพื้นที่จัดเก็บตามสัญญาหลังการดำเนินการแต่ละครั้ง
ขั้นตอนที่ 4: ทดลองโดยเปลี่ยนลำดับการดำเนินการหรือเพิ่มการดำเนินการใหม่
ตอนนี้คุณได้เรียนรู้วิธีสร้างสัญญา FIFO บนบล็อคเชน Tezos แล้ว! ในบทเรียนถัดไป เราจะไปเพิ่มเติมเกี่ยวกับมุมมองแบบเรียกซ้ำ ซึ่งเป็นคุณลักษณะอันทรงพลังของ SmartPy ที่ช่วยให้สัญญาเรียกมุมมองของตนเองได้ สำรวจและเขียนโค้ดอย่างมีความสุข!
ในโครงสร้างข้อมูล FIFO องค์ประกอบแรกที่เพิ่มในคิวจะเป็นองค์ประกอบแรกที่จะถูกลบออก ซึ่งเทียบเท่ากับข้อกำหนดที่ว่าเมื่อเพิ่มองค์ประกอบใหม่แล้ว องค์ประกอบทั้งหมดที่เพิ่มเข้ามาก่อนหน้านี้จะต้องถูกลบออกก่อนจึงจะสามารถลบองค์ประกอบใหม่ได้
ที่มา: Invostopedia
ในบริบทของสัญญาอัจฉริยะ การใช้คิว FIFO จะมีประโยชน์สำหรับหลายๆ สถานการณ์ เช่น ระบบคิวที่ยุติธรรมซึ่งทุกคนจะได้รับบริการ (หรือประมวลผล) ตามลำดับที่เข้ามา
เรามาเขียนสัญญา FIFO กันดีกว่า การดำเนินการหลักสำหรับสัญญาของเราคือ push
เพื่อเพิ่มองค์ประกอบลงในคิว และ pop
เพื่อลบองค์ประกอบออกจากคิว
สัญญาจะจัดเก็บคิวไว้ในรายการในพื้นที่จัดเก็บข้อมูล และการดำเนินการ push
ทุกครั้งจะเพิ่มองค์ประกอบต่อท้ายรายการ ในขณะที่การดำเนินการ pop
ทุกครั้งจะลบองค์ประกอบออกจากจุดเริ่มต้นของรายการ
สัญญาอาจมีลักษณะดังนี้:
Python
นำเข้า smartpy เป็น sp
@sp.module
def main():
# คลาส Fifo กำหนดสัญญาง่ายๆ ที่จัดการคำสั่งแบบพุชและป๊อป
# บนพื้นฐานเข้าก่อนออกก่อน
คลาส SimpleFifo (sp.Contract):
def __init__(ตนเอง):
self.data.first = 0
self.data.last = -1
self.data.saved = {}
@sp.entrypoint
def ป๊อป (ตัวเอง):
ยืนยัน self.data.first < self.data.last
del self.data.saved [self.data.first]
self.data.first += 1
@sp.entrypoint
def push (ตนเององค์ประกอบ):
self.data.last += 1
self.data.saved [self.data.last] = องค์ประกอบ
@sp.onchain_view
def head(self):
return self.data.saved[self.data.first]
หาก "เทมเพลต" ไม่ได้อยู่ใน __name__:
@sp.add_test(name="Fifo")
def test():
สถานการณ์ = sp.test_scenario(main)
สถานการณ์.h1("ง่าย สัญญา Fifo")
c1 = main.SimpleFifo()
สถานการณ์ += c1
c1.push(4)
c1.push(5)
c1.push(6)
c1.push(7)
c1.pop( )
สถานการณ์ ตรวจสอบ (sp.View (c1, "หัว") () == 5)
วิธีทดสอบสัญญา FIFO:
ขั้นตอนที่ 1: คัดลอกรหัสสัญญาและวางลงใน SmartPy IDE
ขั้นตอนที่ 2: คลิกปุ่ม Run
ที่ด้านบนขวาเพื่อรวบรวมและจำลองสัญญา
ขั้นตอนที่ 3: ตรวจสอบทางด้านขวาของ IDE เพื่อดูผลการจำลอง คุณจะเห็นสถานะของพื้นที่จัดเก็บตามสัญญาหลังการดำเนินการแต่ละครั้ง
ขั้นตอนที่ 4: ทดลองโดยเปลี่ยนลำดับการดำเนินการหรือเพิ่มการดำเนินการใหม่
ตอนนี้คุณได้เรียนรู้วิธีสร้างสัญญา FIFO บนบล็อคเชน Tezos แล้ว! ในบทเรียนถัดไป เราจะไปเพิ่มเติมเกี่ยวกับมุมมองแบบเรียกซ้ำ ซึ่งเป็นคุณลักษณะอันทรงพลังของ SmartPy ที่ช่วยให้สัญญาเรียกมุมมองของตนเองได้ สำรวจและเขียนโค้ดอย่างมีความสุข!