1번은 mapping 선언입니다.
2번은 해당 계좌에서 얼마만큼의 돈을 보냈는지 확인할 수 있게 하는 코드인데, 조금 더 자세히 설명하겠습니다.
현재 계좌주소에서 해당 계좌의 키를 참조하면 어떻게 될까요?
당연히 0일 것입니다. 돈 보낸적이 없으니까요!
그럼 어떻게 값을 저장해야할까요??
위 코드에서 msg.sender 는 주소를 의미하고, msg.value는 보낸 돈을 의미합니다.
총 10 만큼의 돈을 보낸 것을 확인할 수 있습니다.
그렇다면, 거래가 발생하면 계속 값이 더 해질테니까 해당 주소에서 얼마만큼 돈을 보냈는지 확인이 가능해집니다!
Interfaces compile down to an ABI .
ABI = Application Binary Interface
The ABI tells solidity and other programming languages how it can interact with another contract.
Anytime you want to interact with an already deployed smart contract you will need an ABI.
Interfaces compile down to an ABI Always need an ABI to interact with a contract.
인터페이스는 ABI로 컴파일됩니다.
ABI = 애플리케이션 바이너리 인터페이스
ABI는 Solidity 및 기타 프로그래밍 언어에 다른 계약과 상호 작용할 수 있는 방법을 알려줍니다.
이미 배포된 스마트 계약과 상호 작용할 때마다 ABI가 필요합니다.
인터페이스는 ABI로 컴파일됩니다. 계약과 상호 작용하려면 항상 ABI가 필요합니다.
지금 어떠한 모듈을 하나 import 하였는데, 왜 하는지 찾아보니까 ETH/USD 가격을 얻기 위함인 것 같다.
AggregatorV3Interface 안의 주소는, https://docs.chain.link/docs/ethereum-addresses/
아래에서 찾았다.
이제 아래의 코드를 실행하자! transaction이 연결될때 시간이 걸리니 1분정도 기다린다!
그다음은 return 의 타입캐스팅을 배웠다. function의 리턴을 uint256으로 선언하였으므로 함수의 return도 그에 맞게
타입캐스팅을 해준 모습이다.
이제 getPrice를 하면 다음과 같은 숫자를 얻을 수 있는데 이것을 어떤 의미일까?
바로바로 이더리움의 가격이다! 조금의 차이는 있는것을 알 수 있다.
그런데 음 아래의 함수 뭔가 보기 지저분하지 않은가?
answer만 사용하는데 다른것을 꼭 저렇게 안 써도 된다!
이런식으로 수정이 가능하다. 리액트의 구조분해할당과 비슷한 것 같다.
후에 answer에 10^11 을 곱해준다
왜 10^11 일까? 그 이유는 1 ether 가 10^11 gwei 이기 때문이다.
아마 Ether -> gwei 단위 변환때문이지 않을까 싶다.
2번 값에다 gwei의 값 10^11을 곱해주면!
Ether 의 값을 얻을 수 있다.
'공부기록 > 블록체인 스터디' 카테고리의 다른 글
M1 Python path 문제 (0) | 2022.06.01 |
---|---|
This contract may be abstract, not implement an abstract parent's methods completely or not invoke an inherited contract's constructor correctly (0) | 2022.05.27 |
[블록체인 스터디] Solidity Local Storage (0) | 2022.05.26 |
블록체인 - 2 (0) | 2022.05.15 |
블록체인 개념 (0) | 2022.05.12 |