Consider a scenario where you have conceived a potential startup idea, but you are hesitant to disclose it to the public until you have developed a product from it. This period between ideation and product release is a critical phase during which the idea must not be exposed to the public. However, in the event that the idea is leaked and someone steals it, it would be advantageous to have a means of demonstrating that you were the first to conceive of it.
- Define fields related to Intellectual Property.
struct IntellectualProperty{
property_owner: String
hash: String
value: String
uri: String
is_public: String
for_sale: String
}
2.Match the nft account owner with the program id supplied by the client to verify the blockchain owner.
nft_account.owner == program_id
3.Read first byte of the data received from the client to get instruction to operate upon.
instruction_byte = data.split_first()
I.If instruction_byte = = 0, then create new NFT
nft_account_data.property_owner = nft_account_owner.key.to_string()
nft_account_data.hash = hash;
nft_account_data.value="00000".to_string()
nft_account_data.is_public = "0".to_string();
nft_account_data.for_sale = "0".to_string();
II.If instruction_byte = = 1, then make NFT public.
nft_account_data.is_public = "1".to_string()
III.If instruction_byte = = 2, then make NFT for sale.
nft_account_data.for_sale = "1".to_string();
IV.If instruction_byte = = 3, then transfer ownership.
nft_account_data.property_owner = new_nft_account_owner.key.to_string();
2.2 Data/ Data structure
“struct" is a keyword used in Solidity, a smart contract programming language used on the Ethereum blockchain.
struct PatentNFT {
uint256 id; // Unique identifier for the PatentNFT
address owner; // Ethereum address of the current owner of the NFT
string patentTitle; // Title of the patent
string patentAbstract; // Abstract of the patent
string inventorName; // Name(s) of the inventor(s)
uint256 filingDate; // Date the patent was filed
uint256 patentNumber; // Patent number assigned by the patent office
string nftName; // Name of the NFT
string nftDescription; // Description of the NFT
string nftImage; // URL of an image representing the NFT
uint256 nftRoyalty; // Percentage of sales revenue to be paid as royalty to the patent owner
}