1. 이더리움 계정(Account)

 

이더리움 계정은 20바이트의 주소와 상태변환(정보 직접 전달) 갖고 있음.

 

이더리움 계정 내 필드 4 존재.

 

 1) Nonce :  트랜잭션이 오직 한번만 처리되게 하는 카운터

 

 2) Value : 계정의 현재 ether 잔고

 

 3) Contract code : 계정의 컨트랙트 코드 ( 없을  있음)

 

 4) Storage :  계정의 저장공간(초기설정엔 값없음)

 

 

이더리움 계정은 2가지 종류가 있음.

 

 1) 외부소유계정(EOA. External Owned Account)

 

  - ‘지갑’. CA보다 상위계정.

 

  - 새로 생성되는 트랜잭션은 모두 EOA에서 시작.

 

  - 하지만  계정엔 코드 없으며,  계정에서 메시지 발신하려면  트랜잭션 생성  서명필요.

 

 

  모든 컨트랙트에는 해당 컨트랙트가 참이라는 인증이 존재해야한.

  인증을 담당하는 것은 개인키를 통한 서명이며  서명을 수행하는 것이 EOA.

    

 2) 계약계정(CA. Contract Account)

 

  - 스마트컨트랙트 역할 가능배포된 코드 ‘저장공간 추가로 존재.

 

  - CA 컨트랙트 실행 가능. 생성 불가. ( EOA 만든 컨트랙트만 실행가능. 생성X )

 

  - EOA 보낸 메시지를 CA 수신할 때마다 자신의 코드를 활성화.

 

  - (기능수행)  활성화 코드따라 메시지 읽기, 내부저장공간 기록, 다른 메시지 발신. 컨트랙트들을 차례로 생성.

 

 

 

스마트컨트랙트는 이더리움 실행환경 내에 살아있는 자율 에이전트.

 

 ○ 이더리움에서 컨트랙트는 수행 당하는 , 컴파일 되는 .

 

 ○ 메시지, 트랜잭션이 도착하면 항상 특정코드 실행.

 

 ○ 자신의 이더잔고와 영속적 변수들 추적키 위해 자신의 / 저장소를 직접 통제함.(=스마트)

 

 

 

이더리움의 비대칭암호키 = 개인키와 공개키 => “address” 주소로 표현

 

 ○ 이더리움은 속도와 보안성 조절 위해 다양한 매개변수를 갖음.

 

 ○ 이더리움은 타원곡선암호(=ECC) *secp256k1 사용함.

  *secp256k1 : 타원곡선암호기술의 종류( https://m.blog.naver.com/aepkoreanet/221178375642 )

 

비트코인에서 사용하는 타원곡선암호기술(ECC)

지난, “비트코인 시스템에서 사용하는 암호 기술“ 기사에서, 비트코인은 디지털 서명 암호기술로, 공개키...

blog.naver.com

 ○ 암호와 매개변수로 비대칭 암호키를 생성함.

 

 ○ 공개키를 이용해 주소를 만드는 것이지만, ‘ ‘주소 표현.

     *1) 공개 키의 keccak-256 해시 생성

     *2) 12바이트 제거

     *3) 16진수 문자열 인코딩. 최종 40 문자의 바이트 스트링이 유저의 계정주소.

 

 

 

2. 트랜잭션(Transaction)

 

□ EOA(외부소유계정, 지갑) 보낼 메시지를 포함한 서명된 데이터 패키지.

 

 ○ A→B계정으로 이더, 컨트랙트(함수호출,  컨트랙트 배포 ) 보낼  서명으로 사용

 

  - 타원곡선암호 기반의 디지털서명 알고리즘인 ECDSA이용하여 서명함.

 

  - 트랜잭션은 다음 값을 포함

to

메시지 수신처

to, signature, value

암호화폐에서

표준처럼

사용되는 

signature

발신처 확인가능한 서명

value

발신처가 수신처로 보내는 이더의 

data

선택적 데이터 필드(컨트랙트 메시지를 담을  있는 데이터 필드)

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

gaslimit

start가스값. 최대 계산 단계 (트랜잭션 실행이 수행되도록 허용된)

gaslimit, gasprice

코드  무한루프

 계산 낭비 방지 용도.

gasprice

 계산단계마다 발신처가 지불하는 수수료

   · 이더리움의 디도스예방. 해킹시 실행되는 모든 리소스에 강제수수료 부과.

 

   · 계산기본단위 ‘가스’, 계산단계별 소모비용은 연산마다, 데이터 용량마다 다름.

 

   · 트랜잭션 데이터 내에 바이트랑 5가스 수수료 지불.

 

 블록체인 위에 도메인등록서비스 기능하는 컨트랙트가 있는 경우,

 이 컨트랙트로 보내지는 data 등록하고자 하는 ‘도메인 ‘IP주소 개의 필드를 소유함.

 컨트랙트는 메시지 데이터로부터  값들을 읽어 저장소  적당한 위치에 저장함.

 EVM 데이터에 어떤 값이 존재하는  미리 알고 있음.

 

 

 

3. 메시지(message)

 

이더리움 실행환경(EVM)에서만 존재하는 가상 객체 (저장 불필요)

 

 ○ 컨트랙트는 다른 컨트랙트에게 메시지 전달가능함.

from

메시지 발신처(암묵적)

to

메시지 수신처

value

메시지와 함께 전달되는 이더

data

선택적 데이터 필드

gaslimit

start 가스값. 최대 계산 단계 (트랜잭션 실행이 수행되도록 허용된)

 

메시지는 컨트랙트에 의해 생성됨. (트랜잭션은 EOA 의해 생성됨)

 

 

그러나, 메시지는 트랜잭션과 매우 유사함.

 

 ○ 수행과정

 

  - 코드수행 중인 컨트랙트가

  - 메시지 생성  실행 지시하는 수행코드(opcode) 만나게 되면

  - 메시지를 생성함. 그리고 해당코드를 실행하는 수신자계정(컨트랙트 계정) 도달하게 .

  - 따라서, 컨트랙트는 EOA 하는 동일한 방식으로 다른 컨트랙트와 관계를 맺음.

 

 

□ GAS 관련

 

 ○ 트랜잭션이나 컨트랙트에 의해 할당된 가스 허용치는

 

 ○  트랜잭션과 모든 하위 실행에 의해 소모된  가스에 적용됨.

  * EOA A B에게 1,000가스와 함께 트랜잭션을 보내고 (1,000부여)

  * B 600가스를 소모  C에게 메시지를 보내고, C 내부 실행에 300가스를 소모한  반환하면 (900사용)

  * B 가스가 모두 소모되기  100가스  사용가능.

 

 

 

#. 출처 사이트 :

https://steemit.com/kr/@yahweh87/36-5  : 스팀잇 이더리움백서 설명.

https://hamait.tistory.com/965?category=   : 컨트랙트 비용.

https://hamait.tistory.com/966?category=276132:  [이더리움 메모] 트랜잭션의 실전적 종류 구분.

+ Recent posts