💎 ERC-1155 Nedir?
ERC-1155, Ethereum blokzincirinde hem değiştirilebilir (fungible) hem de değiştirilemez (non-fungible) token'ları temsil etmek için kullanılan bir token standardıdır. Gelin, bu standardın ne gibi avantajlar sunduğuna ve neden bu kadar popüler olduğuna yakından bakalım.
- ⚙️ Tek Sözleşme, Çoklu Token: ERC-721 (NFT'ler için) ve ERC-20 (değiştirilebilir token'lar için) standartlarının aksine, ERC-1155 tek bir akıllı sözleşme aracılığıyla birden fazla token türünü yönetmeyi mümkün kılar.
- ⛽ Gaz Ücretlerinden Tasarruf: Birden fazla token'ı tek bir sözleşmede birleştirmek, özellikle birden fazla token işlemi yapıldığında gaz ücretlerinden önemli ölçüde tasarruf sağlar.
- 🎮 Oyunlar İçin İdeal: Oyun içi öğeler (silahlar, zırhlar, karakterler vb.) gibi hem değiştirilebilir hem de değiştirilemez varlıkları temsil etmek için mükemmeldir.
- 📦 Toplu İşlemler: ERC-1155, birden fazla token'ı tek bir işlemde transfer etmeyi destekler, bu da performansı artırır ve maliyetleri düşürür.
🛠️ Gerekli Araçlar ve Ortam
ERC-1155 token'ları oluşturmaya başlamadan önce, aşağıdaki araçlara ve ortama sahip olduğunuzdan emin olun:
- 💻 Node.js ve npm: JavaScript çalışma zamanı ortamı ve paket yöneticisi.
- 💼 Hardhat: Ethereum geliştirme ortamı. Akıllı sözleşmeleri derlemek, test etmek ve dağıtmak için kullanılır.
- 🦊 MetaMask: Tarayıcı tabanlı bir Ethereum cüzdanı. Test ağlarında token'ları yönetmek için gereklidir.
- ✍️ Kod Düzenleyici: Visual Studio Code gibi bir kod düzenleyici.
📝 Adım Adım ERC-1155 Token Oluşturma
Şimdi de adım adım ERC-1155 token'ı nasıl oluşturacağımıza bakalım:
📁 1. Proje Klasörünü Oluşturma ve Başlatma
- 📂 Öncelikle, projeniz için bir klasör oluşturun:
mkdir erc1155-token
- 🚀 Klasöre gidin:
cd erc1155-token
- ⚙️ Hardhat projesini başlatın:
npx hardhat ve varsayılan seçenekleri seçin.
📦 2. Gerekli Paketleri Yükleme
- 🔩 OpenZeppelin ERC-1155 sözleşmesini yükleyin:
npm install @openzeppelin/contracts
📜 3. ERC-1155 Sözleşmesini Yazma
"contracts" klasöründe, "MyToken.sol" adında yeni bir dosya oluşturun ve aşağıdaki kodu ekleyin:
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract MyToken is ERC1155, Ownable {
uint256 public constant TOKEN_ID = 1;
uint256 public constant MINT_AMOUNT = 1000;
constructor() ERC1155("https://example.com/token/{id}.json") {
_mint(msg.sender, TOKEN_ID, MINT_AMOUNT, "");
}
function uri(uint256 _tokenId) public view override returns (string memory) {
return string(abi.encodePacked("https://example.com/token/", Strings.toString(_tokenId), ".json"));
}
}
🛠️ 4. Sözleşmeyi Derleme
Sözleşmeyi derlemek için aşağıdaki komutu kullanın:
bash
npx hardhat compile
🚀 5. Sözleşmeyi Dağıtma
"scripts" klasöründe, "deploy.js" adında yeni bir dosya oluşturun ve aşağıdaki kodu ekleyin:
async function main() {
const [deployer] = await ethers.getSigners();
console.log("Dağıtım yapan hesap:", deployer.address);
const MyToken = await ethers.getContractFactory("MyToken");
const myToken = await MyToken.deploy();
await myToken.deployed();
console.log("Token adresi:", myToken.address);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
Sözleşmeyi dağıtmak için aşağıdaki komutu kullanın (test ağınızı yapılandırdığınızdan emin olun):
bash
npx hardhat run scripts/deploy.js --network rinkeby
🧪 6. Sözleşmeyi Test Etme
Sözleşmeyi test etmek için Hardhat konsolunu kullanabilirsiniz:
bash
npx hardhat console --network rinkeby
Konsolda, sözleşme örneğini alın ve token bakiyesini kontrol edin:
javascript
const MyToken = await ethers.getContractFactory("MyToken");
const myToken = await MyToken.attach("SÖZLEŞME_ADRESİNİZ");
// Sözleşme adresinizi buraya girin
const balance = await myToken.balanceOf(DAĞITICI_ADRESİNİZ, 1);
// Dağıtıcı adresinizi buraya girin, TOKEN_ID = 1
console.log("Bakiye:", balance.toString());
🖼️ Metadata (URI) Yapılandırması
ERC-1155 token'ları için metadata, token'ın adını, açıklamasını, resmini ve diğer özelliklerini içerir. Bu metadata, genellikle bir JSON dosyası olarak saklanır ve bir URI (Uniform Resource Identifier) aracılığıyla erişilir.
- 🔗 URI Formatı: Sözleşmede belirtilen URI, token ID'sini içermelidir. Örneğin:
https://example.com/token/{id}.json
- 📁 JSON Dosyası: Her token ID'si için bir JSON dosyası oluşturun. Örneğin,
https://example.com/token/1.json aşağıdaki gibi olabilir:
json
{
"name": "Benim ERC-1155 Token'ım",
"description": "Bu bir ERC-1155 token örneğidir.",
"image": "https://example.com/images/token1.png",
"attributes": [
{
"trait_type": "Özellik",
"value": "Değer"
}
]
}
🚀 Sonuç
Bu rehberde, ERC-1155 token'larını nasıl oluşturacağınızı ve dağıtacağınızı adım adım öğrendiniz. Bu bilgilerle, oyun içi öğelerden koleksiyonluk dijital varlıklara kadar çeşitli uygulamalar için ERC-1155 token'ları oluşturabilirsiniz. Başarılar!