목록분류 전체보기 (265)
dukDukz
[wallet.js] 생성 # secp256k1 이거를 쓴다... 상세한 내용은 블로그에서 알아보는게 좋을 것 같다. 사용방법만.. 알아보자 기본적으로 얘는 알고리즘 암호화다. 그래서 저 암호화를 사용하려면 패키지가 하나 필요한데, 그게 바로 elliptic 이다. $ npm install elliptic 가져오자 const ecdsa = require('elliptic') console.log(ecdsa); ecdsa 를 한번 찍어보자 색을 보니 class 는 절대 아님 찍어보니 긴 객체가 나오는데 일단은 이 안에 있는 ec 라는 애를 사용할거임 그래서 사용방법이 const ec = ecdsa.ec("secp256k1") // 암호화 방법은 secp256k1 console.log(ec); ec 를 찍어..
작업증명 - 마이닝, 채굴... 쉽게 말하면 블럭을 생성할 때 쉽게 생성하지 못하도록 하는것. http 인터페이스를 통해 body 영역에 내용 추가해서 블럭 추가했었는데, 요청을 해서 바로 생성 X 문제를 내고 풀었을때만 (컴퓨터가 자동으로 풀 수 있게끔- 몇번정도 try해서 풀었는지) 블럭 추가할 수 있게. [block0902.js] difficulty 와 nonce 추가 -> header 내용이 변경된 것 = BlockHeader 를 썼던 부분을 수정해줘야함 (3군데) 1. BlockHeader() 에 difficulty 와 nonce 추가 this.difficulty = difficulty // 문제 난이도 this.nonce = nonce // 문제 몇번 시도 했는지 해당 코드 더보기 class ..
내 src 폴더에서 $ node server 로 3000번 포트 열어준다. $ curl -X POST -H "Content-Type:application/json" -d "{\"peers\":[\"ws:192.168.0.43:6005\"]}" http://localhost:3000/addPeers -> 연결하기 $ curl http://localhost:3000/mineBlock -X POST -H "Content-Type:application/json" -d "{\"data\":[\"hyejun world1\"]}" -> 내거에다가 추가 # 남의 것 조회 curl http://192.168.0.43:3000/blocks | python3 -m json.tool # 내거 조회 curl http://loc..
동기와 비동기 / 동일한 기찻길 이 하나의 기찻길이 전문용어로 쓰레드 그래서 js 가 싱글 쓰레드 (기찻길 하나) 라서 비동기라는 프로그램을 쓴다, 콜백이 유독많은 이유가 이것 때문 싱글스레드가 무조건 나쁘냐? 그건 또 아니다. //[sample.js] let a = 1; let b = 2; let fn = () => { console.log('a'); } function fn2(){ console.log('b'); } let c = 10 let o = { a: 1, b: 2 } heep 이라는 공간 : 장바구니 무언가 내용을 저장하는..공간 코드를 주워 담음 let a = 1 이런거를 다 주워 담음 저 전체가 다 담아져 있음 (실행은 된 것) 실행은 됐는데... 담기만 했다. 담고 나서 사용을 한다. ..
[network.js] ws.on 얘도 비동기이다. 여기서도 이벤트 종류가 몇개 있을 것이다. 흔히 자주 쓰는 메서드가 무엇인지... websocket 의 on 이라는 매서드를 실행했을때.. 얘도 비동기로 실행되는 것이다. [websocket 의 이벤트 종류] open connection error close message *message 가 가장 중요하다 - 얘도 비동기로 처리가 된다. 이 인자값(data)은 누가 주는걸까? ws.on("message", data => {} 어케 가져왔지?? data라는 변수는 on 이라는 애가 만들어준것이다. 이제 그러면 network.js 를 쓰면서 이해해 보도록 하자! 가장 핵심적인 녀석이 ws Websocket 의 사용방법도 알아야 한다. npm socket 을..
간단한 통신에 대한 내용 ws.on 은 addEventListener 랑 비슷하다고 볼 수 있다. document.addEventListener('click',()=>{ // document에 click 이벤트 등록 // 코드가 계~~~속 실행되어야 한다. 그래야 이벤트가 발생했을 때 알 수 있기 때문 }) ws.on('message',()=>{ // on 역시 이벤트 등록을 위해 썼다고 생각하면 될듯 }) 상위 객체에서 매서드를 실행하고 스트링으로 뭔가 들어가고 두번째 인자값이 콜백함수 callback 함수 let callback = (a,b) => { console.log(a,b) } callback(1,2) a=1, b=2 가 찍힌다. 이 상태에서 setInterval 을 써보자 et callbac..
인터페이스란? 인터페이스 : 리모컨, 클라이언트... 내가 뒤에 만든 프로그램이랑 대화할 수 있는 매개체 (요청만 보내는..) HTTP 인터페이스 node js (express http server 가 항상 backend로만 구축했던..) 지금은 client 역할만 한다 - 왜 client 역할을 하고 있는가? -> 블록체인이라는 특수성 사용자에게 1,000원 이라는 데이터를 받았다면, 우리는 그 정보를 영구적으로 가지고 있어야만 응답을 줄 수 있는데 이 데이터를 어떤 방식으로 저장할 것인가? - 저장하는 방식 1) 메모리에 저장 - 변수에 저장함 웹소켓을 껐다가 켰을때 당연히 블록이 날아간다. 웹소켓을 통해서 서로간에 연결을 시켜주는 채팅 프로그램을 만들었다고 생각해보자 websocket websock..
두개의 서버. 접속만 되게끔 했었는데 서로의 정보를 공유할 수 있게 해보자 $ curl -X POST -d "{data:"hello"}" http://localhost:3000/addPeers 서버 연결을 시켜놓고 서로 웹소켓으로 연결이 되게끔 처리를 해놓으면 연결 시도를 한다. 그러면 server2 가 체크를 한다 server1의 블록과 server2의 블록이 같은가? 다른가? - 임의로 server1의 블럭이 추가 되어 있는 상황이라서 다르다. - 검토를 한다 (제네시스 블록 제외하고 검토함) - 그 다음에 다른 부분을 찾아서 바꿔준다. - 연결할때 블럭을 2개로 바꿔준다. (server2) 연결이 된 상태에서 server1에 블럭을 추가하게 되면 server2에도 보내준다. 마찬가지로 server2..