[암호화폐] 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
46 [데이터분석 & 데이터 사이언스] 수많은 데이터 사이언티스트들이 직장을 떠나는 이유는 무엇인가? file 졸리운_곰 2025.03.09 901
45 [데이터분석][파이썬][python] 한글 글꼴 사용 (matplotlib) 졸리운_곰 2024.04.18 1360
44 [데이터분석 & 데이터 사이언스] 데이터에 관한 꼭 알아야 할 오해와 진실 12가지 졸리운_곰 2024.01.17 1315
43 [데이터분석][파이썬][python] Awesome Dash Awesome file 졸리운_곰 2021.07.10 2336
42 [데이터분석][파이썬][python] ???? Introducing Dash ???? file 졸리운_곰 2021.07.10 1605
41 [dataset] (한글) 욕설 감지 데이터셋 file 졸리운_곰 2021.05.12 1559
40 [데이터분석][python] Dash를 사용하는 초보자 및 기타 모든 사용자를위한 Python의 대시 보드 file 졸리운_곰 2021.04.14 1762
39 [데이터분석][python] Dash를 사용하는 초보자 및 기타 모든 사용자를위한 Python의 대시 보드 file 졸리운_곰 2021.04.14 1602
38 [데이터분석][데이터 사이언스][python][Dash] Python, Dash 및 Plotly를 사용하여 COVID-19 사례 데이터 시각화 file 졸리운_곰 2021.03.28 1500
37 [데이터분석][머신러닝] When not to use machine learning or AI Adventures in wishful thinking, nonstationarity, and pattern-finding / 기계 학습 또는 AI를 사용하지 않아야하는 경우 희망찬 사고, 비정상 성, 패턴 찾기의 모험 file 졸리운_곰 2021.03.28 21621
36 [MSA][머신러닝] 쿠버네티스 기반의 End2End 머신러닝 플랫폼 Kubeflow #1 - 소개 file 졸리운_곰 2021.03.21 1134
35 [데이터사이언스] 데이터 과학자를위한 3 가지 훌륭한 디자인 패턴, 3 Great Design Patterns for Data Scientists file 졸리운_곰 2021.03.04 779
34 [데이터분석] 시계열 데이터에 AI를 사용하는 이유는 무엇입니까? file 졸리운_곰 2021.02.28 1191
33 [데이터분석] AI 예측 및 이상 탐지를위한 시계열 데이터 전처리 file 졸리운_곰 2021.02.28 1030
32 [데이터분석] bitcoin analysis 비트 코인 시계열 데이터에 대한 AI 이상 탐지 file 졸리운_곰 2021.02.27 1587
31 [데이터분석 & 데이터 사이언스] How To Create a Data Science Portfolio Website file 졸리운_곰 2021.02.14 1823
30 [데이터수집4] 오픈 API 데이터 수집 (소셜미디어 데이터 수집) file 졸리운_곰 2020.06.12 1950
29 [데이터수집3] 관계형 데이터베이스 데이터 수집 file 졸리운_곰 2020.06.12 1315
28 [데이터수집2] 분산시스템 로그 수집 (빅데이터 수집) file 졸리운_곰 2020.06.12 1492
27 [데이터수집1] 웹 크롤링, 웹 스크래핑 file 졸리운_곰 2020.06.12 1802
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED