체인링크의 VRF 사용하는 과정을 알아보겠습니다.
우선 메타마스크가 있다는 가정하에 시작하겠습니다.
Alchemy 알케미 계정이 필요합니다.
없으시다면 가입해야합니다.
https://goerlifaucet.com/
우선 로그인을 합니다.
faucet을 받고 싶은 계정의 주소를 입력해서 Goerli testnet faucet을 요청합니다.
이제 Goerli testnet위한 LINK를 받아야합니다.
여기에서 웰렛을 연결합니다.
그리고 Send me 버튼을 누릅니다.
그럼 이제 Testnet Faucet을 받을 수 있습니다.
이 화면이 뜨면 완료된 겁니다.
Subscription ID를 생성할 것입니다.
여기서 만든 ID는 VRF 컨트랙트 배포할 때 필요합니다.
https://vrf.chain.link/goerli/new
위의 사이트로 이동해서 월렛을 연결합니다.
연결을 했거나, 되어 있다면 위처럼 나올 것입니다.
그리고 Create Subscriptoin 버튼을 눌러 생성을 합니다.
이메일과 프로젝트 이름은 선택이기 때문에 하셔도 되고 안하셔도 됩니다. 하지만, 알림을 보내주기 때문에 진짜 프로젝트에서는 하는게 더 좋을 것 같습니다.
생성이 완료되면 위처럼 나옵니다.
생성이 되고 나면,
https://vrf.chain.link/goerli 에서 subscription 하고 있는 것들과 취소한 것들을 확인할 수 있습니다.
위처럼 My Subscriptions 을 보면 방금 신청한 subscription과 LINK faucet이 들어온 것을 확인할 수 있습니다.
이제 컨트랙트를 배포해볼 차례입니다.
https://remix.ethereum.org/#url=https://docs.chain.link/samples/VRF/VRFD20.sol
위의 주소로 가면 다음과 같은 화면을 만날 수 있습니다.
Remix IDE를 사용할 것입니다.
혹시 Remix IDE를 모르는 사람들을 위해 챗지피티한테 물어봤습니다.
기존에 있는 값들은 Sepolia 서버를 위한 것이기 때문에 Goerli에 맞게 바꾸어 주어야합니다.
https://docs.chain.link/vrf/v2/subscription/supported-networks/#configurations 로 가면 다른 netwokr를 위한 값들이 있어 각자에게 맞는 설정을 해주어야합니다.
우선 VRFD20 컨트랙트를 컴파일 합니다.
컴파일이 잘 되었다면 위의 화면처럼 나옵니다.
이제 정말 배포를 해볼 차례입니다.
환경을 metamask로 바꾸어 줍니다.
metamask의 네트워크를 Goerli로 되어있는것을 확인하고, 안되어있다면 goerli로 바꾸어 줍니다.
Deploy에 있는 SUBSCRIPTIONID에 아까 만든 SUBSCRIPTIONID를 입력하고 transact 버튼을 누릅니다.
metamask에서 거래를 확인하면 배포가 됩니다.
위처럼 나온다면 배포가 잘 된 것입니다.
Add fund를 눌러 사용할 LINK를 넣어주어야합니다.
저는 20LINK를 넣어주지만, 각자 용도에 맞추어서 알맞게 넣어주면 됩니다.
잘 된 것을 확인할 수 있습니다.
이제 배포된 컨트랙트를 consumer 컨트랙트로 등록을 해야 함수를 사용할 때 비용이 나가고 randomness를 요청할 수 있습니다.
https://vrf.chain.link/goerli 이 주소로 다시 갑니다.
위의 사진에서 동그라미 친 부분을 클릭해서 들어갑니다.
그럼 위와 같은 화면을 볼 수 있습니다.
저 화면에서 Add consumber 버튼을 누릅니다.
다시 Remix로 넘어갑니다.
배포된 컨트랙트의 주소를 복사합니다.
복사한 주소를 consumer address에 입력합니다.
add consumer 버튼을 눌러 추가해줍니다.
잘 등록된 것을 확인할 수 있습니다.
이제 주사위를 굴릴 이더리움 주소를 입력해서 rollDice 버튼을 누릅니다.
실행이 잘 되었다면 다음처럼 트랜잭션 결과를 볼 수 있습니다.
house 함수에 rollDice 함수에 입력했던 값을 넣으면 결과값이 나오는 것을 볼 수 있습니다.
최대한 쉽게 따라할 수 있도록 작성하였습니다.
그래서 설명이 많이 부족할 수 있습니다.
부족한 부분을 댓글로 남겨주시면 확인하는대로 수정할 수 있도록하겠습니다
https://docs.chain.link/getting-started/intermediates-tutorial
https://docs.chain.link/resources/acquire-link?parent=gettingStarted
https://docs.chain.link/getting-started/deploy-your-first-contract/
https://docs.chain.link/vrf/v2/subscription/supported-networks/#configurations