- vừa được xem lúc

Cách tạo ra NFT đơn giản

0 0 90

Người đăng: Đặng Hữu Minh

Theo Viblo Asia

Công nghệ Blockchain đã được thai nghén từ những năm 80 của thế kỉ trước, tuy nhiên nó chỉ được ứng dụng rộng rãi khi Bitcoin ra đời vào năm 2008. Từ đó đến nay, công nghệ Blockchain đã liên tục phát triển và tiến hóa, mang lại nhiều lợi ích cho nhân loại. Nếu như các Blockchain thế hệ đầu như Bitcoin chỉ tập chung vào một loại tài sản duy nhất ( chính là đồng Bitcoin), thì các Blockchain về sau, ví dụ như Ethereum, các nhà phát triển bên thứ 3, có thể tự do phát triển các loại tài sản mới cho riêng mình, đó là các Token. NFT cũng là một loại Token. Chúng ta sẽ cùng tìm hiểu sâu hơn về chúng, cũng như cách tạo ra chúng.

Khái niệm NFT

NFT ( Viết tắt của Non-fungible token), dịch ra tiếng việt là Token không thể chia tách. Token thường (Chia tách được) là một loại tài sản giống như tiền, vàng, gạo, dầu,... chúng trao đổi cùng loại với nhau và giữ nguyên giá trị. Đặc điểm của loại này là chúng có số lượng rất nhiều, được chấp nhận rộng rãi phổ biến. Còn NFT giống như bức tranh Mona Lisa, chỉ có 1 bản duy nhất trên đời này. Không thể có bức tranh thứ 2 có giá trị như bức tranh thứ nhất được, dù nó có giống hệt đi chăng nữa. Tóm lại, NFT là các Token có 1 đơn vị duy nhất, không có cái thứ 2 trên đời, và điều này được ghi lại trên Blockchain.

Nói lại chuyện của bức tranh Monalisa, cái được treo ở Louvre chưa chắc là phiên bản thật ( vì những lí do về bảo quản). Tuy nhiên cái ta biết được gần như chắc chắn, là bảo tàng ở Louvre là nơi được thế giới công nhận, là đang sở hữu tuyệt tác của Davinci. NFT cũng như vậy, nó cũng như một các chứng nhận rằng ta đã sở hữu 1 tài sản kỹ thuật số. Bản thân các tài sản kỹ thuật số, có thể bị sao chép dễ dàng, còn NFT lại không thể bị sao chép.

Ứng dụng NFT

NFT có rất nhiều ứng dụng. Ứng dụng đầu tiên của NFT mà chúng ta được tiếp xúc, đó là CryptoKitties, một tựa game cho chúng ta dùng tiền thật để mua những nhân vật trong game ( chính là những NFT).

Bẵng đi một vài năm, khi cơn sốt NFT trở lại, chúng được biết đến nhiều hơn qua việc trở thành những tài sản sưu tập xa xỉ. Có những NFT do các nghệ sỹ tạo ra được bán hàng triệu Dollar. Khi Axie Infinity ra đời, NFT lại quay trở lại điểm khởi đầu của nó, xuất hiện trong 1 tựa game. Hiện tại, từ khóa Metaverse được đề cập rộng rãi, trong tương lai, các NFT sẽ trở thành những tài sản, đồ vật trong Metaverse.

Tạo 1 NFT đơn giản

Mình sẽ sử dụng tiêu chuẩn ERC1155 để tạo ra các NFT của mình. Với ERC1155, ta có thể tạo nhiều NFT trên một contract. Mã nguồn, tài liệu của ERC1155 có thể được tham khảo tại https://docs.openzeppelin.com/contracts/3.x/erc1155

Truffle là một bộ công cụ giúp chúng ta phát triển một dự án hợp đồng thông minh. Ta sẽ chọn Box (là một dạng template) Drizzle để bắt đầu dự án, ta có thể tham khảo thêm các Box khác trên trang chủ Drizzle. Mình cái thêm Extension ... trên VS code để hỗ trợ việc phát triển. Link boxes: https://trufflesuite.com/boxes/drizzle

Ta tạo một contract mới kế thừa contract ERC1155. Trong hàm khởi tạo, ta sẽ sử tiến hành mint ( đào) các NFT mà mình định tạo ra. Ở đây mình sẽ tạo ra 100 NFT với id từ 1 đến 100.

// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol"; contract Waifus is ERC1155 { constructor() public ERC1155("http://minh.fun/api/Meta/waifu/{id}") { uint256[] memory ids = new uint256[](100); uint256[] memory amounts = new uint256[](100); for (uint256 i = 0; i < 100; i++) { ids[i] = i; amounts[i] = 1; } _mintBatch(msg.sender, ids, amounts, ""); } function balanceOfOne(address account) public view returns (uint256[] memory) { require(account != address(0), "ERC1155: balance query for the zero address"); uint256[] memory batchBalances = new uint256[](100); for (uint256 i = 0; i < 100; ++i) { batchBalances[i] = balanceOf(account, i); } return batchBalances; } }

