mail@pastecode.io avatar
10 months ago
1.5 kB
// ...

type Package struct {
ID string json:"id"
DateOfManufacture string json:"dateOfManufacture" // ISO 8601 date format
PlaceOfOrigin string json:"placeOfOrigin" // "City, Country"
CurrentStatus string json:"currentStatus"
CustomsDetails []string json:"customsDetails"
IsDamaged bool json:"isDamaged"

type NFT struct {
ID string json:"id"
Owner string json:"owner"
Category string json:"category" // "Antibiotic", "Painkiller", etc.

func (c *Contract) CreatePackage(ctx contractapi.TransactionContextInterface, id string, dateOfManufacture string, placeOfOrigin string) error {
// Ensure dateOfManufacture is in ISO 8601 format. Validations can be added here.
// Ensure placeOfOrigin is in the format "City, Country". Validations can be added here.

package := Package{
ID: id,
DateOfManufacture: dateOfManufacture,
PlaceOfOrigin: placeOfOrigin,
CurrentStatus: "CREATED",
CustomsDetails: []string{},
IsDamaged: false,
packageBytes, _ := json.Marshal(package)
return ctx.GetStub().PutState(id, packageBytes)

// ... other functions ...

func (c *Contract) MintNFT(ctx contractapi.TransactionContextInterface, id, owner, category string) error {
// Validate category if needed, e.g., ensure it matches known categories for pharmaceuticals.

nft := NFT{
ID: id,
Owner: owner,
Category: category,
nftBytes, _ := json.Marshal(nft)
return ctx.GetStub().PutState(id, nftBytes)

// ... rest of the functions ...