NewsDevelopersEnterpriseBlockchain ExplainedEvents and ConferencesPressจดหมายข่าว
Contents
- 1 ขอแนะนำ Scribble โดย ConsenSys Diligence
สมัครรับจดหมายข่าวของเรา.
ที่อยู่อีเมล
เราเคารพความเป็นส่วนตัวของคุณ
หน้าแรก
ขอแนะนำ Scribble โดย ConsenSys Diligence
by ConsenSys ธันวาคม 8, 2020 โพสต์เมื่อธันวาคม 8, 2020
การตรวจสอบให้แน่ใจว่าสัญญาอัจฉริยะปลอดภัยและปราศจากข้อผิดพลาดไม่เคยมีความสำคัญมากไปกว่านี้ น่าเสียดายที่มันยังคงเป็นงานที่ยาก แม้ว่าจะมีเครื่องมือที่เป็นประโยชน์สำหรับการทดสอบอัตโนมัติและการตรวจสอบอย่างเป็นทางการ แต่การตรวจสอบความถูกต้องของสัญญาอัจฉริยะยังคงเป็นงานที่ต้องใช้เวลามากและท้าทาย เพื่อให้สิ่งต่างๆแย่ลงเครื่องมือแต่ละชิ้นมักมีช่วงการเรียนรู้ที่สูงชันและมักไม่แน่ใจว่าจะเหมาะกับงานหรือไม่.
นั่นคือเหตุผลที่เราได้พัฒนา Scribble: ภาษายืนยันและเครื่องมือตรวจสอบรันไทม์ แม้ว่าในตอนแรกจะสร้างขึ้นสำหรับการทดสอบคุณสมบัติอัตโนมัติในระหว่างการตรวจสอบเราได้ตัดสินใจที่จะแชร์โครงการนี้กับชุมชน!
Scribble คืออะไร?
เมื่อเรากำลังพูดถึง Scribble เรากำลังพูดถึงสองสิ่ง.
ประการแรก Scribble เป็นภาษาข้อกำหนดสำหรับการเขียนคุณสมบัติ.
ประการที่สอง Scribble เป็นเครื่องมือตรวจสอบรันไทม์โดยใช้ภาษาข้อกำหนดของ Scribble.
หมายเหตุ: Scribble ไม่ได้ทำการยืนยันใด ๆ ด้วยตัวเอง มัน ทำ เปิดใช้งานเครื่องมืออื่น ๆ เพื่อทดสอบและตรวจสอบคุณสมบัติ.
Scribble เป็นภาษาหนึ่ง
Scribble กำหนดภาษาเฉพาะโดเมนสำหรับการเขียนคุณสมบัติเกี่ยวกับสัญญาอัจฉริยะ เราได้สร้างภาษาขึ้นจากไวยากรณ์ที่มั่นคงเพื่อให้ง่ายต่อการเรียนรู้ ภาษาข้อกำหนดนี้ช่วยให้คุณสามารถใส่คำอธิบายประกอบในสัญญาอัจฉริยะที่มีความมั่นคงพร้อมคุณสมบัติ.
หมายเหตุ: คุณสมบัติคือคำสั่งเชิงตรรกะที่คุณคาดว่าจะเป็นจริงเช่น “ รถทุกคันเป็นสีแดง” ในความเป็นของแข็งคุณมักจะมีคุณสมบัติเช่น “มีเพียงเจ้าของเท่านั้นที่สามารถเปลี่ยนแปลง X ได้” หรือ“ ฟังก์ชัน sendToken () ไม่ควรเปลี่ยนยอดเงินอีเธอร์ของสัญญานี้”.
คุณสามารถใช้คำอธิบายประกอบได้หลายประเภทสำหรับคุณสมบัติประเภทต่างๆ ตัวอย่างเช่นค่าคงที่หรือเงื่อนไขภายหลัง.
นี่คือตัวอย่างของคำอธิบายประกอบ Scribble:
ดังที่คุณเห็นคำอธิบายประกอบอยู่ในรูปแบบของความคิดเห็นแบบอินไลน์ที่วางไว้เหนือคำจำกัดความของฟังก์ชัน เราได้เพิ่มสิ่งที่เรียกว่า if_succeeds clause ซึ่งจะตรวจสอบว่าเงื่อนไขมีอยู่หลังจากเรียกใช้ฟังก์ชันหรือไม่ ในกรณีนี้เราตรวจสอบว่าผลลัพธ์ของฟังก์ชันไม่เป็นศูนย์เสมอ.
เราใช้ภาษา Scribble ตามแนวคิดที่ได้รับการพิสูจน์แล้วเช่นโพสต์เงื่อนไขค่าคงที่และตรรกะทางโลก แต่เรายังดูว่าเราสามารถนำเสนอแนวคิดใหม่ ๆ เพื่อให้เหมาะกับปัญหาเฉพาะโดเมนของสัญญาอัจฉริยะได้อย่างไร.
Scribble เป็นเครื่องมือ
Scribble สามารถใช้สัญญาที่มีคำอธิบายประกอบคุณสมบัติและรวบรวมเป็นสัญญาใหม่ ในสัญญาฉบับใหม่นี้ Scribble จะเพิ่มรหัส Solidity ที่ทำให้เกิดการยืนยันทุกครั้งที่มีการละเมิดทรัพย์สิน เราเรียกสิ่งนี้ว่าเครื่องมือวัดกระบวนการ.
การเพิ่มโค้ดปฏิบัติการที่ตรวจสอบคุณสมบัติเรียกว่าการตรวจสอบรันไทม์และทำให้ง่ายต่อการทำงานกับเครื่องมือที่มีอยู่โดยไม่ต้องดัดแปลงมากมาย เป็นกรณีนี้เนื่องจากเครื่องมือส่วนใหญ่จะแปลรหัส solidity อยู่แล้วและสามารถค้นหาการละเมิดทรัพย์สินได้ทันที!
เนื่องจากคุณสามารถใช้เทคนิคการทดสอบอัตโนมัติที่มีอยู่ (เช่น fuzzer ฮาร์วีย์) คุณจะเริ่มทดสอบได้หลังจากเขียนคุณสมบัติเพียงรายการเดียว. เราเชื่อว่านี่เป็นประโยชน์ที่สำคัญ คุณจะได้รับประโยชน์จากการทดสอบอัตโนมัติทันทีแทนที่จะต้องเสียเวลาล่วงหน้าเป็นจำนวนมากเพื่อรับคำอธิบายประกอบจำนวนมาก สิ่งที่มักจำเป็นสำหรับวิธีการตรวจสอบแบบดั้งเดิม.
คุณสามารถเริ่มทดสอบและวิเคราะห์สัญญาได้อย่างรวดเร็วและยังตัดสินใจในภายหลังว่าจะใช้ความพยายามเพิ่มเติมในการตรวจสอบสัญญาอัจฉริยะอย่างสมบูรณ์!
เป้าหมาย
การตรวจสอบ
เรากำลังใช้ Scribble ในระหว่างการตรวจสอบเพื่อกำหนดคุณสมบัติ เราจะทดสอบและค้นหาการละเมิดคุณสมบัติเหล่านี้โดยใช้เทคนิคการวิเคราะห์อัตโนมัติเช่นการฟัซซ์และสัญลักษณ์.
ติดต่อเราเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการทดสอบเชิงลบและการทดสอบตามคุณสมบัติในระหว่างการตรวจสอบ
มาตรฐาน
Scribble มีจุดมุ่งหมายเพื่อทำงานกับเครื่องมือและเทคนิคต่างๆ เราไม่เพียงต้องการเปิดใช้งานการทดสอบตามคุณสมบัติเท่านั้น แต่ยังสามารถตรวจสอบอย่างเป็นทางการได้อย่างง่ายดายอีกด้วย ประโยชน์ของการใช้ภาษาข้อกำหนดสากลเดียวคือคุณพยายามเขียนคุณสมบัติเพียงครั้งเดียว แต่จะได้รับประโยชน์จากการใช้เครื่องมือหลายอย่าง.
การรับเป็นบุตรบุญธรรม
ด้วย Scribble เราหวังว่าจะลดอุปสรรคหรือรายการสำหรับการทดสอบอัตโนมัติและการตรวจสอบอย่างเป็นทางการ นอกจากนี้เรายังต้องการลดเวลาในการลงทุนเพื่อพัฒนาสัญญาอัจฉริยะที่ถูกต้องและปลอดภัยส่งผลให้ระบบนิเวศปลอดภัยยิ่งขึ้น.
ได้ที่ไหน?
เรามี Scribble แบบโอเพนซอร์สทั้งหมดและมีวางจำหน่ายแล้วที่ github.com/consensys/scribble.
หมายเหตุ: นี่เป็นรุ่นเบต้าลักษณะของภาษาจะเปลี่ยนไปและคุณอาจพบข้อบกพร่องบางอย่าง.
คุณสามารถติดตั้ง Scribble ได้อย่างง่ายดายด้วย npm:
จดหมายข่าวสมัครรับจดหมายข่าวของเราเพื่อรับข่าวสารล่าสุดของ Ethereum โซลูชันระดับองค์กรทรัพยากรสำหรับนักพัฒนาและอื่น ๆ ที่อยู่อีเมลเนื้อหาพิเศษรายงาน
รายงาน DeFi ประจำไตรมาสที่ 3 ปี 2020 ของ Ethereum
รายงาน
รายงาน DeFi ประจำไตรมาส 2 ปี 2020 ของ Ethereum
รายงาน
รายงาน Ethereum 2.0 Staking Ecosystem
คู่มือ
คู่มือฉบับสมบูรณ์สำหรับเครือข่ายธุรกิจ Blockchain
การสัมมนาผ่านเว็บ
วิธีสร้างผลิตภัณฑ์ Blockchain ที่ประสบความสำเร็จ
กระดาษสีขาว