본문 바로가기

BlockChain/Ethereum

이더리움 주소, 키, 계정의 구성과 역할 이해하기

 해당 글은 본인이 이더리움을 이해하기 위해
글 가장 아래의 출처들을 종합하여 작성되었습니다
정보의 생략 및 오타가 있을 수 있습니다ㅏㅏㅏ

 

이더리움은 주소, 개인키, 디지털 서명 등을 통해 이더(ether)를 소유하고 통제한다

그리고 키와 주소는 지갑 또는 월렛 ( 지갑 )이라고 부르는 소프트웨어에 의해 생성되고 관리된다

 

지갑 주소( 이더리움 주소 )의 생성 과정

private Key -> public key -> address

1. private Key 는 HEX 값으로 구성된 64자리의 랜덤값으로 생성

2. 타원 곡선 암호화 알고리즘(ECDSA)으로 private Key로부터 공개키를 생성

3. 마지막으로 공개키를 해싱(Keccak-256) 하여 뒤에서 40자리만 가져온 것이 우리가 사용하는 지갑의 주소


+++ 지갑 주소(이더리움 주소 = EOA)는 공개되어 있으며 전 세계 누구와도 공유 할 수 있고,

** but 개인키는 절대 다른 사람과 공유해서는 안된다 **

주소 + 개인키는 그 어떤 데이터베이스에도 저장되지 않으며,

사용자만이 이 정보를 통제 할 수 있다

 

Keccak-256

: 단방향 해시 함수



개인키와 공개키

위의 이더리움 주소 설명에서와 같이,

  • 개인키 ( private Key )

    이더를 지출하는 트랜잭션을 디지털 서명하는 데 사용된다

    개인키는 단순히 무작위로 추출된 숫자이다

    좀 더 정확하게 말하면, 개인키는 0과 n - 1 사이의 임의의 수이다


  • 공개키 ( public key )

    이더를 수신하는 주소로 사용된다

    공개키는 타원 곡선 곱셈 함수를 사용하여 개인키로부터 계산된다

 

이더리움 계정

이더리움에는 2가지 유형의 계정(주소)이 존재한다

  • 외부 소유 계정(EOA)

    지갑에서 개인키로 생성한 계정

    외부적으로 관리됨

    이더 잔액을 가짐

    트랜잭션을 전송 할 수 있음

    개인키로 관리

    관련 코드를 가지고 있지 않음


  • 컨트랙트(계약) 계정(CA)

    컨트랙트에서 생성된 계정

    이더 잔액을 가짐

    관련 코드를 가짐

    코드 실행은 다른 계약에 의해서 받은 메세지(호출) 혹은 트랜잭션을 통해서 작동이 시작


두 가지 계정 중 외부 소유 계정상위 계정이고,

새로 생성되는 트랜잭션은 모두 이 외부 소유 계정에서 시작하게 된다

외부 소유 계정에서 계약과 관련된 트랜잭션을 만들면 계약 계정에서 받아서 처리하게 되는 것이다

 

+++ 트랜잭션의 구성요소

to 메시지 수신처 to, signature, value
암호 화폐에서
표준처럼
사용되는 
signature 발신처 확인가능한 서명
value 발신처가 수신처로 보내는 이더의 
data 선택적 데이터 필드(컨트랙트 메시지를 담을  있는 데이터 필드)

 *초기값은 없지만 EVM은 컨트랙트가 여기 접근할 때 사용할 수행코드 소유
gaslimit start가스값

최대 계산 단계 (트랜잭션 실행이 수행되도록 허용된)
gaslimit, gasprice
코드 내 무한루프
및 계산 낭비 방지 용도
gasprice  계산 단계마다 발신처가 지불하는 수수료

 

GAS라는 이더리움 수수료 체계의 특징 때문에,

비트코인처럼 금액 차이로 수수료를 계산하는 것이 아닌,

트랜잭션 안에서 수행되는 송금이나 계약 내용 안에 코드의 종류와 갯수로 수수료를 매긴다

이 수수료 지불 과정에서

송신자( 트랜잭션을 보내는 사람 )가 설정할 수 있는 2가지가 바로 gaslimitgasprice이다

