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.
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.
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!