Bài học 3

Mengelola Daftar Marketplace

Setelah membahas pembuatan, pencatatan, dan pembelian barang di pasar terdesentralisasi, kami sekarang akan fokus pada peningkatan kontrak pintar kami dengan menambahkan fungsionalitas untuk menghapus barang dari penjualan dan memperbarui harga suatu barang.

Meningkatkan Kontrak Marketplace

Di bagian ini, kami akan memperkenalkan dua fungsi baru: removeItemFromSale dan updateItemPrice. Fungsi-fungsi ini akan memungkinkan penjual untuk menghapus barangnya dari penjualan dan memperbarui harga barangnya masing-masing.

Berikut kontrak Marketplace yang ditingkatkan:

Soliditas 
 // Pengenal Lisensi SPDX: soliditas pragma MIT 
 ^0.8.6; 

 contract Marketplace { 
 // Tentukan struktur baru untuk Item 
 struct Item {
        string name;
        uint price;
        address payable seller;
        bool forSale;
    }

    // Array untuk menampung semua item 
 Item[] item publik; 

 // Definisi peristiwa dihilangkan agar singkatnya 

 // Definisi fungsi lainnya dihilangkan agar singkatnya 

 // Fungsi untuk menghapus suatu barang dari penjualan 
 fungsi deleteItemFromSale(uint _itemId) public {
        Item storage item = items[_itemId];
        require(msg.sender == item.seller, "Only the owner can remove the item from sale");
        item.forSale = false;
    }

    // Berfungsi untuk memperbarui harga suatu barang 
 fungsi updateItemPrice(uint _itemId, uint _newPrice) publik {
        Item storage item = items[_itemId];
        require(msg.sender == item.seller, "Only the owner can update the price");
        item.price = _newPrice;
    }
}

Dalam fungsi removeItemFromSale , pertama-tama kita mengambil item dengan _itemId yang disediakan. Kami kemudian memeriksa apakah orang yang memanggil fungsi tersebut (msg.sender) adalah penjual barang tersebut. Jika hal ini terjadi, kami menyetel properti forSale item tersebut ke false, yang secara efektif menghapusnya dari penjualan.

Demikian pula, dalam fungsi updateItemPrice , kami mengambil item dengan _itemId yang disediakan, memeriksa apakah msg.sender adalah penjualnya, dan jika demikian, kami memperbarui harga item ke _newPrice yang disediakan.

Menyebarkan dan Berinteraksi dengan Kontrak Enhanced Marketplace

Setelah menyempurnakan kontrak Marketplace , kompilasi dan terapkan seperti yang Anda lakukan di pelajaran sebelumnya. Ingatlah untuk memilih kontrak yang benar dari menu dropdown di plugin compiler Solidity sebelum mengkompilasi dan menerapkan.

Setelah kontrak diterapkan, kontrak tersebut akan muncul di bagian Kontrak yang Diterapkan di plugin Deploy & Run Transactions. Di sini, Anda dapat berinteraksi dengan kontrak.

Untuk menghapus item dari penjualan, masukkan ID item ke dalam fungsi removeItemFromSale dan klik tombol. Untuk memperbarui harga suatu barang, masukkan ID barang dan harga baru ke dalam fungsi updateItemPrice dan klik tombol.

Dengan ini, Anda sekarang telah membangun pasar terdesentralisasi yang mendasar namun fungsional di blockchain Ethereum. Anda dapat membuat, membuat daftar, membeli, menghapus, dan memperbarui item dengan kontrak pintar ini. Kerja bagus!

Pada pelajaran berikutnya, kita akan membahas cara menangani potensi kerentanan keamanan dalam kontrak kita dan memperkenalkan pengubah untuk lebih menyederhanakan kode kita. Pantau terus!

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.
Danh mục
Bài học 3

Mengelola Daftar Marketplace

Setelah membahas pembuatan, pencatatan, dan pembelian barang di pasar terdesentralisasi, kami sekarang akan fokus pada peningkatan kontrak pintar kami dengan menambahkan fungsionalitas untuk menghapus barang dari penjualan dan memperbarui harga suatu barang.

Meningkatkan Kontrak Marketplace

Di bagian ini, kami akan memperkenalkan dua fungsi baru: removeItemFromSale dan updateItemPrice. Fungsi-fungsi ini akan memungkinkan penjual untuk menghapus barangnya dari penjualan dan memperbarui harga barangnya masing-masing.

Berikut kontrak Marketplace yang ditingkatkan:

Soliditas 
 // Pengenal Lisensi SPDX: soliditas pragma MIT 
 ^0.8.6; 

 contract Marketplace { 
 // Tentukan struktur baru untuk Item 
 struct Item {
        string name;
        uint price;
        address payable seller;
        bool forSale;
    }

    // Array untuk menampung semua item 
 Item[] item publik; 

 // Definisi peristiwa dihilangkan agar singkatnya 

 // Definisi fungsi lainnya dihilangkan agar singkatnya 

 // Fungsi untuk menghapus suatu barang dari penjualan 
 fungsi deleteItemFromSale(uint _itemId) public {
        Item storage item = items[_itemId];
        require(msg.sender == item.seller, "Only the owner can remove the item from sale");
        item.forSale = false;
    }

    // Berfungsi untuk memperbarui harga suatu barang 
 fungsi updateItemPrice(uint _itemId, uint _newPrice) publik {
        Item storage item = items[_itemId];
        require(msg.sender == item.seller, "Only the owner can update the price");
        item.price = _newPrice;
    }
}

Dalam fungsi removeItemFromSale , pertama-tama kita mengambil item dengan _itemId yang disediakan. Kami kemudian memeriksa apakah orang yang memanggil fungsi tersebut (msg.sender) adalah penjual barang tersebut. Jika hal ini terjadi, kami menyetel properti forSale item tersebut ke false, yang secara efektif menghapusnya dari penjualan.

Demikian pula, dalam fungsi updateItemPrice , kami mengambil item dengan _itemId yang disediakan, memeriksa apakah msg.sender adalah penjualnya, dan jika demikian, kami memperbarui harga item ke _newPrice yang disediakan.

Menyebarkan dan Berinteraksi dengan Kontrak Enhanced Marketplace

Setelah menyempurnakan kontrak Marketplace , kompilasi dan terapkan seperti yang Anda lakukan di pelajaran sebelumnya. Ingatlah untuk memilih kontrak yang benar dari menu dropdown di plugin compiler Solidity sebelum mengkompilasi dan menerapkan.

Setelah kontrak diterapkan, kontrak tersebut akan muncul di bagian Kontrak yang Diterapkan di plugin Deploy & Run Transactions. Di sini, Anda dapat berinteraksi dengan kontrak.

Untuk menghapus item dari penjualan, masukkan ID item ke dalam fungsi removeItemFromSale dan klik tombol. Untuk memperbarui harga suatu barang, masukkan ID barang dan harga baru ke dalam fungsi updateItemPrice dan klik tombol.

Dengan ini, Anda sekarang telah membangun pasar terdesentralisasi yang mendasar namun fungsional di blockchain Ethereum. Anda dapat membuat, membuat daftar, membeli, menghapus, dan memperbarui item dengan kontrak pintar ini. Kerja bagus!

Pada pelajaran berikutnya, kita akan membahas cara menangani potensi kerentanan keamanan dalam kontrak kita dan memperkenalkan pengubah untuk lebih menyederhanakan kode kita. Pantau terus!

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.