Random Number 사용

Chainlink VRF 와 같이 Random number를 생성할 수 있는 방법이 있을까요?

https://forum.klaytn.foundation/t/topic/2523/2
위 글을 확인했는데, block timestamp, number, hash 등의 데이터를 사용하게 되면 해킹의 위험이 있습니다.

안녕하세요,

저는 Klaytn이 아닌 Geth 기반으로 스마트 컨트랙트에서 자체적으로 Chainlink VRF 방식으로 랜덤값을 생성하는 기능을 개발하기 위해 공부한 경험이 있는데 찾아 보았던 자료들을 말씀드리겠습니다.

먼저 Chainlink를 조사하였을 때 오라클 디자인 패턴을 사용하며 스마트 컨트랙트 내부가 아닌 컨트랙트의 함수 실행 event emit을 Logging 하고 있는 오프체인 노드를 두고 있습니다.

해당 디자인 패턴을 사용할 경우,

스마트 컨트랙트 랜덤값 생성 이벤트 발생 → 이벤트를 리스닝 중인 오프체인 노드가 VRF 실행 후 생성된 랜덤값을 컨트랙트에 전달 → 스마트 컨트랙트에서 랜덤값 검증 후 사용

순서로 off-chain에서 랜덤 함수를 실행할 수 있습니다.

해당 디자인은 Klaytn에서 제공하는 caver.js를 활용하셔서

websocket을 사용해 스마트 컨트랙트의 event emit을 리스닝하는 private 오프체인 노드를 구축하시고,

오프체인 노드 내 VRF 또는 랜덤값을 생성하는 라이브러리를 추가하시면 오라클 디자인 패턴으로 동일하게 구현이 가능할 것 같습니다.

오라클 디자인 패턴 관련된 설명 / 샘플 코드가 있는 자료를 첨부 해드립니다.

이외 솔리디티에서 동작하는 VRF와 관련된 오픈소스 입니다.

도움이 되셨으면 좋겠습니다.
감사합니다.

4 Likes

답변 감사합니다.

신뢰성을 위해서 클레이튼 내에 검증된 랜덤 사용을 원했습니다 :smiling_face_with_tear: