본문 바로가기
Programming

[Ethereum] 210726 학습일지

by 강한수달 2021. 7. 26.

 

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 이 존재함

 

 

 

https://infura.io/

 

Ethereum API | IPFS API & Gateway | ETH Nodes as a Service | Infura

Infura's development suite provides instant, scalable API access to the Ethereum and IPFS networks. Connect your app to Ethereum and IPFS now, for free!

infura.io

https://sandbox.eth.build/

 

ETH.Build - Educational Sandbox For Web3

Educational sandbox for prototyping Web3. Learn Ethereum visually with drag-and-drop programming.

eth.build

https://geth.ethereum.org/

 

Go Ethereum

What is Ethereum? Ethereum is a decentralized platform that runs smart contracts, applications that run exactly as programmed without possibility of downtime, censorship, fraud or third party interference. See our website or read the docs for more infos!

geth.ethereum.org

https://cmder.net/

 

Cmder | Console Emulator

Total portability Carry it with you on a USB stick or in the Cloud, so your settings, aliases and history can go anywhere you go. You will not see that ugly Windows prompt ever again.

cmder.net


문제.

- Gas Fee와 nonce 가 같은 TX는 이더리움 상에서 어떻게 동작하는가?

 

 

 

※ 참조한 페이지

https://steemit.com/kr/@yahweh87/dapp-account

'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

댓글