Node 템플릿에서 사용할 수 있는 framework와 모듈 등에 대해 설명한다
❓
Runtime 이란?
: 시간이 지남에 따라 블록체인의 상태가 어떻게 변화할 것인지 결정하는 로직
(유효한 트랜잭션에 대한 정의나 트랜잭션에 따른 상태 변화 결정)
Pallet 이란?
: 블록체인 고유의 Runtime을 결정하는 컴포넌트들(블록체인의 성격 결정)
노드에 미리 적용시킨 스마트 컨트랙트??
이번 튜토리얼에서는 주어진 Nick Pallet을 나의 Node 템플릿에 적용하는 실습을 한다
Nick Pallet은 보증금을 내고 나만의 별명을 생성할 수 있고, 그것을 나의 계정과 연동시킬 수 있게 만드는 Pallet이다
Nick pallet을 node 템플릿에 추가하려면 먼저 runtime/Cargo.toml
(패키지 매니저인 듯)의 dependencies에 Nick pallet을 추가해줘야 한다
default-features = false
를 작성하는 이유는 Runtime을 컴파일할 때 디폴트로 Nick Pallet이 실행되는 것을 막기 위해서이다Substrate의 Runtime은 Rust 표준 라이브러리 함수를 사용하는 native Rust binary(std)와 Rust 표준 라이브러리를 사용하지 않는 WebAssembly(no-std) 모두를 사용하여 컴파일된다
그런데 Nick pallet은 Rust 언어를 사용했기 때문에 Rust binary(std)로 컴파일되어야 한다. 이를 실현하기 위해 'pallet-nicks/std'
를 std의 features 리스트에 넣어준다
모든 pallet은 config
라는 Rust 특성을 가진다
config는 pallet이 필요한 parameter와 type을 알려준다
(pallet의 성격을 나타낸다고 볼 수 있다)
Nick pallet의 config trait
Config
인터페이스를 구현
1. parameter_types!
에 상수 value들을 정의하고
2. parameter들과 type들을 정의한 Config
인터페이스를 impl
블록으로 기입한다
./target/release/node-template --dev
으로 node 템플릿을 실행하고,
yarn start
로 front-end template을 실행하면
Pallet Interactor에 'nicks'가 존재하는 것을 알 수 있다
그 후
1) Extrinsic을 선택
2) nicks pallet 선택
3) set_name 선택
4) nickname 기입(8자부터 32자)
5) signed 눌러서 function 실행
특정 계정의 nickname 확인
1) Query 선택
2) name_of 선택
3) 찾고자 하는 계정의 주소 기입
4) signed 눌러서 function 실행
5) 16진수로 인코딩된 nickname과 보증금 금액 표시
특정 계정의 nickname 강제 삭제
1) Extrisic 선택
2) kill_name 선택
3) 해당 계정 기입
4) Sudo 버튼 눌러서 function 실행
{이후 해당 계정으로 clearname function 실행하면
construct_runtime!
의 10번째 Pallet의 error enum의 3번째 variant(Unnamed) 발생