Ethereum

Account Types, Gas and Transactions

tisong 2018. 3. 16. 16:39


Account Type에는 다음 2가지가 있다.


1. 블록체인 블록의 외부에 있는 계정

2. 계약 계정


외부에 소유되고 있는 계정 (EOAs)의 특징은


1. ether 잔액정보를 가지고 있다.

2. transaction을 보낼 수 있다.

3. private key로 관리된다.

4. 관련된 코드를 가지고 있지 않다.


계약 계정


1. ether 잔액정보를 가지고 있다.

2. 관련된 코드가 있다.

3. transaction에 의해 코드가 실행되거나 외부 message (call)의 수신으로 부터 실행될 수 있다.

4. 실행시에 영속 저장소가 사용된다.


간단히 정리하면 계약 계정의 transaction은 외부소유계정의 요청으로 시작된다. transaction의 일부로 입력매개변수가 함께 전송되는데 이것에 따라 코드가 실행된다.  계약계정의 실행은 블록체인 참여 노드의 EVM(Ethereum Virtual Machine)에서 실행된다.


모든 Ether 잔액과 값정보는 wei라는 단위를 사용한다.


Transaction이란 무엇인가?


사용자계정에서 다른 계정으로 보내지는 메시지를 저장하고 있는 사인된 데이터 패키지를 뜻한다. 

사용자계정->계약계정 또는 사용자계정->사용자계정


Transaction 포함 내용:

- 메시지 수신인

- 발신자를 나타내는 사인과 메시지를 보내는 의도

- Contract로 전송될 메시지에 포함될 수 있는 옵션 데이터 필드.

- VALUE : 전송하고자하는 Ether를 wei로 표현한 량

- STARTGAS : max Gas : Transaction이 실행되면서 허용되는 최대한의 단위 실행 량

- GASPRICE : 발실자가 기꺼이 지불할 용의가 있는 Gas의 가격. GAS의 단위는 코드의 실행단위의 실행을 수치화한 것이다.


Message란 무엇인가?


계약주소는 계약주소로 메시지를 보낼 수 있다. 메시지는 이더리움 실행환경에서만 존재하는 가상의 객체이다. 이것은 홈수를 호출 할 수 있다.


Message 포함 내용:

- 발신자

- 수신자

- VALUE : 

- DATA optional : input Data

- STARTGAS :


Message는 Transaction하고 비슷해 보이지만 Message는 Contract에 의해 생성되고  개인계정에 의해 생성되는 것이 아니다. Contract가 CALL DELEGATECALL을 실행할때 생성된다.


Transaction 비용계산


Transaction은 다음 2개의 내용을 기반으로 전체 Ether 비용을 계산한다.


gasUsed : web3.eth.estimateGas

gasPrice : transaction에 설정된 gas당 가격