[Solidity] 230702 study
5. Chainlink Data Feeds Decimals
6. Chainlink Data Feeds References
7. Chainlink VRF Introduction
기존의 Random Function
- 기존의 randomness creation function은 semi-random이다. 그래서 keccak256에
msg.sender,block.difficulty,block.timestamp를 넣어서 돌리는데 각 parameter별 문제는 다음과 같다msg.sender: sender가 알고 있다block.difficulty: miner의 영향을 받아 결정된다block.timestmapl: 유추 가능하다(predictable)
- 그래서 사용하는 것이 VRF, (Chainlink) Verifiable Randomness Function이다
VRF
- VRF: Verifiable Randomness Function
- off-chain API를 따오는 경우 single point of failure가 발생한다
- 그러니까 cryptographic manner에서 추출할 수 있는 randomness를 따르자
Basic Request Model
- original contract에서 oracle node에게 contract를 요청하는 것은 1개의 tx에서 실행된다
- oracle node(contract)에서 실행된 결과를 original contract에 반환하는 것은 또 다른 1개의 tx에서 실행된다
- 따라서 2 tx architecture를 이루게 되며, randomness에 대한 brute force attack은 무의미해진다.
- 동작 순서
- Callee contract가 1개의 tx에서 request를 실행시킨다
- Callee contract가 event를 발생시킨다
- Chainlink node(Off-chain)이 해당 event를 listen한다
- Cahinlink node에 의해 생성된 tx에서 callee contract에 언급된 function에게 on-chain data를 반환한다