Solidity

標識符未找到或不唯一。關於添加新產品智能合約

  • November 22, 2022

我在這裡做錯了什麼,這是基於電子商務的智能合約,允許使用者創建商店列表商品並進行銷售。我在第 61 行收到上述錯誤電子商務智能合約

// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9;

//導入“hardhat/console.sol”;

contract MarketPride { 地址應付所有者;uint256 產品計數器;

結構產品{字元串標題; 字元串類別;字元串描述;地址應付賣方;uint256 價格;uint256 評級;單位編號;uint256 時間戳;} 產品

$$ ++productCounter $$= newProduct //創建所有store的對象 struct storeStruct { string name; 字元串描述;uint256 編號;地址創建者;} 產品$$ $$產品; 映射 (uint256 => Product) public productById; 映射(uint256 => storeStruct)公共商店;

constructor () {
 owner == msg.sender;
}

modifier onlyStoreOwner() { require(owner == msg.sender , ‘只有店主可以刪除商店’); _; }

事件支付(地址索引_from,地址索引_to,uint256 _price);

函式 checkUserExist(地址公鑰)公共視圖返回(bool){}

function createStore(string calldata _name, string calldata _desc) public view{ require(checkUserExist(msg.sender) == false, ‘請先註冊一個賬號’); require(bytes(_name).length>0, “需要包含店鋪名稱”); require(bytes(_desc).length>0, “描述起著重要作用”); }

function listProductToStore( string memory _name, string memory _category, string memory _description, address payable _price, uint256 _rating, uint256 _time) public { require(checkUserExist(msg.sender) == false, ‘請先註冊一個賬號’); 產品記憶 newProduct = Product({ buyer: address(0), seller: msg.sender, id: products, name: _name, category: _category, description: _description, price: _price, rating: _rating });

 }

function payForProducts(address _from, address _to, uint256 price) public payable { }

函式 getAllStore() 公共視圖返回(storeStruct

$$ $$記憶){} 函式 getAllProduct() 公共視圖返回(Product

$$ $$記憶){} function getStoreName(address pubkey) 外部視圖 returns(string memory){} }

我不確定為什麼在使用名稱Product創建結構時使用名稱創建結構實例productStruct。將第 61 行替換為:

productStruct memory newProduct = productStruct({ ...

此外,似乎您沒有在任何地方儲存您的結構實例。確保也更新它。

products[++productCounter] = newProduct

更新:最終程式碼:

productStuct memory newProduct = productStuct({
       buyer: address(0),
       seller: msg.sender,
       id: products,
       name: _name,
       category: _category,
       description: _description,
       price: _price,
       rating: _rating
   });
   products[++productCounter] = newProduct

引用自:https://ethereum.stackexchange.com/questions/139804