pragma solidity ^0.7.0; contract DStock{ uint public assetCount; uint public personCount; uint public transactionCount; struct asset{ uint assetId; string hash; address creatorAddress; uint cost; uint soldCount; } struct person{ uint personId; address personAddress; uint earning; uint tokenCount; uint[] assetsUploaded; uint[] assetsBought; bool initialized; } mapping (uint => asset) public assets; mapping (uint => person) public persons; mapping (address=> uint) public getMyId; function initializePerson() private { if(persons[getMyId[msg.sender]].initialized == true) { return; } persons[personCount].personId = personCount; persons[personCount].personAddress = msg.sender; persons[personCount].earning= 0; persons[personCount].tokenCount = 0 ; persons[personCount].initialized = true; persons[personCount].assetsUploaded = new uint[](0); getMyId[msg.sender] = personCount; personCount++; } function uploadAsset(string memory _hash, uint _cost) public returns(uint256[] memory){ initializePerson(); assets[assetCount] = asset(assetCount,_hash,msg.sender,_cost,0); persons[getMyId[msg.sender]].assetsUploaded.push(assetCount); assetCount++; return persons[getMyId[msg.sender]].assetsUploaded; } function buyAsset(uint _assetId) public { initializePerson(); // transfer tokens = assets[_assetId].cost from msg.sender to assets[_assetId].creatorAddress assets[_assetId].soldCount++; persons[getMyId[msg.sender]].assetsBought.push(_assetId); transactionCount++; } }
0.7.0