ขั้นตอนที่ 2: สร้างพอร์ทัลนักพัฒนาสัญญาอัจฉริยะของคุณเอง

    ขั้นตอนที่สอง

    ในส่วนนี้เราจะแนะนำเครื่องมือที่มีประสิทธิภาพสองสามอย่างเพื่อให้ประสบการณ์การพัฒนาของคุณง่ายที่สุด เราจะติดตั้งสภาพแวดล้อมการพัฒนาที่เรียกว่า Truffle สำรวจ Solidity ครอบคลุมพื้นฐานของสัญญาอัจฉริยะ (เราจะสร้างเอง!) และเริ่มโหนดของเราเองบนเครื่องในพื้นที่ของเรา เมื่อเราติดตั้งในพื้นที่สำเร็จแล้วเราจะใช้ Remix เพื่อโต้ตอบกับสัญญาของเราและเจาะลึกขั้นตอนการพัฒนา!

    ทำความคุ้นเคยกับ Truffle

    แห้ว

    Truffle เป็นสภาพแวดล้อมการพัฒนาที่ยอดเยี่ยมที่ช่วยให้คุณสามารถเชื่อมต่อและทดสอบโดยใช้ Ethereum Virtual Machine Truffle ถูกสร้างขึ้นเพื่อให้การพัฒนาง่ายขึ้นและด้วยการโต้ตอบที่เกิดขึ้นภายในเครื่องจะช่วยลดความเครียดของการปรับใช้ทั้งบน testnet (เช่น Ropsten หรือ Rinkeby) และ mainnet.

    สำหรับเอกสารเพิ่มเติมเกี่ยวกับ Truffle โปรดดู ที่นี่:

    สกรีนช็อต 2020 08 26 เวลา 5 49 43 น

    ในการติดตั้ง Truffle ในเทอร์มินัลของคุณให้ดำเนินการต่อไปนี้:

    npm ติดตั้งแห้ว -g

    หมายเหตุ: คำแนะนำสำหรับ Windows

    หากคุณใช้ Truffle บน Windows คุณอาจพบข้อขัดแย้งในการตั้งชื่อที่อาจทำให้ Truffle ทำงานไม่ถูกต้อง โปรดมอง หัวข้อเกี่ยวกับการแก้ไขข้อขัดแย้งในการตั้งชื่อ สำหรับแนวทางแก้ไข.

    Ganache 

    ในขณะที่เรากำลังดำเนินการอยู่เรามาติดตั้ง CLI สำหรับ ganache กัน

    สรุปคร่าวๆเกี่ยวกับ ganache คือมันเป็นบล็อคเชนส่วนตัวที่คุณสามารถใช้ในเครื่องเพื่อหมุนและทดสอบการทำงานของโปรเจ็กต์ได้อย่างรวดเร็ว Ganache เป็นเครื่องมือที่คุณสามารถใช้ได้ตลอดทั้งวงจรการพัฒนา คุณไม่เพียง แต่พัฒนาได้ แต่ยังปรับใช้และทดสอบ dApps ของคุณได้อีกด้วย ทั้งหมดนี้เกิดขึ้นในเครื่องของคุณดังนั้นนี่จึงเป็นสภาพแวดล้อมที่มีแรงเสียดทาน / ความเสี่ยงต่ำที่สุดในการทำงานในโครงการของคุณ!

    ใช้ npm:


    npm ติดตั้ง -g ganache-cli

    โอเคกลับไปที่แห้ว!

    ข้อเสนอบางอย่างของ Truffle ให้:

    • การรวบรวมสัญญาอัจฉริยะในตัวการเชื่อมโยงการปรับใช้และการจัดการไบนารี.
    • การทดสอบสัญญาอัตโนมัติเพื่อการพัฒนาอย่างรวดเร็ว.
    • การปรับใช้แบบสคริปต์และขยายได้ & กรอบการโยกย้าย.
    • การจัดการเครือข่ายสำหรับการปรับใช้กับสาธารณะจำนวนเท่าใดก็ได้ & เครือข่ายส่วนตัว.
    • การจัดการแพ็คเกจด้วย EthPM & NPM โดยใช้มาตรฐาน ERC190.
    • คอนโซลแบบโต้ตอบสำหรับการสื่อสารสัญญาโดยตรง.
    • สร้างไปป์ไลน์ที่กำหนดค่าได้พร้อมรองรับการผสานรวมที่แน่นหนา.
    • รันสคริปต์ภายนอกที่รันสคริปต์ภายในสภาพแวดล้อม Truffle.

    สำหรับบทช่วยสอนของเราเราจะสร้างบางสิ่งขึ้นมาใหม่อย่างไรก็ตามคุณควรตรวจสอบโครงการหม้อไอน้ำบางส่วนที่ Truffle ได้สร้างไว้แล้วที่เรียกว่า Truffle Boxes (found ที่นี่).

    ตอนนี้เราได้ติดตั้งเห็ดทรัฟเฟิลและกานาชแล้วเราจะมาพูดถึงความแข็งแกร่งกัน!

    ความเป็นปึกแผ่น 

    Solidity เป็นภาษาระดับสูงเชิงวัตถุที่ได้รับความนิยมอย่างไม่น่าเชื่อสำหรับการใช้งานสัญญาอัจฉริยะที่ทำงานบน Ethereum Virtual Machine (EVM) สัญญาอัจฉริยะคือโปรแกรมที่ควบคุมพฤติกรรมของบัญชีภายในสถานะ Ethereum หากคุณไม่เคยดูแนว Solidity มาก่อน แต่คุ้นเคยกับ C ++ และหรือ JavaScript คุณจะสังเกตเห็นความคล้ายคลึงกันมากกว่าสองสามอย่าง. 

    Solidity เป็นภาษาที่พิมพ์แบบคงที่ซึ่งสนับสนุนการสืบทอดไลบรารีและประเภทที่ผู้ใช้กำหนดเองที่ซับซ้อนท่ามกลางคุณสมบัติอื่น ๆ ด้วย Solidity คุณสามารถสร้างสัญญาสำหรับการใช้งานเช่นการลงคะแนนการระดมทุนหรือแม้แต่การประมูลแบบตาบอดเพื่อตั้งชื่อกรณีการใช้งานเพียงไม่กี่กรณี. 

    Solidity ถูกรวบรวมเป็น bytecode ที่เรียกใช้งานได้บน EVM ด้วย Solidity นักพัฒนาสามารถเขียนแอปพลิเคชันที่ใช้ตรรกะทางธุรกิจที่บังคับใช้ตนเองซึ่งรวมอยู่ในสัญญาอัจฉริยะโดยทิ้งไว้สำหรับบันทึกการทำธุรกรรมที่ไม่มีการปฏิเสธ สัญญาอัจฉริยะช่วยให้ผู้ใช้เชื่อถือรหัสซึ่งช่วยในการสร้างสภาพแวดล้อมที่ไม่น่าไว้วางใจซึ่งอาจมีการทุจริตของมนุษย์ออกไปอย่างมาก. 

    โปรดทราบว่าเมื่อปรับใช้สัญญาคุณควรใส่ใจกับเวอร์ชันที่คุณใช้อยู่เสมอ มีการแนะนำการเปลี่ยนแปลงคุณสมบัติใหม่และการแก้ไขข้อบกพร่องอย่างสม่ำเสมอ (โปรดจำไว้ว่าหากคุณพบว่าตัวเองทำตามแบบฝึกหัดออนไลน์การพบข้อผิดพลาดอาจเกิดขึ้นได้ดังนั้นควรเก็บ เอกสารใกล้ตัวคุณ). 

    เริ่มโครงการ Truffle 

    จากที่กล่าวมาเริ่มโครงการของเราและตั้งชื่อว่า “สวัสดีชาวโลก”

    เข้าไปในเทอร์มินัลของคุณแล้วมาสร้างโฟลเดอร์ว่างใหม่กัน 

    mkdir eth- สวัสดีชาวโลก

    เมื่อเรามีไดเร็กทอรีว่างของเราแล้วให้ข้ามไปที่โฟลเดอร์และเรียกใช้คำสั่ง

    เริ่มต้นทรัฟเฟิล

    เมื่อกระบวนการเสร็จสิ้นเราจะสามารถดูไฟล์บางไฟล์ที่สร้างขึ้นสำหรับเราได้:

    สกรีนช็อต 2020 08 26 19:00 น

    ตอนนี้เรามีผู้ติดต่อการโยกย้ายโฟลเดอร์ทดสอบและไฟล์ truffle-config มาดูไฟล์เหล่านี้และพูดคุยกันในระดับที่สูงขึ้นว่าไฟล์เหล่านี้คืออะไร.

    สัญญา

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

    เพื่อทำลายสิ่งนี้ให้ดียิ่งขึ้นไปอีก Nick Szabo ให้ตัวอย่างเครื่องหยอดเหรียญ หากคุณใส่เหรียญลงในเครื่องในจำนวนที่ถูกต้องคุณ (และทุกคนก่อน / หลังคุณ) สามารถคาดหวังผลลัพธ์ที่แน่นอนเหมือนกันในการแลกเปลี่ยน เช่นเดียวกับผู้ติดต่ออัจฉริยะที่สร้างบน Ethereum ซึ่งจะมีค่าและจนกว่าจะตรงตามเงื่อนไข (เช่นจำนวนเหรียญที่เหมาะสมในตัวอย่างของเรา) จากนั้นจะปลดล็อกและปล่อยข้อมูลที่คุณพยายามเรียกค้น.

    เราจะกลับมาพูดคุยเกี่ยวกับ Solidity และ smart contract ในภายหลังเรามาดูการย้ายข้อมูลกัน!

    การโยกย้าย

    การโยกย้ายคือไฟล์ Javascript ที่อนุญาตให้คุณปรับใช้สัญญาของคุณกับเครือข่าย Ethereum สิ่งที่น่าสนใจจริงๆเกี่ยวกับพวกเขาคือมีสมมติฐานพื้นฐานที่ว่างานของคุณจะพัฒนาขึ้นและการปรับใช้ของคุณจะเปลี่ยนไปเมื่อเวลาผ่านไป ในขณะที่คุณอัปเดตคุณจะต้องสร้างสคริปต์การย้ายข้อมูลใหม่ในระหว่างการพัฒนาโครงการของคุณ วิธีคิดเกี่ยวกับไฟล์การโอนย้ายคือไฟล์เหล่านี้มีหน้าที่ส่วนใหญ่ในการจัดเตรียมและปรับใช้งานของคุณ วิธีง่ายๆในการพิจารณาคือการโอนย้ายเป็นชุดของสคริปต์การปรับใช้ที่มีการจัดการ ในขณะที่คุณอัปเดตงานของคุณบันทึกการย้ายข้อมูลที่รันก่อนหน้านี้ของคุณจะถูกบันทึกแบบออนไลน์ผ่านสัญญาการย้ายข้อมูลในตัว.

    ลองดูตัวคุณเองคุณมีสัญญาการย้ายข้อมูลแล้ว! ตรงไปที่ไดเรกทอรีสัญญาของคุณและเปิดขึ้นคุณจะเห็นไฟล์ Migrations.sol ที่มีสัญญาที่ควรมีลักษณะดังนี้:

    สกรีนช็อต 2020 08 27 เวลา 4 49 03 น

    นี่คือสัญญาเริ่มต้นที่สร้างขึ้นสำหรับเราเมื่อเราเรียกใช้ truffle init โดยธรรมชาติ Truffle กำหนดให้คุณต้องมีสัญญาการย้ายข้อมูลเพื่อที่จะใช้คุณลักษณะการย้ายข้อมูลดังนั้นอย่าลบสิ่งนี้!

    หมายเหตุ: คุณต้องปรับใช้สัญญานี้ภายในการย้ายข้อมูลครั้งแรกเพื่อใช้ประโยชน์จากคุณลักษณะการย้ายข้อมูล.

    เมื่อเราได้ดูสัญญาการย้ายข้อมูลแล้วเราสามารถไปที่ไดเร็กทอรีการย้ายข้อมูลและเราจะเห็นไฟล์ชื่อ 1_inital_migrations.js

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

    สกรีนช็อต 2020 08 27 เวลา 5 09 25 น

    ในขณะที่คุณสร้างสัญญาคุณจะต้องตรวจสอบให้แน่ใจว่าคุณมีไฟล์ migration.js ร่วมด้วย โดยไม่ต้องดำน้ำลึกเกินไปใน artifacts.require (), deployer.deploy ฯลฯ ที่นี่ เป็นเอกสารที่ดีเยี่ยมจากทีมทรัฟเฟิลเพื่ออธิบายเพิ่มเติมเกี่ยวกับการใช้วิธีการเหล่านี้.

    ในการคอมไพล์โปรเจ็กต์ Truffle ให้เปลี่ยนเป็นรูทของไดเร็กทอรีที่โปรเจ็กต์ตั้งอยู่จากนั้นพิมพ์สิ่งต่อไปนี้ลงในเทอร์มินัล:

    ทรัฟเฟิลคอมไพล์

    ในการเรียกใช้การย้ายข้อมูลของคุณในเทอร์มินัลของคุณในที่สุดคุณจะเรียกใช้ (อย่างไรก็ตามเรายังไม่จำเป็นต้องทำสิ่งนี้!)

    แห้วโยกย้าย

    การดำเนินการนี้จะเรียกใช้การย้ายข้อมูลทั้งหมดที่อยู่ในไดเรกทอรีการย้ายข้อมูลของโปรเจ็กต์ของคุณ.

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

    มีเอกสารตัวเลือกคำสั่งอื่น ๆ ที่นี่.

    หมายเหตุ: เราติดตั้งไว้ก่อนหน้านี้ แต่สำหรับการทดสอบในพื้นที่โปรดตรวจสอบให้แน่ใจว่ามีการทดสอบ blockchain เช่น Ganache ติดตั้งและเรียกใช้ก่อนดำเนินการโยกย้าย.

    การทดสอบ

    เมื่อพูดถึงการทดสอบการเขียนทรัฟเฟิลมาพร้อมกับเครื่องมือที่ยอดเยี่ยมบางอย่างเพื่อให้ใช้งานง่าย โดยเฉพาะอย่างยิ่งถ้าคุณวางแผนที่จะปรับใช้สัญญาของคุณกับ mainnet (แต่ก็เป็นแนวทางปฏิบัติที่ดีแม้กระทั่งใน testnet) สิ่งสำคัญมากที่จะต้องทำการทดสอบและตรวจสอบสัญญาของคุณอย่างสุดความสามารถ Truffle ทำให้การตรวจสอบ / ทดสอบการพัฒนาของคุณเป็นเรื่องง่ายและสามารถจัดการได้.

    Truffle ใช้ มอคค่า กรอบการทดสอบและ ชัย สำหรับการยืนยันเพื่อให้คุณมีกรอบการทำงานที่มั่นคงสำหรับการเขียนการทดสอบ JavaScript ของคุณ. 

    หมายเหตุ: หากคุณไม่คุ้นเคยกับการเขียนแบบทดสอบหน่วยใน Mocha โปรดดู เอกสารของ Mocha ก่อนดำเนินการต่อ.

    หมายเหตุด้านข้าง: เครื่องมือที่ยอดเยี่ยมในการตรวจสอบสัญญาของคุณอย่างละเอียดคือ ตำนาน, บริการวิเคราะห์ความปลอดภัยชั้นนำในภาคสนามที่นำเสนอบทวิจารณ์เชิงลึกสำหรับสัญญาอัจฉริยะ ภารกิจของพวกเขาคือไม่เพียง แต่ให้แน่ใจว่าคุณหลีกเลี่ยงข้อผิดพลาดที่มีค่าใช้จ่ายสูง แต่ยังทำให้ Ethereum เป็นแพลตฟอร์มที่ปลอดภัยและน่าเชื่อถือยิ่งขึ้นโดยรวม.

    ไฟล์ทดสอบทั้งหมดควรอยู่ในไดเร็กทอรี./test Truffle จะเรียกใช้ไฟล์ทดสอบที่มีนามสกุลไฟล์ต่อไปนี้เท่านั้น: .js, .ts, .es, .es6, .jsx, and.sol ไฟล์อื่น ๆ ทั้งหมดจะถูกละเว้น.

    ในการเรียกใช้การทดสอบทั้งหมดเพียงแค่เรียกใช้:

    การทดสอบแห้ว

    ตอนนี้เราได้กล่าวถึงสิ่งที่ truffle init สร้างขึ้นและโครงร่างของโครงการของเราแล้วตอนนี้เรามาเริ่มกันเลยและเพิ่มสัญญาอัจฉริยะในโครงการของเรา!

    การเขียนสัญญาอัจฉริยะ

    มาเข้าสู่ไดเร็กทอรีสัญญาและเขียนสัญญาฉบับแรกที่เราวางแผนจะปรับใช้กับสภาพแวดล้อมการทดสอบในพื้นที่ของเรา (ganache)!

    เราจะเริ่มต้นด้วยการสร้างไฟล์ our.sol ซึ่งเราจะตั้งชื่อว่า HelloWorld.sol

    ต่อไปเราสามารถเพิ่มสัญญาพื้นฐานของเราซึ่งจะมีลักษณะเช่นนี้

    ความแข็งแกร่งของ pragma >= 0.5.8 <0.7.0; สัญญา HelloWorld {สตริงข้อความสาธารณะ; ตัวสร้าง (initMessage หน่วยความจำสตริง) สาธารณะ {message = initMessage; } การอัปเดตฟังก์ชัน (หน่วยความจำสตริง newMessage) สาธารณะ {message = newMessage; }}

    เมื่อมองไปที่สัญญาของเราให้ใกล้ขึ้นอีกนิดเราสามารถแยกองค์ประกอบบางอย่างได้

    จำไว้ว่าสัญญาคือชุดของฟังก์ชันและข้อมูล (สถานะ).

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

    (ที่นี่ เป็นลิงค์ไปยังเอกสารความเป็นปึกแผ่นเพื่อเรียนรู้รายละเอียดของความแตกต่างของความเป็นปึกแผ่น)

    ท้ายที่สุดแล้วสัญญาคือชุดของฟังก์ชันและข้อมูล (สถานะของมัน) ที่อยู่ตามที่อยู่เฉพาะบน Ethereum blockchain.

    เมื่อดูการทำงานของสัญญาของเราเราจะเห็นว่าเรากำลังตั้งค่าข้อความของเราให้เป็นสตริงสาธารณะที่สามารถดูได้. 

    คำหลัก “สาธารณะ” ทำให้ตัวแปรสามารถเข้าถึงได้จากภายนอกสัญญาและสร้างฟังก์ชันที่สัญญาหรือ SDK อื่น ๆ สามารถเรียกเพื่อเข้าถึงข้อความสาธารณะของสตริงค่า.

    สัญญา HelloWorld {สตริงข้อความสาธารณะ;

    นี่คือฟังก์ชันที่ทำงานในระหว่างการสร้างสัญญาเท่านั้น 

    ตัวสร้าง (initMessage หน่วยความจำสตริง) สาธารณะ {message = initMessage; }

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

    จากนั้นเราสามารถเริ่มต้นข้อความที่ส่งผ่านเป็นพารามิเตอร์และสามารถแก้ไข / อัปเดตได้ด้วยฟังก์ชันอัพเดต.

    ฟังก์ชันนี้เป็นฟังก์ชันที่เข้าถึงได้โดยสาธารณะซึ่งใช้สตริงเป็นพารามิเตอร์และอัปเดต “ข้อความ” (ดูด้านล่าง).

    การอัปเดตฟังก์ชัน (หน่วยความจำสตริง newMessage) สาธารณะ {message = newMessage; }}

    คุณมีสัญญา HelloWorld พื้นฐาน แต่ย่อยง่าย!

    ตอนนี้เราได้เพิ่มสัญญาแล้วตอนนี้เราสามารถตรวจสอบให้แน่ใจว่ามันมีความสามารถในการคอมไพล์!

    ตรงไปที่โฟลเดอร์ Migration ในโครงการของเราและตอนนี้เราจะสร้างไฟล์ a.js สำหรับสัญญา HelloWorld ของเราโดยเฉพาะ.

    เราจะสร้างไฟล์ใหม่และชื่อคือ 2_deploy_contracts.js

    จำหมายเหตุเกี่ยวกับหลักการตั้งชื่อจากก่อนหน้านี้!

    const HelloWorld = artifacts.require ("สวัสดีชาวโลก"); module.exports = function (deployer) {deployer.deploy (HelloWorld, "สตริง"); };

    ทำได้ดีมาก! เราเกือบพร้อมที่จะปรับใช้สัญญาของเราแล้ว แต่ก่อนอื่นเราต้องแน่ใจว่าไฟล์ truffle-config ของเรารู้ว่าจะคุยกับใคร ดังที่ได้กล่าวไว้ก่อนหน้านี้เราจะมุ่งเน้นไปที่สภาพแวดล้อมในพื้นที่ของเราในส่วนนี้ แต่ในส่วนที่ 3 (spolier) เราไม่เพียง แต่สร้างและปรับใช้ในพื้นที่เท่านั้น แต่เรายังนำมันไปยังเครือข่ายทดสอบอีกด้วย!

    เลื่อนลงในไฟล์ truffle-config.js ของคุณจนกว่าคุณจะเห็นส่วนที่เกี่ยวข้องกับเครือข่าย

    ไม่ใส่ความคิดเห็น / เพิ่มสิ่งต่อไปนี้ 

    เครือข่าย: {การพัฒนา: {โฮสต์: "127.0.0.1", พอร์ต: 8545, network_id: "*", },

    ตอนนี้ไฟล์ของคุณควรมีลักษณะดังนี้:

     

    Screen Shot 2020 08 31 เวลา 6 14 45 น

    สิ่งที่เกิดขึ้นที่นี่คือเราบอกทิศทางเฉพาะไฟล์กำหนดค่าของเราว่าจะเชื่อมต่อกับอะไร ในกรณีนี้ตามที่คุณจะเห็นในไม่ช้าเราจะเชื่อมต่อกับเครื่องมือ ganache-cli ของเรา.

    เริ่มต้น Ganache

    จากที่กล่าวมาเรามาเริ่มต้นกานาซกันเลย 

    ในเทอร์มินัลของคุณดำเนินการต่อ 

    กานาช – คลิ

    Screen Shot 2020 08 31 เวลา 6 20 00 น

    ลองดูสิ! ตอนนี้คุณกำลังเรียกใช้ TestRPC ของคุณเองที่นั่นในเทอร์มินัลของคุณ! 

    (เพิ่มเติมเกี่ยวกับเรื่องนี้ ที่นี่)

    หมายเหตุ: เปิดแท็บนี้ไว้ในเทอร์มินัลของคุณ แต่เปิดแท็บใหม่เพื่อดำเนินการต่อ.

    ตรวจสอบด่วน 

    กลับไปที่โครงการของเราและทบทวนสิ่งที่เราได้ทำไปอย่างรวดเร็ว. 

    • เราสร้างโครงการใหม่
    • ทรัฟเฟิลเริ่มต้น
    • เข้าร่วมทัวร์อย่างรวดเร็วของนั่งร้าน
    • สร้างสัญญา HelloWorld ของเรา
    • เพิ่มตรรกะในโฟลเดอร์การย้ายข้อมูลสำหรับสัญญาของเรา
    • เข้าไปในไฟล์ config ของเราและปรับข้อมูลเครือข่ายของเรา 

    ถึงเวลาทำสัญญาของเราแล้ว! 

    ในหน้าต่างเทอร์มินัลใหม่ของเรา (เนื่องจากเรามี ganache ทำงานอยู่ในอีกหน้าต่างหนึ่ง) 

    มาเริ่มกันเลย 

    ทรัฟเฟิลคอมไพล์

    ตอนนี้คุณควรเห็นสิ่งนี้เป็นผลในเทอร์มินัลของคุณ:

    สกรีนช็อต 2020 08 31 เวลา 07 07 17:00 น

    หากคุณไปที่โปรเจ็กต์ของคุณตอนนี้คุณจะเห็นว่าคุณมีโฟลเดอร์บิลด์ / สัญญาอยู่เหนือโฟลเดอร์สัญญาของคุณที่มีไฟล์ json สองไฟล์ คุณควรเห็น: 

    • HelloWorld.json
    • Migrations.json 

    ไฟล์ json ในระดับสูงจะอธิบายถึงสัญญาที่ปรับใช้และหน้าที่ของมัน ช่วยให้เราสามารถกำหนดบริบทของสัญญาและเรียกใช้ฟังก์ชันได้.

    หากเราดูภายในเราจะเห็นข้อมูลทั้งหมด:

     

    Screen Shot 2020 08 31 เวลา 8 01 28 น

    เราเจาะลึกข้อมูลนี้ในขั้นตอนที่สาม แต่สิ่งสำคัญที่ต้องพิจารณาคือ ABI.

    Application Binary Interface เป็นรูปแบบการเข้ารหัสข้อมูลที่ใช้ใน Ethereum สำหรับการทำงานกับสัญญาอัจฉริยะ.

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

    ถึงเวลาโยกย้าย

    ตกลง! 

    ตอนนี้เรามี ganache-cli ทำงานอยู่และเราได้รวบรวมสัญญาอัจฉริยะของเราแล้วตอนนี้ก็ถึงเวลาโยกย้ายสัญญาของเรา! 

    ในเทอร์มินัลของคุณดำเนินการต่อ 

    แห้วโยกย้าย

    ใช่! คุณทำมันแล้ว!

    สกรีนช็อต 2020 08 31 เวลา 8 37 37 น

    เราจะเห็นได้ว่าเราประสบความสำเร็จในการปรับใช้สัญญาอัจฉริยะของเรา คุณสามารถดูข้อมูลที่เป็นประโยชน์บางอย่างได้ถูกสร้างขึ้นและหากคุณไปที่แท็บอื่นของคุณที่มี ganachi-cli ทำงานอยู่คุณจะเห็น TransactionReceipt (ลองดูด้วยตัวคุณเอง).

    ทดสอบ ETH 

    ก่อนที่เราจะตรงไปที่ Remix เราจำเป็นต้องได้รับการทดสอบ ETH ไว้ก่อนเพื่อที่เราจะได้จ่ายค่าธรรมเนียมแก๊สใน Remix (ไม่ต้องกังวลว่าจะไม่ต้องเสียเงินจริงๆ). 

    ตรงไปที่ faucet นี้ และคว้า Rinkeby เราดำดิ่งลงไปในสิ่งที่ทดสอบ ETH ในขั้นตอนที่ 3 แต่ในขั้นตอนนี้เพียงแค่รู้ว่าเราจะใช้ Rinkeby ซึ่งเป็นเครือข่าย Proof of Authority ซึ่งตรงข้ามกับสมมติว่า Ropsten ซึ่งเป็น Proof of Work testnet (ซึ่งคล้ายกับ public main มากกว่า สุทธิ). หลังจากทำตามขั้นตอนที่ 2 และ 3 เสร็จแล้วคุณจะมีทั้งสองอย่างในกระเป๋าเงิน MetaMask ของคุณให้ทดลองใช้!

    รีมิกซ์

    ตกลงตอนนี้เรามีการทดสอบ EHT แล้วก็ถึงเวลาตรงไปที่ Remix และปรับใช้สัญญาของเรานอกสภาพแวดล้อมในพื้นที่ของเราและยังมีความสามารถในการโต้ตอบกับมัน!

    “ รีมิกซ์คืออะไร” 

    ดีใจที่คุณถาม! 

    Remix เป็นเครื่องมือโอเพ่นซอร์สที่มีประสิทธิภาพซึ่งช่วยให้คุณเขียนสัญญา Solidity ได้โดยตรงจากเบราว์เซอร์ องค์ประกอบที่น่าทึ่งอย่างหนึ่งโดยเฉพาะอย่างยิ่งเกี่ยวกับ Remix คือรองรับการใช้งานทั้งในเบราว์เซอร์และในเครื่อง! Remix รองรับการทดสอบการดีบักและการปรับใช้สัญญาเพื่อตั้งชื่อคุณสมบัติหลักบางประการ Remix ควรถือเป็นเครื่องมือหลักสำหรับนักพัฒนาในกระบวนการสร้างของพวกเขา เริ่มต้นด้วยการปรับใช้ในพื้นที่ (อย่างที่เราทำก่อนหน้านี้) ด้วย ganache เป็นพื้นฐานที่ยอดเยี่ยมโดยย้ายจากการปรับใช้ในพื้นที่เราสามารถทดลองและโต้ตอบกับสัญญาของเราใน Remix ได้.

    การโน้มน้าวใจและทดสอบอย่างเหมาะสม (ครั้งแล้วครั้งเล่า) การพัฒนาของคุณก่อนที่จะเปิดตัวไปยังเครือข่าย ethereum หลักอาจช่วยให้คุณไม่ต้องปวดหัว!

    ตอนนี้เรามาทำสัญญาฉบับเดียวกันและทำให้ใช้งานได้นอกสภาพแวดล้อมในพื้นที่ของเราโดยใช้ Remix 

    ลิงค์ ที่นี่ 

    สัญญาของเรา 

    คลิกที่ไฟล์ใหม่และตั้งชื่อว่า HelloWorld.sol

    (นี่คือสัญญาที่เราจะใช้อีกครั้ง) 

    ความแข็งแกร่งของ pragma >= 0.5.8 <0.7.0; สัญญา HelloWorld {สตริงข้อความสาธารณะ; ตัวสร้าง (initMessage หน่วยความจำสตริง) สาธารณะ {message = initMessage; } การอัปเดตฟังก์ชัน (หน่วยความจำสตริง newMessage) สาธารณะ {message = newMessage; }}

    ตอนนี้เราสามารถดำเนินการต่อและเพิ่มสัญญาของเราในสนามได้ (ตรวจสอบด้านล่าง) 

    Screen Shot 2020 08 31 เวลา 9 47 48 น

    ตอนนี้เรามาดูเมนูด้านซ้ายที่ขอเวอร์ชันคอมไพเลอร์ที่คุณเลือก.

    คอมไพเลอร์

    โปรดทราบว่าภายในสัญญาของเราเราได้ประกาศช่วงคอมไพเลอร์ของเรา.

    จำคีย์เวิร์ด pragma ไว้ใช้เพื่อเปิดใช้งานคุณสมบัติบางอย่างของคอมไพเลอร์หรือการตรวจสอบ. 

    ดังนั้นเราจึงสามารถตั้งค่าคอมไพเลอร์ของเราเป็น 0.6.0 ซึ่งอยู่ระหว่างช่วงที่เราให้ไว้ (ดูระเบิด) 

    สกรีนช็อต 2020 09 08 เวลา 8 44 41 น

    สัญญาของเราควรรวบรวมโดยอัตโนมัติหากไม่ดำเนินการต่อแล้วคลิกคอมไพล์ HelloWorld.sol

    ต่อไปเราจะตั้งค่าสภาพแวดล้อมของเราเพื่อปรับใช้สัญญาของเรา! 

    ปรับใช้และเรียกใช้ธุรกรรม

    สิ่งแวดล้อม 

    คุณจะสังเกตเห็นตัวเลือกต่างๆสองสามอย่างเมื่อเลือกสภาพแวดล้อมของคุณ:

    JavaScript VM: ธุรกรรมทั้งหมดจะดำเนินการใน sandbox blockchain ในเบราว์เซอร์ ซึ่งหมายความว่าจะไม่มีสิ่งใดคงอยู่เมื่อคุณโหลดหน้านี้ซ้ำ JsVM เป็นบล็อกเชนของตัวเองและในการโหลดซ้ำแต่ละครั้งจะเริ่มบล็อกเชนใหม่อันเก่าจะไม่ถูกบันทึก.

    ผู้ให้บริการฉีด: Remix จะเชื่อมต่อกับผู้ให้บริการ web3 แบบฉีด. Metamask เป็นตัวอย่างของผู้ให้บริการที่ฉีด web3.

    ผู้ให้บริการ Web3: รีมิกซ์จะเชื่อมต่อกับโหนดระยะไกล คุณจะต้องระบุ URL ให้กับผู้ให้บริการที่เลือก: geth, parity หรือไคลเอนต์ Ethereum.

    ในตัวอย่างนี้เราจะใช้: Injected Web3

    เราจะใช้กระเป๋าเงิน MetaMask ของเราและตรวจสอบให้แน่ใจว่าเราเชื่อมต่อกับเครือข่ายการทดสอบ Rinkeby ของเรา 

    เราจะเห็นทางด้านซ้ายที่เราเชื่อมต่อกับ Rinkeby และยังเห็นที่อยู่บัญชีที่เชื่อมต่อของเรา! 

    สกรีนช็อต 2020 09 08 เวลา 8 30 29 น

    เมื่อเรากำหนดทุกอย่างเรียบร้อยแล้วก็มาเริ่มใช้งานสัญญากันได้เลย!

    สกรีนช็อต 2020 09 08 เวลา 8 57 35 น

    &# 127881; เราทำได้แล้ว! &# 127881; 

    ตรวจสอบเทอร์มินัลที่ให้มาและคุณจะเห็นการยืนยัน

    Screen Shot 2020 09 08 เวลา 8 58 11:00 น

    ตอนนี้เรามีความสามารถในการดูสัญญาที่ใช้งานแล้วเราสามารถอัปเดตข้อความของเราได้ (เราต้องลงนามและจ่ายค่าธรรมเนียมก๊าซสำหรับสิ่งนี้เนื่องจากเรากำลังอัปเดตสถานะ)

    เมื่อเราได้รับการยืนยันแล้วเราจะเห็นว่าข้อความของเราได้รับการอัปเดตแล้ว!

    Screen Shot 2020 09 08 เวลา 9 18 54 น

    &# 129395; ทำได้ดี! &# 129395; 

    เราได้ใช้สัญญาที่เราเริ่มต้นในท้องถิ่นและได้ปรับใช้สัญญานั้นบน Remix เพื่อให้เห็นภาพของการโต้ตอบในสัญญา นี่เป็นขั้นตอนที่ดีสำหรับนักพัฒนาเมื่อพวกเขาเริ่มสร้างในพื้นที่นี้ รีมิกซ์เป็นเครื่องมือที่น่าทึ่งที่ควรใช้บ่อยๆ ในขั้นตอนที่ 3 เราจะก้าวไปอีกขั้นและเชื่อมโยงข้อมูลทั้งหมดที่เราได้เรียนรู้ในขั้นตอนที่ 1 & 2 และผูก Truffle + Infura + React เข้าด้วยกัน! 

      การเริ่มต้นใช้งานของนักพัฒนา: ขั้นตอนที่ 1การเริ่มต้นใช้งานของนักพัฒนาขั้นตอนที่ 1

      การเริ่มต้นใช้งานของนักพัฒนา: ขั้นตอนที่ 1

      การเริ่มต้นใช้งานของนักพัฒนา: ขั้นตอนที่ 3การเริ่มต้นใช้งานของนักพัฒนาขั้นตอนที่ 3

      การเริ่มต้นใช้งานของนักพัฒนา: ขั้นตอนที่ 3

      การวางแนว Ethereum 10 นาทีการวางแนว Ethereum 10 นาที

      การวางแนว Ethereum 10 นาที
    Mike Owergreen Administrator
    Sorry! The Author has not filled his profile.
    follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map