ในส่วนนี้เราจะพูดถึงกระบวนการเขียนสัญญาอัจฉริยะพื้นฐานโดยใช้ Solidity เราจะครอบคลุมส่วนสำคัญเช่นตัวแปร ฟังก์ชัน และมอดิไฟเออร์ จากนั้นเราจะเดินทางผ่านตัวอย่างการปฏิบัติสัญญาโทเค็นง่าย
ตัวแปร ฟังก์ชัน และตัวปรับเปลี่ยน
ตัวอย่าง 1: การนำและสร้างสัญญาณโทเค็นอย่างง่าย
มาสร้างสัญญาโทเค็นง่ายๆ โดยใช้ Solidity กันเถอะ สัญญานี้จะอนุญาตให้ผู้ใช้โอนโทเค็นระหว่างบัญชีและตรวจสอบยอดโทเค็นของบัญชีใดก็ได้
ประเภทสคริปต์ TypeScriptpragma solidity ^0.8.0; สัญญา SimpleToken { // ประกาศตัวแปรสถานะ ที่อยู่เจ้าของสาธารณะ; การทำการจับคู่ (ที่อยู่ => uint256) ยอดคงเหลือสาธารณะ; // กำหนดค่าเริ่มต้นสัญญาโทเคน ผู้ก่อตั้ง (uint256 จำนวนมูลค่าเริ่มต้น) { เจ้าของ = msg.sender; ยอดคงเหลือ [เจ้าของ] = จำนวนมูลค่าเริ่มต้น; } // ฟังก์ชันในการโอนโทเคน ฟังก์ชันในการโอนโทเคน (ที่อยู่ ถึง, uint256 จำนวน) สาธารณะ { ต้องการ (ยอดคงเหลือ [msg.sender] >= จำนวน, "ยอดย่อยไม่พอ") ; ยอดคงเหลือ [msg.sender] -= จำนวน; ยอดคงเหลือ [ถึง] += จำนวน; } // ฟังก์ชันในการตรวจสอบยอดคงเหลือโทเคนของบัญชี ฟังก์ชันในการตรวจสอบยอดคงเหลือโทเคนของบัญชี (บัญชีที่อยู่) สาธารณะมุมมองคืน (uint256) { return ยอดคงเหลือ [บัญชีที่อยู่]; }
ในสัญญานี้ เรามี:
เจ้าของ
และยอดคงเหลือ
เพื่อจัดเก็บที่อยู่ของเจ้าของสัญญาและยอดคงเหลือโทเค็นของที่อยู่ทั้งหมดตามลําดับโปรแกรมสร้าง
ฟังก์ชันที่กำหนดจำนวนเบี้ยสูงสุดเริ่มต้นของโทเค็นและมอบหมายให้เจ้าของสัญญาโอน
ฟังก์ชันที่อนุญาตให้ผู้ใช้โอนโทเค็นไปยังบัญชีอื่น ๆ โดยใช้ต้องการ
การยืนยันให้แน่ใจว่าผู้ส่งมีโทเคนเพียงพอในการโอนจำนวนเงิน
ฟังก์ชันที่คืนยอดคงเหลือของโทเค็นของบัญชีที่ระบุตัวอย่าง 2: การนำระบบลงคะแนนโหวตง่าย
TypeScriptpragma solidity ^0.8.0;contract VotingSystem { mapping (bytes32 => uint256) public votesReceived; bytes32[] public candidateList; constructor(bytes32[] memory candidateNames) { candidateList = candidateNames; } function voteForCandidate(bytes32 candidate) public { require(validCandidate(candidate), "Invalid candidate."); votesReceived[candidate] += 1; } function totalVotesFor(bytes32 candidate) public view returns (uint256) { require(validCandidate(candidate), "Invalid candidate."); return votesReceived[candidate]; } function validCandidate(bytes32 candidate) public view returns (bool) { for (uint256 i = 0; i < candidateList.length; i++) { if (candidateList[i] == candidate) { return true; } } return false; }}
ในตัวอย่างนี้ ระบบลงคะแนน
สัญญาช่วยให้ผู้ใช้สามารถลงคะแนนเลือกตั้งให้กับหนึ่งในผู้สมัครหลายคนโดยการโทรโหวตเพื่อผู้สมัคร
ฟังก์ชัน สัญญาจะติดตามจำนวนคะแนนที่ได้รับสำหรับแต่ละผู้สมัครโดยใช้โหวตที่ได้รับ
การทำแม็ปที่คีย์คือชื่อของผู้สมัคร และค่าคือจำนวนโหวตรายชื่อผู้สมัคร
ตัวแปรเก็บรายชื่อของผู้สมัครที่ถูกต้องจำนวนโหวตทั้งหมดสำหรับ
function สามารถเรียกเพื่อตรวจสอบจำนวนโหวตที่ผู้สมัครที่ระบุได้รับ และผู้สมัครที่ถูกต้อง
ฟังก์ชันตรวจสอบว่าผู้สมัครถูกต้องหรือไม่ นี่คือตัวอย่างง่ายๆ ของวิธีการใช้ Solidity ในการสร้างแอปพลิเคชันแบบไม่ centralize ด้วยตรรกะที่ซับซ้อน
ไฮไลท์
ตัวแปร ฟังก์ชัน และตัวดัดแปลง เป็นส่วนประกอบที่สำคัญในสมาร์ทคอนแทร็ค Solidity
Solidity มีตัวแปร 2 ประเภท: ตัวแปรสถานะ และ ตัวแปรท้องถิ่น
ฟังก์ชันถูกใช้ในการดำเนินงานและสามารถมีพารามิเตอร์ข้อมูลนำเข้าและค่าคืนได้
Modifiers ใช้เพื่อปรับเปลี่ยนพฤติกรรมของฟังก์ชันและเพิ่มความอ่านง่ายและการบริหารจัดการโค้ด
สัญญา SimpleToken ช่วยให้ผู้ใช้สามารถโอนโทเค็นและตรวจสอบยอดคงเหลือของโทเค็นได้
สัญญา SimpleToken สาธิตการใช้ตัวแปรสถานะ ฟังก์ชันคอนสตรักเตอร์ และฟังก์ชันเช่นการโอนและการตรวจสอบยอดคงเหลือ
สัญญา VotingSystem ช่วยให้ผู้ใช้สามารถลงคะแนนเสียงเพื่อผู้สมัครและติดตามจำนวนคะแนนที่ลง
สัญญา VotingSystem แสดงถึงการใช้ mappings, arrays, และฟังก์ชัน เช่น voteForCandidate, totalVotesFor, และ validCandidate
ในส่วนนี้เราจะพูดถึงกระบวนการเขียนสัญญาอัจฉริยะพื้นฐานโดยใช้ Solidity เราจะครอบคลุมส่วนสำคัญเช่นตัวแปร ฟังก์ชัน และมอดิไฟเออร์ จากนั้นเราจะเดินทางผ่านตัวอย่างการปฏิบัติสัญญาโทเค็นง่าย
ตัวแปร ฟังก์ชัน และตัวปรับเปลี่ยน
ตัวอย่าง 1: การนำและสร้างสัญญาณโทเค็นอย่างง่าย
มาสร้างสัญญาโทเค็นง่ายๆ โดยใช้ Solidity กันเถอะ สัญญานี้จะอนุญาตให้ผู้ใช้โอนโทเค็นระหว่างบัญชีและตรวจสอบยอดโทเค็นของบัญชีใดก็ได้
ประเภทสคริปต์ TypeScriptpragma solidity ^0.8.0; สัญญา SimpleToken { // ประกาศตัวแปรสถานะ ที่อยู่เจ้าของสาธารณะ; การทำการจับคู่ (ที่อยู่ => uint256) ยอดคงเหลือสาธารณะ; // กำหนดค่าเริ่มต้นสัญญาโทเคน ผู้ก่อตั้ง (uint256 จำนวนมูลค่าเริ่มต้น) { เจ้าของ = msg.sender; ยอดคงเหลือ [เจ้าของ] = จำนวนมูลค่าเริ่มต้น; } // ฟังก์ชันในการโอนโทเคน ฟังก์ชันในการโอนโทเคน (ที่อยู่ ถึง, uint256 จำนวน) สาธารณะ { ต้องการ (ยอดคงเหลือ [msg.sender] >= จำนวน, "ยอดย่อยไม่พอ") ; ยอดคงเหลือ [msg.sender] -= จำนวน; ยอดคงเหลือ [ถึง] += จำนวน; } // ฟังก์ชันในการตรวจสอบยอดคงเหลือโทเคนของบัญชี ฟังก์ชันในการตรวจสอบยอดคงเหลือโทเคนของบัญชี (บัญชีที่อยู่) สาธารณะมุมมองคืน (uint256) { return ยอดคงเหลือ [บัญชีที่อยู่]; }
ในสัญญานี้ เรามี:
เจ้าของ
และยอดคงเหลือ
เพื่อจัดเก็บที่อยู่ของเจ้าของสัญญาและยอดคงเหลือโทเค็นของที่อยู่ทั้งหมดตามลําดับโปรแกรมสร้าง
ฟังก์ชันที่กำหนดจำนวนเบี้ยสูงสุดเริ่มต้นของโทเค็นและมอบหมายให้เจ้าของสัญญาโอน
ฟังก์ชันที่อนุญาตให้ผู้ใช้โอนโทเค็นไปยังบัญชีอื่น ๆ โดยใช้ต้องการ
การยืนยันให้แน่ใจว่าผู้ส่งมีโทเคนเพียงพอในการโอนจำนวนเงิน
ฟังก์ชันที่คืนยอดคงเหลือของโทเค็นของบัญชีที่ระบุตัวอย่าง 2: การนำระบบลงคะแนนโหวตง่าย
TypeScriptpragma solidity ^0.8.0;contract VotingSystem { mapping (bytes32 => uint256) public votesReceived; bytes32[] public candidateList; constructor(bytes32[] memory candidateNames) { candidateList = candidateNames; } function voteForCandidate(bytes32 candidate) public { require(validCandidate(candidate), "Invalid candidate."); votesReceived[candidate] += 1; } function totalVotesFor(bytes32 candidate) public view returns (uint256) { require(validCandidate(candidate), "Invalid candidate."); return votesReceived[candidate]; } function validCandidate(bytes32 candidate) public view returns (bool) { for (uint256 i = 0; i < candidateList.length; i++) { if (candidateList[i] == candidate) { return true; } } return false; }}
ในตัวอย่างนี้ ระบบลงคะแนน
สัญญาช่วยให้ผู้ใช้สามารถลงคะแนนเลือกตั้งให้กับหนึ่งในผู้สมัครหลายคนโดยการโทรโหวตเพื่อผู้สมัคร
ฟังก์ชัน สัญญาจะติดตามจำนวนคะแนนที่ได้รับสำหรับแต่ละผู้สมัครโดยใช้โหวตที่ได้รับ
การทำแม็ปที่คีย์คือชื่อของผู้สมัคร และค่าคือจำนวนโหวตรายชื่อผู้สมัคร
ตัวแปรเก็บรายชื่อของผู้สมัครที่ถูกต้องจำนวนโหวตทั้งหมดสำหรับ
function สามารถเรียกเพื่อตรวจสอบจำนวนโหวตที่ผู้สมัครที่ระบุได้รับ และผู้สมัครที่ถูกต้อง
ฟังก์ชันตรวจสอบว่าผู้สมัครถูกต้องหรือไม่ นี่คือตัวอย่างง่ายๆ ของวิธีการใช้ Solidity ในการสร้างแอปพลิเคชันแบบไม่ centralize ด้วยตรรกะที่ซับซ้อน
ไฮไลท์
ตัวแปร ฟังก์ชัน และตัวดัดแปลง เป็นส่วนประกอบที่สำคัญในสมาร์ทคอนแทร็ค Solidity
Solidity มีตัวแปร 2 ประเภท: ตัวแปรสถานะ และ ตัวแปรท้องถิ่น
ฟังก์ชันถูกใช้ในการดำเนินงานและสามารถมีพารามิเตอร์ข้อมูลนำเข้าและค่าคืนได้
Modifiers ใช้เพื่อปรับเปลี่ยนพฤติกรรมของฟังก์ชันและเพิ่มความอ่านง่ายและการบริหารจัดการโค้ด
สัญญา SimpleToken ช่วยให้ผู้ใช้สามารถโอนโทเค็นและตรวจสอบยอดคงเหลือของโทเค็นได้
สัญญา SimpleToken สาธิตการใช้ตัวแปรสถานะ ฟังก์ชันคอนสตรักเตอร์ และฟังก์ชันเช่นการโอนและการตรวจสอบยอดคงเหลือ
สัญญา VotingSystem ช่วยให้ผู้ใช้สามารถลงคะแนนเสียงเพื่อผู้สมัครและติดตามจำนวนคะแนนที่ลง
สัญญา VotingSystem แสดงถึงการใช้ mappings, arrays, และฟังก์ชัน เช่น voteForCandidate, totalVotesFor, และ validCandidate