Main Block 외에 Uncle Block 에게도 보상을 주는 이유?
: 마이닝 노드들의 이탈을 막기 위함(탈중앙성 유지)
Accounts
: 이더리움의 상태(state)는 계정(Account)이라 하는 오브젝트(object)들로 구성되어 있으며, 20바이트의 주소와 상태변화(state transition)을 가지고 있음
외부 소유 계정(EOA, Externally Owned Account)
: 일반적으로 거래에 사용되는 사용자의 지갑주소를 의미함
주소는 개인키로부터 파생된 공개키로부터 생성됨
EOA 간의 거래는 ether의 전송을 의미하며, EOA에서 컨트랙트 주소로 메세지를 보내
해당 코드를 실행할 수 있음
컨트랙트 계정(CA, Contract Account)
: 스마트 컨트랙트의 주소에 해당되며, 스마트 컨트랙트가 블록에 포함되어 배포될 때 해당 스마트 컨트랙트에
대한 주소가 생성이 되며, 이 주소를 통해서 메세지 전송이나 특정 함수 실행을 할 수 있음
트랜잭션의 발생
: 트랜잭션은 생성 >> 서명 >> 전송 의 과정을 거치며 모든 트랜잭션은 목적지가 있음.
개인키로 서명을 하고 거래수수료의 개념인 GAS를 지불해야 생성할 수 있으며,
GAS Fee 너무 낮을 경우 우선순위가 낮아져 블록 생성이 늦어질 수 있음
트랜잭션은 이더리움의 상태를 바꿈(Ether 전송, Smart Contract 배포, Smart Contract 실행)
ParentHash: 부모 블록 헤더의 해시값
UncleHash: 현재 블록의 엉클 블록들의 해시값
Coinbase: 현재 블록의 마이닝 작업 후 이더를 지급받을 어카운트 주소
Root: 어카운트의 현재 상태 정보가 모여있는 머클 페트리시아트의 루트 노드에 대한 해시값
TxHash: 현재 블록 내에 모든 트랜잭션의 머클 트리의 루트 노드에 대한 해시값
ReceiptHash: 현재 블록 내 모든 트랜잭션의 리시트들의 머클 트리의 루트노드에 대한 해시값
Bloom: 로그 정보들을 검색하는데 사용하는 32바이트 블룸 필터, 블룸 필터는 해당 블록 내에 있는 전체 트랜잭션 로그에 대한 필터
Difficulty: 현재 블록의 난이도
Number: 현재 블록의 번호
GasLimit: 블록당 현재 지급 가능한 최대 가스 총합
GasUsed: 현재 블록내에 트랜잭션에 의해 사용된 가스의 총합
Time: 블록의 최초 생성시간
Extra: 블록의 기타 정보
MixDigest: 작업증명에서 해시값을 계산하는데 충분한 계산횟수를 보장하기 위해 사용하는 값
Nonce: 이더리움에서 특정 Account의 트랜잭션 카운트
이더리움 블록의 크기는 1500 으로 정해져있으며, 블록의 크기를 늘리게 된다면 속도 향상과 확장성을 확보할 수 있다. 하지만 그렇게 하지 않는 이유는 무엇인가?
1) 크기가 커지면 노드들의 진입장벽이 높아짐(더 높은 컴퓨팅 성능요구?)
2) 노드가 줄어듦에 따라 특정 노드가 더 강한 권력을 가지게 됨
3) 일부 노드에 의해 중앙화 된 블록체인의 경우 51% 공격 문제를 야기할 수 있음
4) 일부 노드에 의해 네트워크가 변조된다면 더 이상 신뢰되는 블록체인이라 볼 수 없음
비트코인과 이더리움의 자유도
비트코인은 제한된 스크립트 언어로 반복문 사용이 불가함
이더리움은 반복문을 사용 가능하나 정지 문제가 있으므로 가스라는 장치를 통해 시스템 정지를 막음
이중지불 문제 해결방법
: 채굴자는 TxPool 에서 각 Transaction 의 Nonce 순서를 기준으로 내용들을 모두 확인한 뒤 실행이 가능한 항목만 블록체인에 업로드 하게 됨, 1개 Block 에는 N개 Transaction 이 존재함
문제.
- Gas Fee와 nonce 가 같은 TX는 이더리움 상에서 어떻게 동작하는가?
※ 참조한 페이지
'Programming' 카테고리의 다른 글
[웹 개발 기초] REST와 SOAP 차이 (0) | 2021.12.23 |
---|---|
[Back-End] REST, REST API, RESTful API 란? (1) | 2021.12.15 |
[Vue.js] 210706 학습일지 (0) | 2021.07.06 |
[JS] 210629 학습일지 (0) | 2021.06.29 |
[HTML, CSS, JS] 210623 학습일지 (0) | 2021.06.23 |
댓글