20210727블록체인_현수영강사님
먼저 3가지 툴에 먼저 익숙해지자!
1. Remix_Ethereum , http://remix.ethereum.org/
2. Solidity , https://docs.soliditylang.org/en/v0.8.6/
3. Etherscan https://ropsten.etherscan.io/address/0x70036dc3Cb3c36a1CdCFbf8765cC00B94a12a450
솔리디티 공부할 수 있는 예제 사이트 :
https://docs.soliditylang.org/en/v0.8.6/solidity-by-example.html
나의 오늘 배웠던 code 깃허브에 업데이트 (test01~test08) :
https://github.com/luckyjek/blockchain-smart-contracts
GitHub - luckyjek/blockchain-smart-contracts
Contribute to luckyjek/blockchain-smart-contracts development by creating an account on GitHub.
github.com
아래, '코인'과'토큰'의 차이는 내가 자료찾아가면서 쓴 글이고,
https://luckyjek.tistory.com/27 <- 여기주소로 올바른 코인과 토큰의 차이점에 대해서 보면 될 것 같다.
블록체인상의 꼭 중요한 단어들이라서 안지웠기도하고,
정리한게 지우기 아까워서 다 그냥 회색처리로 해놨다.
'코인'과 '토큰'의 차이
<두개의 차이를, 어카운트와 트랜잭션으로 얘기해보자 >
우선, 외부 소유 어카운트(EOA)와 컨트랙트 어카운트(CA)에 대한 개념정리를 해야겠다.
블록체인특성상, 탈중앙화된 시스템에서는 어떤 암호화폐의 주인이 누구의 소유인지 어떻게 인증할 수 있을까?
비트코인의 경우, 바로 개인 키 정보를 이용하여 소유권을 증명했다.
비트코인 뿐만아니라 대다루스이 암호화폐 프로토콜에서는
소유권을 입증하기 위한 수단으로 개인 키 를 사용하고있다.
개인 키 생성 -> 생성한 개인 키로 공개 키 생성 -> 나아가 Address(주소)를 생성 ( 탈 중앙화된 버전의 회원가입 완료!)
-> 이러한 계정을 EOA (=사용자 계정) 라고한다.
- EOA(Externall Owned Accounts)는 외부 소유 어카운트로서 개인 키에 의해 통제되는 계정 정보입니다.
- CA(Contract Accounts)는 컨트랙트 어카운트로서 컨트랙트 코드에 의해 통제되는 계정 정보입니다.
Coin :
EOA계정은 사용자 계정 -> 개인 키(Private Key) 정보를 가지고 있다. (자체적 트랜잭션 생성 가능)
Token :
어카운트(CA) 계정 -> 개인 키(Private Key) 정보를 가지고 있지 않는다.
(자체적 새로운 트랜잭션 생성 못함, 타 계정으로 부터 받은 메시지에 대한 응답으로 내부 트랜잭션을 실행 할 수 있다.)
즉, 외부 소유계정으로 부터 모든 상태변환이 시작되며,
외부 소유계정이 다른 외부 소유 계정에게 이더를 전송하기 위해 트랜잭션을 생성하거나,
특정 계약을 수행하기 위해 컨트랙트 계정에게 트랜잭션을 발송하여 계약이 발동 될 수 있도록 하는것이다.
그럼 코인만 사용하면되지 토큰을 만들어서 관리하는 이유는 뭘까? 깊게 생각해보기.> 질문하기
ERC-20 (토큰 표준 규격)
-Ethereum Request for Comments
이더리움 네트워크 상에서 유통할 수 있는 토큰의 호환성을 보장하기 위한 표준 사양
코드 작성시에 변수, 함수, 파라미터를 딱 정의를해놓으면,
이 토큰을 사용하는 주소(컨트랙트)만 적용해주면된다.
https://ihpark92.tistory.com/44?category=747040
https://blog.naver.com/thswjdtmq4/222447307987
https://www.bloter.net/newsView/blt202008140016
https://steemit.com/kr/@yahweh87/eoa
오늘 배웠던 솔리디티 문법 중 어려웠고, 이해안됐던 부분 정리
1. 오늘배운 첫 번째 로직 :
payable : 이더를 받기위해 필요하다.
2. 오늘배운 두 번째 로직 :
컨트랙트, 법인지갑이라고 생각하자!
external : 밖에서만 호출가능하다. (함수안에서 { } 호출 불가)
컨트랙트 배포라는 트랜잭션을 할떄 밸류에 이더를 생성되는 컨트랙트
- EOA 는 보내면가다. 즉, 주소만알면 끝!
- 하지만, 컨트랙트는 이더를 막 받을 수 없다 코드가 있어야한다.
생성되는 시점에 주소로 가는 트랜잭션은 아 ~ 배포하는구나 라고 받고, payable이 있는 코드를 보고 배포된다!
없으면 실패!
컨트랙트 특정 함수를 실행할떄 payable이있어야한다!
컨트랙트가 이더를 받으려면 , 트랜잭션으로 들어온다 .
그 과정에서 그경로에 무조건payable이있어야된다!
컨트렉트 구조는 무조건 아래와 같다.
이제 무조건 컨트렉트 관점에서 보도록 노력하자!
아래는 우리가 직접 만드는 토큰일 경우 erc-20이라는 규격이 없을텐데, 그럴때 data부분에 똑같이
payable을 구현해주면 이더또한 같이 전송을 할 수 있게되는것이다.
주말에 코드 복습할때 추가하도록 해보기