[이더리움] 계정과 트랜잭션

in #kr7 years ago

대문1.jpg

여행글에 너무 많은 성원을 해주셔서 이더 글 쓰기가 살짝 무섭네요..ㅎㅎ

댓글 달아주시구 보팅해주신 분들 정말 진심으로 감사드립니다~~~ 얼릉 대댓글 쓸게요...글부터 써야할 거 같아서..죄송해요 ^^

추억만으로 살 수는 없으니 공부해야죠!!!

저번 글에 이어 이더리움의 계정(Account )에 대해서 알아보겠습니다.(계좌라고도 하고 계정이라고도 하는데 개인적으로 계정이 더 어울리는 거 같습니다)

이더리움의 계정에는 2가지 종류가 있습니다. 외부 소유 계정(External owned Account), EOA라고 불리는 것과 계약계정(Contract Account), CA라고 불리는 계정입니다. 이름에서도 살짝 유추할 수 있지만 외부소유계정은 누군가가 소유하고 있는, 지갑과 같은 계정이라고 생각하시면 됩니다. 두 가지 계정 중 외부소유 계정이 상위 계정이고 새로 생성되는 트랜잭션은 모두 이 외부소유계정에서 시작하게 됩니다. 외부소유계정에서 계약과 관련된 트랜잭션을 만들면 계약계정에서 받아서 처리하게 되죠.

이렇게만 말하면 이해하시기 어려울테니 조금이라도 친근한 비트코인과 비교해 보겠습니다.

비트코인에는 계정이라는 개념이 없습니다. 단순히 지갑이라는 형태로 존재하죠. 비트코인의 지갑은 비트코인의 거래를 담당합니다. UTXO(Unspent Transaction Output)라는 비트코인 가치 덩어리가 오고 가는 것이죠.
UTXO에 대해서 모르시는 분이 계실테니 간단하게 비유를 하자면,

카드지갑.jpg . . . . . .영수증.jpg
이런 카드지갑의 칸마다 자신이 송금받은 수신내역을 넣어놓는다고 생각하시면 됩니다. 송금받은 금액 한 건씩 각 칸에 넣어놓는 거죠. 그래서 언제, 누구한테, 얼마나 받았는지 하나 하나를 알 수 있는 구조입니다. 비트코인의 지갑은 실제로 비트코인이 움직이는 것이 아니라 저렇게 금액을 적은 내역들이 옮겨다니는 것입니다.

잔액조회.jpg
그에 반해 이더리움의 외부소유계정(EOA)은 은행 계좌와 같습니다. 그냥 전체 돈으로 계산되지 이 돈을 누구한테 받았는지에 대한 정보같은 것은 없습니다. 그냥 은행 잔액조회 같은, 다 합친 잔고가 표시되는 개념이죠. 거래 내역을 조회하면 찾을 수 있겠지만 비트코인처럼 따로 저장되지는 않습니다.

비트코인 거래처럼 개인 대 개인 혹은 거래소에서 이더만 송금을 하는 경우, 이 외부소유계정은 비트코인 지갑과 같은 역할을 합니다. Value Transfer 라고 해서 외부소유계정에서 다른 외부소유계정으로 이더가 송금되는 과정이죠. 과정도 비슷해서 보내는 사람이 자신의 외부소유계정에서 개인키로 서명을 한 Transaction을 만들어 받는 사람의 외부소유계정으로 보내게 됩니다.

하지만 이더리움는 이렇게 지불수단으로써만 쓰이는 네트워크가 아니죠. 스마트 컨트랙트라는 기능이 있으니까요.
이런 계약을 실행하는 데 필요한 계정이 바로 계약계정(CA)입니다. 외부소유계정이 스마트 컨트랙트를 만들어 보내면 그것을 받아 자동적으로 처리해주는 계정이 바로 계약계정입니다.
이 계약계정은 코드화 된 계약에 의해서만 움직이고 외부소유계정의 소유자가 맘대로 변경할 수 없습니다. 강제실행이라는 말이 여기서 나오는 거죠.

그럼 외부소유계정과 계약계정에서 스마트 컨트랙트가 시행되는 간단한 예를 들어보겠습니다.

