Skip to content

buildermare/web3-languages-sample

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Web3 Smart Contract Examples

Farklı blockchain ekosistemlerinde token ve NFT oluşturmak için örnek akıllı sözleşmeler.

Yapı

web3-languages-sample/
├── solidity/
│   ├── token/ERC20Token.sol
│   └── nft/ERC721NFT.sol
├── rust/
│   ├── solana/
│   │   ├── token/src/lib.rs
│   │   └── nft/src/lib.rs
│   └── near/
│       ├── token/src/lib.rs
│       └── nft/src/lib.rs
└── move/
    ├── aptos/
    │   ├── token/sources/token.move
    │   └── nft/sources/nft.move
    └── sui/
        ├── token/sources/token.move
        └── nft/sources/nft.move

Solidity (EVM)

EVM uyumlu zincirler için Solidity örnekleri (Ethereum, Polygon, BNB Chain vb.).

Token — ERC-20

Standart: EIP-20
Dosya: solidity/token/ERC20Token.sol

OpenZeppelin ERC20 ve Ownable kullanılarak oluşturulmuştur.

Fonksiyon Açıklama
constructor(name, symbol, initialSupply) Token oluşturur ve başlangıç arzını deployer'a gönderir
mint(to, amount) Yeni token basar (sadece owner)
burn(amount) Çağıranın bakiyesinden token yakar

Gereksinimler:

# Foundry
curl -L https://foundry.paradigm.xyz | bash
foundryup

# OpenZeppelin kurulumu
forge install OpenZeppelin/openzeppelin-contracts

Build & Deploy (Foundry):

cd solidity
forge build
forge create --rpc-url <rpc_url> --private-key <private_key> \
  token/ERC20Token.sol:MyToken \
  --constructor-args "My Token" "MTK" 1000000

NFT — ERC-721

Standart: EIP-721
Dosya: solidity/nft/ERC721NFT.sol

OpenZeppelin ERC721URIStorage kullanılarak oluşturulmuştur. Her token'a ayrı bir metadata URI atanabilir.

Fonksiyon Açıklama
constructor(name, symbol) Koleksiyon oluşturur
mint(to, tokenURI) NFT basar ve metadata URI atar (sadece owner)
burn(tokenId) NFT'yi yakar (sadece token sahibi)

Rust — Solana

Solana programları Anchor framework'ü kullanılarak yazılmıştır.

Gereksinimler:

# Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Solana CLI
sh -c "$(curl -sSfL https://release.solana.com/stable/install)"

# Anchor
cargo install --git https://github.com/coral-xyz/anchor anchor-cli --locked

Token — SPL Token

Standart: SPL Token
Dosya: rust/solana/token/src/lib.rs

Solana'nın native SPL Token programı üzerinden Anchor CPI kullanılarak oluşturulmuştur.

Instruction Açıklama
create_token(decimals) Token mint account'u oluşturur
mint_tokens(amount) Token basar ve associated token account'a gönderir
burn_tokens(amount) Token yakar

Build & Deploy:

cd rust/solana/token
anchor build
anchor deploy --provider.cluster devnet

NFT — Metaplex

Standart: Metaplex Token Metadata
Dosya: rust/solana/nft/src/lib.rs

SPL Token (decimals=0, supply=1) + Metaplex metadata + master edition kombinasyonu ile gerçek bir 1/1 NFT oluşturur.

Instruction Açıklama
mint_nft(name, symbol, uri) NFT basar, metadata ve master edition oluşturur

Not: uri alanı JSON metadata dosyasına (Arweave, IPFS vb.) işaret etmelidir.


Rust — NEAR

NEAR programları near-sdk-rs kullanılarak yazılmıştır.

Gereksinimler:

# Rust + wasm target
rustup target add wasm32-unknown-unknown

# NEAR CLI
npm install -g near-cli

Token — NEP-141

Standart: NEP-141
Dosya: rust/near/token/src/lib.rs

NEAR'ın resmi fungible token standardını implemente eder.

Metod Açıklama
new(owner_id, total_supply, name, symbol, decimals) Contract'ı başlatır
ft_transfer(receiver_id, amount, memo) Token transfer eder
ft_balance_of(account_id) Bakiye sorgular
ft_total_supply() Toplam arzı döner
ft_metadata() Token metadata'sını döner
mint(account_id, amount) Token basar (sadece owner)
burn(amount) Token yakar