Ta thêm một file migration mới vào trong thư mục migrations

const Waifu = artifacts.require("Waifus"); module.exports = function(deployer) { deployer.deploy(Waifu); };

Ta tiến hành Compile và Migrate contract ta vừa mới tạo trên Truffle dev net.

Để hiển thị meta data của NFT, mình sẽ sử dụng React + Drizzle để tạo ra một DApp, giúp hiển thị metadata từ NFT. Các thuộc tính của một NFT sẽ được tạo ra ngẫu nhiên. Drizzle cung cấp cho chúng ta các Component sẵn để có thể tương tác với Blockchain. Khi mở Dapp ta vừa tạo lên, ta sẽ có thông báo cho phép truy cập từ metamask.
Giao diện của App sẽ hiển thị toàn bộ NFT mà ví hiện có ( của contract ta vừa deploy), mình sẽ mô tả các NFT dưới dạng ảnh để dễ phân biệt:
Ta thử chuyển NFT sang một ví khác:
Sau khi xác nhận giao dịch, ta sẽ kiểm tra trong ví nhận:
Vậy là chúng ta đã xây dựng xong được một bộ sưu tập NFT. Code của bài viết có thể tham khảo tại: https://github.com/minhdanghuu/WaifuNFT Để giúp các bạn theo dõi các giao dịch của NFT trong bài viết, mình đã deploy nó trên Testnet của Binance: https://testnet.bscscan.com/address/0xdcb343dddbf063a197b89cd7646690be125cad1a

Kết

Trên đây, mình đã giới thiệu với các bạn về NFT và cách tạo ra chúng. Hy vọng sau bài viết này, các bạn có thêm những hiểu biết về công nghệ đang làm mưa làm gió này. Cảm ơn các bạn!

Bình luận

Bài viết tương tự

- vừa được xem lúc

[Blockchain] Road to Bitcoin

. Chắc mọi người hẳn đã không còn xa lạ gì với anh chàng tỷ phú đã ném vỡ cửa kính ô tô nhà mình cùng với siêu năng lực điều khiển vật giá chỉ bằng lời nói, người đã đẩy định giá Bitcoin trên thị trường vượt ngưỡng 50K dolar/coin với những bài twitter để đời . .

0 0 61

- vừa được xem lúc

Khi Ethereum có chi phí giao dịch quá đắt đỏ - Tương lai cho layer2 ?

Với sự phát triển như vũ bão của Blockchain, ETH dường như đang quá tải và hệ quả là chi phí Gas đã lên đến 1000Gwei, phí để tạo những transaction phức tạp đã xấp xỉ 500$ . Và một giải pháp cứu cánh cho các sản phẩm Defi trên ETH chính là Layer2, và trong nhiệm vụ lần này Matic đang thể hiện khả năn

0 0 89

- vừa được xem lúc

Blockchain với Java - Tại sao không?

Cuộc cách mạng công nghiệp 4.0 ra đời kéo theo nhiều sự thay đổi và xu hướng mới được hình thành. Riêng đối với lĩnh vực CNTT cũng không nằm ngoài vùng ảnh hưởng mạnh mẽ. Chính làn sóng 4.

0 0 92

- vừa được xem lúc

Phân loại và tầm quan trọng của các node trong mạng blockchain

Trước khi đi vào phân loại và nêu rõ được tầm quan trọng của các node trọng mạng blockchain thì mình xin được trích dẫn khái niệm về blockchain từ Wikipedia như sau:. .

0 1 65

- vừa được xem lúc

Code Smart Contract bằng Assembly ?

Introduction. Hồi còn học trong ghế nhà trường bộ môn lập trình tốn nhiều não nhất của mình là code assembly. Nôm na thì bất cứ ngôn ngữ bậc cao nào như C , Go, Java,... được sinh ra để người dễ hiểu và dễ code , tuy nhiên chúng đều sẽ được compiled down xuống assembly một ngôn ngữ bậc thấp để máy h

0 0 58

- vừa được xem lúc

Dextool - Công cụ phân tích Decentralized Exchange tuyệt vời

. Trend Defi mặc dù đã bớt nhiệt nhưng những sản phẩm nổi bật của làn sóng này mang lại thì vẫn rất được người dùng ưa chuộng. Đặc biệt là các nền tảng Decentralized Exchange, tiêu biểu là Uniswap, SushiSwap, 1inch Exchange, FalconSwap,... Nhưng khi đã sử dụng các nền tảng DEx này mà không biết đến

0 0 106