แพลตฟอร์มบล็อกเชน Waves ใช้รูปแบบลายเซ็น กศน การเลือก Ed25519. ในรูปแบบนี้ลายเซ็นประกอบด้วยค่า R และ S โดยที่ R ขึ้นอยู่กับค่าสุ่มและ S คำนวณตามข้อความที่เซ็นชื่อคีย์ส่วนตัวและตัวเลขสุ่มเดียวกันกับ R ปรากฎว่า ไม่มีการพึ่งพาที่ไม่ซ้ำกันสำหรับสิ่งเดียวกัน มีลายเซ็นที่ถูกต้องจำนวนมากสำหรับข้อความผู้ใช้
VECRO เป็นตัวย่อของ Verifiable Elliptic Curve Random Oracle ซึ่งในภาษารัสเซียหมายถึง Verifiable Random Oracle บนเส้นโค้งรูปไข่
ทุกอย่างกลายเป็นเรื่องง่ายเพื่อให้บรรลุระดับคุณต้องแก้ไขค่า R ก่อนที่ข้อความที่จะลงนามจะปรากฏขึ้น ถ้า R ถูกคอมมิตและเป็นส่วนหนึ่งของข้อความที่กำลังเซ็น ซึ่งทำให้แน่ใจเพิ่มเติมว่า R ถูกคอมมิตในข้อความที่กำลังเซ็น ค่าของ S จะถูกกำหนดโดยข้อความของผู้ใช้โดยไม่ซ้ำกัน และดังนั้นจึงสามารถใช้เป็นแหล่งที่มาของตัวเลขสุ่มเทียมได้
ในรูปแบบดังกล่าว ไม่สำคัญว่า R จะได้รับการแก้ไขอย่างไร สิ่งนี้ยังคงเป็นความรับผิดชอบของ oracle สิ่งสำคัญคือผู้ใช้จะกำหนด S โดยไม่ซ้ำกัน แต่จะไม่ทราบค่าของมันจนกว่า oracle จะเผยแพร่ ทุกสิ่งที่เราต้องการ!
เมื่อพูดถึง R แบบคงที่ โปรดทราบว่า นำกลับมาใช้ใหม่อาร์ เมื่อลงนามข้อความต่างๆ จะเปิดเผยรหัสส่วนตัวในรูปแบบ EdDSA โดยไม่ซ้ำกัน มันเป็นสิ่งสำคัญอย่างยิ่งสำหรับเจ้าของ oracle ที่จะต้องกำจัดความเป็นไปได้ในการใช้ R ซ้ำเพื่อลงนามข้อความของผู้ใช้ที่แตกต่างกัน นั่นคือเมื่อมีการบิดเบือนหรือการสมรู้ร่วมคิด Oracle จะเสี่ยงต่อการสูญเสียคีย์ส่วนตัวเสมอ
โดยรวมแล้ว ออราเคิลต้องจัดเตรียมฟังก์ชันสองอย่างให้กับผู้ใช้: การกำหนดค่าเริ่มต้นซึ่งแก้ไขค่า R และลายเซ็นซึ่งส่งคืนค่า S ในกรณีนี้ คู่ R, S คือลายเซ็นที่ตรวจสอบได้ตามปกติของข้อความผู้ใช้ที่มีฟังก์ชันคงที่ ค่า R และข้อมูลผู้ใช้โดยพลการ
R-code คือการต่อไบต์ของอักขระ 'R' และค่า R ที่เข้ารหัส base32 ขนาด 58 ไบต์
รหัส R ในไฟล์แนบควรอยู่อันดับแรก ข้อมูลผู้ใช้จะอยู่หลังรหัส R
S-code คือการต่อไบต์ของอักขระ 'S' และค่าที่เข้ารหัส base32 ขนาด 58 ไบต์ของ S
S เป็นผลลัพธ์ของการหารแบบโมดูโล ดังนั้นคุณจึงไม่สามารถใช้ S เป็นตัวเลขสุ่มเทียมขนาด 256 บิตแบบเต็มได้ (ตัวเลขนี้ถือเป็นตัวเลขสุ่มเทียมที่มีขนาดสูงสุด 252 บิต)