그래서 저 2가지 데이터가 트랜잭션의 일부로 들어가게 되는 것

 

+++ 메시지

컨트랙트는 다른 컨트랙트에 “메시지”를 보낼 수 있는 능력을 가지고 있다

메시지는 외부로 저장되지 않는 가상적인 존재이며,

오직 이더리움 실행 환경안에서만 존재한다

( 메시지는 트랜잭션 간 함수 호출로 생각하면 된다ㅏㅏㅏㅏ )

 

출처 :

https://boxfoxs.tistory.com/400 [박스여우 - BoxFox]

 

이더리움 지갑 해킹이 가능한가?

블록체인을 공부하며 문뜩 든 생각이 있었습니다. 분산컴퓨팅을 활용해 지갑의 주소로부터 privateKey를 얻어올 수 있는가 라는 의문이 들었습니다. 만약 private key를 브루트포싱으로 얻을 수 있다

boxfoxs.tistory.com

https://steemit.com/kr/@anpigon/ethereum-1

 

 

[블록체인] 이더리움(Ethereum) 공부 #1 - 키와 주소 — Steemit

안녕하세요. @anpigon입니다. 마스터 이더리움(Mastering Ethereum) 책을 보면서 정리한 글입니다. 아직 전체 내용을 다 보지는 못하였습니다. 하지만 궁금한 사항을 댓글로… by anpigon

steemit.com

 

 

https://steemit.com/kr/@feyee95/5lzztc

 

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

여행글에 너무 많은 성원을 해주셔서 이더 글 쓰기가 살짝 무섭네요..ㅎㅎ 댓글 달아주시구 보팅해주신 분들 정말 진심으로 감사드립니다~~~ 얼릉 대댓글 쓸게요...글부터 써야할 거 같아서..죄

steemit.com

 

https://medium.com/yejipark/%EC%9D%B4%EB%8D%94%EB%A6%AC%EC%9B%80-%EA%B3%84%EC%A0%95-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98-%EA%B0%80%EC%8A%A4-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EB%B8%94%EB%A1%9D-%EA%B0%80%EC%8A%A4-%ED%95%9C%EB%8F%84-89c5428078e6

 

이더리움 계정, 트랜잭션, 가스 그리고 블록 가스 한도

*해당 글은 저자 Hudson Jameson으로부터 작성된 포스트를 한글로 번역한 것입니다. 번역: 박예지 / 교정: atomrigs

medium.com

 

https://jojuim.tistory.com/entry/%EA%B8%B0%EB%B3%B8-%EC%9D%B4%EB%8D%94%EB%A6%AC%EC%9B%80-%EA%B3%84%EC%A0%95%EA%B3%BC-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98-CA-EOA-TX-%EB%93%9C

 

[기본] 이더리움 계정과 트랜잭션_ CA, EOA, TX

1. 이더리움 계정(Account) □ 이더리움 계정은 20바이트의 주소와 상태변환(정보 직접 전달)을 갖고 있음. □ 이더리움 계정 내 필드 4개 존재.  1) Nonce : 각 트랜잭션이 오직 한번만 처

jojuim.tistory.com

 

https://programmers.co.kr/learn/courses/7322/lessons/42388

 

이더리움 입문 바이블: 모든 이더리움 입문자를 위하여 - 2.3 주소(Addresses)

#무료 이더리움 입문 바이블 ##텍스트 강의에 담긴, 너무나도 중요하고 뼈대있는 이더리움 기초 내용들 블록체인에 대한 관심, 이더리움에 대한 학습 열의에 대해서 논하는건 이제 너무나도 당

programmers.co.kr

 

https://steemit.com/kr/@yahweh87/eoa

 

이더리움 회원가입!? EOA 계정에 관한 개념정리. — Steemit

안녕하세요. 어미새입니다. 지난 포스팅에서는 DApp에 대한 개념정리와, 이더리움의 어카운트 정보에 관한 내용을 다뤘습니다. 이번 포스팅의 목표는 외부 소유 어카운트(EOA)와, 컨트랙트 어카운

steemit.com