Build & Deploy:

cd rust/near/token
cargo build --target wasm32-unknown-unknown --release
near deploy --accountId <your-account>.testnet \
  --wasmFile target/wasm32-unknown-unknown/release/token.wasm

NFT — NEP-171

Standart: NEP-171
Dosya: rust/near/nft/src/lib.rs

NEAR'ın resmi NFT standardını implemente eder.

Metod Açıklama
new(owner_id) Contract'ı başlatır
nft_mint(receiver_id, metadata) NFT basar (sadece owner)
nft_transfer(receiver_id, token_id, memo) NFT transfer eder
nft_token(token_id) Token bilgisini döner
nft_tokens_for_owner(account_id) Hesabın tüm NFT'lerini döner
nft_total_supply() Toplam NFT sayısını döner

TokenMetadata alanları: title, description, media, media_hash, copies, issued_at, extra, reference


Move — Aptos

Gereksinimler:

# Aptos CLI
curl -fsSL "https://aptos.dev/scripts/install_cli.py" | python3

# Testnet hesabı oluştur
aptos init

Token — Fungible Asset

Standart: Aptos Fungible Asset
Dosya: move/aptos/token/sources/token.move

Aptos'un modern Fungible Asset standardını kullanır (legacy coin modülünün yerini almıştır).

Fonksiyon Açıklama
init_module Token'ı oluşturur, deploy sırasında otomatik çağrılır
mint(admin, to, amount) Token basar
transfer(from, to, amount, admin) Token transfer eder
burn(from, amount, admin) Token yakar
balance_of(account, admin) Bakiye sorgular

Build & Deploy:

cd move/aptos/token
aptos move compile
aptos move publish --profile testnet

NFT

Standart: Aptos Token Objects
Dosya: move/aptos/nft/sources/nft.move

aptos_token_objects framework'ü ile koleksiyon ve token nesneleri oluşturur.

Fonksiyon Açıklama
create_collection(creator) NFT koleksiyonu oluşturur (bir kez çağrılır)
mint_nft(creator, receiver, name, description, uri) NFT basar ve alıcıya gönderir
update_uri(owner, token, new_uri) Token URI'sini günceller
burn_nft(owner, token) NFT'yi yok eder
get_token_info(token) Token bilgilerini döner

Move — Sui

Gereksinimler:

# Sui CLI
cargo install --locked --git https://github.com/MystenLabs/sui.git \
  --branch testnet sui

# Testnet hesabı
sui client new-address ed25519
sui client switch --env testnet

Token — Sui Coin

Standart: Sui Coin
Dosya: move/sui/token/sources/token.move

Sui'nin coin::create_currency ile one-time witness pattern'i kullanılarak oluşturulmuştur.

Fonksiyon Açıklama
init Token'ı oluşturur, TreasuryCap deployer'a gönderilir
mint(treasury_cap, amount, recipient) Token basar
burn(treasury_cap, coin) Token yakar
transfer_tokens(coin, recipient) Tüm coin'i transfer eder
transfer_amount(coin, amount, recipient) Kısmi transfer eder

Build & Deploy:

cd move/sui/token
sui move build
sui client publish --gas-budget 100000000

NFT

Dosya: move/sui/nft/sources/nft.move

Sui'nin nesne modeli kullanılarak oluşturulmuştur. Her NFT bağımsız bir key nesnesidir. Mint, transfer ve burn işlemleri event emit eder.

Fonksiyon Açıklama
init MintCap oluşturur ve deployer'a gönderir
mint_nft(cap, name, description, url, recipient) NFT basar
transfer_nft(nft, recipient) NFT transfer eder
burn_nft(nft) NFT'yi yok eder

Events: NFTMinted, NFTTransferred, NFTBurned


Karşılaştırma

Özellik Solidity Rust/Solana Rust/NEAR Move/Aptos Move/Sui
VM EVM SVM NEAR VM MoveVM MoveVM
Token Standardı ERC-20 SPL Token NEP-141 Fungible Asset Coin
NFT Standardı ERC-721 Metaplex NEP-171 Token Objects Object Model
Depolama Modeli Account Account Account Resource Object
Dil Solidity Rust + Anchor Rust Move Move

About

This repo is using to view web3 languages’ sample

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors