본문 바로가기

블록체인8

[220630] 이더리움 private 네트워크 생성 / peer 연결하기 제네시스 블록을 생성하기 위한 초기값을 설정하기 // genesis.json { "difficulty": "200000", "gasLimit": "3100000", "alloc": {}, "config": { "chainId": 7722, "homesteadBlock": 0, "eip150Block":0, "eip155Block":0, "eip158Block":0 } } chainId 제네시스 블록 외에도 chainId가 맞아야 채널을 열 수 있다. 채널넘버는 7722로 작성했다. alloc 제네시스 블록을 생성할때 해당 계정에 밸런스(잔액)를 기본적으로 넣고 시작할 수 있는 요소. ( 예를 들어, 시작부터 다른 사람에게 금액을 보내야할때 생성해야할때 작성. ) homesteadBlock 이더리움은 총 .. 2022. 7. 8.
[220701] GETH로 RPC 통신하기 / 메타마스크 연결하기 사용할 디렉토리에 geth 세팅하기 node 파일 안에 keystore 디렉토리가 생성되며 account 파일이 생성하는 코드. $ mkdir `node` $ source ~/.bash_profile $ geth --datadir node account new node 파일 안에 keystore파일과 계정이 담긴 파일이 생성된걸 볼 수 있다. 터미널을 새로 켜고 go-ethereum이 설치된 위치로 가서 다음 코드를 실행하면 여러파일이 생긴다. $ make all 그 중에서 build/bin 디렉토리 안에 가면 puppeth와 bootnode가 설치되었는지 확인한다. puppeth은 설정을 도와주고, bootnode는 네트워크 피어연결을 도와주는 서버다. puppeth 세팅하기 네트워크 이름, 네트워크 .. 2022. 7. 6.
[220630] GETH를 통해 실제 이더리움 네트워크와 연결하기 geth 실행 geth가 잘 설치 되었다면 다음 경로에 keystore와 chaindata 디렉토리가 설치되어있을것이다. 이 장소에 블러온 블럭 정보들이 차곡차곡 저장된다. mac : ~/Library/Etherum linux : ~./ethereum $ geth // 실행이 안된다면 다음을 실행한 후 재실행 $ source ~/.bash_profile 블럭 동기화 geth를 실행시키면 이더리움 메인넷의 블럭 정보들을 가져오는게 이를 블럭동기화라고 한다. keystore : geth가 개인키를 저장하는 공간 geth/chaindata : 블럭헤더, 바디, 트랜젝션(tx) 같은 정보들이 저장되는 공간 블럭동기화 3가지 full sync : 모든 블럭,바디,트랜젝션(tx),헤더 같은 블록의 내용들을 모두 받.. 2022. 7. 6.
[220617] 지갑과 블록 네트워크가 소통하는 흐름 지갑과 블록 네트워크가 소통하는 흐름 글로 적으니까 더 헷갈려서 교수님이 그려주신 그림에 설명 첨부 개별적인 단어에 대한 설명을 참조할 블로그 ( https://velog.io/@-__-/bc2 ) 2022. 6. 17.
[220609] prettier, eslint 설치 / 테스트코드(test.ts), 선언파일(d.ts) [ 사전 세팅 ] 문법을 맞춰주는 Prettier 확장프로그램 설치 prettier와 함께 사용할 라이브러리 설치 prettier 말고도 eslint 라이브러리도 설치하는 코드. $ npm install -D eslint prettier eslint-plugin-prettier eslint-config-prettier prettier의 기본값을 세팅하는 config 파일 만들기 // eslint라이브러리를 세팅하는 .eslintrc 파일 { "extends":["plugin:prettier/recommended"] } // prettier라이브러리를 세팅하는 .prettierrc 파일 { // 줄바꿈할 폭이 길이 "printWidth": 120, // 탭을 누를때 얼마나 공간을 둘건지 "tabWidth".. 2022. 6. 10.
[220608] 블록체인의 구조를 만들어보기 블록체인의 기본적인 구조는 이렇다. const block = { header:{ version:'1.0.0', pervoiusHash:'', hash:'', merkleRoot:'', difficult:0, nonce:0, }, body:{ data:["ada","sdfasd","ere","eaaaa","zzzz","bbbbb"] } } 이를 토대로 객체를 만들어보면 다음과 같이 나온다. const Block { constructor(_version,_height,_timestamp,_previousHash,_merkleRoot,_hash,_data){ this.version = _version; this.height = _height; this.timestamp = _timestamp; this.pre.. 2022. 6. 8.
[220608] 블록체인 초기설정하기 / 구조 알아보기 라이브러리 설치 언제나 그랬듯 새로운걸 시작할때는 라이브러리부터 설치하자 $npm install crypto-js 블록체인 구조 블록의 버전 = version 이전 블록의 해시값 = previousHash 블록 해시값 = hash body값의 해시값 = merkleRoot 지금 수준으로는 이해할 수 없는 값 = difficult, nonce const block = { header:{ version:'1.0.0', pervoiusHash:'', hash:'', merkleRoot:'', difficult:0, nonce:0, }, body:{ data:["ada","sdfasd","ere","eaaaa","zzzz","bbbbb"] } } 단방향 암호화로 만들어지는 hash 변수 a를 sha256 형식의.. 2022. 6. 8.
[220517] 판매 등록 하기 1. setApprovedForAll에서 판매등록하기 setApprovedForAll 코드로 구현하기 // 판매등록하는 setApprovesForAll 기능 구현 const onClickApproveToggle = async () => { try { if (!account) return; // 계정이 없으면 return const response = await mintAnimalTokenContract.methods .setApprovalForAll(saleAnimalTokenAddress, !saleStatus) .send({ from: account }); // 주의! call이 아니고 transact 기능 구현!! if (response.status) { // 값이 변했다는 신호 setSaleSta.. 2022. 5. 17.