Module sui::poseidon
poseidon hash 함수 인스턴스를 정의하는 모듈이다. Devnet에서만 사용할 수 있다.
use std::ascii;
use std::bcs;
use std::option;
use std::string;
use std::vector;
use sui::address;
use sui::bcs;
use sui::hex;
Constants
입력 중 하나라도 BN254 필드 크기보다 크거나 같으면 발생하는 오류이다.
const ENonCanonicalInput: u64 = 0;
빈 벡터를 입력으로 전달하면 발생하는 오류이다.
const EEmptyInput: u64 = 1;
BN254 곡선의 필드 크기이다.
const BN254_MAX: u256 = 21888242871839275222246405745257275088548364400416034343698204186575808495617;
Function poseidon_bn254
@param data: hash할 BN254 필드 원소 벡터이다.
입력을 poseidon_bn254로 hash하고 BN254 필드 원소를 반환한다.
각 원소는 canonical 표현의 BN254 필드 원소여야 하므로 BN254 스칼라 필드 크기 21888242871839275222246405745257275088548364400416034343698204186575808495617보다 작아야 한다.
이 함수는 현재 Devnet에서만 활성화된다.
public fun poseidon_bn254(data: &vector<u256>): u256
Click to open
Implementation
public fun poseidon_bn254(data: &vector<u256>): u256 {
let (mut i, mut b, l) = (0, vector[], data.length());
assert!(l > 0, EEmptyInput);
while (i < l) {
let field_element = &data[i];
assert!(*field_element < BN254_MAX, ENonCanonicalInput);
b.push_back(bcs::to_bytes(&data[i]));
i = i + 1;
};
let binary_output = poseidon_bn254_internal(&b);
bcs::new(binary_output).peel_u256()
}
Function poseidon_bn254_internal
@param data: little-endian 표현의 BN254 필드 원소 벡터이다.
입력을 poseidon_bn254로 hash하고 little-endian 표현의 BN254 필드 원소를 반환한다.
fun poseidon_bn254_internal(data: &vector<vector<u8>>): vector<u8>
Click to open
Implementation
native fun poseidon_bn254_internal(data: &vector<vector<u8>>): vector<u8>;