

이 강의는
AWS에 있는 데이터를 불러오는 스마트 컨트랙트를 작성하여,
오프체인 데이터를 온체인에 불러오는 실습 목적이다.
강의 영상 : https://www.youtube.com/watch?v=DynD2NzB6cQ
체인링크 기능들을 통해 오프체인 데이터를 온체인으로 불러올 수 있다고 한다.
구조를 쉽게 나타내면
스마트 컨트랙트 <---> (오라클 컨트랙트) <--->DON <---->오프체인
이다.
결국 우리는 '스마트 컨트랙트'만 제대로 작성하면 되는 것이다.
(물론 체인링크가 제공하는 양식에 맞게)
예를 들어,
'AWS에서 오늘 서울 날씨 불러와'
라는 컨트랙트를 작성하고 실행하면 (체인링크 양식에 맞게)
이 코드가 DON에 전달되고
각각 DON 노드들은 외부 데이터들을 받아와 각각 계산을 하고
DON 노드들 끼리 합의, 확정 지어서
컨트랙트로 보내는
과정이다.
이번 실습에서는
를 작성해야 한다.
쉽게 생각하면
한다고 생각하면 쉽다.
결국 해커톤 수준에서는, 우리가 DON도 컨트롤 할 수 있기 때문에
고 한 것 같다.
(물론 여러 노드를 쓰고, 신뢰받는 data provider들을 사용하는 건 아니니 서비스 수준까진 안되겠지만)








우리가 불러올 데이터는 '오늘의 환율'이다.
무료 구독하자.

링크 : https://github.com/smartcontractkit/functions-aws-currency-data
터미널을 열고
git clone https://github.com/smartcontractkit/functions-aws-currency-data.git
복붙하고 vscode를 실행하고,
npm i
까지 세팅하자.
먼저 AWS 내 계정의 ACCESS_KEY, SECRET_KEY가 필요하다.
이를 확인하기 위해
링크 : https://docs.aws.amazon.com/powershell/latest/userguide/pstools-appendix-sign-up.html
따라가자.

1번의 링크를 타고 들어가서
사용자 클릭

사용자 이름 아래 파란 글씨 클릭, 없다면 사용자 추가
(여기서 뭔가 꼬인 것 같다... 사용자 추가시에 어떤 세팅을 해줘야만 하는건가?)

보안 자격 증명 - 액세스 키
에서 만들고 csv파일로 다운 받으면 된다.

준비가 되었다면 vscode로 가자.
먼저
npx env-enc set-pw
로 비번 세팅 해놓고
npx env-enc set
으로 '암호화된 env'파일을 작성할 것이다.

.env.example을 참고해
SEPOLIA_RPC_URL
PRIVATE_KEY
SECRET_KEY
ACCESS_KEY
//이 밑은 .env.example 에 있는 문자열 그대로 넣자
DATASET_ID
REVISION_ID
ASSET_ID
세팅을 해주자.

성공적으로 .env.enc 파일이 생성되고 환경변수를 적었다.
먼저 컨트랙트를 살펴보면

DON에 JS 코드 및 인자들을 담아 전달하는 함수다.
우리의 경우
aws에 환율 요청하는 JS코드를 작성하고 이를 DON에 전달하는 것이다.
'야 이 코드에 적힌대로 진행시켜'

하는 것이다.
가 DON으로 부터 응답을 받는다고 생각하면 된다.
그럼 그 JS 코드가 무엇이냐

이거다. 마치 http get 요청을 보내는 거 같지 않은가? 맞다.
이 코드를 컨트랙트에 넣어서
컨트랙트 >>> DON에 전달하고 DON은 이 코드를 실행시키고 값을 받는 따까리일 뿐
config는 설정 파일일 뿐이다. 아까 입력한 환경변수, 데이터 타입 등을 세팅해놨다.
이제 끝났다.
npx hardhat functions-simulate
으로 로컬 hardhat 테스트넷에 컨트랙트를 배포하고 실행하고 결과값을 받는
시뮬레이션을 한다.
성공적으로 작동한다면

1 gbd를 달러로 나타낸 오늘의 gbd/usd 126을 받아야 하는데


나는 403 에러가 떴다.
api가 잘못 됬나 확인하려고 바로 위 코드 콘솔 url을 찍어보니 맞는 거 같다.
대체 무엇이 문제인가?
이거 안되면 aws 못 쓰는디..?