Web3 geliştirme konusunda yeni başlayan biri olarak, kendi tokenınızı geliştirip dağıtmak; zincir üstü yazılım geliştirmeye başlamanın, Solidity becerilerinizi geliştirmenin ve web3 geliştirme yaşam döngüsünü anlamanın en popüler yollarından biridir.
Ethereum'da çeşitli token standartları bulunmaktadır. Bu standartlar, tokenların Ethereum ağı ve diğer dapp'lerle uyumluluk, mevzuata uygunluk ve birlikte çalışabilirlik sağlamak amacıyla uymak zorunda olduğu önceden tanımlanmış kural kümeleridir.
Bu standartlar arasında fungible tokenlar için ERC-20, non-fungible tokenlar (NFT'ler) için ERC-721, çoklu token türleri için ERC-1155, gelişmiş token işlevleri için ERC-777, güvenlik tokenları için ERC-1400 ve tokenize kasalar için ERC-4626 yer almaktadır.
Bu blog yazısında, standart akıllı sözleşme şablonlarının güvenli ve test edilmiş uygulamalarını sunan bir kütüphane olan OpenZeppelin'den yararlanarak bir ERC-20 token geliştireceğiz. Geliştirme ortamınızı kurma, token sözleşmesini yazma ve Linea katman 2 ağında dağıtma adımlarını birlikte inceleyeceğiz.
Adım 1: Hardhat ile geliştirme ortamınızı kurun
Ethereum tokenınızı geliştirmeye başlamadan önce geliştirme ortamınızı kurmanız gerekecek. Bu blog yazısında Hardhat kullanacağız. Aşağıdaki adımları izleyin:
Node.js ve npm'i yükleyin: Node.js bir JavaScript çalışma ortamı, npm ise onun paket yöneticisidir. Resmi Node.js web sitesinden indirip yükleyin.
Yeni bir Hardhat projesi oluşturun: Terminalinizi açın, projeniz için yeni bir dizin oluşturun ve bu dizine gidin. Ardından şu komutu çalıştırın:
mkdir my-token
cd my-token
npm init -y
npm install --save-dev hardhat
npx hardhat
Gerekli Hardhat eklentilerini ve OpenZeppelin sözleşmelerini yükleyin:
npm install @nomiclabs/hardhat-ethers ethers @openzeppelin/contracts
Adım 2: Ethereum tokenınızı oluşturun
Basit bir ERC-20 token oluşturmak için şu adımları izleyin:
Bir token sözleşmesi oluşturun: Hardhat projenizde contracts dizinine gidin ve MyToken.sol adında yeni bir dosya oluşturun. Bu dosyayı açın ve token sözleşmenizi tanımlayın:
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
constructor(uint256 initialSupply) ERC20("MyToken", "MTK") {
_mint(msg.sender, initialSupply);
}
}
Bu akıllı sözleşme, OpenZeppelin kütüphanesini kullanarak "MTK" sembolüyle "MyToken" adında bir ERC-20 token oluşturur. Dağıtıldığında, dağıtıcı tarafından belirlenen miktarda başlangıç token arzı basar ve bunları dağıtıcının adresine atar.
Bir dağıtım betiği yazın: scripts dizininde deploy.js adında yeni bir dosya oluşturun ve sözleşmenizi dağıtmak için aşağıdaki kodu ekleyin:
async function main() {
const [deployer] = await ethers.getSigners();
console.log("Deploying contracts with the account:", deployer.address);
const MyToken = await ethers.getContractFactory("MyToken");
const myToken = await MyToken.deploy(1000000);
console.log("MyToken deployed to:", myToken.address);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
Yukarıdaki betik, Hardhat ve ethers.js kullanarak "MyToken" akıllı sözleşmesini 1.000.000 tokenlık bir arzla başlatarak dağıtır. Dağıtıcının adresini alır ve sözleşmeyi dağıtır.
Sözleşmenizi yerel olarak derleyin ve dağıtın: Terminalinizde, sözleşmenizi Hardhat tarafından sağlanan yerel bir blok zincirine derleyip dağıtın:
npx hardhat compile
npx hardhat run scripts/deploy.js --network localhost
Adım 3: Token sözleşmenizi Linea testnet'e dağıtın
ERC-20 tokenımızı yerel olarak geliştirip dağıttığımıza göre, artık Infura ve MetaMask kullanarak Linea testnet'e dağıtma zamanı geldi. Tokenınızı Linea testnet'te yayına almak için şu adımları izleyin.
Bir Infura hesabı oluşturun: Infura, çeşitli blok zinciri ağlarına ve testnet'lerine kolay erişim sağlar. Yeni bir proje oluşturun, desteklenen ağlar menüsünden Linea Sepolia testnet'i seçin ve proje kimliğini kopyalayın.
MetaMask'ı yapılandırın: MetaMask cüzdanınızı açın ve ağ bölümüne gidin. Açılır menüde "test ağlarını göster" seçeneğinin etkin olduğundan emin olun. Ardından Linea Sepolia testnet'i seçin.
Linea Sepolia ETH edinin: Sözleşmenizi dağıtırken gas ücretlerini ödemek için Linea Sepolia ETH'ye ihtiyacınız olacak. Resmi Linea Sepolia faucet'ini ziyaret ederek Linea ETH edinebilirsiniz.
Hardhat yapılandırmasını güncelleyin: Hardhat projenizde, Linea testnet yapılandırmasını eklemek için hardhat.config.js dosyanızı güncelleyin:
require("@nomiclabs/hardhat-ethers");
require("dotenv").config();
module.exports = {
solidity: "0.8.0",
networks: {
lineaTestnet: {
url: `https://linea-sepolia.infura.io/v3/${process.env.INFURA_PROJECT_ID}`,
accounts: [`0x${process.env.PRIVATE_KEY}`],
chainId: 59141
}
}
};
.env dosyanızın gerekli ortam değişkenlerini içerdiğinden emin olun:
INFURA_PROJECT_ID=your_infura_project_id
PRIVATE_KEY=your_private_key
Sözleşmenizi Linea Sepolia testnet'e dağıtın
Şimdi token sözleşmenizi Linea testnet'e dağıtmak için şu komutu çalıştırın:
npx hardhat compile
npx hardhat run scripts/deploy.js --network lineaTestnet
Bu betik, ERC-20 token sözleşmenizi MetaMask'a bağlı hesabı kullanarak Linea testnet'e dağıtacaktır.
MetaMask Developer ile web3 dapp geliştirmenizi ilerletin
Ethereum token geliştirmenin temellerinde ustalaşarak, geliştirme ortamınızı kurarak ve en iyi uygulamalara bağlı kalarak kendi Ethereum tokenınızı başarıyla geliştirebilir ve dağıtabilirsiniz. İster yeni bir kripto para birimi oluşturun ister bir varlığı tokenize edin; Ethereum, fikirlerinizi hayata geçirmek için gerekli araçları ve ekosistemi sunar.
Sign-in-with-Ethereum (SIWE), EIP-6963 desteği ve Snaps aracılığıyla MetaMask ile sorunsuz entegrasyon gibi daha gelişmiş geliştirme ihtiyaçlarınız için MetaMask Developer portalını ziyaret edin. Portal; kullanıcı katılımını kolaylaştırmak ve geliştiricilerin MetaMask kullanıcıları için özel, izinsiz cüzdan bağlantıları ile dapp içi deneyimler oluşturmasını sağlamak amacıyla tasarlanmış kapsamlı bir araç, API ve SDK paketi sunar.