Blockchain Layer
Components
//
pragma solidity ^0.8.0;
contract AIResourceMarketplace {
struct Resource {
uint id;
address owner;
string resourceType;
uint price;
bool available;
}
mapping(uint => Resource) public resources;
uint public resourceCount;
event ResourceListed(uint id, address owner, string resourceType, uint price);
event ResourcePurchased(uint id, address buyer, uint price);
function listResource(string memory _resourceType, uint _price) public {
resourceCount++;
resources[resourceCount] = Resource(resourceCount, msg.sender, _resourceType, _price, true);
emit ResourceListed(resourceCount, msg.sender, _resourceType, _price);
}
function purchaseResource(uint _id) public payable {
Resource memory _resource = resources[_id];
require(_resource.available, "Resource not available");
require(msg.value == _resource.price, "Incorrect value");
_resource.owner.transfer(msg.value);
_resource.available = false;
resources[_id] = _resource;
emit ResourcePurchased(_id, msg.sender, _resource.price);
}
}
Last updated