본문 바로가기

분류 전체보기280

[220714] 스마트 컨트랙트 구현하기 - 3) 이벤트 (프런트 / 백) [ 프런트 ] 매번 새로 생기는 트러플 네트워크 id 확인 $ truffle migration --reset 가끔 트러플이 꺼져서 재배포를 할경우 간혹 이렇게 networks에 네트워크 id가 두개가 생겨있을 수 있다. 트러플을 새로 켤때 네트워크 id가 새로 생성되어서 그런거니까 고유 id값을 확인해서 아닌걸 지우면 된다. $ truffle console $ web3.eth.net.getId() CA 데이터가 자동갱신 되도록 만들기 저번 블로그 글에서 CA값을 json파일에서 찾아서 직접 붙여넣었다. const Deployed = new web3.eth.Contract( CounterContract.abi, "0xE538196bCb40F7cc12E3e041D24A9b04FA3A16A8" ); 하지만 트.. 2022. 7. 17.
시퀄라이즈로 테이블, 모델 생성하기, 관계정의하기 테이블과 모델 생성하기 mysql 테이블은 sequelize(시퀄라이즈) 모델과 같다. 시퀄라이즈는 테이블과 모델 사이를 연결해준다. 보통 테이블은 소문자 복수형(users), 모델은 대문자로 시작하는 단수형(User)로 작성한다. 테이블과 모델 설정하기 모델은 Sequelize.Model을 확장한 클래스로 선언한다. 모델은 두개의 메서드로 나뉜다. 테이블에 대한 설정을 하는 init 메서드 첫번째 인자 : 테이블 컬럼에 대한 설정 두번째 인자 : 테이블 자체에 대한 설정 시퀄라이즈는 자동으로 id를 기본키로 연결한다.(작성할 필요없음) 시퀄라이즈는 mysql에서 사용하는 자료형과 다른 자료형을 사용한다. 시퀄라이즈 자료형에 대한 공식사이트 자료( https://sequelize.org/docs/v6/c.. 2022. 7. 17.
sequelize (시퀄라이즈) 설치, 세팅하기 설치 sequelize-cli : 시퀄라이즈 명령어를 실행하기 위한 패키지 mysql2 : mysql과 시퀄라이즈를 이어주는 드라이버 $ npm init -y $ npm install express morgan sequelize sequelize-cli mysql2 세팅 다음 명령어를 호출하면 config, migration, models, seeders 디렉토리가 생긴다. $ npx sequelize init config 디렉토리 안 config.json에서 development 속성들을 내가 사용할 데이터베이스에 맞춰서 변경해준다. development을 수정하는 이유는 현재 코드를 작성하는 개발환경이 development이기때문. (혹시 operatorAliases 속성이 들어 있다면 삭제해주자.).. 2022. 7. 16.
[220713] 스마트 컨트랙트 구현하기 - 2) 백엔드에서 요청보내기 React로 프런트 구조 짜기 트랜잭션을 일으키려면 개인키(privateKey)가 필요하다. 하지만 프런트에서 직접적으로 개인키를 사용하기엔 보안이 위험하다. 집적적으로 사용하지 않기 위해 메타마스크(월렛)를 사용해 서명 처리를 할 것이다. 따라서 화면 -> 메타마스크 -> 이더리움 네트워크 이렇게 거쳐가도록 구성을 짤 것이다. React로 메타마스크와 web3 연결하기 메타마스크와 연결해서 계정 정보를 가져오고 web3를 연결하는 코드를 작성한다. // react/src/hooks/useWeb3/jsx import React,{useEffect, useState} from 'react' import Web3 from "web3/dist/web3.min" const useWeb3 = () => { con.. 2022. 7. 14.
[220713] 스마트 컨트랙트 구현하기 - 1) 트러플로 구현하기 개발환경 설치&세팅하기 // truffle 설치&세팅 $ npm init -y $ mkdir truffle $ cd truffle $ npm install -g truffle $ npx truffle init // react를 사용하는 front 디렉토리 만들기 $ npx create-react-app front // ganache 네트워크 실행 $ ganache-cli // 없을경우는 설치해주자 npm install ganache-cli 메타마스크에 ganache 네트워크 생성해서 계정 불러오기 트러플로 사용할 코드 작성하기 // truffle/contracts/Counter.sol // SPDX-License-Identifier: MIT pragma solidity ^0.8.15; contract C.. 2022. 7. 13.
[220712] 트러플로 스마트 컨트랙트 만들기 트러플 설치하기 install을 한 후에 잘 설치되었으면 truffle version의 결과가 나온다. $ npm init -y // 편한대로 둘 중에 하나 골라서 설치 $ npm install truffle $ npm install -g truffle (전역설치) $ truffle version // 이게 안되면 아래코드 사용 $ npx truffle version //트러플이 전역설정이 안 되어있어서 npx를 사용하는것 메타마스크에 ganache 네트워크 생성해서 계정 불러오기 트러플 세팅하기 $ npx truffle init 코드를 작성하면 트러플로 개발환경을 만들어주는데, 다음과 같은 파일과 디렉토리가 생성된다. 여기서 트러플을 사용하는 목적이 솔리디티 코드 작성과 배포관리라는 것을 알 수 있다... 2022. 7. 12.
[220701] geth로 트랜젝션 생성하기 이전 포스팅에서 이어지는 포스팅 https://hancoco.tistory.com/264 [220701] GETH로 RPC 통신하기 / 메타마스크 연결하기 사용할 디렉토리에 geth 세팅하기 node 파일 안에 keystore 디렉토리가 생성되며 account 파일이 생성하는 코드. $ mkdir `node` $ source ~/.bash_profile $ geth --datadir node account new node 파일 안에 ke.. hancoco.tistory.com jest 세팅하기 $ npm init -y $ npm install web3 jest 다음 파일들을 생성해준다. // package.json "scripts" : { "test":"jest" }, // .eslintrc { "ext.. 2022. 7. 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.
프로세스간 통신 프로세스 통신 개념 정리 네트워크에 연결된 모든 장치를 노드(Node)라고 한다. 이 중에서 네트워크 주소(IP주소)가 할당되어 있는 노드들을 호스트라고 한다. 한 호스트 내에는 여러 프로세스들이 존재한다. (앱, 프로그램, 어플리케이션, 소프트웨어들) 프로세스를 구별하기 위해 호스트 내부적으로 할당받은 번호를 포트(port)라고 한다. 호스트 내부에 있는 포트끼리 서로 데이터를 주고받음으로 데이터 교환이 일어난다. 이 프로세스간의 통신을 IPC라고 한다. 내부적으로 이루어지는 프로세스간 통신 외부 프로세스와 이루어지는 프로세스간 통신 = RPC 2022. 7. 7.
[220712] JSON 컴파일을 구현해서 abi, bytecode 파일 생성, 배포하기 abi와 bin파일이 생성되는 흐름을 JS로 알아보기 이전에 이렇게 코딩하면 알아서 abi 파일과 bin 파일을 만들어서 저장해줬다. 어떤 과정을 거쳐서 만들어지는건지 JS 컴파일을 통해서 알아보자. 앞으로 truffle을 사용할건데, 트러플이 어떻게 굴러가서 각 파일을 생성하는지 흐름을 알기 위해서. npx solc --bin --abi HelloWorld.sol web3 라이브러리를 가지고 막코딩보다 조금 더 수월하게 작성하게 해줌 예전에 만들었던 geth 과정 중에서 node/keystore을 보면 UTC 파일들이 있다. 자바스크립트로 스마트 컨트랙트를 만들때 privateKey가 있어야 서명도 만들고 거래가 가능했었다. geth에서 그 privateKey기능을 해주는게 UTC파일이다. 양방향 암호.. 2022. 7. 6.