BTC
ETH
HTX
SOL
BNB
ดูตลาด
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

Brownie: โครงสร้างพื้นฐานสัญญาอัจฉริยะของ Ethereum

星球君的朋友们
Odaily资深作者
บทความนี้มีประมาณ 2155 คำ การอ่านทั้งหมดใช้เวลาประมาณ 4 นาที
บราวนี่ใช้ในการพัฒนาสัญญาอัจฉริยะของ Ethereum และความทนทานและใช้งานง่ายนั้นสูงมาก
สรุปโดย AI
บราวนี่ใช้ในการพัฒนาสัญญาอัจฉริยะของ Ethereum และความทนทานและใช้งานง่ายนั้นสูงมาก

หมายเหตุบรรณาธิการ: บทความนี้มาจากหาจำนวน Kicking Horse River (ID: gh_e9da2a6cbc62)พิมพ์ซ้ำโดย Odaily โดยได้รับอนุญาต

หมายเหตุบรรณาธิการ: บทความนี้มาจาก

  • หาจำนวน Kicking Horse River (ID: gh_e9da2a6cbc62)

  • หาจำนวน Kicking Horse River (ID: gh_e9da2a6cbc62)

  • พิมพ์ซ้ำโดย Odaily โดยได้รับอนุญาต

  • เมื่อพูดถึงบราวนี่อย่าคิดว่ามันคือเค้กชิ้นเล็กๆ อร่อยๆ ที่มีรสดาร์กช็อกโกแลต บราวนี่ที่กล่าวถึงในที่นี้หมายถึงกรอบพื้นฐานของสัญญาอัจฉริยะที่เรียกว่าบราวนี่บน Ethereum Brownie ใช้ในการพัฒนา Ethereum smart contracts ความทนทานและใช้งานง่ายสูงมากและมักใช้สำหรับ:

การปรับใช้: ปรับใช้สัญญาจำนวนมากกับบล็อกเชนโดยอัตโนมัติ เริ่มต้นหรือรวมธุรกรรมใด ๆ ที่จำเป็นสำหรับพวกเขา

การโต้ตอบ: เขียนสคริปต์หรือใช้คอนโซลเพื่อโต้ตอบกับสัญญาบน mainnet หรือทำการทดสอบอย่างรวดเร็วในสภาพแวดล้อมท้องถิ่น

การดีบัก: รับข้อมูลโดยละเอียดเมื่อธุรกรรมกำลังกู้คืนเพื่อช่วยให้คุณระบุปัญหาได้อย่างรวดเร็ว

การทดสอบ: เขียนการทดสอบหน่วยใน Python และประเมินความครอบคลุมการทดสอบตามการวิเคราะห์สแต็กเทรซ

ต่อไป มาลองสร้าง smart contract แบบง่ายๆ ใน Solidity ซึ่งเปิดเผยเพียงสองฟังก์ชันภายนอก getValue และ setValue บันทึก smart contract นี้ในไฟล์ smart_contract.sol

ปรับใช้และโต้ตอบกับสัญญาอัจฉริยะนี้ผ่าน Brownie

ติดตั้ง

ความพยายามนี้ใช้ Python3.7 และ virtualenv เพื่อแยกสภาพแวดล้อมของเรา หากไม่ได้ติดตั้ง Python3.7 คุณสามารถทำตามขั้นตอนด้านล่าง

เราจะใช้ Ganache ซึ่งเป็นบล็อกเชนส่วนบุคคลสำหรับการพัฒนา Ethereum คุณยังสามารถติดตั้ง ethereum-testrpc แทนได้ แต่นั่นจะทำให้ไม่สามารถเรียกใช้ GUI ได้ เมื่อติดตั้ง Ganache ให้ทำตามขั้นตอน

  • สร้างสภาพแวดล้อมเสมือนจริงสำหรับโครงการ Solidity ของคุณ สิ่งนี้ถูกสร้างขึ้นและตั้งชื่อว่า TestBrownie ติดตั้ง Brownie

  • ในการเริ่มต้นโปรเจ็กต์เปล่า ให้เริ่มด้วยการสร้างโฟลเดอร์ใหม่ ในโฟลเดอร์นั้น พิมพ์:

  • โครงสร้างโครงการ

  • โครงการบราวนี่แต่ละโครงการมีโฟลเดอร์ต่อไปนี้:

สัญญา/: แหล่งที่มาของสัญญา

อินเทอร์เฟซ/: แหล่งที่มาของอินเทอร์เฟซ

  • สคริปต์/: สคริปต์สำหรับการปรับใช้และการโต้ตอบ

  • การทดสอบ/: สคริปต์สำหรับการทดสอบโครงการ

brownie-config.yaml: ไฟล์การกำหนดค่าโครงการ

โฟลเดอร์เหล่านี้ด้านล่างยังสร้างโดย Brownie และใช้ภายในสำหรับการจัดการโครงการและไม่สามารถแก้ไขหรือลบได้

build/: ข้อมูลโครงการ เช่น สิ่งประดิษฐ์ของคอมไพเลอร์และผลการทดสอบหน่วย

รายงาน/: ไฟล์รายงาน JSON ที่ใช้ใน GUI

รวบรวม

