レッスン3

การสร้างเครื่องคำนวณสัญญาอัจฉริยะ

ในบทนี้ เราจะขยายความเข้าใจของคุณเกี่ยวกับ SmartPy และวิธีการโต้ตอบกับบล็อกเชน Tezos ต่อไปโดยการสร้างเครื่องคิดเลขพื้นฐาน สัญญานี้จะมีฟังก์ชันสำหรับการบวก ลบ คูณ และหาร

ทฤษฎี

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

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

นอกจากนี้ โปรดจำไว้ว่าเนื่องจากบล็อกเชนของ Tezos มีการกระจายอำนาจ การคำนวณทั้งหมดจึงควรมีการกำหนดไว้ ซึ่งหมายความว่าการดำเนินการเช่นการแบ่งอาจทำงานแตกต่างไปจากที่คุณคุ้นเคยเล็กน้อย ตัวอย่างเช่น การหารในสัญญา Tezos คือการหารจำนวนเต็ม ดังนั้น 3 หารด้วย 2 จะให้ 1 ไม่ใช่ 1.5

ใช้ได้จริง

ด้านล่างนี้เป็นรหัสสัญญาสำหรับเครื่องคิดเลข สัญญา Calculator จะจัดเก็บผลลัพธ์ของการดำเนินการไว้ในพื้นที่จัดเก็บข้อมูล แต่ละจุดเข้ารับหนึ่งพารามิเตอร์และดำเนินการกับผลลัพธ์ที่เก็บไว้และพารามิเตอร์อินพุต

Python 
 นำเข้า smartpy เป็น sp 


 @sp.module 
 def main(): 
 คลาสเครื่องคิดเลข (sp.Contract): 
 def __init__(ตนเอง): 
 self.data.result = 0 

 @sp.entrypoint 
 def คูณ (ตัวเอง, x, y): 
 self.data.result = x * y 

 @sp.entrypoint 
 def เพิ่ม (ตัวเอง, x, y): 
 self.data.result = x + y 

 @sp.entrypoint 
 def square(self, x): 
 self.data.result = x * x 

 @sp.entrypoint 
 def squareRoot(self, x): 
 ยืนยัน x >= 0 
 y = x 
 ในขณะที่ y * y > x : 
 y = (x / y + y) / 2 
 ยืนยัน y * y <= x และ x < (y + 1) * (y + 1) 
 self.data.result = y 

 @sp.entrypoint 
 def factorial(self, x): 
 self.data.result = 1 
 สำหรับ y อยู่ในช่วง (1, x + 1): 
 self.data.result *= y 

 @sp.entrypoint 
 def log2(self, x) : 
 ยืนยัน x > 0, "อินพุตต้องมากกว่า 0" 

 self.data.result = 0 # เริ่มต้นตัวนับ 

 ถ้า x < 1: # สำหรับ 0 < x < 1 ช่วง 
 y = x 
 ในขณะที่ y < 1: 
 self.data.result -= 1 # ลดค่าตัวนับ 
 y *= 2 # คูณ y ด้วย 2 จนกระทั่ง y >= 1 
 else: # สำหรับ x >= 1 
 y = x 
 ในขณะที่ y >= 2: 
 self.data.result += 1 # เพิ่มตัวนับ 
 y /= 2 # หาร y ด้วย 2 


 ถ้า "เทมเพลต" ไม่อยู่ใน __name__: 

 @sp.add_test(name="Calculator") 
 def test( ): 
 c1 = main.Calculator() 
 สถานการณ์ = sp.test_scenario(main)
        Scenario.h1("เครื่องคิดเลข")
        สถานการณ์ += c1 
 c1.multiply(x=2, y=5) 
 c1.add(x=2, y=5) 
 c1.add(x=2, y=5) 
 c1.square(12) 
 c1.squareRoot(0) 
 c1.squareRoot(1234) 
 c1.factorial(100) 
 c1.log2(c1.data.result)
        สถานการณ์ ตรวจสอบ (c1.data.result == 524)

มาเริ่มทำสัญญานี้กันเถอะ!

ขั้นตอนที่ 1: วางรหัสสัญญาลงใน SmartPy IDE

ขั้นตอนที่ 2: คลิกที่ปุ่ม Run ที่ด้านบนขวาเพื่อรวบรวมและจำลองสัญญา

ขั้นตอนที่ 3: สังเกตผลการจำลองทางด้านขวาของ IDE คุณสามารถดูสถานะของพื้นที่จัดเก็บตามสัญญาได้หลังการดำเนินการแต่ละครั้ง เช่น คูณ บวก รากที่สอง ฯลฯ

ขั้นตอนที่ 4: คุณสามารถแก้ไขพารามิเตอร์สำหรับการดำเนินงานและสังเกตการเปลี่ยนแปลงในพื้นที่จัดเก็บสัญญาได้ตามใจชอบ!

ตอนนี้คุณได้สร้างและโต้ตอบกับสัญญาอัจฉริยะที่ดำเนินการเครื่องคิดเลขขั้นพื้นฐานแล้ว! ในบทเรียนถัดไป เราจะดูแนวคิดขั้นสูงเพิ่มเติม เช่น การสร้างสัญญา FIFO อย่าลืมสำรวจต่อไปและขอให้มีความสุขกับการเขียนโค้ด!

免責事項
* 暗号資産投資には重大なリスクが伴います。注意して進めてください。このコースは投資アドバイスを目的としたものではありません。
※ このコースはGate Learnに参加しているメンバーが作成したものです。作成者が共有した意見はGate Learnを代表するものではありません。
カタログ
レッスン3

