티스토리 뷰
토큰을 만들었으니 이제 솔라나 생태계에서 동작하는 프로그램을 작성해 봅시다.
솔라나에서 프로그램이란 용어는 스마트 계약 or 스마트 컨트랙트를 말합니다.
그럼 우선 개발 환경을 만들어 봅시다.
OS : ubuntu 20.04.4 LTS
IDE : Visual Studio Code
윈도우 키 -> Microsoft Store -> ubuntu 20.04.4 LTS 설치
윈도우 키 -> 제어판 -> 프로그램 및 기능 -> Windows 기능 켜기/끄기 -> Linux용 Window 하위 시스템 체크 -> 확인 -> 재부팅
우분투 실행 시 아래와 같은 오류가 발생한다면
윈도우 키 -> powershell -> 관리자 권한으로 실행 ->
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
재부팅
ubuntu 20.04.4 다시 실행 하면 우분투 설치가 진행됩니다.
우분투 설치 완료 후 솔라나 툴 설치 ( 아... 처음부터 우분투에서 작업할걸... ㅠㅠ)
$sudo apt update
$sudo apt-get install libudev-dev
$sudo apt install pkg-config
$sudo apt-get install -y curl
$sudo apt install nodejs
$sudo apt install npm
$npm i -g @project-serum/anchor-cli
$sudo apt install cargo
$cargo install spl-token-cli
$sh -c "$(curl -sSfL https://release.solana.com/v1.10.26/install)"
$export PATH="/home/donghee/.local/share/solana/install/active_release/bin:$PATH"
work 폴더를 하나 생성한 후
$mkdir work
anchor로 프로젝트를 실행합니다. 프로젝트명: develop
$anchor init develop
초기화 중 오류 발생.(버전이 낮아서 발생한 오류)
$curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
$sudo apt-get install -y nodejs
이제 이 develop 폴더를 /mnt/c/coin/ 폴더로 복사 합니다. (윈도우에서 작업하기 위함)
$cp -r ./develop/ /mnt/c/coin/
이제 visualstudio 를 실행합니다. 다운로드는 아래 링크 참고.
https://code.visualstudio.com/
Visual Studio Code - Code Editing. Redefined
Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.
code.visualstudio.com
visual studio 작업 폴더를 develop로 설정합니다.
file -> open folder... -> c:\coin\develop 열기
위와 같이 보이면 성공!
test 프로그램 빌드
$anchor test
* /mnt/c/coin/develop 폴더에서 빌드하면 퍼미션 오류가 발생함.
* /home/[사용자명]/work/develop 에서 빌드해야 함.
* 윈도우에서 편하게 작업하고 빌드할 때는 mnt에서 home으로 복사해야 함 ( 권한 문제 때문에...그지같노;;; )
* GIT를 쓰는 것을 추천함.
* MacOS를 사용하면 이런 문제 없음.ㅠ
Error: Unable to read keypair file
빌드는 성공했으나 배포할 때 발생한 오류.
키페어가 설정되어 있지 않아서 발생함. (기존 글에 사용했던 키페어를 복사해서 가져옴.)
데브넷 설정 및 기존 키페어 설정
$solana config set --url https://api.devnet.solana.com
키 페어 복사 합니다.
$cp /mnt/c/coin/my-keypair.json ../
$solana config set --keypair /home/[사용자]/work/my-keypair.json
Anchor.toml 파일을 열어 서버와 지갑 파일을 설정합니다.
$vi ./Anchor.toml
cluster = "devnet"
wallet = "[keypair.json 파일 경로]"
$anchor test
오류 발생.
Error: AnchorError occurred. Error Code: DeclaredProgramIdMismatch. Error Number: 4100. Error Message: The declared program id does not match the actual program id.
데브넷에 배포하기 위해서 Program ID를 맞춰줘야 합니다.
$cd ./target/idl
$cat develop.json
메타 데이터의 주소를 복사 합니다.
$cd ../../programs/develop/src
lib.rs 파일을 수정합니다.
$vi lib.rs
declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS");
declare_id!("HJ7gcMbUghckevVRc1e8y2QrQXq2BZMkNHe82JNGo41a");
주소를 변경하는 김에 initialize 함수 안에 아래 코드를 추가합니다.
msg!("first program got called!!!");
그리고 다시 배포 합니다.
$cd ../../../
$anchor test
성공했습니다. 이제 아래 signature를 explorer solana에서 검색해 봅시다.
2vWh926wga81shTEdMRmaoycDjb9ZuKFpNKbkgfuRUWrrEZie5ZNz6Xpa2gYvyF5AzFyM9qpsdxJhBS11unRup3v
우리가 적은 로그 메시지가 정상적으로 출력되었습니다.
이제 솔라나 프로그램을 작성할 준비가 되었습니다.
'암호화폐 > 솔라나' 카테고리의 다른 글
솔라나 프로그램 - SOL로 내 토큰 구매하기 #2 (1) | 2022.06.27 |
---|---|
솔라나 프로그램 - SOL로 내 토큰 구매하기 #1 (0) | 2022.06.23 |
나만의 솔라나 토큰 만들기(SPL-TOKEN) 5 (1) | 2022.06.20 |
나만의 솔라나 토큰 만들기(SPL-TOKEN) 4 (0) | 2022.06.20 |
나만의 솔라나 토큰 만들기(SPL-TOKEN) 3 (0) | 2022.06.20 |
- Total
- Today
- Yesterday
- program
- uwp
- SOL
- 비주얼 스튜디오
- Visual Studio
- echo server
- UDP 클라이언트
- 프로그램
- 에코서버
- _beginthreadex 예제
- C#
- tcp echo server
- 채팅
- uwp button
- 윈도으 템플릿
- 큐 리스트
- 토큰
- UDP Socket
- uwp textbox
- TCP 서버
- 솔라나
- UDP Echo Server
- echo tcp client
- C
- c++
- C++ 쓰레드
- uwp textblock
- 에코 클라이언트
- SPL-TOKEN
- UDP 소켓 프로그램
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |