<1.5> 블록체인의 체굴
[1] 개념 비교
1. 기존 금융 시스템
1) 돈 : 은행에 보관
2) 정보 : 은행이 소유한 데이터 베이스에 저장됨
3) 서버 운영 비용 : 하드웨어 비용, 전기세, 소프트웨어 비용, 관리자 비용 등을 고객들이 지불
2. 블록체인 -> 이더리움 네트워크
1) 메타마스크 : 탈중화된 이더리움 네트워크에서 내 잔액 정보 가져옴
2) 잔액 정보 : 이더리움 네트워크에 저장
3. 가상거래저장소에 저장된 가상자산
1) 은행 예금처럼 가상자산거래소가 소유한 서버에 가상자산 소유 정보를 저장하고 있음
2) 가상자산거래소가 운영 비용(하드웨어 비용, 전기세, 소프트웨어 비용, 관리자 비용) 지불
3) 거래에 참여하는 참가자들이 위 비용을 수수료 형태로 지불

4. 채굴
1) 블록 : 거래 내역이 저장
2) 노드 : 블록을 생성한 노드의 경우 채굴 보상을 기록
-> 블록체인 네트워크는 문제를 빠르게 해결한 (채굴)한 노드들에게 블록 생성 권한 부여
import random
import string
## 이더리움 네트워크가 낸 문제
PROBLEM_WORD = "a" # 찾아야하는 단어
PROBLEM_DIFFICULTY = 1 #난이도 숫자, 숫자가 높아질수록 난이도가 높아짐
### 위의 문제의 경우 해시의 값 앞 1번째 자리가 a 이면 문제 해결(채굴 완료)
## 채굴
start_nonce = random.choice(string.ascii_letters)
i = 0
while True:
nonce = start_nonce + str(i)
nonce_result = hashlib.sha256((nonce).encode()).hexdigest()
print(i,nonce, nonce_result)
if nonce_result[0: PROBLEM_DIFFICULTY] == PROBLEM_WORD * PROBLEM_DIFFICULTY :
nonce = nonce_result
break
i += 1
5. 기존 금융 서비스 vs 블록체인 네트워크
1) 기존 금융 서비스 : 요청 내역 서버 기록(송금 완료)
2) 블록체인 네트워크 : 송금, 요청 내역이 블록 생성 거래 내역 리스트 추가
6. 채굴 난이도의 조정
1) 블록 생성 주기 = 채굴 완료 주기
2) 블록체인 네트워크에 하드웨어를 제공하여 참여하는 참여자 수는 일정 x
3) 과정
1. 참여 모수 +, 문제 푸는 시간 -
2. 생성 개수 일정
3. 블록 생성 시간 유지