การสร้างเครื่องคำนวณสัญญาอัจฉริยะ

ในบทนี้ เราจะขยายความเข้าใจของคุณเกี่ยวกับ SmartPy และวิธีการโต้ตอบกับบล็อกเชน Tezos ต่อไปโดยการสร้างเครื่องคิดเลขพื้นฐาน สัญญานี้จะมีฟังก์ชันสำหรับการบวก ลบ คูณ และหาร

ทฤษฎี

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

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

นอกจากนี้ โปรดจำไว้ว่าเนื่องจากบล็อกเชนของ Tezos มีการกระจายอำนาจ การคำนวณทั้งหมดจึงควรมีการกำหนดไว้ ซึ่งหมายความว่าการดำเนินการเช่นการแบ่งอาจทำงานแตกต่างไปจากที่คุณคุ้นเคยเล็กน้อย ตัวอย่างเช่น การหารในสัญญา Tezos คือการหารจำนวนเต็ม ดังนั้น 3 หารด้วย 2 จะให้ 1 ไม่ใช่ 1.5

ใช้ได้จริง

ด้านล่างนี้เป็นรหัสสัญญาสำหรับเครื่องคิดเลข สัญญา Calculator จะจัดเก็บผลลัพธ์ของการดำเนินการไว้ในพื้นที่จัดเก็บข้อมูล แต่ละจุดเข้ารับหนึ่งพารามิเตอร์และดำเนินการกับผลลัพธ์ที่เก็บไว้และพารามิเตอร์อินพุต

Python 
 นำเข้า smartpy เป็น sp 


 @sp.module 
 def main(): 
 คลาสเครื่องคิดเลข (sp.Contract): 
 def __init__(ตนเอง): 
 self.data.result = 0 

 @sp.entrypoint 
 def คูณ (ตัวเอง, x, y): 
 self.data.result = x * y 

 @sp.entrypoint 
 def เพิ่ม (ตัวเอง, x, y): 
 self.data.result = x + y 

 @sp.entrypoint 
 def square(self, x): 
 self.data.result = x * x 

 @sp.entrypoint 
 def squareRoot(self, x): 
 ยืนยัน x >= 0 
 y = x 
 ในขณะที่ y * y > x : 
 y = (x / y + y) / 2 
 ยืนยัน y * y <= x และ x < (y + 1) * (y + 1) 
 self.data.result = y 

 @sp.entrypoint 
 def factorial(self, x): 
 self.data.result = 1 
 สำหรับ y อยู่ในช่วง (1, x + 1): 
 self.data.result *= y 

 @sp.entrypoint 
 def log2(self, x) : 
 ยืนยัน x > 0, "อินพุตต้องมากกว่า 0" 

 self.data.result = 0 # เริ่มต้นตัวนับ 

 ถ้า x < 1: # สำหรับ 0 < x < 1 ช่วง 
 y = x 
 ในขณะที่ y < 1: 
 self.data.result -= 1 # ลดค่าตัวนับ 
 y *= 2 # คูณ y ด้วย 2 จนกระทั่ง y >= 1 
 else: # สำหรับ x >= 1 
 y = x 
 ในขณะที่ y >= 2: 
 self.data.result += 1 # เพิ่มตัวนับ 
 y /= 2 # หาร y ด้วย 2 


 ถ้า "เทมเพลต" ไม่อยู่ใน __name__: 

 @sp.add_test(name="Calculator") 
 def test( ): 
 c1 = main.Calculator() 
 สถานการณ์ = sp.test_scenario(main)
        Scenario.h1("เครื่องคิดเลข")
        สถานการณ์ += c1 
 c1.multiply(x=2, y=5) 
 c1.add(x=2, y=5) 
 c1.add(x=2, y=5) 
 c1.square(12) 
 c1.squareRoot(0) 
 c1.squareRoot(1234) 
 c1.factorial(100) 
 c1.log2(c1.data.result)
        สถานการณ์ ตรวจสอบ (c1.data.result == 524)

มาเริ่มทำสัญญานี้กันเถอะ!

ขั้นตอนที่ 1: วางรหัสสัญญาลงใน SmartPy IDE

ขั้นตอนที่ 2: คลิกที่ปุ่ม Run ที่ด้านบนขวาเพื่อรวบรวมและจำลองสัญญา

ขั้นตอนที่ 3: สังเกตผลการจำลองทางด้านขวาของ IDE คุณสามารถดูสถานะของพื้นที่จัดเก็บตามสัญญาได้หลังการดำเนินการแต่ละครั้ง เช่น คูณ บวก รากที่สอง ฯลฯ

ขั้นตอนที่ 4: คุณสามารถแก้ไขพารามิเตอร์สำหรับการดำเนินงานและสังเกตการเปลี่ยนแปลงในพื้นที่จัดเก็บสัญญาได้ตามใจชอบ!

ตอนนี้คุณได้สร้างและโต้ตอบกับสัญญาอัจฉริยะที่ดำเนินการเครื่องคิดเลขขั้นพื้นฐานแล้ว! ในบทเรียนถัดไป เราจะดูแนวคิดขั้นสูงเพิ่มเติม เช่น การสร้างสัญญา FIFO อย่าลืมสำรวจต่อไปและขอให้มีความสุขกับการเขียนโค้ด!

免責事項
* 暗号資産投資には重大なリスクが伴います。注意して進めてください。このコースは投資アドバイスを目的としたものではありません。
※ このコースはGate Learnに参加しているメンバーが作成したものです。作成者が共有した意見はGate Learnを代表するものではありません。