< 스마트 컨트랙트에서 Dapp으로 >
Dapp : 블록체인 함수를 호출하는 탈중앙화 스마트 컨트랙트 로직이 포함된 web/app
Truffle : 통합 Dapp 개발환경과 테스팅 프레임워크를 제공하는 도구
(이더리움 기반 종단간 Dapp 개발)
현재 나의 버전은 이러하다
(여기서 처음보는 가나쉬는 테스트 체인이다)
tip. Dapp 개발 시 디렉토리 관리하는 법 :
1. truffle init을 통해 표준화된 디렉터리 구조 만들기
-> dir
결과 :
contracts
: 스마트 컨트랙트를 위한 솔리디티 소스 파일 migrations
: 트러플이 스마트 컨트랙 배포를 위해 사용하는 마이그레이션 시스템. 개발 중인 스마트 컨트랙의 변화를 관리하는 JS 스크립트 test
: 스마트 컨트랙트를 위한 JS와 솔리디티 테스트truffle-config.js
: 트러플 설정 파일 (블록체인 네트워크 정보 포함)2. 스마트 컨트랙트 추가 및 컴파일
Ballot.sol
을 ballot-contract의 contracts 파일에 저장한 뒤,
ballot-contract 폴더에서 truffle compile
진행
3. 블록체인 네트워크 설정
truffle-config.js
는 컨트랙트를 배포할 테스트 블록체인을 설정하는 파일로, 웹 앱을 스마트 컨트랙트로 연결하기 위한 RPC 포트 설정하는 파일
4. 스마트 컨트랙트 배포
2_deploy_contract.js
라는 Ballot 스마트 컨트랙트 배포 스크립트를 생성배포해야할 스마트 컨트랙트 명시
배포 시 생성자 constructor에게 전달할 파라미터 값 입력
이 배포 스크립트를 통해 여러 스마트 컨트랙트를 동시에 배포할 수 있다.
migration 디렉터리에 이미 존재하던 1initial 파일은 Migration.sol
을 배포하기 위한 스크립트이고, 파일 앞의 1, 2_ 등은 변경하면 안되는 점 주의!
truffle migrate --reset
: Migration.sol을 포함한 모든 컨트랙트 재배포배포 성공 확인
배포시 사용한 이더는 가니쉬의 첫번째 계정의 balance 양이 줄어듦을 통해서도 확인할 수 있다!
index.js : 서버를 위한 구동 스크립트 (웹 애플리케이션 설정)
package.json : 서버 디펜던시
express : Node.js 서버에 많이 쓰는 웹 애플리케이션 framework
블록체인 노드 = 노드 서버 / 웹 서버 = Node.js 서버
index.js 설정까지 모두 마친 후,
교재에서 제공해주는 src 폴더를 다운 받아 기본적인 웹 앱 client 설정을 마무리한다.
ballot-app 폴더에도 npm install
해준 후, npm start
을 실행하고,
크롬에서 localhost:3000 에 접속하면! 웹이 정상 실행된다
-> index.js 파일에서 설정한 포트 3000번에 app.js를 론칭하여 입력값을 대기하도록 만든 것
메타마스크 지갑 설치하기