번외) External Owned Accouts & Contract Accounts
* 이 모든 것은 이더리움의 테스트넷인 Sepolia를 통해 진행되었다
이더리움으로 NFT를 만드는 과정을 완료하였는데 결과물을 보고 싶어서 알아보는 절차이다!
시키는대로 해서 NFT를 만드는 트랜잭션을 발생시켰고 이것만 보면 성공적으로 발생한 것 같지만 보낸 주소만 나의 것이고 받은 주소는 전혀 알 수가 없어서 저 주소가 무엇인지 송금을 해보았다.
처음에는 이 글을 보고 '당연히 보내면 자금 손실이 일어나겠지'라는 마인드로 넘어갔는데...
이렇게 되더라.... 그래서 '자세히 알아보기'를 눌러 문제가 무엇인지 읽어보았다.
계약 주소라서 안보내지는 것이었다! 그래서 이 참에 계약 주소(Contract Accounts)가 무엇인지 외부 소유 주소(External Owned Accounts)는 또 무엇인지 알아보려고 한다!
외부 소유 계정(External Owned Accounts)
간단하게 지갑주소이다! 계정의 주소를 통제할 수 있는 개인키가 존재한다.
계약 주소(Contract Accounts)
컨트랙트 코드에 의해 통제되는 계정이라고 한다! 컨트랙트를 네트워크에 배포할 때 생성된다. 하지만 EOA와 다르게 개인키가 없기에
1. 특정 조건을 충족해야 실행되고
2. 직접 트랜잭션을 발생시킬 수 없다.
중앙화 거래소에서 CA를 활용하는 방식을 살펴보면
1. 고객한테 입금용 주소를 발급한다
2. 고객이 입금용 주소에 입금을 하면
3. CA를 활용하여 입금된 이더의 목적지를 거래소의 메인 주소로 설정하게 한다.
이외에도 많은 활용이 가능하다고 한다.
이 때 메타마스크에서는 EOA와 CA를 주소 자체만으로도 구분하는 것 같아서 나중에 어떻게 두개가 구분되는지 살펴볼 필요가 있을 것 같다.