[암호화폐] Solana 토큰 만들기 — MeMe Coin

Solana 토큰 만들기 — MeMe Coin

Jay Lee
 

12 min read

나도 solana로 밈코인 만들 수 있을까?

솔라나에 밈코인을 발행해보자.

프로젝트 개요

참조

Solana 문서

Metaplex 문서

개발환경

  1. Node.js
  2. Solana tool suite
  3. Metaplex
  4. Phantom

준비

필자는 맥 터미널로 진행합니다.

최신 solana cli를 설치합니다.

[참조: https://docs.solanalabs.com/cli/install]

sh -c "$(curl -sSfL https://release.solana.com/v1.18.4/install)"

현재 필자의 환경

workspace % node -v                                
v20.8.0
workspace % npm -v
10.1.0
workspace % yarn -v
1.22.19
workspace % ts-node -v
v10.9.2
workspace % solana --version                                                
solana-cli 1.18.4 (src:356c6a38; feat:3352961542, client:SolanaLabs)

~/workspace 에서 진행합니다.

일단, 작업 디렉토리를 생성해요.

workspace % mkdir meme
workspace % cd meme
meme %

밈코인을 만들려면 두가지 리소스가 필요합니다.

  1. 토큰 이미지 파일
  2. 메터데이터 json 파일

토큰 이미지는 ai 이미지 생성기에서 돌려 얻어보겠습니다.

푸른 바다, 푸른 하늘의 독도를 그려달라고 해봤어요.

자! 이제, 이미지를 https://nft.storage/에 올립니다. ipfs를 사용하는 off-chain 분산 스토리지를 제공하는 무료 서비스입니다.

올라가면, 주소*(View URL)를 볼 수 있어요.

https://bafybeif2gqc72oeefebn77kp4iomrgshfevzxnuyre6eqnu7xara7anlgm.ipfs.nftstorage.link/

제 경우는 위와 같이 나왔어요.

JSON 파일을 준비해 봅시다. 저는 아래와 같이 만들고

{
  "name": "Dokdo Coin",
  "symbol": "DOK",
  "description": "Dokdo Coin",
  "image": "https://bafybeif2gqc72oeefebn77kp4iomrgshfevzxnuyre6eqnu7xara7anlgm.ipfs.nftstorage.link"
}

다시, https://nft.storage/ 에 올렸습니다.

https://bafkreico2rt2pdqy57nakinjq4egzyj63w4mu5hixun32nvnim6dzphzmm.ipfs.nftstorage.link/

이제, 위에 주소를 가지고, 토큰을 만들어 보겠습니다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

일단, 두개의 지갑(계좌, Keypair?)이 필요합니다.

  1. 발행인의 지갑(발행비 결제 및 토큰 소유주)
  2. 밈코인 자체의 주소가될 Keypair

이왕이면 의미있는 주소였으면 좋겠습니다. 그래서 아래와 같이 만들겠습니다.

# east로 시작하는 주소 생성
workspace % solana-keygen grind --starts-with east:1
# Dokdo로 시작하는 주소 생성
workspace % solana-keygen grind --starts-with Dokdo:1

필자는 아래의 두개의 지갑 파일이 나왔습니다.
eastQhAYNCtxPGhG6YWifPWo1P3FVsSaH97vUSmDHjE.json DokdodChquwPecMeimj7jPGncNHXoHHFdoCEKav5KAp4.json

리소스 준비가 끝났으니, 시작해보겠습니다.

mint.ts라는 파일을 만들겠습니다.

import { percentAmount, generateSigner, signerIdentity, createSignerFromKeypair } from '@metaplex-foundation/umi'
import { TokenStandard, createAndMint } from '@metaplex-foundation/mpl-token-metadata'
import { createUmi } from '@metaplex-foundation/umi-bundle-defaults';
import { mplCandyMachine } from "@metaplex-foundation/mpl-candy-machine";
import  "@solana/web3.js";
import secret from './eastQhAYNCtxPGhG6YWifPWo1P3FVsSaH97vUSmDHjE.json';
import dokdo from './DokdodChquwPecMeimj7jPGncNHXoHHFdoCEKav5KAp4.json';

const umi = createUmi('https://api.devnet.solana.com/'); //원하는 endpoint로 변경, 데브넷, 테스트넷, 메인넷
const userWallet = umi.eddsa.createKeypairFromSecretKey(new Uint8Array(secret));
const userWalletSigner = createSignerFromKeypair(umi, userWallet);
const mintKeypair = umi.eddsa.createKeypairFromSecretKey(new Uint8Array(dokdo));
const mintSigner = createSignerFromKeypair(umi, mintKeypair);

const metadata = {
    name: "Dokdo Coin",
    symbol: "DOK",
    uri: "https://bafkreico2rt2pdqy57nakinjq4egzyj63w4mu5hixun32nvnim6dzphzmm.ipfs.nftstorage.link",
};

const mint = mintSigner;// generateSigner(umi);
umi.use(signerIdentity(userWalletSigner));
umi.use(mplCandyMachine())

createAndMint(umi, {
    mint,
    authority: umi.identity,
    name: metadata.name,
    symbol: metadata.symbol,
    uri: metadata.uri,
    sellerFeeBasisPoints: percentAmount(0),
    decimals: 8,
    amount: 51751000_000_00000000,
    tokenOwner: userWallet.publicKey,
    tokenStandard: TokenStandard.Fungible,
    }).sendAndConfirm(umi).then(() => {
    console.log("Successfully minted 1 million tokens (", mint.publicKey, ")");
});

일단, 환경을 확인해보겠습니다.

meme % solana config get
Config File: /Users/kjaylee/.config/solana/cli/config.yml
RPC URL: https://api.testnet.solana.com 
WebSocket URL: wss://api.testnet.solana.com/ (computed)
Keypair Path: /Users/kjaylee/workspace/solana.keys/DTPRZ8VZtcjmb9vxB8VRqsX7QKEp69ASgwHrWTtv7s38.json 
Commitment: confirmed

testnet으로 되어 있군요. 제가 주로 쓰는 Keypair(지갑)이 등록되어 있고요.

이 두개를 바꾸겠습니다. devnet으로 해보죠.

[참조: https://solana.com/docs/core/clusters]

meme % solana config set --url https://api.devnet.solana.com
Config File: /Users/kjaylee/.config/solana/cli/config.yml
RPC URL: https://api.devnet.solana.com 
WebSocket URL: wss://api.devnet.solana.com/ (computed)
Keypair Path: /Users/kjaylee/workspace/solana.keys/DTPRZ8VZtcjmb9vxB8VRqsX7QKEp69ASgwHrWTtv7s38.json 
Commitment: confirmed

meme % solana config set --keypair ./eastQhAYNCtxPGhG6YWifPWo1P3FVsSaH97vUSmDHjE.json 
Config File: /Users/kjaylee/.config/solana/cli/config.yml
RPC URL: https://api.devnet.solana.com 
WebSocket URL: wss://api.devnet.solana.com/ (computed)
Keypair Path: ./eastQhAYNCtxPGhG6YWifPWo1P3FVsSaH97vUSmDHjE.json 
Commitment: confirmed

airdrop부터 하나 받고 하겠습니다.

당연하게도, 돈이 있어야 돈이 발행됩니다.

meme % solana airdrop 1
Requesting airdrop of 1 SOL

Signature: 5ciDBVVhJyi1HqsLZbST9FfMbWvQsLvSikXzFrsRXNfXNY7hrwKkdw8toB4gaKqDyU4NyCjdh8j1CW3pQGtJkTeU

1 SOL

meme % solana account eastQhAYNCtxPGhG6YWifPWo1P3FVsSaH97vUSmDHjE     

Public Key: eastQhAYNCtxPGhG6YWifPWo1P3FVsSaH97vUSmDHjE
Balance: 1 SOL
Owner: 11111111111111111111111111111111
Executable: false
Rent Epoch: 18446744073709551615

잘 들어온게 확인이 되죠? 아래, 소수점 표현 8과, amount는 정하시면 됩니다. (대한민국 1인당 1000개?)

...
decimals: 8,
amount: 51751000_000_00000000,
...

이제, 필요한 초기화를 하겠습니다.

meme % yarn init --yes
yarn init v1.22.19
warning The yes flag has been set. This will automatically answer yes to all questions, which may have security implications.
success Saved package.json
✨  Done in 0.03s.

meme % tsc --init

Created a new tsconfig.json with:                                                                                       
                                                                                                                     TS 
  target: es2016
  module: commonjs
  strict: true
  esModuleInterop: true
  skipLibCheck: true
  forceConsistentCasingInFileNames: true


You can learn more at https://aka.ms/tsconfig

tsconfig.json 파일을 열어서, 아래 줄을 찾아 주석을 제거해서 활성화해주세요.

"resolveJsonModule": true

필요한 라이브러리 설치

meme % yarn add @solana/web3.js @metaplex-foundation/umi @metaplex-foundation/mpl-token-metadata @metaplex-foundation/umi-bundle-defaults @metaplex-foundation/mpl-candy-machine bs58

밈코인 생성!!

meme % ts-node mint.ts                                             
Successfully minted 1 million tokens ( DokdodChquwPecMeimj7jPGncNHXoHHFdoCEKav5KAp4 )

https://explorer.solana.com/address/DokdodChquwPecMeimj7jPGncNHXoHHFdoCEKav5KAp4?cluster=devnet

짜잔@@~

[출처] https://pipln.medium.com/solana-%ED%86%A0%ED%81%B0-%EB%A7%8C%EB%93%A4%EA%B8%B0-meme-coin-468565705cb4

 

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 오라클 기본 샘플 데이터베이스 졸리운_곰 2014.01.02 86034
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 78561
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 95291
21 [국가기술자격 빅데이터분석기사] 빅데이터 분석기사 정보 및 필기 시험 후기 분석 (기출 문제 정리) file 졸리운_곰 2022.09.21 1554
20 [국가기술자격 빅데이터분석기사] `빅데이터분석기사` 자격증의 허상 졸리운_곰 2022.09.21 1499
19 [국가기술자격 빅데이터분석기사] 빅데이터 분석기사 요약 - 4과목. 빅데이터 결과 해석 졸리운_곰 2022.09.19 1995
18 [국가기술자격 빅데이터분석기사]빅데이터 분석기사 요약 - 3과목. 빅데이터 모델링 file 졸리운_곰 2022.09.19 1576
17 [국가기술자격 빅데이터분석기사]빅데이터 분석기사 요약 - 2과목. 빅데이터 탐색 file 졸리운_곰 2022.09.19 1574
16 [국가기술자격 빅데이터분석기사]빅데이터 분석기사 요약 - 1과목. 빅데이터 분석 기획 졸리운_곰 2022.09.19 1293
15 [국가기술자격 빅데이터분석기사] [빅데이터분석기사 필기 요약] I.빅데이터 분석 기획 - 02. 데이터 분석 계획 file 졸리운_곰 2022.09.15 1207
14 [국가기술자격 빅데이터분석기사][빅데이터분석기사 필기 요약] I.빅데이터 분석 기획 - 01. 빅데이터의 이해 (3) 졸리운_곰 2022.09.15 1839
13 [국가기술자격 빅데이터분석기사][빅데이터분석기사 필기 요약] I.빅데이터 분석 기획 - 01. 빅데이터의 이해 (2) file 졸리운_곰 2022.09.13 1380
12 [국가기술자격 빅데이터분석기사] [빅데이터분석기사 필기 요약] I.빅데이터 분석 기획 - 01. 빅데이터의 이해 (1) 졸리운_곰 2022.09.13 1796
11 [국가기술자격 빅데이터분석기사] [인공지능] 베이즈 정리 ( Bayes' theorem ) file 졸리운_곰 2022.09.04 1932
10 [ 국가기술자격 빅데이터분석기사 ] 빅데이터와 베이즈 정리 file 졸리운_곰 2022.09.04 1991
9 [국가기술자격 빅데이터분석기사] 빅데이터분석기사 - 필기 정리1 file 졸리운_곰 2022.09.01 2097
8 [국가기술자격 빅데이터분석기사] 빅데이터분석기사 노트정리 공유 file 졸리운_곰 2022.09.01 1758
7 [국가기술자격 빅데이터분석기사] 빅데이터 분석기사 : 개요 및 특징 file 졸리운_곰 2022.09.01 1418
6 [국가기술자격 빅데이터분석기사] 빅데이터 분석 기사 개요 file 졸리운_곰 2022.09.01 1503
5 [빅데이터분석기사 실기] 빅데이터분석기사 3회 실기 문제 복원 (기출) + 시험공부 팁 file 졸리운_곰 2022.02.07 2012
4 [빅데이터분석기사] 빅데이터분석기사 노트정리 공유 file 졸리운_곰 2022.02.07 3296
3 [빅데이터분석기사] 실기 : 시험 후기, [자격증] 빅데이터분석기사 실기 합격 후기 (비전공자 문과) file 졸리운_곰 2022.02.04 1783
2 [자격소개] 국가기술 빅데이터 분석기사 졸리운_곰 2021.01.07 1873
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED