로컬 블록체인 구축하기
개발 환경에서 단일 로컬 블록체인 노드를 컴파일, 실행 및 상호작용하기.
블록체인 기초에서 배운 대로, 블록체인은 네트워크를 형성하기 위해 분산 컴퓨터인 노드로 구성됩니다.
Substrate는 애플리케이션이나 비즈니스 모델 요구에 맞게 완전히 커스텀할 수 있는 블록체인 노드를 설계하고 구축할 수 있는 유연하고 개방적이며 확장 가능한 개발 환경을 제공합니다.
시작하기
블록체인 개발자가 되기 위한 첫 번째 단계는 단일 로컬 블록체인 노드를 컴파일하고 실행하는 방법을 배우는 것입니다. 이 튜토리얼에서는 노드 템플릿을 사용하여 단일 노드 블록체인을 빌드하고 시작합니다.
Substrate 노드 템플릿은 개발 환경에서 로컬로 실행할 수 있는 작동하는 단일 노드 블록체인을 제공합니다. 노드 템플릿에는 사용자 계정과 계정 잔액과 같은 여러 사전 정의된 구성 요소가 포함되어 있어 일반적인 작업을 수행해 볼 수 있습니다. 템플릿을 수정하지 않고도 블록을 생성하고 트랜잭션을 수행할 수 있는 기능적인 노드를 실행할 수 있습니다.
로컬 블록체인 노드를 시작한 후, 이 튜토리얼에서는 Substrate 프론트엔드 템플릿을 사용하여 블록체인 활동에 대한 정보를 보고 트랜잭션을 제출하는 방법을 설명합니다.
이 튜토리얼은 누구를 위한 것인가요?
이 튜토리얼은 Substrate와 블록체인 개발에 대해 배우고자 하는 모든 분들을 위한 기본 소개서로, 추가적인 튜토리얼에서 더 깊이 알아볼 수 있는 최소한의 작동 개발 환경을 준비합니다. Substrate와 블록체인 개발에 대한 사전 지식이나 경험이 없다고 가정합니다. 이 튜토리얼을 완료하기 위해서는 프로그래밍이나 블록체인 경험이 필요하지 않습니다. 이것은 단지 첫 번째 단계일 뿐이지만, 여러분의 여정을 계속 이어나갈 수 있기를 바랍니다.
이 튜토리얼을 완료하는 데 얼마나 시간이 걸리나요?
이 튜토리얼은 Rust 코드를 컴파일하는 데 시간이 소요되며, 약 1~2시간 정도 소요됩니다.
시작하기 전에
이 튜토리얼에서는 작동하는 코드를 다운로드하고 사용합니다. 시작하기 전에 다음을 확인하세요:
- 좋은 인터넷 연결과 로컬 컴퓨터의 셸 터미널에 액세스할 수 있어야 합니다. 
- 소프트웨어 개발에 대해 일반적으로 알고 있으며 명령 줄 인터페이스를 사용할 수 있어야 합니다. 
- 블록체인과 스마트 컨트랙트 플랫폼에 대해 일반적으로 알고 있어야 합니다. 
- 설치에서 설명한 대로 Rust를 설치하고 개발 환경을 설정했는지 확인하세요. 
튜토리얼 목표
이 튜토리얼을 완료함으로써 다음 목표를 달성할 수 있습니다:
- 노드 템플릿을 컴파일하고 로컬 Substrate 기반 블록체인을 시작합니다. 
- 프론트엔드 템플릿을 설치하여 로컬 블록체인 노드와 상호작용합니다. 
- 프론트엔드 템플릿을 사용하여 트랜잭션을 제출하고 결과를 확인합니다. 
Substrate 노드 컴파일하기
Substrate 노드 템플릿은 Substrate에서 바로 작업을 시작할 수 있는 작동하는 개발 환경을 제공합니다.
이미 로컬 컴퓨터에서 노드 템플릿을 컴파일한 경우, 이 섹션을 건너뛰고 로컬 노드 시작하기로 계속하세요.
Substrate 노드 템플릿을 컴파일하려면 다음 단계를 따르세요:
- 컴퓨터의 터미널 셸을 엽니다. 
- 다음 명령을 실행하여 노드 템플릿 디렉토리의 루트로 이동합니다: - cd substrate-node-template- 작업을 포함할 새 브랜치를 만듭니다: - git switch -c my-learning-branch-yyyy-mm-dd- yyyy-mm-dd를 원하는 식별 정보로 바꾸세요. 숫자로 된 연도-월-일 형식을 권장합니다. 예를 들어:- git switch -c my-learning-branch-2023-03-01
- 다음 명령을 실행하여 노드 템플릿을 컴파일합니다: - cargo build --release- 최적화된 빌드를 위해 항상 - --release플래그를 사용해야 합니다. 처음으로 이를 컴파일하는 경우 완료까지 시간이 다소 소요됩니다.- 다음과 유사한 줄이 표시되면 완료됩니다: - Finished release [optimized] target(s) in 11m 23s
로컬 노드 시작하기
노드가 컴파일되면 프론트엔드 템플릿을 사용하여 노드가 수행하는 작업을 탐색할 준비가 됩니다.
로컬 Substrate 노드를 시작하려면 다음 단계를 따르세요:
- 노드를 컴파일한 동일한 터미널에서 다음 명령을 실행하여 개발 모드에서 노드를 시작합니다: - ./target/release/node-template --dev- node-template명령줄 옵션은 실행 중인 노드의 동작 방식을 지정합니다. 이 경우- --dev옵션은 사전 정의된- development체인 스펙을 사용하여 개발 모드에서 노드를 실행하도록 지정합니다. 기본적으로 이 옵션은 노드를 중지할 때 모든 활성 데이터(키, 블록체인 데이터베이스 및 네트워킹 정보 등)를 삭제합니다.- --dev옵션을 사용하면 노드를 중지하고 다시 시작할 때마다 깨끗한 작업 상태를 유지할 수 있습니다.
- 터미널에서 표시되는 출력을 확인하여 노드가 성공적으로 실행되었는지 확인합니다. - 터미널에는 다음과 유사한 출력이 표시됩니다: - 2022-08-16 13:43:58 Substrate Node 2022-08-16 13:43:58 ✌️ version 4.0.0-dev-de262935ede 2022-08-16 13:43:58 ❤️ by Substrate DevHub <https://github.com/substrate-developer-hub>, 2017-2022 2022-08-16 13:43:58 📋 Chain specification: Development 2022-08-16 13:43:58 🏷 Node name: limping-oatmeal-7460 2022-08-16 13:43:58 👤 Role: AUTHORITY 2022-08-16 13:43:58 💾 Database: RocksDb at /var/folders/2_/g86ns85j5l7fdnl621ptzn500000gn/T/substrate95LPvM/chains/dev/db/full 2022-08-16 13:43:58 ⛓ Native runtime: node-template-100 (node-template-1.tx1.au1) 2022-08-16 13:43:58 🔨 Initializing Genesis block/state (state: 0xf6f5…423f, header-hash: 0xc665…cf6a) 2022-08-16 13:43:58 👴 Loading GRANDPA authority set from genesis on what appears to be first startup. 2022-08-16 13:43:59 Using default protocol ID "sup" because none is configured in the chain specs 2022-08-16 13:43:59 🏷 Local node identity is: 12D3KooWCu9uPCYZVsayaCKLdZLF8CmqiHkX2wHsAwSYVc2CxmiE ... ... ... ... 2022-08-16 13:54:26 💤 Idle (0 peers), best: #3 (0xcdac…26e5), finalized #1 (0x107c…9bae), ⬇ 0 ⬆ 0- finalized다음의 숫자가 증가하면 블록체인이 새로운 블록을 생성하고 그들이 설명하는 상태에 대해 합의에 도달하고 있다는 것을 의미합니다.- 로그 출력의 세부 정보는 나중에 다른 튜토리얼에서 살펴보겠습니다. 지금은 노드가 실행되고 블록을 생성하는 중이라는 사실만 알면 됩니다. 
- 노드 출력이 표시되는 터미널을 열어둡니다. 
프론트엔드 템플릿 설치하기
프론트엔드 템플릿은 ReactJS를 사용하여 Substrate 기반 블록체인 노드와 상호작용할 수 있는 웹 브라우저 인터페이스를 렌더링합니다. 이 프론트엔드 템플릿은 앞으로 진행할 프로젝트의 사용자 인터페이스를 만들기 위한 출발점으로 사용할 수 있습니다.
프론트엔드 템플릿을 설치하려면 Yarn과 Node.js가 필요합니다. 이 도구들이 없다면 먼저 설치하세요.
프론트엔드 템플릿을 설치하려면 다음 단계를 따르세요:
- 컴퓨터에서 새로운 터미널 창을 엽니다. 
- 다음 명령을 실행하여 로컬 컴퓨터에 - yarn이 설치되어 있는지 확인합니다:- yarn --version- yarn버전은 프론트엔드 템플릿을 실행하기 위해 최소한 v3 이어야 합니다. 이전 버전이 설치되어 있는 경우- yarn version을 사용하여 버전 번호를 지정하여- yarn을 업데이트할 수 있습니다. 명령이 버전 번호를 반환하지 않거나 특정- yarn버전을 설치하는 방법에 대한 질문이 있는 경우 Yarn 웹사이트의 지침을 따라- yarn을 설치하세요.
- 다음 명령을 실행하여 프론트엔드 템플릿 저장소를 복제합니다: - git clone https://github.com/substrate-developer-hub/substrate-front-end-template
- 다음 명령을 실행하여 프론트엔드 템플릿 디렉토리의 루트로 이동합니다: - cd substrate-front-end-template
- 다음 명령을 실행하여 프론트엔드 템플릿의 종속성을 설치합니다: - yarn install
프론트엔드 템플릿 시작하기
Substrate 프론트엔드 템플릿은 Substrate 노드와 상호작용하고 몇 가지 일반적인 작업을 수행할 수 있는 사용자 인터페이스 컴포넌트로 구성됩니다.
프론트엔드 템플릿을 사용하려면 다음 단계를 따르세요:
- 현재 작업 디렉토리가 이전 섹션에서 프론트엔드 템플릿을 설치한 루트 디렉토리인지 확인하세요. 
- 다음 명령을 실행하여 프론트엔드 템플릿을 시작합니다: - yarn start- 일반적으로 - yarn start명령을 실행하면 기본 브라우저에서 자동으로- http://localhost:8000을 엽니다. 필요한 경우 수동으로- http://localhost:8000URL을 지정하여 프론트엔드 템플릿을 볼 수 있습니다.- 상단 섹션에는 체인에 연결된 계정을 선택할 수 있는 계정 선택 목록이 있습니다. 템플릿의 상단 섹션에는 또한 몇 가지 사전 정의된 계정과 그 중 일부가 미리 구성된 자금을 가지고 있는 Balances 테이블이 표시됩니다. 이 샘플 데이터를 사용하여 자금 이체와 같은 작업을 시도할 수 있습니다. 
계정으로부터 자금 이체하기
이제 로컬 컴퓨터에서 블록체인 노드를 실행하고 작업을 수행할 수 있는 프론트엔드 템플릿이 준비되었으므로 블록체인과 상호작용하는 다양한 방법을 탐색할 준비가 되었습니다.
기본적으로 프론트엔드 템플릿에는 여러 가지 일반적인 작업을 시도할 수 있는 여러 컴포넌트가 포함되어 있습니다. 이 튜토리얼에서는 자금을 한 계정에서 다른 계정으로 이동하는 간단한 이체 작업을 수행할 수 있습니다.
계정으로 자금을 이체하려면 다음 단계를 따르세요:
- Balances 테이블에서 자금이 연결되지 않은 dave와 같은 사전 정의된 계정을 확인하세요. - Balances 테이블 아래에는 프론트엔드 템플릿에 Transfer 컴포넌트가 표시됩니다. 이 컴포넌트를 사용하여 자금을 한 계정에서 다른 계정으로 이체할 수 있습니다. 
- 사용 가능한 계정 목록에서 dave를 선택하여 자금을 이체할 주소를 입력합니다. 
- 이체할 금액으로 적어도 1000000000000을 지정한 다음 Submit을 클릭합니다. 
- Balances 테이블의 값이 이체로 업데이트된 것을 확인하세요. 
- 이제 이제 완료된 이체와 관련된 이벤트를 확인하기 위해 Events 컴포넌트를 확인하세요. - Substrate 블록체인은 비동기 작업의 결과를 이벤트로 보고하므로 이벤트 컴포넌트를 사용하여 이체의 일부로 수행된 각 작업에 대한 자세한 정보를 볼 수 있습니다. 예를 들어: 
- 트랜잭션이 완료되고 블록에 포함되면 다음과 유사한 확인 메시지가 표시됩니다: - 😉 Finalized. Block hash: 0xa50d3f99fcea8a1611806895aa3f4d4d55fdc4989fbb2148d4856a043d01f808 
로컬 노드 중지하기
이체 작업이 성공적으로 완료되면 프론트엔드 템플릿 컴포넌트를 계속해서 탐색하거나 로컬 Substrate 노드를 중지하여 수행한 상태 변경 사항을 모두 지울 수 있습니다. 노드를 시작할 때 --dev 옵션을 지정했으므로 로컬 노드를 중지하면 블록체인이 중지되고 모든 지속적인 블록 데이터가 삭제되어 다음에 노드를 시작할 때 깨끗한 상태로 시작할 수 있습니다.
로컬 Substrate 노드를 중지하려면 다음 단계를 따르세요:
- 노드 출력이 표시되는 터미널로 돌아갑니다. 
- 실행 중인 프로세스를 종료하려면 Control-c를 누릅니다. 
- 터미널이 - substrate-node-template디렉토리의 터미널 프롬프트로 돌아왔는지 확인하세요.
다음 단계로 넘어가기
축하합니다!
이 튜토리얼에서는 다음을 배웠습니다:
- 노드 템플릿을 사용하여 작동하는 Substrate 기반 블록체인 노드를 시작하는 방법. 
- 프론트엔드 사용자 인터페이스를 사용하여 블록체인 노드를 보고 상호작용하는 방법. 
- 한 계정에서 다른 계정으로 간단한 이체를 수행하는 방법. 
프론트엔드 템플릿에는 로컬 개발 노드에 연결된 동안 실험해 볼 수 있는 여러 가지 추가 컴포넌트가 포함되어 있습니다. 이러한 컴포넌트를 자체적으로 탐색하거나 다음 주제에서 자세히 알아볼 수 있습니다:
Last updated