ขั้นตอนที่ 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