[블록체인 분야 융합보안 교육과정] 3일차(完)
3일차
Hash값
Distributed vs Decentralized
- Distributed: 열 명한테 한 문제씩 나눠서 풀게 한 다음 다시 모아 채점
- Decentralized: 열 명이 한 문제를 풀고 제일 먼저 푼 사람 걸 다른 사람이 검증
- resource의 낭비 - 모든 사람이 똑같은 문제를 다 같이 풀어야 함
- 장점: 중앙화된 서버가 없음
서버가 없는 것이 아니라 서버가 연결되어 있는 것
transaction
합의 알고리즘
- 맞다고 인정하자
- 동의를 받은 것을 옳다고 인정
smart contract
- 만들어서 블록체인에 태워 놓는다.
- 조건에 맞기만 하면 실행이 됨
- ex) 내가 누군가한테 100원 받으면 1000원 줘야 한다. 이렇게 계약이 돼있으면 조건이 맞으면 아묻따 실행된다. 뭐 900원 손핸데? 이런 생각 해도 그냥 무조건 실행됨
Turing Complete
- 지금 solidity 같은 언어들이 turing complete이라고 생각하면 됨
블록체인의 클라이언트와 서버
- geth, Parity등 이더리움 프로토콜 이더리움 클라이언트.
- 그럼 서버도 있지 않느냐? No. 노드가 곧 서버. 네트워크에 참여한 모든 노드가 서버가 된다. 즉 클라이언트가 서버가 된다는 것
Light node vs Full node
- Light node: 블록의 헤더만 가지고 있다. 필요한 계약 내역이 있으면 서버에서 찾아서 가져옴
- Full node: 모든 블록 기록을 다 가지고 있음. 채굴업자들도 풀노드. 노드를 만드는 사람들은 과거 블록을 다 가지고 있어야 새 블록을 만들 수 있음. == 채굴
coin vs token
- coin: 블록체인 자체에서 발행되는 것.
- token: smart contract에서 발생되는 것. 토큰 자체는 블록체인에 있는 게 아니라 스마트 컨트랙트 안에 있음. 그 안에서만 효력이 있는 것.
- 용어를 분리해서 써야 한다.
ethereum 2.0
- PoS로 바뀔 것.
- eWASM으로 바뀔 것.
- shard Chains: 샤드 개수 x 각 샤드의 tps --> 속도가 엄청 빨라진다. 거래 fee가 낮아진다.
difficulty bomb
- mining 조건을 말도 안 되게 어렵게 바꿔서 채굴을 못 하게 하는 것. (ex. 0으로 설정해버리면 ㄷㄷ)
- 이더리움 2.0 만들어지고 나면 옮겨야 하니까 못 쓰게 만들어버릴 것
nonce
- 이더리움에서 nonce는 두 가지가 있음
1. 블록 생성시 해시 만들 때 사용하는 nonce
2. 누군가 transaction을 몇 번 보냈는지
- 두 가지를 혼동하지 말아야 함
Transaction Finality
- 블록이 변경 가능성이 없다고 판단할 때까지 시간이 걸림(몇 개의 블록이 연결될 때까지 기다려야 함)
Hard forks vs Soft Forks
- 하위호환성이 있: soft fork
- 하위호환성이 없: hard fork
accounts
- 이더리움에는 두 개의 accounts가 있음
- EOAs: 사람이 가진 account
- contract account: 스마트 컨트랙이 가진 어카운트. 스마트 컨트랙이 배포된 주소.
goerli testnet
실습
Out of Gas
- 다이나믹한 상황을 피하는 코딩을 해야 함
- gas fee가 떨어지면 contract는 종료. 원래 어느 정도 contract에 발생하는 fee를 먼저 계산할 수 있는데 어떤 때 넘어서는 일이 발생할 수 있을까? --> 동적인 상황 발생했을 때. (ex. malloc, if 등 동적인 상황 최대한 피해야 함)
- cohesion(응집력), decoupling 중요
기타