As part of the OP, Sal downloads the DIDO Platform selected by the OPC (we refer to this as DIDO Platform O). The OPC have defined several Data Objects (DOs) that they are going to have on their DIDO. When a DO is deployed to a DIDO, it is referred to as a Smart Contract.
Participant - A Participant is any person or operation that engages with the ASCC. A Participant can have many roles within the ASCC. For example, a producer can also be a handler, a driver, processor and a packer.
DEFINE Participant AS OBJECT { firstName TextType NOT NULL PII, middleName TextType NOT NULL PII, lastName TextType NOT NULL PII, streetAddress TextType NOT NULL PII, mobilePhone TextType NOT NULL PII, taxPayerId TextType NOT NULL PII }; DEFINE ORACLE VerifyParticipant SYNCHRONOUS AS ( participant Participant IN, valid BooleanType OUT, queryTimeStamp TimestampType OUT ) { EXECUTE verificationPerson ( participant Participant IN, valid BooleanType OUT, class TextType OUT ); queryTimeStamp TimestampType = CURRENT_TIME; };
Role - The role is the related to the activity the participant performs within the ASCC. As an example, on a small farm, the owner may participate in lots of roles from planting to harvest and even being a broker.
DEFINE TYPE RoleType AS ENUM WITH CONSTRAINTS { { 0,"Participant", "Any person or operation engaging with the ASCC" DEFAULT}, { 1, "Cartage"}, "Any person or operation moving things from one geographical position to another"}, { 2, "Handler"}, "Any person or operation coming in direct contact with the products"}, { 3, "Processor", "Any person or operation involved in converting the raw products into finished products"}, { 4, "Packer", "Any person or operation involved in the packing of the product into packages, boxes and pallets"}, { 5, "Broker", "Any person or operation engaged with the selling and buying of the products anywhere along the Supply Chain"}, { 6, "Q&A", "Any person or operation engaged in assessing the quality of the product" }, { 7, "Packer", "Any person or operation involved in packing of the product into packages, boxes and pallets" } } VALUE = DEFAULT; DEFINE ROLE AS OBJECT { name TextType IS NOT NULL, description TextType IS NOT NULL, kindOfActivity ActivityType IS NOT NULL };
Privileges - The Privileges should not be confused with the Roles. Privileges grant permissions for accessing the DIDOs such as READ, UPDATE, UPLOAD, SEARCH, DELETE.
| Privilege Type | Description |
|---|---|
| READ | Granting READ privilege allows the access to all the Read attributes or operations associated with the ASCC |
| UPDATE | Granting UPDATE privilege allows the access to all the writable attributes or operations associated with the ASCC |
| UPLOAD | Granting UPLOAD privilege allows for new content to be added to the ASCC record (i.e., images, invoices, Bill of Lading (BL or BoL), etc. |
| SEARCH | Granting SEARCH privilege allows for the Read attributes or operations to be searched for particular strings. It only returns a TRUE or FALSE. All Personal Identifiable Information (PII) can be hidden from the search. |
| DELETE | Granting DELETE privilege allows for the content of the Participant record to be marked as deleted OR optionally for the content to be burned by destroying the private key |
MANAGE GRANT { Participant : { "id" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E", "by" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E", "Cartage" : "READ, UPDATE, UPLOAD" } } MANAGE GRANT { Participant : { "id" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E", "by" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E", "Packer" : "SEARCH" } }
Cartage - The Cartage is the process of moving things from one geographical position to another. This includes the small delivery trucks that can be used at either end of the Supply Chain or the long and short haul trucks. This also covers the Drivers, however, each state has its own driver license classification1)
DEFINE TYPE TruckClassificationType AS ENUM WITH CONSTRAINTS { { 1, "Class 1", "GVWRs < 6,000 lbs" DEFAULT}, { 2, "Class 2", "GVWRs 6,001 to 10,000 pounds" }, { 3, "Class 3", "GVWRs 10,001 to 14,000 pounds" }, { 4, "Class 4", "GVWRs 14,001 and 16,000 pounds" }, { 5, "Class 5", "GVWRs 6,001 to 19,500 pounds" }, { 6, "Class 6", "GVWRs 19,501 and 26,000 pounds" }, { 7, "Class 7", "GVWRs 26,001 and 33,000 pounds (usually have three axles or more)" }, { 8, "Class 8", "GVWRs over 33,001 pounds" }, } VALUE = DEFAULT; DEFINE TYPE CaDriversClassicationType AS ENUM WITH CONSTRAINTS { { 1, "Class A", DEFAULT}, { 2, "Class B"}, { 2, "Class C"}, { 2, "Class M1"}, { 2, "Class M2"}, VALUE = DEFAULT; DEFINE Truck AS OBJECT { vin TextType, manufacturer TextType, gvw PositiveWholeNumber, numberOfAxels PositiveWholeNumber, dotNumber TextType, mcNumber TextType }; DEFINE ORACLE VerifyDriver SYNCHRONOUS AS ( driver Driver IN, valid BooleanType OUT, class TextType OUT, queryTimeStamp TimestampType OUT ) { EXECUTE verificationProcedure ( driver Driver IN, valid BooleanType OUT, class TextType OUT ); queryTimeStamp TimestampType = CURRENT_TIME; }; DEFINE Trailer AS OBJECT { vin TextType, manufacturer TextType, gvw PositiveWholeNumber, numberOfAxels PositiveWholeNumber }; DEFINE Driver AS OBJECT { driverLicenseNumber TextType, stateOfIssue TextType, dateOfBirth DateTimeValue, expirationDate DateTimeValue };
Transport - Transportation vehicles should be clean and sanitary. Co-mingling of organic and non-organic fruits and vegetables is prohibited unless organic products are protected from contact with prohibited substances. See Bill of Lading (BL or BoL).
DEFINE TYPE TransportModeType AS ENUM WITH CONSTRAINTS { { 1, "Road", DEFAULT}, { 2, "Rail"}, { 3, "Air"}, { 4, "Sea"}, { 5, "Bicycle"}, { 6, "Motorcycle"}, { 7, "Horse"}, { 8, "Other"}, VALUE = DEFAULT; DEFINE TYPE Incoterms AS ENUM WITH CONSTRAINTS { { 1, "EXW", "Ex Works", DEFAULT}, { 2, "FCA", "Free Carrier"}, { 3, "CPT", "Carriage Paid To"}, { 4, "CIP", "Carriage and Insurance Paid To"}, { 5, "DPU", "Delivered at Place Unloaded"}, { 6, "DAP", "Delivered at Place"}, { 7, "DDP", "Delivered Duty Paid"}, { 8, "FAS", "Free Alongside Ship"}, { 8, "FOB", "Free on Board"}, { 8, "CFR", "Cost and Freight"}, { 8, "CIF", "Cost, Insurance, and Freight"}, VALUE = DEFAULT; DEFINE TYPE KindsOfShippingUnits AS ENUM WITH CONSTRAINTS { { 1, "boxes", DEFAULT}, { 2, "pallets"} } DEFINE LineItemType AS OBJECT { lineItemNumber PositiveWholeNumber, description TextType, kindsOfUnits KindsOfShippingUnits, numberOfUnits PositiveWholeNumber, weight PositiveWholeNumber }; DEFINE BillOfLading AS OBJECT { transportCompanyName TextType, loadingSite GeolocationType, destination GeolocationType, mode TransportModeType, incoterms Incoterms, lineItemType LineItemType[] }; DEFINE DeliveryVehicle AS OBJECT { truck Truck, trailer Trailer, driver Driver, billOfLading BillOfLading };
Handler - Anyone who comes in direct contact with the products such as farm hands, warehouse workers, processors, packers, etc. Some Participants many not be handlers (i.e., the brokers).
Storage - Storage is any place where the Supplies are kept while not being transported. For food, there are different kinds of Cold Storage based on what is being stored (i.e.,
Return to Top Processor - The Processors are the people involved in converting the raw products into finished products. For example, for strawberries it might be the washers, de-stemmers, and initial quality control to remove damaged or bad fruit.
Packer - These are the people involved in the packing of the product into packages, boxes and pallets
Broker - These are the people that are engaged with the selling and buying of the products anywhere along the Supply Chain. The more the Supply Chain is added to a Value Chain, the fewer brokers that involved.
Quality Assurance and Inspection - These are people that are engaged in assessing the quality of the product. They are also responsible for grading the products (U.S. Grade A or U.S. Fancy, U.S. Grade B or U.S. Choice, U.S. Grade C or U.S. Standard, or substandard. 2)
Retail Outlet Provider - A Retail Outlet Provider person or establishment that sells the produce directly to the Human Consumers. Some examples are grocery stores, fruit stands, convenient stores, kiosks, etc.
Discretionary Providers - A Discretionary Providers are places where the products are sold as part of something else to the Human Consumers. Some examples are restaurants, ice-cream stores, etc.
Human Consumer - The Human Consumers are the people that actually buy the products and consume them.
Processing Consumer - The Processing Consumers are people or establishments that buy the products and further process them into other products such as ice-cream products, jams, jellies, or candies.