ในตลาดอีคอมเมิร์ซแบบดั้งเดิม เช่น Amazon และ eBay หน่วยงานกลางจะอำนวยความสะดวกในการทำธุรกรรมระหว่างผู้ซื้อและผู้ขาย หน่วยงานกลางนี้ควบคุมธุรกรรม ดูแลรักษารายการผลิตภัณฑ์ และจัดการการระงับข้อพิพาท แม้ว่าโมเดลแบบรวมศูนย์นี้มีข้อดี แต่ก็มีข้อเสียหลายประการ รวมถึงความเสี่ยงของการเซ็นเซอร์ ค่าธรรมเนียมสูง และการพึ่งพาความไว้วางใจ
ในทางกลับกัน ตลาดที่มีการกระจายอำนาจใช้ประโยชน์จากเทคโนโลยีบล็อกเชนเพื่อเปิดใช้งานการทำธุรกรรมแบบ peer-to-peer โดยไม่ต้องมีคนกลาง ขจัดความจำเป็นในการไว้วางใจเนื่องจากธุรกรรมมีความโปร่งใสและตรวจสอบได้โดยผู้เข้าร่วมทั้งหมดในบล็อกเชน ตัวอย่างของตลาดที่มีการกระจายอำนาจ ได้แก่ OpenBazaar และ Origin Protocol
Remix IDE (Integrated Development Environment) เป็นเครื่องมือโอเพ่นซอร์สที่ทรงพลังซึ่งออกแบบมาโดยเฉพาะสำหรับการพัฒนาสัญญาอัจฉริยะ Ethereum มันทำงานโดยตรงบนเว็บเบราว์เซอร์ของคุณ ดังนั้นคุณไม่จำเป็นต้องติดตั้งอะไรบนคอมพิวเตอร์ของคุณ
คุณสามารถเข้าถึง Remix IDE ได้ที่ https://remix.ethereum.org เมื่อคุณเปิด Remix ในเบราว์เซอร์ คุณจะพบแผงสามแผง:
แผงด้านซ้าย: นี่คือที่ที่คุณสามารถสร้าง นำเข้า และจัดการไฟล์ Solidity ของคุณได้ นอกจากนี้ยังมีปลั๊กอินต่างๆ สำหรับการคอมไพล์ ทดสอบ ดีบัก และปรับใช้สัญญาของคุณ
แผงกลาง: นี่คือเครื่องมือแก้ไขโค้ดของคุณ ที่นี่คุณจะเขียนและแก้ไขโค้ด Solidity ของคุณ
แผงด้านขวา: แผงนี้มีเครื่องมือต่างๆ ในการรวบรวมสัญญาของคุณ ปรับใช้บนเครือข่าย Ethereum (ไม่ว่าจะบนเครือข่าย Ethereum จริงหรือการจำลอง JavaScript VM) และโต้ตอบกับสัญญาที่ปรับใช้ของคุณ
ในส่วนนี้ เราจะเขียนสัญญา Solidity ฉบับแรกของเรา สัญญานี้จะเป็นตัวแทนของ "สินค้า" พื้นฐานในตลาดของเรา
ในการเริ่มต้น ให้สร้างไฟล์ใหม่ใน Remix โดยคลิกที่ไอคอนที่สองจากด้านบนบนแผงด้านซ้าย (ไอคอนไฟล์) กล่องโต้ตอบใหม่จะปรากฏบนแผงกลาง ป้อน Item.sol
เป็นชื่อไฟล์แล้วคลิก "ตกลง"
ความแข็งแกร่ง
// SPDX-License-Identifier: ความแข็งแกร่งของ MIT
pragma ^0.8.6;
รายการสัญญา {
// กำหนดเหตุการณ์ที่จะเริ่มทำงานเมื่อมีการสร้างรายการใหม่
เหตุการณ์ NewItem(uint itemId, string itemName, uint itemPrice);
// แต่ละรายการมี id, ชื่อ และราคา
struct ItemStruct {
string name;
uint price;
}
// อาร์เรย์เพื่อเก็บรายการทั้งหมด
ItemStruct[] รายการสาธารณะ;
// ฟังก์ชั่นสร้างรายการใหม่
ฟังก์ชั่น createItem(string memory _name, uint _price) public {
items.push(ItemStruct(_name, _price));
emit NewItem(items.length - 1, _name, _price);
}
}
ตัวระบุใบอนุญาต SPDX: นี่เป็นวิธีมาตรฐานในการแสดงใบอนุญาตของสัญญา บรรทัด // SPDX-License-Identifier: MIT
ระบุว่าสัญญาของเราใช้ใบอนุญาต MIT ที่ได้รับอนุญาต
คำสั่ง Pragma: pragma solidity ^0.8.6;
ระบุว่าสัญญาเขียนด้วย Solidity เวอร์ชัน 0.8.6 สัญลักษณ์ ^
หมายความว่าจะเข้ากันได้กับเวอร์ชันใหม่ ๆ จนถึงเวอร์ชัน 0.9.0 แต่ไม่รวม
คำจำกัดความของสัญญา: contract Item {...}
กำหนดสัญญาใหม่ที่เรียกว่า Item
นี่คือที่ที่เราเขียนตัวแปรสถานะและฟังก์ชันของสัญญา
คำจำกัดความของเหตุการณ์: event NewItem(uint itemId, string itemName, uint itemPrice);
กำหนดเหตุการณ์ที่เราสามารถปล่อยออกมาเมื่อใดก็ตามที่มีการสร้างรายการใหม่ กิจกรรมเป็นช่องทางหนึ่งสำหรับสัญญาอัจฉริยะในการบันทึกกิจกรรมที่บุคคลภายนอกสามารถรับฟังได้
คำจำกัดความของโครงสร้าง: struct ItemStruct {...}
กำหนดชนิดข้อมูลใหม่ ItemStruct
ซึ่งแสดงถึงรายการที่มี name
และ price
ตัวแปรสถานะ: ItemStruct[] public items;
ประกาศ items
ตัวแปรสถานะที่เก็บอาร์เรย์ของ ItemStruct
s คีย์เวิร์ด public
จะสร้างฟังก์ชัน getter โดยอัตโนมัติเพื่อให้ทุกคนสามารถเข้าถึงรายการได้
คำจำกัดความของฟังก์ชัน: function createItem(string memory _name, uint _price) public {...}
กำหนดฟังก์ชันสาธารณะที่ใครๆ ก็สามารถเรียกใช้เพื่อสร้างไอเท็มใหม่ได้ ฟังก์ชันรับชื่อและราคา สร้าง ItemStruct
ใหม่ เพิ่มลงในอาร์เรย์ items
และส่งเหตุการณ์ NewItem
หากต้องการรวบรวมสัญญานี้ ให้ไปที่แผงด้านขวาแล้วคลิกไอคอนที่สามจากด้านบน (โลโก้ Solidity) ที่นี่คุณสามารถรวบรวมสัญญา คลิกปุ่ม "คอมไพล์" และหากไม่มีข้อผิดพลาด สัญญาของคุณจะได้รับการรวบรวมสำเร็จ
IPFS: InterPlanetary File System (IPFS) เป็นโปรโตคอลที่ออกแบบมาเพื่อสร้างเว็บแบบถาวรและกระจายอำนาจ มันเหมือนกับฝูง BitTorrent เดี่ยว ๆ ที่แลกเปลี่ยนวัตถุภายในที่เก็บ Git เดียว
Swarm: Swarm เป็นแพลตฟอร์มการจัดเก็บข้อมูลแบบกระจายและบริการกระจายเนื้อหาที่มาจาก Ethereum web3 stack ช่วยให้เครือข่ายเพื่อนสามารถจัดเก็บและแจกจ่ายข้อมูลได้
เมื่อคุณคอมไพล์สัญญา คอมไพลเลอร์ Solidity จะสร้างไฟล์ JSON ที่มี Application Binary Interface (ABI) และโค้ดไบต์ รวมถึงข้อมูลอื่นๆ สิ่งนี้เรียกว่าข้อมูลเมตาของสัญญา การจัดเก็บข้อมูลเมตานี้บนเครือข่ายการจัดเก็บข้อมูลแบบกระจายอำนาจช่วยให้แน่ใจว่าข้อมูลดังกล่าวจะพร้อมใช้งานอย่างถาวร และอาจมีประโยชน์ในการตรวจสอบซอร์สโค้ดของสัญญา
อย่างไรก็ตาม เพื่อจุดประสงค์ในการเรียนรู้ของคุณและหากคุณไม่ได้วางแผนที่จะตรวจสอบสัญญาบน Etherscan หรือ Block Explorer อื่นๆ คุณสามารถเลือก Swarm หรือ IPFS หรือคุณสามารถเพิกเฉยต่อสัญญาและย้ายไปยังขั้นตอนถัดไปของการเรียนรู้ของคุณ โปรดจำไว้ว่า จุดสนใจหลักในขั้นตอนนี้คือการทำความเข้าใจวิธีเขียน คอมไพล์ และปรับใช้สัญญา
ในตลาดอีคอมเมิร์ซแบบดั้งเดิม เช่น Amazon และ eBay หน่วยงานกลางจะอำนวยความสะดวกในการทำธุรกรรมระหว่างผู้ซื้อและผู้ขาย หน่วยงานกลางนี้ควบคุมธุรกรรม ดูแลรักษารายการผลิตภัณฑ์ และจัดการการระงับข้อพิพาท แม้ว่าโมเดลแบบรวมศูนย์นี้มีข้อดี แต่ก็มีข้อเสียหลายประการ รวมถึงความเสี่ยงของการเซ็นเซอร์ ค่าธรรมเนียมสูง และการพึ่งพาความไว้วางใจ
ในทางกลับกัน ตลาดที่มีการกระจายอำนาจใช้ประโยชน์จากเทคโนโลยีบล็อกเชนเพื่อเปิดใช้งานการทำธุรกรรมแบบ peer-to-peer โดยไม่ต้องมีคนกลาง ขจัดความจำเป็นในการไว้วางใจเนื่องจากธุรกรรมมีความโปร่งใสและตรวจสอบได้โดยผู้เข้าร่วมทั้งหมดในบล็อกเชน ตัวอย่างของตลาดที่มีการกระจายอำนาจ ได้แก่ OpenBazaar และ Origin Protocol
Remix IDE (Integrated Development Environment) เป็นเครื่องมือโอเพ่นซอร์สที่ทรงพลังซึ่งออกแบบมาโดยเฉพาะสำหรับการพัฒนาสัญญาอัจฉริยะ Ethereum มันทำงานโดยตรงบนเว็บเบราว์เซอร์ของคุณ ดังนั้นคุณไม่จำเป็นต้องติดตั้งอะไรบนคอมพิวเตอร์ของคุณ
คุณสามารถเข้าถึง Remix IDE ได้ที่ https://remix.ethereum.org เมื่อคุณเปิด Remix ในเบราว์เซอร์ คุณจะพบแผงสามแผง:
แผงด้านซ้าย: นี่คือที่ที่คุณสามารถสร้าง นำเข้า และจัดการไฟล์ Solidity ของคุณได้ นอกจากนี้ยังมีปลั๊กอินต่างๆ สำหรับการคอมไพล์ ทดสอบ ดีบัก และปรับใช้สัญญาของคุณ
แผงกลาง: นี่คือเครื่องมือแก้ไขโค้ดของคุณ ที่นี่คุณจะเขียนและแก้ไขโค้ด Solidity ของคุณ
แผงด้านขวา: แผงนี้มีเครื่องมือต่างๆ ในการรวบรวมสัญญาของคุณ ปรับใช้บนเครือข่าย Ethereum (ไม่ว่าจะบนเครือข่าย Ethereum จริงหรือการจำลอง JavaScript VM) และโต้ตอบกับสัญญาที่ปรับใช้ของคุณ
ในส่วนนี้ เราจะเขียนสัญญา Solidity ฉบับแรกของเรา สัญญานี้จะเป็นตัวแทนของ "สินค้า" พื้นฐานในตลาดของเรา
ในการเริ่มต้น ให้สร้างไฟล์ใหม่ใน Remix โดยคลิกที่ไอคอนที่สองจากด้านบนบนแผงด้านซ้าย (ไอคอนไฟล์) กล่องโต้ตอบใหม่จะปรากฏบนแผงกลาง ป้อน Item.sol
เป็นชื่อไฟล์แล้วคลิก "ตกลง"
ความแข็งแกร่ง
// SPDX-License-Identifier: ความแข็งแกร่งของ MIT
pragma ^0.8.6;
รายการสัญญา {
// กำหนดเหตุการณ์ที่จะเริ่มทำงานเมื่อมีการสร้างรายการใหม่
เหตุการณ์ NewItem(uint itemId, string itemName, uint itemPrice);
// แต่ละรายการมี id, ชื่อ และราคา
struct ItemStruct {
string name;
uint price;
}
// อาร์เรย์เพื่อเก็บรายการทั้งหมด
ItemStruct[] รายการสาธารณะ;
// ฟังก์ชั่นสร้างรายการใหม่
ฟังก์ชั่น createItem(string memory _name, uint _price) public {
items.push(ItemStruct(_name, _price));
emit NewItem(items.length - 1, _name, _price);
}
}
ตัวระบุใบอนุญาต SPDX: นี่เป็นวิธีมาตรฐานในการแสดงใบอนุญาตของสัญญา บรรทัด // SPDX-License-Identifier: MIT
ระบุว่าสัญญาของเราใช้ใบอนุญาต MIT ที่ได้รับอนุญาต
คำสั่ง Pragma: pragma solidity ^0.8.6;
ระบุว่าสัญญาเขียนด้วย Solidity เวอร์ชัน 0.8.6 สัญลักษณ์ ^
หมายความว่าจะเข้ากันได้กับเวอร์ชันใหม่ ๆ จนถึงเวอร์ชัน 0.9.0 แต่ไม่รวม
คำจำกัดความของสัญญา: contract Item {...}
กำหนดสัญญาใหม่ที่เรียกว่า Item
นี่คือที่ที่เราเขียนตัวแปรสถานะและฟังก์ชันของสัญญา
คำจำกัดความของเหตุการณ์: event NewItem(uint itemId, string itemName, uint itemPrice);
กำหนดเหตุการณ์ที่เราสามารถปล่อยออกมาเมื่อใดก็ตามที่มีการสร้างรายการใหม่ กิจกรรมเป็นช่องทางหนึ่งสำหรับสัญญาอัจฉริยะในการบันทึกกิจกรรมที่บุคคลภายนอกสามารถรับฟังได้
คำจำกัดความของโครงสร้าง: struct ItemStruct {...}
กำหนดชนิดข้อมูลใหม่ ItemStruct
ซึ่งแสดงถึงรายการที่มี name
และ price
ตัวแปรสถานะ: ItemStruct[] public items;
ประกาศ items
ตัวแปรสถานะที่เก็บอาร์เรย์ของ ItemStruct
s คีย์เวิร์ด public
จะสร้างฟังก์ชัน getter โดยอัตโนมัติเพื่อให้ทุกคนสามารถเข้าถึงรายการได้
คำจำกัดความของฟังก์ชัน: function createItem(string memory _name, uint _price) public {...}
กำหนดฟังก์ชันสาธารณะที่ใครๆ ก็สามารถเรียกใช้เพื่อสร้างไอเท็มใหม่ได้ ฟังก์ชันรับชื่อและราคา สร้าง ItemStruct
ใหม่ เพิ่มลงในอาร์เรย์ items
และส่งเหตุการณ์ NewItem
หากต้องการรวบรวมสัญญานี้ ให้ไปที่แผงด้านขวาแล้วคลิกไอคอนที่สามจากด้านบน (โลโก้ Solidity) ที่นี่คุณสามารถรวบรวมสัญญา คลิกปุ่ม "คอมไพล์" และหากไม่มีข้อผิดพลาด สัญญาของคุณจะได้รับการรวบรวมสำเร็จ
IPFS: InterPlanetary File System (IPFS) เป็นโปรโตคอลที่ออกแบบมาเพื่อสร้างเว็บแบบถาวรและกระจายอำนาจ มันเหมือนกับฝูง BitTorrent เดี่ยว ๆ ที่แลกเปลี่ยนวัตถุภายในที่เก็บ Git เดียว
Swarm: Swarm เป็นแพลตฟอร์มการจัดเก็บข้อมูลแบบกระจายและบริการกระจายเนื้อหาที่มาจาก Ethereum web3 stack ช่วยให้เครือข่ายเพื่อนสามารถจัดเก็บและแจกจ่ายข้อมูลได้
เมื่อคุณคอมไพล์สัญญา คอมไพลเลอร์ Solidity จะสร้างไฟล์ JSON ที่มี Application Binary Interface (ABI) และโค้ดไบต์ รวมถึงข้อมูลอื่นๆ สิ่งนี้เรียกว่าข้อมูลเมตาของสัญญา การจัดเก็บข้อมูลเมตานี้บนเครือข่ายการจัดเก็บข้อมูลแบบกระจายอำนาจช่วยให้แน่ใจว่าข้อมูลดังกล่าวจะพร้อมใช้งานอย่างถาวร และอาจมีประโยชน์ในการตรวจสอบซอร์สโค้ดของสัญญา
อย่างไรก็ตาม เพื่อจุดประสงค์ในการเรียนรู้ของคุณและหากคุณไม่ได้วางแผนที่จะตรวจสอบสัญญาบน Etherscan หรือ Block Explorer อื่นๆ คุณสามารถเลือก Swarm หรือ IPFS หรือคุณสามารถเพิกเฉยต่อสัญญาและย้ายไปยังขั้นตอนถัดไปของการเรียนรู้ของคุณ โปรดจำไว้ว่า จุดสนใจหลักในขั้นตอนนี้คือการทำความเข้าใจวิธีเขียน คอมไพล์ และปรับใช้สัญญา