smart_contract.sol คัดลอกสัญญาอัจฉริยะของคุณในไดเรกทอรีสัญญา รวบรวมแหล่งที่มาของสัญญาทั้งหมดในโฟลเดอร์ย่อยของสัญญา/โครงการ:

ทุกครั้งที่คอมไพเลอร์ทำงาน Brownie จะเปรียบเทียบแฮชของแหล่งสัญญาแต่ละแหล่งกับแฮชของเวอร์ชันที่คอมไพล์แล้ว หากสัญญาไม่มีการเปลี่ยนแปลง ก็จะไม่ถูกคอมไพล์ใหม่ ใช้การคอมไพล์ brownie --all หากคุณต้องการบังคับให้คอมไพล์ทั้งโปรเจ็กต์ใหม่

หากคุณต้องการคอมไพล์สัญญา Solidity กับเวอร์ชันอื่น คุณเพียงแค่ระบุสัญญาในคำแนะนำการใช้งานไฟล์ .sol หากไม่มีอยู่ ระบบจะติดตั้งโดยอัตโนมัติ ควรสังเกตที่นี่: การตั้งค่าสำหรับโปรแกรมเปลี่ยนไฟล์จะอยู่ใน brownie-config.yaml

  • Byzantium: Solidity <=0.5.4

  • Petersburg: Solidity >=0.5.5< =0.5.12

  • Istanbul: Solidity >=0.5.13, Vyper

การแก้ไขการตั้งค่าคอมไพเลอร์จะส่งผลให้มีการคอมไพล์โปรเจ็กต์ใหม่ทั้งหมด

หากมีการตั้งค่าเวอร์ชันคอมไพเลอร์ในไฟล์คอนฟิกูเรชัน เวอร์ชันนั้นจะถูกใช้เพื่อคอมไพล์สัญญาทั้งหมดในโครงการ ควรระบุเวอร์ชันเป็นสตริงในรูปแบบ 0.xx

หากตั้งค่าเวอร์ชันเป็น null บราวนี่จะดูโปรแกรมการใช้งานเวอร์ชันสำหรับแต่ละสัญญาและใช้เวอร์ชันคอมไพเลอร์ที่ตรงกันล่าสุดที่ติดตั้ง

เกี่ยวกับ evm_version บราวนี่ตั้งค่าชุดกฎตามคอมไพเลอร์

คุณยังสามารถตั้งค่าเวอร์ชัน EVM ได้ด้วยตนเอง ตัวเลือกที่ใช้ได้ ได้แก่ ไบแซนเทียม คอนสแตนติโนเปิล ปีเตอร์สเบิร์ก และอิสตันบูล นอกจากนี้ยังมีชุดกฎ Ethereum Classic ที่แอตแลนติสและอาการ์ตาซึ่งจะถูกแปลงให้เทียบเท่ากับอีเธอร์ก่อนที่จะส่งไปยังคอมไพเลอร์

หมายเหตุ: Brownie รองรับเวอร์ชัน Solidity >= 0.4.22 และ Vyper เวอร์ชัน 0.1.0-b16

หลังจากคอมไพล์สำเร็จ Brownie จะสร้างไฟล์ SimpleContract.json ในโฟลเดอร์ builds/contract

ปรับใช้

เปิด brownie-config.yaml มีส่วนเครือข่าย คุณสามารถปรับแต่งเครือข่ายที่มีอยู่ หรือสร้างบล็อกใหม่ภายใต้เครือข่าย ที่นี่ใช้ Ganache GUI ที่รันบนพอร์ต 7545

สร้างบล็อกส่วนตัวภายใต้เครือข่าย

บันทึกไฟล์นี้ ตอนนี้ปรับใช้สัญญาอัจฉริยะที่คอมไพล์แล้วโดยใช้คอนโซลบราวนี่ มันคล้ายกับตัวแปล Python ทั่วไปมาก จากโฟลเดอร์โปรเจ็กต์ ให้โหลดโดยพิมพ์:

ตรวจสอบข้ามบัญชีในผลลัพธ์ด้วยบัญชีที่มองเห็นได้บน Ganache GUI

บัญชีส่วนบุคคลแต่ละบัญชีจะแสดงด้วยวัตถุบัญชีที่สามารถดำเนินการได้ เช่น การสอบถามยอดคงเหลือหรือการส่ง ETH

สัญญาและไลบรารีที่ปรับใช้ได้ทั้งหมดมี ContractContainer สำหรับการปรับใช้สัญญาใหม่และเข้าถึงสิ่งที่มีอยู่ สัญญาที่รวบรวมทั้งหมดมีให้ใช้งานเป็นตัวแปรที่มีชื่อเดียวกัน

ปรับใช้สัญญา 0 กับบัญชี:


หากคุณพิมพ์ SimpleContract คุณจะเห็น SimpleContract เป็นรายการของอินสแตนซ์ที่ปรับใช้ของออบเจ็กต์ ContractContainer

ปฏิสัมพันธ์

ดูวิธีการที่มีอยู่ในสัญญานี้:

เริ่มต้นด้วยการตั้งค่าตัวแปรในสัญญาอัจฉริยะ

智能合约
ETH
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก:
https://t.me/Odaily_News
กลุ่มสนทนา:
https://t.me/Odaily_GoldenApe
บัญชีทางการ:
https://twitter.com/OdailyChina
สารบัญบทความ
อันดับบทความร้อน
Daily
Weekly
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android