본문 바로가기

Web3

블록체인 서비스기획 1주차 - 5일 수업 노트

Ethereum basics

Transactions

►스마트 컨트랙트에 의해서 생기지 않음

►모든것들은 트랜잭션에 의해서 시작됨 Everything starts with a transaction.

 

-Burn: 영구적으로 컨트롤 할 수 없는 영역으로 보냄

-Lock: 일시적으로 사용못하는 것

 

📌종류

►value만 전달

►value and data 함께 전달

►data만 전달

 

📌전자서명이 증명해주는 것?

 

► 발신자 부인봉쇄, 문서 무결성을 위한 암호화체계

► Authenticity: 디지털 document = message 동일성을 검증

► Nonrepudiation: 부인방지

► Integrity : 변조되지 않았음을 증명

 

해쉬 ►프라이빗키로 암호화 ►문서에 붙임 ► 나중에 복구할 때 퍼블릭키는 널려있으므로 문서에서 먼저 전자서명에 붙어있는 부분을 떼어내서 전자서명에서 디지털 시그니쳐 코드에서 문서(= 문서를 해쉬해서 프라빗키로 싼게 서명) ► 퍼블릭키를 넣으면 풀림

 

전자서명은 문서는 그대로! 문서를 암호화하는게 아님!! ► 문서 밑에 전자서명을 붙이는 것

 

전자서명

평문 ► 평문을 해쉬+프라이빗키►전자서명(해쉬값을 프라이빗키로 암호화한것)► ► 이것이 SEND의 과정

푸는방법? 

생성할때랑 반대로

전자서명 + 퍼블릭키 ►  해쉬된 평문이 나옴 ► 내가 받은 문서의 해쉬와 프라이빗키로 암호화되어있는 해쉬가 같은지 확인
변경되지 않았음을 확인 할 수 있음

문서자체를 가리고 싶은게 아니라 그사람의 서명이 그사람이 맞는지를 확인하는 것!

►수학적으로 원본이 바뀌지 않고 넘어왔다는 것을 증명할 수 있다.

👉🏻 발신자가 맞는지 + 문서가 바뀌지 않았는지 만 확인할 수 있음

참고 : https://m.blog.naver.com/jvioonpe/221384924295

📌 대칭키는 암호문이 아주 아주 클 때! 대신 키를 보낼때 탈취당할 수 있다는 단점이 있음

 

Trasaction Propagation

이더리움은 Mesh network로 만들어짐

► node들은 모두 연결된게 아니라 14개로 묶고

► 그 주변의 14개를 또 묶어서 일을시킴!

► 노드전체에 트랜잭션을 다 퍼트리는 걸 목적으로 하지 않는다.

👉🏻 비트코인 네트워크와의 차이점? 비트코인은 블록생성시간이 10분이므로 다시 거둬들일 시간적여유가 있음

이더리움은 블록생성시간이 15초로 매우 짧음 ► 네트워크 보안에 더 유리함

►네트워크를 분리해서 운영하는 것 (샤딩- 노드를 쪼개서 병렬로 처리한다)을 이더리움에서도 연구하고 있음

👉🏻노드를 구분해서 운영해야함 ►14개로 노드를 묶어서 일을 시키는 것과 맥락이 같음.

►샤드의 그룹별로 쪼개서 트래픽을 전송 👉🏻 네트워크의 모든 노드들이 같은 일을 할 필요가 없다

 

 

Multi-signature Transactions

► provens: 검증, 공증과의 역할 ► 계약당사자들 + 검증인들(수탁)

► 3명의 서명이 있어야 가치가 옮겨진다거나 계약이 실행됨(e.g. 에스크로)

 

Conclusions

Transactions are the starting point of every activity in the Ethereum system.► EVM을 가동 시킴 ► 
Evaluate contract

Update balance

Modify the state of the Ethereum 을 가능하게 함

📌Ethereum의 언어 Solidity 👉🏻 contract-oriented language

 

Smart contract & Solidity

► EOA라는 account와 contract라는 account 두 가지가 있다,

eoa는 사람에 의한 것, contract account는 프로그램 코드(=smart contract) 에 의해서 컨트롤된다.

smart contract는 EVM에 의해서 실행된다. 

실행은 Trasanction에 의해서 initiate🔥된다!

 

Contract account는 associated code와 data storage가 있음 ► 블록밖에(오프체인에) 스마트 컨트랙트가 있음

스마트 컨트랙트자체는 온체인 바깥쪽에 있고 블록체인 안에 있는 것은 코드 Hash Pointer(해쉬값+해쉬가 가리키는 위치)만 있다.

얘를 불러와서 EVM에 올림(=메모리에 올림 = 런타임상태)

👉🏻Transaction ► 코드Hash + Hash pointer ► Smart contract ► EVM ► 실행!

 

📌 Solidity 

- High level language(사람의 언어에 조금 더 가까움) ► 기계가 이해하기 힘든 언어 ► compile이 필요함

► compile을 하면 bytecode로 변경됨 ► EVM에서 bytecode가 작동함

 

- Sing-Threaded Machines

► 모든 사람들이 multi threaded machine을 돌리면 이더리움 네트워크 부하가 예상되어 single-threaded로 만듦.

 

- EVM에 올라가기 전 = 실행하기 전 =메모리에 올라가기전👉🏻 EVM=CPU라고 이해하기

- 런타임상태 = 컴퓨터의 프로그램이 실행되고 있는 동안의 동작