목록웹 개발 (224)
dukDukz
1. 블록 추가 (수업 ver) addBlock - 배열에 push 만 하는 녀석 nextBlock - 다음 블럭의 header 와 body를 만들어주는 함수 createHash - Hash 를 만들어주는 함수 # 다음 블럭의 header 와 body를 만들어주는 함수 function nextBlock(data){ # data = body 에 넣어줄 임의값을 받는 매개 변수 # header 는 5개의 속성값이 필요함 - 그 중 이전해쉬값 이전 인덱스 값이 이전 블록 내용이 필요함 } [해쉬값] 이전해쉬값의 version + index + previousHash + timestamp + merkleRoot string 으로 묶은 다음 previousHash = SHA256(version + index + ..
# 이제 다음 블럭을 생성하는 루틴을 해보자 - 이게 코드가 길다 이때부터는 검증 , 데이터 타입을 신경쓰면서 만들어야 한다 -------- # 연결리스트 형태로 블럭을 나열할것이다. 순차적으로 만들거라는 얘기!! 블럭을 생성할 때마다 배열에 집어넣는거를 해보자 전역변수로 배열을 하나 선언한다. let Blocks = [createGenesisBlock()] console.log(Blocks) // 앞으로 볼때는 얘를 보면 됨 # 블럭을 추가해주는 거를 간략하게 해보자 : 전역변수로 선언한 곳에 push 하는 것 function addBlock(){ // 우선 class 사용 new header -> new block (header, body) 를 해야겠군 } index 는 맨마지막에 있는 녀석에 +1 ..
src 폴더 밖에 npm init [block.js] 1. version header에 넣을 version. package.json의 version을 갖고오고 싶다. fs 를 활용하자! const fs = require('fs') function getVersion(){ const package = fs.readFileSync("../package.json") console.log(package); } getVersion() 이렇게 작성하고 $ cd src $ node block 그러면 처음에는 버퍼로 나온다. console.log(package.toString("utf8")); 이렇게 바꿔주면 package.json 의 내용 전체를 확인 할 수 있다. # 객체로 가져오는 방법! JSON.parse 를 ..
# 블록체인 쌍방향 통신(P2P) - 네트워크 (http / socket) - 데이터를 저장하는 코드 (블록) (분산원장) ㄴ 어떤식으로 데이터가 저장되는지? 하나의 문서 같은게 있다고 치면, 전에 있던 데이터가 어떤 곳을 바라보는지.. 이런식으로 데이터를 연결해서 사용할 수 있도록 그런 데이터를 json 형태로 구현했다. 1 잘 묶여있는가? 풀리지 않았나? merkle 로 확인.. 제네시스 블록 최상위 노드이다 라고 가정했을 때 얘가 hash12345678 라고 한다면 두개로 나눠서 첫번째 노드는 hash1234 까지받고 두번째 노드는 hash5678 을 받는다 그 다음은 12 /34 56 / 78 그래서 특정 블럭 검증할 때 짝꿍 확인하고 위에 부분 확인.. # 머클 사용 : 데이터 연결을 쉽게 찾기..
블록체인..? 체인은 연결되어있다는거지만 블록은 뭐냐?? 블록을 노드라고도 하던데... 그게 뭐냐고 -> 객체 최상위의 객체가 제네시스 블록 - 연결되어있지 않은 블럭 { name : ingoo, id : web7722, key : null } { name : 혜준, id : hyejjun key : web7722 } { name : 남일, id : nam key : hyejjun } 혜준의 key 가 최상위 객체로 잡혀있음 - 그래서 최상위 정보를 알고 있으면 혜준 까지 올 수 있음 이렇게 한 정보를 저장하고 있는 객체 이러한 객체들을 연결을 짓는것이 체인이라고 보면 된다. #[블록체인 핵심 기술] 암호 알고리즘 통신 (탈 중앙) 어떤 데이터 찾으려면 어떻게 해야 최단 루트가 되는지 거기까지 어떻게 가..
# user 생성하기 $ cd / $ cd /etc/ $ vi passwd 보면 맨 밑에 내 계정이 있음 간단한 명령어로 user 생성해보자 :q! 나와서 $ cd ~ 으로 가서 $ sudo useradd -m hyejjun2 -m 은 홈디렉토리도 같이 생성해준다는 뜻. 입력 하고 내 원래 패스워드 입력하자. $ cd /home $ ls 보면 새 계정명으로 폴더가 하나 생겼음 다시 $ cd ~ $ sudo passwd hyejjun2 패스워드 설정해줌 정리) # [user 생성하는 방법] $ sudo useradd -m hyejjun2 $ sudo passwd hyejjun2 $ vi /etc/passwd 보면 생성이됨 # 디렉토리 바꾸는 명령어 $ su hyejjun2 # 제 2의 계정에서 1계정이 만..
# 쉘 스크립트 IF 문 $ vi practice7.sh if [ 1 조건 2 ] then code block else code block fi # if 문 끝났을 때 조건 비교연산자 숫자일때와 문자열일때 다르다 1 === 1 "$A" == "$B" 어떤 비교가 가능한가? 1) 숫자비교 2) 해당 폴더에 디렉토리가 있는가. 있다면 파일을 만들어달라 -> 이런식으로.. 파일체크 디렉토리 체크 # if 문 옆에 비교연산자가 안들어가도 가능하다 if ls -l then echo "디렉토리 보기" fi 이렇게 저장하고 $ sh practice7.sh ls -l 이 실행되고 디렉토리 보기 까지 출력된다. # 숫자 비교 / 셸 스크립트 비교 연산자 # 1 < 2 if [ 1 -gt 2 ] then echo "참" ..
# scrips 라는 폴더 (경로생성) $ cd ~ $ mkdir scrips $ ls $ cd scrips # sh 파일 생성/수정/실행 $ vi 파일명.sh 작성하고 $ sh 파일명.sh 실행하기 # 리눅스에서 기본적으로 갖고 있는 달력출력 $ cal $ date # 이렇게 썼던 명령어를 한줄로 만들어볼거다 세미콜론의 개념을 ; 배워보자는것 js 를 할때는 ; 을 많이 안썼었는데 최근에는 함수형 어쩌구가 나오면서 세미콜론을 없애고 있는 추세이다. $ cal; date; echo $PATH 이렇게 한줄에 쓸 수 있다는 얘기 # 결과값 파일에 저장 / head / tail $ ps -ef | grep node > node.txt 꺽쇄 기준으로 왼쪽에 있는 애들을 오른쪽으로 내보낸다. 왼쪽에 있는 출력에 ..