A가 B에게 10 이더를 보내면서, 이더가 천만원이 되면(제발...) 5이더는 B가 갖고 C에게 남은 5이더를 보내라 는 트랜잭션을 만든다고 생각해 봅니다.

트랜잭션1
트랜잭션2.jpg

우선 A는 자신의 외부소유계정으로 이 내용을 담은 트랜잭션을 만들어서 서명을 하고 블록에 포함시켜야 합니다.
A가 보낸 트랜잭션은 모든 노드들이 검증한 후 블록에 담겨 B에게 전송되죠. 이 트랜잭션에는 이더를 송금하는 것 외에 이더가 천만원이 되면 이라는 조건을 담은 메세지가 들어있으니 조건을 만족할 시 자동으로 실행되는 B의 계약계정으로 보내지게 됩니다.

트랜잭션2
트랜잭션3.jpg

이더가 천만원이 되는 날(가즈앗!!!), B의 계약계정은 A로부터 받은 계약을 자동으로 실행시킬 것입니다. 따라서 5이더를 자신의 외부소유계정으로 보내고, 남은 5이더를 C의 외부소유계정으로 보내게 됩니다. 더이상의 조건이 붙지 않으니 C의 계약계정으로 보낼 필요가 없습니다.
이렇게 하나의 흐름으로 조건이 맞으면 자동으로 실행되는 것이 스마트 컨트랙트이고 그 안에서 외부소유계정과 계약계정의 역할이 나뉘게 됩니다.

계약계정은 어떤 새로운 계약도 만들어낼 수 없습니다. 외부소유계정이 만든 계약을 실행시킬 뿐이죠. 모든 계약에는 이것이 참이라는 인증이라는 것이 들어가야하는데 이더리움 블록체인에서 그걸 담당하는 것은 개인키를 통한 서명이고 서명을 할 수 있는 것은 외부소유계정 뿐이니까요.

트랜잭션4.png
이전 글에서 트랜잭션 하나하나가 블록에 담기는 과정을 봤었습니다. 위 예로 들면 A가 B에게 보내는 트랜잭션1과 B가 C에게 보내는 트랜잭션2가 각각 담기게 되겠죠.
블록체인이라는 것은 이 블록들을 전체 노드가 공유하는 것이고 그 블록 안에 내용도 모두가 공유하고 승인하게 됩니다. 이렇게 A가 B에게 보내는 트랜잭션이 담긴 블록이 전파되고 그 계약을 모든 노드가 가지고 있는 상태를 이더리움에서는 State라고 합니다. 전체 노드에게 계약 내용이 전파되어 계약의 진행상황이나 지금의 상태를 모두가 알고 있다는 것이죠. State는 이더리움에서 자주 나오는 개념입니다. 스마트 계약을 상태변환함수라고 말하는 것도 바로 저 State란 개념을 쓰기 때문이죠. 조건이 맞게되면 계약이 실행되어 블록들이 가지고 있는 State를 변화시키니까요.

위의 예는 아주 단순화시켜 개인 대 개인의 거래만을 다뤘지만 이더리움 네트워크 안에서 쓰이는 Dapp의 경우, 저런 계약이 Dapp에 참가하는 많은 인원에게 적용될 수 있습니다. 계약 내용을 담은 트랜잭션이 블록에 담겨서 승인되고, 조건이 성립되었을 때 많은 사람들에게 똑같은 영향력을 발휘할 수 있는 단계를 state라는 개념을 통해 설명하는 것이죠.

이더리움의 트랜잭션도 송금을 하거나 계약을 실행시키기 위해 수수료를 내야합니다. 그리고 그 수수료는 트랜잭션 안에 담겨있습니다.

이더 트랜잭션.jpg

위에 트랜잭션의 구성요소를 적은 이유는 바로 GAS라는 이더리움의 수수료 체계의 특징때문입니다. 비트코인의 경우 송신자가 보낸 비트코인과 수신자가 받는 비트코인의 차이가 수수료로 알아서 빠지는 구조이죠. 그래서 어떤 추가적인 데이터를 필요로 하지 않고 송신자가 수수료를 설정할 수 있죠.
이더리움은 이렇게 금액 차이로 수수료를 계산하는 것이 아닌 트랜잭션안에서 수행되는 송금이나 계약 내용안에 코드의 종류와 개수로 수수료를 매깁니다.
이 수수료 지불 과정에서 송신자가 설정할 수 있는 2가지가 바로 저 gaslimit와 gasprice입니다. 그래서 저 2가지 데이터가 트랜잭션의 일부로 들어가게 되는 것이죠.

