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라고 이해하기
- 런타임상태 = 컴퓨터의 프로그램이 실행되고 있는 동안의 동작
'Web3' 카테고리의 다른 글
블록체인 서비스기획 2주차 - 2일 수업 노트 (0) | 2023.07.12 |
---|---|
블록체인 서비스기획 2주차 - 1일 수업 노트 (0) | 2023.07.10 |
블록체인 서비스기획 1주차 - 4일 수업 노트 (0) | 2023.07.06 |
블록체인 서비스기획 1주차 - 3일 수업 노트 (0) | 2023.07.05 |
블록체인 서비스기획 1주차 - 2일 수업 노트 (0) | 2023.07.04 |