728x90
이더리움 계정 (account)이란, 이더를 소유하고 트랜잭션을 보낼 수 있는 독립체이다
이더리움 주소와 개인 키(Private Key)의 조합을 계정(account) 이라고 한다
입출금에 필요한 주소가 계정에 포함되어 있다
이더리움에는 크게 두 가지 종류의 계정이 있는데, 외부 소유 계정인 EOA 와 컨트랙트 계정인 CA로 나뉜다
1. EOA (Externally Owned Accounts 외부 소유 계정)
- EOA 는 일반적인 계정 유형으로, 개인이나 기관이 소유하는 계정이다
- 이더를 송금하거나 받을 수 있으며, 스마트 컨트랙트를 실행시킬 수 있다
이를 다른 EOA 나 CA에 전송할 수 있다 - 개인키와 공개키로 구성되어 있다
여기서 개인키는 비밀번호와 같은 역할을 하며, 공개키는 계정 주소로 사용된다
2. CA (Contract Accounts 계약 주소)
- 스마트 컨트랙트를 네트워크에 배포할 때 자동으로 생성된다
- 직접적인 트랜잭션을 발생시킬 수 없다
왜냐하면 이 계정은 개인키를 가지고 있지 않기 때문이다 - 스마트 컨트랙트의 코드와 데이터가 저장되어 있습니다
- 이 계정은 개인키와 공개키로 구성되어 있습니다
개인키는 소유자만 알고 있는 비밀번호와 같은 역할을 하며, 공개키는 계정 주소로 사용된다
그렇다면, 이 두 계정은 어떻게 동작하는가 ?
1. EOA 가 스마트 컨트랙트 실행 :
- A 라는 사람(EOA)이 B라는 스마트 컨트랙트(CA) 에게 어떤 행동을 하도록 요청할 수 있다
- 예를 들면, A가 B 스마트 컨트랙트에게 "내 이더를 C에게 전송해줘" 라고 요청하면,
B 스마트 컨트랙트는 그 요청대로 이더를 C에게 전송한다
2. CA의 자동화된 행동 :
- 스마트 컨트랙트는 미리 정의된 조건에 따라 자동으로 행동한다
따라서 한번 스마트 컨트랙트가 실행되면, 그 안에 정의된 조건과 행동이 자동으로 실행된다
➡️ 즉, EOA는 "사용자 계정"이며, CA는 "프로그램 계정"이라고 생각하면 된다
EOA는 스마트 컨트랙트를 실행시키거나 이더를 송금하는 등의 행동을 취할 수 있다
반면, CA는 스마트 컨트랙트의 코드에 따라 특정 행동을 자동으로 실행하게 된다
3. 이더리움의 트랜잭션의 객체 구성
이더리움 네트워크에서 발생하는 모든 활동은 트랜잭션을 통해 처리된다
이 트랜잭션은 여러 속성을 포함하는 객체로 구성되어 있다
각 속성의 의미와 역할을 간략하게 작성해보았다
1. from :
- 정의 : 트랜잭션을 발생시키는 EOA 계정의 주소이다
- 중요성 : 트랜잭션의 발신자를 식별하며, 해당 계정의 개인키로 트랜잭션에 서명이 되어야 한다
2. to
- 정의 : 트랜잭션의 수신자로, EOA 또는 CA 의 주소이다
- 중요성 : 트랜잭션이 목적지로 가는 곳을 식별한다
CA의 경우, 해당 주소에 연결된 스마트 컨트랙트의 함수를 호출할 수 있다
3. nonce
- 정의 : 보내는 계정이 발생시킨 트랜잭션의 횟수를 나타낸다
- 중요성 : 트랜잭션의 순서와 중복을 방지한다
이를 통해 이중 지불과 같은 공격을 방지하며, 논스와 가스비를 사용하여 트랜잭션의 우선 순위를 결정한다
ex)
트랜잭션 1 : nonce 1
트랜잭션 2 : nonce 2
트랜잭션 3 : nonce 3
nonce 가 있는 이유 :
중복되지 않고 순차적으로 트랜잭션을 처리하기 위해서
어떤 트랜잭션을 우선적으로 처리할지 결정하기 위해 nonce 를 사용
우선순위를 결정 할때 nonce 와 가스비를 함께 사용해서 우선순위를 결정
4. value
- 정의 : 트랜잭션을 처리하는데 필요한 최대 가스 양이다
- 중요성 : 트랜잭션이 복잡하면 더 많은 가스가 필요하며, 이 값을 너무 낮게 설정하면 트랜잭션이 실패할 수 있다
5. gasLimit
- 정의 : 트랜잭션을 처리하는데 필요한 최대 가스 양이다
- 중요성 : 트랜잭션이 복잡하면 더 많은 가스가 필요하며, 이 값을 너무 낮게 설정하면 트랜잭션이 실패할 수 있다
6. gasprice
- 정의 : 단위 가스당 지불할 금액이다
- 중요성 : 높은 가스 가격을 설정하면 트랜잭션이 더 빨리 처리될 가능성이 높아진다
그러나 너무 높게 설정하면 불필요한 비용이 발생할 수 있다
7. data
- 정의 : 트랜잭션과 관련된 추가 데이터이다
스마트 컨트랙트를 호출할 때 필요한 함수와 매개변수 정보를 포함한다 - 중요성 : 스마트 컨트랙트의 특정 함수를 호출하거나, 데이터를 전달할 때 사용된다
728x90
'BlockChain' 카테고리의 다른 글
[BlockChain] Truffle과 Ganache를 이용한 EVM Smart Contract / React 구현 및 배포 (1) | 2023.10.04 |
---|---|
[Block Chain] 스마트 컨트랙트(Smart Contract) (0) | 2023.09.26 |
[Block Chain] 이더리움과 비트코인의 차이점 (Smart Contract 스마트 컨트랙트) (0) | 2023.09.21 |
[Block Chain] Ganache 설치 오류 해결 (0) | 2023.09.20 |
[Block Chain] Transaction (트랜잭션) (0) | 2023.09.19 |