ก่อนที่เราจะสามารถเข้าใจ Tezos และ SmartPy ได้อย่างสมบูรณ์ เราต้องเข้าใจเทคโนโลยีที่เป็นรากฐานของทุกสิ่งก่อน: บล็อกเชน บล็อกเชนคือกลุ่มของบล็อก โดยแต่ละบล็อกประกอบด้วยรายการธุรกรรม เทคโนโลยีบล็อคเชนจัดให้มีฐานข้อมูลแบบกระจายอำนาจหรือ “บัญชีแยกประเภทดิจิทัล” ของธุรกรรมที่ผู้เข้าร่วมเครือข่ายทั้งหมดสามารถมองเห็นได้ สถาปัตยกรรมรับประกันว่าทุกธุรกรรมจะไม่ซ้ำกัน และเมื่อบันทึกลงในฐานข้อมูลแล้ว จะไม่สามารถเปลี่ยนแปลงได้
Tezos เป็นหนึ่งในแพลตฟอร์มบล็อคเชน สิ่งที่ทำให้ Tezos แตกต่างจากแพลตฟอร์มบล็อกเชนอื่นๆ เช่น Bitcoin หรือ Ethereum คือการเน้นที่ "การแก้ไขด้วยตนเอง" ซึ่งช่วยให้โปรโตคอลอัปเกรดตัวเองได้โดยไม่ต้องใช้ฮาร์ดฟอร์ค นี่เป็นประโยชน์ที่สำคัญเนื่องจากทำให้โปรโตคอลสามารถปรับตัวได้และรองรับอนาคต
Tezos ยังเสนอแพลตฟอร์มสำหรับสัญญาอัจฉริยะ ซึ่งเป็นสัญญาที่ดำเนินการด้วยตนเองโดยมีข้อตกลงระหว่างผู้ซื้อและผู้ขายเขียนเป็นบรรทัดรหัสโดยตรง ความสามารถในการจัดการและตรวจสอบข้อตกลงดิจิทัลนี้นำเสนอแอปพลิเคชันที่เป็นไปได้ที่หลากหลาย ตั้งแต่บริการทางการเงิน ห่วงโซ่อุปทาน ไปจนถึงแอปพลิเคชันแบบกระจายอำนาจ (DApps) อ่านเพิ่มเติมเกี่ยวกับ Tezos: Tezos คืออะไร? ทั้งหมดที่คุณต้องรู้เกี่ยวกับ XTZ
ในการสร้างสัญญาอัจฉริยะบน Tezos เราใช้ภาษาที่เรียกว่า SmartPy SmartPy เป็นไลบรารี Python เพื่อพัฒนาสัญญาอัจฉริยะสำหรับบล็อกเชน Tezos เป็นภาษาที่ใช้งานง่ายและมีประสิทธิภาพสำหรับการแสดงสัญญาและสถานการณ์การทดสอบที่เกี่ยวข้อง
คุณสมบัติที่โดดเด่นที่สุดของ SmartPy คือการทำงานร่วมกับ Python ซึ่งเป็นหนึ่งในภาษาการเขียนโปรแกรมที่ได้รับความนิยมและเติบโตเร็วที่สุดในโลก หากคุณคุ้นเคยกับ Python อยู่แล้ว คุณจะพบว่า SmartPy ใช้งานได้ง่าย
SmartPy มี Integrated Development Environment (IDE) ที่มีคุณสมบัติครบถ้วนซึ่งสามารถเข้าถึงได้จากเว็บเบราว์เซอร์ของคุณ ไปที่ SmartPy IDE เพื่อเริ่มเขียนสัญญาอัจฉริยะฉบับแรกของคุณ
ใน SmartPy IDE คุณจะพบหน้าต่างแก้ไขที่คุณสามารถป้อนรหัสสัญญาของคุณได้ เริ่มต้นด้วยการเขียนสัญญาพื้นฐาน คัดลอกและวางโค้ดต่อไปนี้ลงในโปรแกรมแก้ไข SmartPy:
Python
นำเข้า smartpy เป็น sp
# โมดูล SmartPy
@sp.module
def main():
# คลาสของสัญญา
คลาส MyContract(sp.Contract):
def __init__(self, myParameter1, myParameter2):
self.data.myParameter1 = myParameter1
self.data.myParameter2 = myParameter2
# จุดเข้าใช้งาน เช่น ตัวรับข้อความ
# (สัญญาตอบสนองต่อข้อความ)
@sp.entrypoint
def myEntryPoint(self, params):
assert self.data.myParameter1 <= 123
self.data.myParameter1 += พารามิเตอร์
รหัสสัญญานี้มีส่วนสำคัญหลายประการ:
import smartpy as sp
- สิ่งนี้จะนำเข้าไลบรารี SmartPy เพื่อให้เราสามารถใช้เพื่อเขียนสัญญาของเรา@sp.module
- มัณฑนากรนี้บอกล่าม SmartPy ว่าฟังก์ชันนี้จะมีสัญญา SmartPyclass MyContract(sp.Contract):
- ที่นี่เรากำหนดคลาสใหม่ (พิมพ์เขียวสำหรับการสร้างอ็อบเจ็กต์ใหม่) สำหรับสัญญาของเรา โดยสืบทอดมาจากซูเปอร์คลาส sp.Contract
ซึ่งมีฟังก์ชันที่มีประโยชน์มากมายสำหรับการจัดการสถานะของสัญญาและกำหนดลักษณะการทำงานของสัญญาself.data.myParameter1 = myParameter1
และ self.data.myParameter2 = myParameter2
- ที่นี่เรากำลังกำหนดสถานะเริ่มต้นของสัญญาของเรา พารามิเตอร์ทั้งสองนี้จะถูกส่งไปยังสัญญาเมื่อมีการปรับใช้กับบล็อกเชน@sp.entrypoint
- มัณฑนากรนี้บอกล่ามว่าฟังก์ชันต่อไปนี้ (myEntryPoint
) เป็นจุดเริ่มต้นของสัญญาของเรา จุดเริ่มต้นคือวิธีที่เราโต้ตอบกับสัญญาของเราเมื่อมีการปรับใช้self.data.myParameter1 += params
- บรรทัดของโค้ดนี้จะเพิ่ม myParameter1
ตามจำนวนที่ส่งไปยัง myEntryPoint
ส่วนสำคัญของการเขียนสัญญาคือการทดสอบสัญญาอย่างละเอียด การทดสอบใน SmartPy ถูกรวมเข้ากับกระบวนการพัฒนา ต่อไปนี้คือวิธีที่คุณสามารถเพิ่มการทดสอบลงในสัญญา:
Python
# Tests
@sp.add_test(name="Welcome")
def test():
# เรากำหนดสถานการณ์การทดสอบ พร้อมด้วยเอาต์พุตบางส่วนและตรวจสอบ
# สถานการณ์จำลองใช้โมดูลเป็นพารามิเตอร์
สถานการณ์ = sp .test_scenario(หลัก)
Scenario.h1("ยินดีต้อนรับ")
# ก่อนอื่น เรากำหนดสัญญาและเพิ่มเข้าไปในสถานการณ์จำลอง
c1 = main.MyContract(12, 123)
สถานการณ์ += c1
# และเรียกจุดเข้าใช้งานบางส่วน
c1.myEntryPoint(12)
c1.myEntryPoint(13)
c1.myEntryPoint (14)
c1.myEntryPoint (50)
c1.myEntryPoint (50)
c1.myEntryPoint (50). run (ถูกต้อง = เท็จ) # คาดว่าจะล้มเหลว
# ในที่สุด เราจะตรวจสอบที่เก็บข้อมูลขั้นสุดท้าย
สถานการณ์ ตรวจสอบ (c1.data.myParameter1 == 151)
# เราสามารถกำหนดสัญญาอื่นโดยใช้สถานะปัจจุบันของ c1
c2 = main.MyContract(1, c1.data.myParameter1)
สถานการณ์ += c2
สถานการณ์ ตรวจสอบ (c2.data.myParameter2 == 151)
สัญญาฉบับสมบูรณ์ของคุณตอนนี้ควรเป็นดังนี้:
Python
นำเข้า smartpy เป็น sp
# นี่คือโปรแกรมแก้ไข SmartPy
# คุณสามารถทดลองกับ SmartPy ได้โดยการโหลดเทมเพลต
# (ในเมนูคำสั่งด้านบนตัวแก้ไขนี้)
#
# โปรแกรม SmartPy ทั่วไปมีรูปแบบดังต่อไปนี้:
# โมดูล SmartPy
@sp.module
def main():
# คลาสของสัญญา
คลาส MyContract(sp .สัญญา):
def __init__(ตนเอง, myParameter1, myParameter2):
self.data.myParameter1 = myParameter1
self.data.myParameter2 = myParameter2
# จุดเข้าใช้งาน เช่น ตัวรับข้อความ
# (สัญญาตอบสนองต่อข้อความ)
@sp.entrypoint
def myEntryPoint(self, params):
assert self.data.myParameter1 <= 123
self.data.myParameter1 += params
# Tests
@sp.add_test(name="Welcome")
def test():
# เรากำหนดสถานการณ์การทดสอบ พร้อมด้วยเอาต์พุตบางส่วนและตรวจสอบ
# สถานการณ์จำลองใช้โมดูลเป็นพารามิเตอร์
สถานการณ์ = sp.test_scenario(หลัก)
Scenario.h1("ยินดีต้อนรับ")
# ก่อนอื่น เรากำหนดสัญญาและเพิ่มเข้าไปในสถานการณ์จำลอง
c1 = main.MyContract(12, 123)
สถานการณ์ += c1
# และเรียกจุดเข้าใช้งานบางส่วน
c1.myEntryPoint(12)
c1.myEntryPoint(13)
c1.myEntryPoint (14)
c1.myEntryPoint (50)
c1.myEntryPoint (50)
c1.myEntryPoint (50). run (ถูกต้อง = เท็จ) # คาดว่าจะล้มเหลว
# ในที่สุด เราจะตรวจสอบที่เก็บข้อมูลขั้นสุดท้าย
สถานการณ์ ตรวจสอบ (c1.data.myParameter1 == 151)
# เราสามารถกำหนดสัญญาอื่นโดยใช้สถานะปัจจุบันของ c1
c2 = main.MyContract(1, c1.data.myParameter1)
สถานการณ์ += c2
สถานการณ์ ตรวจสอบ (c2.data.myParameter2 == 151)
เมื่อคุณเขียนสัญญาและการทดสอบแล้ว คุณสามารถเรียกใช้สัญญาและการทดสอบได้โดยตรงใน IDE คลิกปุ่ม "Run" ที่มุมขวาบนของ IDE IDE จะรวบรวมสัญญาของคุณ รันการทดสอบ และแสดงผลลัพธ์พร้อมกับคำอธิบายโดยละเอียดของการดำเนินการแต่ละรายการและการเปลี่ยนแปลงสถานะ
โดยสรุป บทเรียนนี้ได้แนะนำให้คุณรู้จักกับบล็อกเชนของ Tezos และ SmartPy ซึ่งเป็นภาษาสัญญาอัจฉริยะสำหรับ Tezos คุณได้เขียน ทำความเข้าใจ และทดสอบสัญญา SmartPy ฉบับแรกของคุณแล้ว นี่เป็นเพียงจุดเริ่มต้น มีอะไรอีกมากมายให้เรียนรู้และทำกับ SmartPy และ Tezos เราหวังว่าคุณจะตื่นเต้นที่จะเดินทางต่อไปกับเราในบทเรียนที่กำลังจะมาถึง!
ก่อนที่เราจะสามารถเข้าใจ Tezos และ SmartPy ได้อย่างสมบูรณ์ เราต้องเข้าใจเทคโนโลยีที่เป็นรากฐานของทุกสิ่งก่อน: บล็อกเชน บล็อกเชนคือกลุ่มของบล็อก โดยแต่ละบล็อกประกอบด้วยรายการธุรกรรม เทคโนโลยีบล็อคเชนจัดให้มีฐานข้อมูลแบบกระจายอำนาจหรือ “บัญชีแยกประเภทดิจิทัล” ของธุรกรรมที่ผู้เข้าร่วมเครือข่ายทั้งหมดสามารถมองเห็นได้ สถาปัตยกรรมรับประกันว่าทุกธุรกรรมจะไม่ซ้ำกัน และเมื่อบันทึกลงในฐานข้อมูลแล้ว จะไม่สามารถเปลี่ยนแปลงได้
Tezos เป็นหนึ่งในแพลตฟอร์มบล็อคเชน สิ่งที่ทำให้ Tezos แตกต่างจากแพลตฟอร์มบล็อกเชนอื่นๆ เช่น Bitcoin หรือ Ethereum คือการเน้นที่ "การแก้ไขด้วยตนเอง" ซึ่งช่วยให้โปรโตคอลอัปเกรดตัวเองได้โดยไม่ต้องใช้ฮาร์ดฟอร์ค นี่เป็นประโยชน์ที่สำคัญเนื่องจากทำให้โปรโตคอลสามารถปรับตัวได้และรองรับอนาคต
Tezos ยังเสนอแพลตฟอร์มสำหรับสัญญาอัจฉริยะ ซึ่งเป็นสัญญาที่ดำเนินการด้วยตนเองโดยมีข้อตกลงระหว่างผู้ซื้อและผู้ขายเขียนเป็นบรรทัดรหัสโดยตรง ความสามารถในการจัดการและตรวจสอบข้อตกลงดิจิทัลนี้นำเสนอแอปพลิเคชันที่เป็นไปได้ที่หลากหลาย ตั้งแต่บริการทางการเงิน ห่วงโซ่อุปทาน ไปจนถึงแอปพลิเคชันแบบกระจายอำนาจ (DApps) อ่านเพิ่มเติมเกี่ยวกับ Tezos: Tezos คืออะไร? ทั้งหมดที่คุณต้องรู้เกี่ยวกับ XTZ
ในการสร้างสัญญาอัจฉริยะบน Tezos เราใช้ภาษาที่เรียกว่า SmartPy SmartPy เป็นไลบรารี Python เพื่อพัฒนาสัญญาอัจฉริยะสำหรับบล็อกเชน Tezos เป็นภาษาที่ใช้งานง่ายและมีประสิทธิภาพสำหรับการแสดงสัญญาและสถานการณ์การทดสอบที่เกี่ยวข้อง
คุณสมบัติที่โดดเด่นที่สุดของ SmartPy คือการทำงานร่วมกับ Python ซึ่งเป็นหนึ่งในภาษาการเขียนโปรแกรมที่ได้รับความนิยมและเติบโตเร็วที่สุดในโลก หากคุณคุ้นเคยกับ Python อยู่แล้ว คุณจะพบว่า SmartPy ใช้งานได้ง่าย
SmartPy มี Integrated Development Environment (IDE) ที่มีคุณสมบัติครบถ้วนซึ่งสามารถเข้าถึงได้จากเว็บเบราว์เซอร์ของคุณ ไปที่ SmartPy IDE เพื่อเริ่มเขียนสัญญาอัจฉริยะฉบับแรกของคุณ
ใน SmartPy IDE คุณจะพบหน้าต่างแก้ไขที่คุณสามารถป้อนรหัสสัญญาของคุณได้ เริ่มต้นด้วยการเขียนสัญญาพื้นฐาน คัดลอกและวางโค้ดต่อไปนี้ลงในโปรแกรมแก้ไข SmartPy:
Python
นำเข้า smartpy เป็น sp
# โมดูล SmartPy
@sp.module
def main():
# คลาสของสัญญา
คลาส MyContract(sp.Contract):
def __init__(self, myParameter1, myParameter2):
self.data.myParameter1 = myParameter1
self.data.myParameter2 = myParameter2
# จุดเข้าใช้งาน เช่น ตัวรับข้อความ
# (สัญญาตอบสนองต่อข้อความ)
@sp.entrypoint
def myEntryPoint(self, params):
assert self.data.myParameter1 <= 123
self.data.myParameter1 += พารามิเตอร์
รหัสสัญญานี้มีส่วนสำคัญหลายประการ:
import smartpy as sp
- สิ่งนี้จะนำเข้าไลบรารี SmartPy เพื่อให้เราสามารถใช้เพื่อเขียนสัญญาของเรา@sp.module
- มัณฑนากรนี้บอกล่าม SmartPy ว่าฟังก์ชันนี้จะมีสัญญา SmartPyclass MyContract(sp.Contract):
- ที่นี่เรากำหนดคลาสใหม่ (พิมพ์เขียวสำหรับการสร้างอ็อบเจ็กต์ใหม่) สำหรับสัญญาของเรา โดยสืบทอดมาจากซูเปอร์คลาส sp.Contract
ซึ่งมีฟังก์ชันที่มีประโยชน์มากมายสำหรับการจัดการสถานะของสัญญาและกำหนดลักษณะการทำงานของสัญญาself.data.myParameter1 = myParameter1
และ self.data.myParameter2 = myParameter2
- ที่นี่เรากำลังกำหนดสถานะเริ่มต้นของสัญญาของเรา พารามิเตอร์ทั้งสองนี้จะถูกส่งไปยังสัญญาเมื่อมีการปรับใช้กับบล็อกเชน@sp.entrypoint
- มัณฑนากรนี้บอกล่ามว่าฟังก์ชันต่อไปนี้ (myEntryPoint
) เป็นจุดเริ่มต้นของสัญญาของเรา จุดเริ่มต้นคือวิธีที่เราโต้ตอบกับสัญญาของเราเมื่อมีการปรับใช้self.data.myParameter1 += params
- บรรทัดของโค้ดนี้จะเพิ่ม myParameter1
ตามจำนวนที่ส่งไปยัง myEntryPoint
ส่วนสำคัญของการเขียนสัญญาคือการทดสอบสัญญาอย่างละเอียด การทดสอบใน SmartPy ถูกรวมเข้ากับกระบวนการพัฒนา ต่อไปนี้คือวิธีที่คุณสามารถเพิ่มการทดสอบลงในสัญญา:
Python
# Tests
@sp.add_test(name="Welcome")
def test():
# เรากำหนดสถานการณ์การทดสอบ พร้อมด้วยเอาต์พุตบางส่วนและตรวจสอบ
# สถานการณ์จำลองใช้โมดูลเป็นพารามิเตอร์
สถานการณ์ = sp .test_scenario(หลัก)
Scenario.h1("ยินดีต้อนรับ")
# ก่อนอื่น เรากำหนดสัญญาและเพิ่มเข้าไปในสถานการณ์จำลอง
c1 = main.MyContract(12, 123)
สถานการณ์ += c1
# และเรียกจุดเข้าใช้งานบางส่วน
c1.myEntryPoint(12)
c1.myEntryPoint(13)
c1.myEntryPoint (14)
c1.myEntryPoint (50)
c1.myEntryPoint (50)
c1.myEntryPoint (50). run (ถูกต้อง = เท็จ) # คาดว่าจะล้มเหลว
# ในที่สุด เราจะตรวจสอบที่เก็บข้อมูลขั้นสุดท้าย
สถานการณ์ ตรวจสอบ (c1.data.myParameter1 == 151)
# เราสามารถกำหนดสัญญาอื่นโดยใช้สถานะปัจจุบันของ c1
c2 = main.MyContract(1, c1.data.myParameter1)
สถานการณ์ += c2
สถานการณ์ ตรวจสอบ (c2.data.myParameter2 == 151)
สัญญาฉบับสมบูรณ์ของคุณตอนนี้ควรเป็นดังนี้:
Python
นำเข้า smartpy เป็น sp
# นี่คือโปรแกรมแก้ไข SmartPy
# คุณสามารถทดลองกับ SmartPy ได้โดยการโหลดเทมเพลต
# (ในเมนูคำสั่งด้านบนตัวแก้ไขนี้)
#
# โปรแกรม SmartPy ทั่วไปมีรูปแบบดังต่อไปนี้:
# โมดูล SmartPy
@sp.module
def main():
# คลาสของสัญญา
คลาส MyContract(sp .สัญญา):
def __init__(ตนเอง, myParameter1, myParameter2):
self.data.myParameter1 = myParameter1
self.data.myParameter2 = myParameter2
# จุดเข้าใช้งาน เช่น ตัวรับข้อความ
# (สัญญาตอบสนองต่อข้อความ)
@sp.entrypoint
def myEntryPoint(self, params):
assert self.data.myParameter1 <= 123
self.data.myParameter1 += params
# Tests
@sp.add_test(name="Welcome")
def test():
# เรากำหนดสถานการณ์การทดสอบ พร้อมด้วยเอาต์พุตบางส่วนและตรวจสอบ
# สถานการณ์จำลองใช้โมดูลเป็นพารามิเตอร์
สถานการณ์ = sp.test_scenario(หลัก)
Scenario.h1("ยินดีต้อนรับ")
# ก่อนอื่น เรากำหนดสัญญาและเพิ่มเข้าไปในสถานการณ์จำลอง
c1 = main.MyContract(12, 123)
สถานการณ์ += c1
# และเรียกจุดเข้าใช้งานบางส่วน
c1.myEntryPoint(12)
c1.myEntryPoint(13)
c1.myEntryPoint (14)
c1.myEntryPoint (50)
c1.myEntryPoint (50)
c1.myEntryPoint (50). run (ถูกต้อง = เท็จ) # คาดว่าจะล้มเหลว
# ในที่สุด เราจะตรวจสอบที่เก็บข้อมูลขั้นสุดท้าย
สถานการณ์ ตรวจสอบ (c1.data.myParameter1 == 151)
# เราสามารถกำหนดสัญญาอื่นโดยใช้สถานะปัจจุบันของ c1
c2 = main.MyContract(1, c1.data.myParameter1)
สถานการณ์ += c2
สถานการณ์ ตรวจสอบ (c2.data.myParameter2 == 151)
เมื่อคุณเขียนสัญญาและการทดสอบแล้ว คุณสามารถเรียกใช้สัญญาและการทดสอบได้โดยตรงใน IDE คลิกปุ่ม "Run" ที่มุมขวาบนของ IDE IDE จะรวบรวมสัญญาของคุณ รันการทดสอบ และแสดงผลลัพธ์พร้อมกับคำอธิบายโดยละเอียดของการดำเนินการแต่ละรายการและการเปลี่ยนแปลงสถานะ
โดยสรุป บทเรียนนี้ได้แนะนำให้คุณรู้จักกับบล็อกเชนของ Tezos และ SmartPy ซึ่งเป็นภาษาสัญญาอัจฉริยะสำหรับ Tezos คุณได้เขียน ทำความเข้าใจ และทดสอบสัญญา SmartPy ฉบับแรกของคุณแล้ว นี่เป็นเพียงจุดเริ่มต้น มีอะไรอีกมากมายให้เรียนรู้และทำกับ SmartPy และ Tezos เราหวังว่าคุณจะตื่นเต้นที่จะเดินทางต่อไปกับเราในบทเรียนที่กำลังจะมาถึง!