그럼 다음 포스팅에서 이더리움의 수수료 부가 체계와 gas에 대해서 알아보겠습니다.(힘들어요..ㅠㅠ)

재미없는 긴 글 읽어주셔서 감사드립니다~~ 제가 제대로 이해가 안되면 글이 어려워지던데 오늘 글은 확실히 좀 어렵겠네요..ㅎㅎ State 부분에서 제가 잘못 이해한 것이 있다면 꼭 지적해 주시면 감사하겠습니다~~~

참조 :
이더리움 작동원리의 이해(1) -땡글 블록체인 강의(동영상)
Medium, 이더리움 계정, 트랜잭션, 가스 그리고 블록 가스 한도- Yeji Park

Ourselves 캠페인
셀프보팅을 하지 않고 글을 올리시고
ourselves 테그를 달아 주시면
많은 분들이 관심 가져 줄꺼에요

Sort:  

Cheer Up! 많은 사람들이 이 포스팅에 관심을 갖고 있나봐요!

  • from Clean STEEM activity supporter

암호화화폐는 어려워요 ^^
원리도 어렵지만 사는 시기 파는 시기 너무 어려운 듯 싶습니다...
요즘 같은 폭락장엔... ㄷ ㄷ ㄷ
이더리움이 실행까지 가능하다는 얘기를 들었는데 여기서 자세히 듣네요.
솔직히는 다 이해는 안됩니다 ^^
(아마 제 머리가 안하고 싶은 듯 합니다 ^^)

ㅎㅎ 굳이 안하셔서도 됩니다.. 제 글은 투자랑도 거리가 멀고 실제 사용하는 것과도 거리가 멀어요.ㅎㅎ
정말 기본적인 내용을 공부하고 있는거라.. 이더가 천만을 가야하는데..저러고 있네요...
누구를 탓해야하는지..ㅋㅋ
저두 누가 사는 시기랑 파는 시기 좀 알려줬음 소원이 없겠네용..ㅋㅋㅋ 조은 강제존버다!!!!
찾아주시구 댓글 남겨주셔서 감사드립니다~~ 어렵다는 이야기도 써주시기만 하면 저한테는 힘이 된답니다 ^^

자세한 설명 감사합니다.
예전에 ICO 해보겠다고 MEW에서 처음 이더리움 집어 넣고 ico 송금하던 기억이 나네요.. 도대체가 아무 것도 모르겠고... GAS는 어떻게 설정 해야하는지... 막막했어요.

헐 전 아직 개인지갑은 사용해보지도 못했어요.ㅎ 그냥 이론만 보니 더 이해하기사 힘든게 분명 있는데 선뜻 손을 못대겠네요.ㅎ 이번에 Appics 프리세일에 도전해보려고 했으나... 제대로 공부도 못해서리..
놓친게 좀 아깝긴 하네요..ㅎㅎ 근데 경쟁률이 엄청 났던걸로 봐선 아마 머리만 쥐어뜯으면서 못했을지도.ㅎ
읽어주시구 댓글 남겨주셔서 감사드립니다 loki님~~ ^^
스사모도 그렇고..사진 조언해주시는 것도 그렇고 뭐 해드린 것도 없이 맨날 감사만 드리네요 ㅎㅎ

와~ 정말 상세합니다. 잘보았습니다~~@.@

좋게 봐주셔서 감사드립니다 valueup님 ^^
[생각]으로 쓰시는 글들이 넘 멋지네요.. ㅎㅎ 투자글도 그렇게 ^^
저두 찾아뵙고 인사드릴게요~~ ^^
찾아주셔서 감사드려요 ^^ 다음글은 좀더 쉽게 써보도록 노력하겠습니다!!!

이더리움의 저 gas가 항상 궁금했어요! :D 다음 글에서 더 자세히 알 수 있겠군요. 그리고 저 팔로워 이벤트에 추천해주셨더라구요! :) 죄송합니다, 이제야 봤습니다. 저도 모르게 추천을... 정말 감사드립니다! 더 노력하는 모습으로 보답하겠습니다 :D

