5. SHA256?
SHA256이란, SHA(Secure Hash Algorithm) 알고리즘의 일종. ex) password
1. Preimage resistance : 주어진 해쉬 값에 대해, 해쉬값을 생성하는 입력값 추적 어려움.
2. Second Preimage resistance : 입력값에 대해, 그 입력의 해쉬 값을 바꾸지 않으면서 입력을
변경하는 것이 계산상 어려움.
3. Collision resistance : 해쉬 충돌에 대한 안정성. 같은 해쉬값을 생성하는 두 개의 입력값을
찾는 것이 계산상 어려움
6. 예를 들어 SHA256 알고리즘을 이용해서 다음과 같은 해쉬값을 얻을 수 있다.
In BlockChain
SHA-256 ("hello world" + " 0") = 3cad76d283686392c9c1813baf25239a3f09b9e075d830984a9a93d62b93adb8
SHA-256 ("hello world" + " 1") = 063dbf1d36387944a5f0ace625b4d3ee36b2daefd8bdaee5ede723637efb1cf4
SHA-256 ("hello world" + " 2") = ed12932f3ef94c0792fbc55263968006e867e522cf9faa88274340a2671d4441
SHA-256 ("hello world" + " 3") = 4ffabbab4e763202462df1f59811944121588f0567f55bce581a0e99ebcf6606
SHA-256 ("hello world" + " 4") = 000e5e410dd915d190cce21d72a40bdbcc9db96d80de87d28896b56766f31b4e
SHA-256 ("hello world" + " 5") = f6471bb5cd1837f3ef4891903c40c5300c9f0fd8a902d5c3774628c44dab78ed
SHA-256 ("hello world" + " 6") = 6a9b5a89258b50744dfdf62e49ac6d869e8916e04ce57d9d1fc953daed9bfcd8
여기서 hello world 문자 뒤에 나타는 숫자는 앞서 블록 생성시, Nonce를 의미한다. 따라서
Nonce 값이 증가한다는 것은 그만큼 연산횟수가 늘어나고, 해쉬값을 이용해 역으로 추적하기가
사실상 어렵다고 보면 된다.
물론 양자컴퓨터로 계산을 하면 된다는 사람이 있는데, 양자컴퓨터로 계산하기 위해 만드는 비용
이 훨씬 크기 때문에 시도하지 않는 것으로 보인다.
추가하자면, 현제 SHA-2 알고리즘의 대안으로 SHA-3 알고리즘을 공모하고 있다고 한다.
8. 이제부터 설명한 부분은, 프로토콜이자 함수입니다.
POW(Proof Of Work)
해쉬 파워가 우세한 블록이 메인넷에 등록되었다고 설명했습니다.
이러한 과정에서 이용되는 POW(작업증명)는 일명 “채굴”이라고도 불립니다.
많은 해쉬를 가진 사람이 코인을 얻을 수있는 블록을 더 많이 발견할 수 있는 구조 입니다.
앞서 설명한 해쉬연산을 처리해 얻는 방식입니다.
주로 비트코인, 라이트코인, 지케시, 모네로 등이 있습니다.
9. 왜 블록을 생성하는데, 이러한 과정이 필요할까?
POW(Proof Of Work)
모든 네트워크의 노드(컴퓨터)들이 동시에 블록을 생성하는 것을 방지하고자 만들어 졌습니다.
10. POW(Proof Of Work)
POW 방식은 GPU연산/ASIC 컴퓨터를 이용해 계산을 하기 때문에 채굴하는데 비용이 어마어마
하게 듭니다. 현재 비트코인의 경우 500만TH/s (TH/s : 1초에 1조 연산)이 듭니다.
11. POW(Proof Of Work)
또한 채굴을 하다보면, 전체 채굴의 51%이상의 영향을 미치는 채굴자가 새로운 블록을 생성할
확률이 높기때문에 잘못된 Transaction을 일으켜 전체 비트코인 시장에 영향을 미치게 될 수 있
습니다.
즉, 해쉬파워가 전체 시장에 51%에 해당하는 영향을 미치는 사람이 있다면, 잘못된 정보를 블록
에 기입해 블록을 생성할 수 있기 때문입니다.
13. 앞서 설명한 문제점들 때문에 대안으로 나온 POS 알고리즘이 있습니다. (지분증명방식)
POS(Proof Of Stake)
POS(지분증명방식)는 컴퓨터의 해쉬파워가 아닌, 가지고 있는 돈(Stake)을 기준으로 블록을 생
성합니다.
예를들어 50번째 블록 생성시, A의 기여도가 50이고 B의 기여도가 80이라면 B가 생성한 블록을
선택합니다. (여기서 POW와 다른점은 50번째 블록을 동시에 생성한다는 것 입니다.)
14. POS(Proof Of Stake)
POS 방식은 블록 생성시, 보상체계가 없습니다. 즉 직접적인 채굴이 아니라는 것 입니다.
대신, POS는 해당 지분만큼의 Transaction 수수료를 받습니다.
17. 이제 전반적인 블록체인에 관해 이해를 했으니 본격적으로 토큰을 만들어보겠습니다.
Ethereum(이더리움)
본격적으로 만들기 전, 코인과 토큰의 차이점 그리고 이더리움에 대해서 간략하게 알고
넘어가겠습니다.
18. 블록체인을 기반으로 “스마트 계약”기능을 구현
하기 위한 분산형 컴퓨팅 플랫폼이다.
Ethereum(이더리움)
“
”
•발표일 : 2015년 7월 30일
•프로그래밍 언어: C++, Go, 러스트
•GPLv3, LGPLv3
•스마트 계약 가능
•스마트 계약을 통한 토큰 생성 가능
19. 비탈릭 부테린
1994년 생 러시아에서 태어났으나, 99년에 캐나다로 이민. 현재는 스위스에서 거주중이다.
아버지가 알려준 비트코인으로부터 큰 영향을 받았다.
2011년에 비트코인 매거진을 만듬.
2012년부터는 본격적으로 팀을 구성하고 이더리움 백서를 작성
2013년에는 다니던 워털루 대학교를 자퇴 / 이스라엘, 네덜란드, 미국 등으로 여행
•언어 : 영어,프랑스어, 독일어,광동어, 그리스어
•14년 IT소프트웨어상을 수상(마크 저커버그를 제치고)
•그냥 천재 프로그래머
21. Ethereum(이더리움)
다음 시간에 할 내용이지만, 먼저 살짝 이더리움에 대해 소개를 하자면
•이더리움은 왜 흥할까?
•이더리움은 네트워크이자 프로토콜이다.
•이더리움을 기반으로 ERC-20 토큰을 생성 할 수 있다.
- 스마트 컨트렉트를 만들어보자!
- ERC : Ethereum for Request for Comments
•DAPP 의 구조와 현황 그리고 미래