| Algorithm 2 Vaccine_Distribution | |
| V_ID: Vaccination Lot ID F_Temp: Freezer Temperature F_Time: Freezer Start Time Mrules: Monitoring Rules TMIN: Minimum Temperature TMAX: Maximum Temperature TCAPTURED BY SENSOR: Temperature Captured by the Sensors | |
| 1. | Mapping (byte V_ID = >int) public V_ID |
| 2. | mapping(string rules = >rules) public Mrules |
| 3. | Mapping (address F_Temp = >V_ID) public F_Temp |
| 4. | Mapping (address F_Temp = >Mrules) public Mrules |
| 5. | Mapping (address F_Temp = >time) public time |
| 6. | Mapping (bytes V_ID = >rule[]) public _monitored_values |
| 7. | Procedure Vaccine_Distriution (V_ID, Mrules) |
| 8. | Set modifier = Vaccine Producer |
| 9. | If (id == Vaccine Producer) then |
| 10. | Access granted |
| 11. | Set F_Temp to Mrules [Temp] |
| 12. | Set F_Time to block.timestamp |
| 13. | Store F_Temp to rule [] |
| 14. | Store F_Time to rule [] |
| 15. | Add (rule) |
| 16. | End If |
| 17. | Else |
| 18. | Access denied |
| 19. | End Else |
| 20. | If (TMIN < TCAPTURED BY SENSOR < TMAX && TIMETAKEN BY DISTRIBUTOR < TIMELIMIT): |
| 21. | Vaccine lot is valid |
| 22. | Return the details of vaccine lot |
| 23. | End If |
| 24. | Else: |
| 25. | Not valid |
| 26. | Return Vaccine lot is not suitable |
| 27. | End Else |
| 28. | End Procedure |