본문으로 건너뛰기

Module sui::vdf

Constants

const EInvalidInput: u64 = 0;

Function hash_to_input

임의의 바이너리 message

vdf_verify
입력으로 사용할 class group 원소로 hash한다.

이 함수는 현재 Devnet에서만 활성화된다.

public fun hash_to_input(message: &vector<u8>): vector<u8>
Click to open
Implementation
public fun hash_to_input(message: &vector<u8>): vector<u8> {
    hash_to_input_internal(message)
}

Function hash_to_input_internal

hash_to_input
의 내부 함수이다.

fun hash_to_input_internal(message: &vector<u8>): vector<u8>
Click to open
Implementation
native fun hash_to_input_internal(message: &vector<u8>): vector<u8>;

Function vdf_verify

주어진 반복 횟수로 VDF의 output과 proof를 검증한다. input, output, proof는 모두 b^2 - 4ac = discriminant를 만족하는 (a,b,c) 삼중쌍으로 표현되는 class group 원소이다. 이들은 각각 a, b, c의 순서로 big-endian 2의 보수 인코딩 바이트 배열 삼중쌍을 BCS로 인코딩한 형태여야 한다.

이는 Wesolowski (2020), 'Efficient Verifiable Delay Functions.', J. Cryptol. 33에서 설명한 imaginary class group 기반 Wesolowski VDF 구성을 사용하며, fastcrypto의 VDF 구현과 호환된다.

class group의 discriminant는 사전 계산되어 고정되어 있다. 이 값이 fastcrypto-vdf crate에서 어떻게 생성되는지는 해당 crate를 참조한다. Mainnet의 최종 discriminant 선택은 nothing-up-my-sleeve 절차로 계산되고 공지될 예정이다.

이 함수는 현재 Devnet에서만 활성화된다.

public fun vdf_verify(input: &vector<u8>, output: &vector<u8>, proof: &vector<u8>, iterations: u64): bool
Click to open
Implementation
public fun vdf_verify(
    input: &vector<u8>,
    output: &vector<u8>,
    proof: &vector<u8>,
    iterations: u64,
): bool {
    vdf_verify_internal(input, output, proof, iterations)
}

Function vdf_verify_internal

vdf_verify_internal
의 내부 함수이다.

fun vdf_verify_internal(input: &vector<u8>, output: &vector<u8>, proof: &vector<u8>, iterations: u64): bool
Click to open
Implementation
native fun vdf_verify_internal(
    input: &vector<u8>,
    output: &vector<u8>,
    proof: &vector<u8>,
    iterations: u64,
): bool;