[이더리움] 트랜잭션과 메시지

민수·2023년 5월 22일
0

트랜잭션과 메시지

이더리움에서 계정은 외부소유계정(EOA)과 컨트랙트계정(CA)이 존재한다.

외부소유계정(EOA)은 이더리움 계정으로 입/출금이 가능한 계정이고 컨트랙트계정(CA)은 스마트 컨트랙트의 주소로 프로그래밍 언어로 쓰인 코드와 저장공간을 가진 계정이다.

외부소유계정(EOA)은 트랜잭션(Transaction)을 보낼 수 있다.

컨트랙트계정(CA)은 어떤 프로그램을 실행할 수 있고 사용자로부터 받은 정보를 처리하고 이더리움 네트워크에 기록한다.

외부소유계정(EOA)은 인터넷의 사용자 ID와 유사하다.

컨트랙트계정(CA)은 인터넷에서 서비스를 제공하는 홈페이지 주소와 유사하다.

EOA는 Transaction CA는 Message라고 생각하면 된다.

트랜잭션

이더리움에서 사용되는 트랜잭션(Transaction)이란 외부 소유 어카운트가 보낼 메시지를 가지고 있는 서명된 데이터 패키지이다.

interface Message {
  from?: string // 메시지를 보내는 컨트랙트의 주소
  to: string // 메시지를 받는 컨트랙트의 주소
  gas?: number // 메시지 처리를 위해 사용할 가스의 양
  gasPrice?: number // 가스의 가격
  value?: number // 메시지에 함께 전송할 이더의 양
  data: string // 메시지 데이터 (Byte Code로 인코딩됨)
  nonce?: number // 메시지 전송자의 계정에 대한 nonce 값
}

interface Transaction extends Message {
  v: number // 서명 v 값
  r: string // 서명 r 값
  s: string // 서명 s 값
}

외부소유계정(EOA)에서 트랜잭션은 이더리움 네트워크로 전송할 때 포함되는 메시지이다.

메시지 수신처, 발신처를 확인할 수 있는 서명, 발신처가 수신처로 보내는 이더의 양은 대부분의 디지털자산에서 표준으로 사용되는 값이다.

선택적 데이터 필드에 다양한 정보들을 포함하여 컨트랙트계정(CA) 등에 어떠한 명령을 요청할 수 있다.

마지막에 존재하는 StartGas 값과 GasPrice 값은 이더리움에서 핵심적인 역할을 한다.

탈중앙화된 애플리케이션 플랫폼인 이더리움에서는 사용자가 관리자 개념에서 인터넷서비스를 이용, 관리하고 데이터를 수정, 기록할 수 있는 권한까지 주어진다.

사용자에게 권한이 많이 주어지기 때문에 공격을 받으면 심각한 결과를 초래한다.

그래서 이더리움에서는 가스(Gas)라는 개념을 도입했다.

메시지

컨트랙트는 다른 컨트랙트에게 메시지를 전달할 수 있다.

메시지는 따로 저장될 필요가 없는 이더리움의 실행환경에서만 존재하는 가상의 오브젝트이다.

interface Message {
  from?: string // 메시지를 보내는 컨트랙트의 주소
  to: string // 메시지를 받는 컨트랙트의 주소
  gas?: number // 메시지 처리를 위해 사용할 가스의 양
  gasPrice?: number // 가스의 가격
  value?: number // 메시지에 함께 전송할 이더의 양
  data: string // 메시지 데이터 (Byte Code로 인코딩됨)
  nonce?: number // 메시지 전송자의 계정에 대한 nonce 값
}

컨트랙트계정(CA)는 서로 다른 컨트랙트계정(CA)에게 메시지를 전달할 수 있다.

스마트 컨트랙트 프로그램은 서로 다른 스마트 컨트랙트 프로그램들과 다양한 정보들을 주고 받을 수 있고 서로 다른 스마트 컨트랙트 프로그램들에게 다양한 명령들을 요청할 수 있다.

참고

0개의 댓글