A distributed ledger technology (DLT) application enabling sustainable waste management and industrial symbiosis in textile manufacturing districts. Built with R3 Corda, this solution allows textile manufacturers, certification bodies, and municipal authorities to share wastewater pollution data in a secure, standardized, and transparent manner. Read the full dissertation
- Permissioned Blockchain Network: Private consortium model ensuring data privacy while enabling collaboration
- Standardized Data Exchange: JSON-based format for tracking hazardous chemicals and sustainability metrics across production processes
- Automated Certification: Smart contracts that validate wastewater parameters against certification standards
- Waste Exchange Coordination: Municipality-facilitated matching of wastewater producers and recyclers
- Multi-Actor Architecture: Distinct roles and permissions for manufacturers, certifiers, and public institutions
The textile manufacturing industry is one of the most environmentally impactful sectors, generating massive quantities of wastewater containing hazardous chemicals. This project addresses the critical gap in horizontal Industry 4.0 solutions for textile districts, promoting circular economy principles and reducing environmental impact through digitally-enabled collaboration.
The solution implements four main information flows:
- Textile Firms → Certifiers: Share wastewater pollution data for certification
- Certifiers → Textile Firms: Issue sustainability certifications automatically
- Textile Firms → Municipality: Request wastewater or communicate surplus
- Municipality → Textile Firms: Coordinate waste exchanges between producers
- Language: Java
- Blockchain Platform: R3 Corda
- Build Tool: Gradle
- Smart Contracts: Custom contracts for data validation and transaction management
- Java 8 SDK
- Gradle
- IntelliJ IDEA (recommended, with R3 Corda plugin)
- Open a terminal in the project root directory and deploy the nodes:
./gradlew clean build deployNodes- Run the nodes:
./build/nodes/runnodes
Step 1: Create the network (run on NetworkOperator node):
flow start CreateNetwork
Note the NetworkID returned for subsequent steps.
Step 2: 2 Non-member nodes request to join:
flow start RequestMembership authorisedParty: NetworkOperator, networkId: <NetworkID>
Step 3: Query all membership requests (on admin node):
flow start QueryAllMembers
Step 4: Network Operator activates pending memberships for each node type:
flow start ActivateMember membershipId: <MembershipID>
Step 5: Admin creates a subgroup and assigns members:
flow start CreateNetworkSubGroup networkId: <NetworkID>, groupName: Prato_Textile_District, groupParticipants: [<NetworkOperatorID>, <TextileFirmID>, <CertifierID>, <MunicipalityID>]
Step 6-8: Assign business identities to members:
flow start AssignBNIdentity firmType: <FirmType>, membershipId: <MembershipID>, bnIdentity: <BNIdentity>
Step 9: Assign roles for wastewater data sharing:
flow start AssignWasteWaterDataSharingRole membershipId: <MembershipID>, networkId: <NetworkID>
Step 10: Textile firms share wastewater data with certifiers: JSON-WASTEWATER-DATA mock file
flow start SendWasteWaterDataInitiator networkId: <NetworkID>, senderId: <TextileFirmID>, receiver: <CertifierID>, jsonData: <JSON-WASTEWATER-DATA>
Step 11: Certifier queries data state:
run vaultQuery contractStateType: it.polimi.tgolfetto.states.WasteWaterDataState
Step 12: Certifier evaluates and issues certification: JSON-CERT-CRITERIA mock file
flow start SendCertificationInitiator networkId: <NetworkID>, senderId: <CertifierID>, receiver: <TextileFirmID>, criteria: <JSON-CERT-CRITERIA>
Step 13: Textile firm sends waste material requests to municipality:
flow start SendWasteRequestInitiator networkId: <NetworkID>, senderId: <TextileFirmID>, receiver: <MunicipalityID>, send: true/false, qty: <Quantity>, wasteName: <WasteName>, wasteWaterData: <JSON-WASTEWATER-DATA>
Step 14: Municipality responds with available waste providers:
flow start SendWasteResponseInitiator networkId: <NetworkID>, senderId: <TextileFirmID>, receiver: <MunicipalityID>, send: true/false, qty: <Quantity>, wasteName: <WasteName>, wasteWaterData: <JSON-WASTEWATER-DATA>
Step 15: Query states from nodes:
run vaultQuery contractStateType: it.polimi.tgolfetto.states.CertificationState
run vaultQuery contractStateType: it.polimi.tgolfetto.states.WasteWaterDataState
run vaultQuery contractStateType: it.polimi.tgolfetto.states.WasteRequestState
run vaultQuery contractStateType: it.polimi.tgolfetto.states.WasteResponseState
Keywords: Blockchain, Sustainability, Circular Economy, Textile Industry, Industrial Symbiosis, R3 Corda, DLT, Wastewater Management