単純にアドレスに保存するだけであれば、mapping(address => Data) accounts;とすれば良さそう。
ただし、この場合は、商品ごとにアドレスを持っていないといけない。
緯度経度やstatusの管理は、フロントエンド側(React)で実装か…
memoryとstorageの仕様詳細が欲しいところ。。。
pragma solidity ^0.8.17; contract Traceability { struct Data { uint256 id; string name; string latitude; string longitude; string status; } address[] public users; mapping(address => Data) accounts; function registerAccount(uint256 _id, string memory _name, string memory latitude, string memory longitude, string memory status) public returns (bool) { accounts[msg.sender].id = _id; accounts[msg.sender].name = _name; accounts[msg.sender].latitude = latitude; accounts[msg.sender].longitude = longitude; accounts[msg.sender].status = status; users.push(msg.sender); return true; } function ViewAccount(address user) public view returns (uint256, string memory, string memory, string memory, string memory) { uint256 _id = accounts[user].id; string memory _name = accounts[user].name; string memory _latitude = accounts[user].latitude; string memory _longitude = accounts[user].longitude; string memory _status = accounts[user].status; return (_id, _name, _latitude, _longitude, _status); } }
ethの受け取り
pragma solidity ^0.8.17; contract RecvEther { address public sender; uint public recvEther; function () payable { sender = msg.sender; recvEther += msg.value; } }