아 제가 추천했다고 말씀을 안 드렸군요.ㅎㅎ 사실 다른 이벤트에 추천하고 싶었지만..제 이름이 들어가 있는지라.. 죄송해요 ㅎㅎ
저두 항상 감사드립니다~~ 노력은 더 하실 필요 없을 거 같은디.ㅎㅎ
gas 관한 글도 열심히 준비해서 좀더 쉽게 써보도록 할게요 ^^

코인이 돌아가는 세상은 전혀 모르는데.. 이렇게 하나씩 주워담아서 지식을 충당해야겠어요.. 시대에 뒤쳐질 순 없고.. 배울 건 많고.. 머리가 포화상태인 요즘입니다^^;

저두 포화상태...ㅎㅎ 시간을 쪼개서 한다고 하는데 뭔가 막 밀려드는 느낌이네요..ㅎㅎ
새해라고 벌려놓은 것도 많아서.ㅎㅎ
그래두 김작가님 여행기보면서 그 시간만큼은 릴렉스 하고 있답니다 ^^
항상 찾아주셔서 정말 감사해요 ^^

너무 어렵지만 조금씩 읽어보려 노력해보겠습니다....

쓰는 저두 어려운데 읽으시는 분이 어려운 건 당연하죠..ㅎㅎ
제가 쉽게 써야하는데 그게 잘 안되네요.ㅎ
아이스밀크티님 처럼 글솜씨라도 있으면 모르겠는데..블로그 글 쓰는게 아예 초짜라 ^^
다음 편은 좀더 준비해서 써보겠습니다 ^^
댓글 감사드려요~~
프리지아가 얼릉 싸졌으면 좋겠네요.ㅎ 그럼 봄이겠죠?ㅎ
저두 프리지아는 노란색이 진리라고 생각합니다.ㅎ

비트지갑이랑 이더지갑에도 이런 차이점이 있군요. 개인적으로 gas도 정말 궁금한 부분인데, 다음 글도 기대됩니다 ㅎㅎ 감사합니다! 이더 천만 가즈아~~~~!

이더가...내 이더가..ㅠㅠ
찾아주셔서 감사드립니다 ㅎㅎ
저두 비트랑 이더가 이렇게 차이나는 줄은 공부하면서 첨 알았네요..걍 돈 전송하는 방식이 다르다는 이야기는 들었는데..ㅎ
가스글이 또 넘 어렵게 쓰여져서...읽기 전에 이 댓글을 보시길...실망하지 마세요..제발.ㅎㅎ

이러한 자세함 내용이 있었다니.. 전 맨날 저게 뭘까만 생극했었거든요 ㅋㅋㅋ

아 글 적는다고 오늘 쓴 글에 먼저 댓글을 다는 실수를....
매번 찾아와 주셔서 정말 감사드려요 momoggo님 ^^ 저두 그래야하는데 핑계만 늘고..흑흑
꼭 찾아가서 힘 북돋아드릴 수 있는 댓글 남길게요~~ 글 솜씨가 별로 없으니 보팅으로라도!!!

아니에요 가끔이라도 찾아와 주시면 그것만으로 만족합니다 ~ ㅎㅎ ^^
여유가 나시면 한번씩 들려주세요!

넵!! 말만 이만기라 잘 실천도 못해요.ㅎㅎ

어렵지만 덕분에 조금씩 배워갑니다!

역시 오늘은 어렵다는 이야기가..ㅠㅠ 아는 것과 글을 쓰는 건 정말 큰 차이가 있는거 같아요.. 알았던 거 같은 것도 글을 쓰다보면 이게 맞나 싶고... 그렇게 글을 쓰면 이렇게 어렵게 써지고..ㅎㅎ
끝까지 읽어주시고 응원해주셔서 정말 감사드립니다~~ ^^
담에 좀 제대로 준비해서 글을 써볼게요~~ 저두 넘 어려워서 될지 모르겠지만 ㅎㅎ

Coin Marketplace

STEEM 0.20
TRX 0.13
JST 0.030
BTC 64689.90
ETH 3450.92
USDT 1.00
SBD 2.50