Ethereum DApp to manage a Supply Chain flow between a Customer, a Manufacturer, a Supplier and a Transporter during the manufacturing of an aircraft.
-
User
Orders an Aircraft (AC). Pays half of the AC price upfront.
Inputs: Equipment ID, Manufacturer address. -
AC manufacturer
- Orders the equipment from the supplier. Pays equipment price.
Inputs: Equipment ID, Supplier ID, Manufacturer Serial Number (MSN). - Prepares the AC structure
Inputs: Origin Plant, Aircraft notes.
- Orders the equipment from the supplier. Pays equipment price.
-
Supplier
Receives component for the ordered equipment.
Inputs: Component ID, Equipment ID, Component manufacturer name (optional), Component's origin (optional). -
Supplier
Processes equipment. Only the same supplier as the one who was contracted by the manufacturer (who ordered the given equipment) can process a received component on it. Indicates notes and the equipment's origin.
Inputs: Component ID, Equipment Origin (optional), Equipment notes (optional). -
Supplier
Packs equipment. Pays the first half of the transport fee.
Inputs: Equipment ID, Transporter address. -
Transporter
Transports equipment.
Input: Equipment ID. -
Manufacturer:
Receives equipment. Pays the second half of the transport fee.
Input: Equipment ID. -
Manufacturer
Processes equipment.
Inputs: Equipment ID, Equipment notes (optional). -
Customer
Receives the ordered AC. Pays the second half of the AC price.
Input: MSN.
For further views of the workflow described above, consider looking at the other UML diagrams:
This contract is deployed on the Rinkeby network!
So the ETH available on these test accounts aren't worth anything :-p. The private keys are only listed so that one can load them in one's Metamask wallet and play around with the DApp.
- Contract address: 0xBaC7C73D28545fd816Fa3b8448213225e9a7De09
- Contract owner (deployed from address): 0x45517697E4fc823BE60a066EcCa8139Ce9C4659e
- Test users created
- Test_customer
- address: 0x05a9FD6814B19D43403A0eB2039d3A5A64797684
- private key: 28B5483F414EAC91967F041BB283CB887371A316EA6437C8D02AC6338DE27642
- add role transaction
- Test_manufacturer
- address: 0xD2224Db6e59146588F55f8dC2fE7C95649250E01
- private key: DDE34AADD343A00BE2B201A42FFC5AC9005C01F7AA82A64604934658C35EAF33
- add role transaction
- Test_supplier
- address: 0xAe269f47Aa55D0bD1888A9D347f6e7107141A9Bd
- private key: CC8634E2C694F4AAD0E263E62E6282FEFD0CEDB482686610F7F2D4365538B5A2
- add role transaction
- Test_transporter
- address: 0x7833f7d5A9191c98A4b6c2bA957eA77d9DD6AeCa
- private key: A38F9C1331B522B469B77A5A8A913FF0173771A10B938F527E29BA187E9768C6
- add role transaction
- Test_customer
- Test transactions
- orderAircraft by Test_customer
- withdraw payment by Test_manufacturer
- Truffle v5.0.1: smart contracts and DAPP development framework.
- Node v11.4.0: JavaScript runtime environment.
- npm 6.4.1
- web3 1.0.0-beta.46: Ethereum JavaScript API
- truffle-assertions: test especially event emissions inside Truffle tests. Tutorial
- Infura: API to access remote Ethereum nodes
- Metamask: browser add-in to interact with the JavaScript Ethereum API Web3.
- Solidity: language for implementing smart contrats.
- Withdrawal pattern for smart contracts
- Rimble UI
- create eth app