티스토리 뷰

반응형

토큰을 만들었으니 이제 솔라나 생태계에서 동작하는 프로그램을 작성해 봅시다.

 

솔라나에서 프로그램이란 용어는 스마트 계약 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 다시 실행 하면 우분투 설치가 진행됩니다.

 

우분투 설치 완료 후 솔라나 툴 설치 ( 아... 처음부터 우분투에서 작업할걸... ㅠㅠ)

$curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
$source $HOME/.cargo/env

$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

작업 폴더를 삭제 후 다시 anchor init develop 실행

이제 이 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

 

우리가 적은 로그 메시지가 정상적으로 출력되었습니다.

 

이제 솔라나 프로그램을 작성할 준비가 되었습니다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함