선거 Dapp 개발 튜토리얼 #2

Nathaniel Rim
BlockMakers Powered by DAIOS
6 min readOct 24, 2018

선거 Dapp 개발 튜토리얼에 이어서 진행되는 튜토리얼 입니다.

Smoke Test / Step # 1

스모크 테스트 Step 1에 대하여 간단히 설명을 드리겠습니다. 해당 튜토리얼 부분에 대한 비디오 영상은 11:40에 시작 됩니다. 이 튜토리얼에 대한 코드는 여기에서 다운로드 할 수 있습니다. 진행하시다가 막히시면 레프런스 포인트를 활용하시도록 하세요.

이제 dependencies가 설치 되었으므로 dApp을 빌드 하실 수 있습니다.

  1. Ganache를 다운로드 받은 곳을 찾아 엽니다.
  2. Ganache가 부팅이 되었으므로 로컬 블록 체인이 실행 중인것을 확인 합니다.

Ganache는 100 개의 가짜 이더들이 미리로드 된 10개의 계정을 제공했습니다.(기본 Ethereum 네트워크에서는 가치가 없습니다 :)
각 계정에는 고유 한 주소와 개인 키가 있습니다. 각 계좌 주소는 우리 선거에서 각 유권자의 고유 한 식별자로 사용됩니다.

이제 dApp의 프로젝트 디렉토리를 다음과 같이 명령 행에 작성해 보겠습니다.

이제 프로젝트에 참여하고 있으므로 Truffle 상자를 사용하여 빠르게 시작할 수 있습니다. 이 튜토리얼에서는 Pet Shop 상자를 사용합니다. 프로젝트 디렉토리에서 다음과 같이 명령 줄에서 애완 동물 가게 상자를 설치 하세요.

Pet Shop 상자가 우리에게 무엇을 주었는지 확인해 봅시다.

  • Contracts Directory- 이것은 모든 스마트 연락처가 있는 곳 입니다. 블록 체인으로의 마이그레이션을 처리하는 마이그레이션 계약은 이미 있습니다.
  • Migration Directory- 이것은 모든 마이그레이션 파일이 있는 곳입니다. 이러한 마이그레이션은 데이터베이스의 상태를 변경하기 위해 마이그레이션이 필요한 다른 웹 개발 프레임 워크와 유사합니다. 현명한 계약을 블록 체인에 배포 할 때마다 블록 체인의 상태를 업데이트하므로 마이그레이션이 필요합니다.
  • Node Modules Directory- 이 노드는 모든 Node 종속성이 있는 곳 입니다.
  • Src Directory- 클라이언트 측 애플리케이션을 개발할 곳입니다.
  • Test Directory- 스마트계약을 위한 테스트를 작성하는 곳입니다.
  • Truffle js File- Truffle 프로젝트의 주요 구성 파일입니다.

이제 스마트 계약서를 작성해 보겠습니다. 이 스마트 계약에는 dApp의 모든 비즈니스 로직이 포함 됩니다. Ethereum 블록체인을 읽고 쓰는것을 담당하게 됩니다. 선거에 출마 할 후보들을 나열사고 모든 투표와 유권자들을 추적 할수있게 해줍니다. 또한, 단 한번만 투표를 하도록하는 것과 같이 선거의 모든 규칙을 관리합니다. 프로젝트 루트에서 다음과 같이 contracts 디렉토리에 새 계약 파일을 작성하십시오:

먼저 프로젝트를 올바르게 설정하고 블록 체인에 계약을 성공적으로 배포 할 수있는 “스모크 테스트”를 만들어 보겠습니다. 파일을 열고 다음 코드로 시작하십시오.

이 코드에 대해 설명 드리겠습니다. pragma solidity 문으로 solidity 버전을 선언하는 것으로 시작합니다. 다음으로, “contract”키워드와 계약 이름 뒤에 스마트 계약을 선언합니다. 다음으로 후보 이름의 값을 저장할 상태 변수를 선언합니다. 상태 변수를 사용하면 블록 체인에 데이터를 쓸 수 있습니다. 우리는이 변수가 문자열이 될 것이라고 선언했으며 공개로 설정했습니다. 그것이 공공이기 때문에, 견고성은 우리가 계약의 범위 밖에서이 값에 접근 할 수있게 해주는 무료 게터 기능을 제공 할 것입니다. 나중에 콘솔에서 작동하는 것을 볼 수 있습니다!

그런 다음, 스마트 계약을 블록체인에 배포 할 때마다 호출되는 생성자 함수를 만듭니다. 여기서 마이그레이션 할때 블록체인에 저장 될 후보 상태 변수 값을 설정합니다. 생성자 함수는 스마트 계약과 동일한 이름을 가집니다. Solidity는 함수가 생성자임을 알 수 있습니다.

이제 스마트 계약의 토대를 마련 했으므로이를 블록 체인에 배포 할 수 있는지 살펴 보겠습니다. 이렇게하려면 migrations 디렉토리에 새 파일을 만들어야합니다. 프로젝트 루트에서 다음과 같이 명령 줄에서 새 파일을 만듭니다.

우리는 migrations 디렉토리 안에있는 모든 파일에 번호를 부여하여 Truffle이 실행 순서를 알 수 있도록합니다. 다음과 같이 계약을 전개하기위한 새로운 migration을 생성합시다:

먼저 우리가 만든 계약서를 요구하고 “Election”이라는 변수에 지정합니다. 그런 다음 배포 된 계약서에 매니페스트를 추가하여 마이그레이션을 실행할 때 배포 계약서가 배포되도록합니다. 이제 다음과 같이 명령 줄에서 마이그레이션을 실행 해 보겠습니다.

스마트 계약을 로컬 Ethereum 블록 체인으로 성공적으로 migration을 했으므로 콘솔을 열어 스마트 계약과 상호 작용합니다. 다음과 같이 커맨드 라인에서 truffle console을 열 수 있습니다 :

이제는 console에 들어서므로 배포 된 스마트 계약의 인스턴스를 가져 와서 계약에서 후보자의 이름을 읽을 수 있는지 확인해 봅시다. console에서 다음 코드를 실행하십시오.

여기서 Election은 migration 파일에서 만든 변수의 이름입니다. deployed () 함수를 사용하여 배포 된 계약 인스턴스를 검색하고 약속의 콜백 함수 내 app 변수에 할당했습니다. 처음에는 약간 혼란스러워 보일 수도 있지만, 자세한 설명은 21:50의 비디오에서 콘솔 데모를 참조 할 수 있습니다.

이제 다음과 같이 후보 변수의 값을 읽을 수 있습니다.

축하드립니다! 방금 첫 스마트 계약서를 작성하고 블록 체인에 배포하여 일부 데이터를 가져 왔습니다.

해당 강좌의 원본 주소 입니다.

http://www.dappuniversity.com/articles/the-ultimate-ethereum-dapp-tutorial

--

--