This repository contains a the ChangeManager smart contract and the C# frontend ChangeManagerWPF application to interact with the blockchain. The code for the ChangeManager is managed here (https://github.com/Cryt1c/ChangeManager).
The smart contract represents a change management workflow where a general manager can setup a new contract and everyone can create new ChangeRequest from github. Furthermore, the general manager can decide which responsible parties are able to vote on the release of a change. As soon as all responsible parties have accepted or one has rejected a ChangeRequest the voting process has finished. All votes are transparently tracked on the blockchain using events.
- Install Ganache (https://github.com/trufflesuite/ganache/releases/) to simulate the Ethereum Blockchain
- Build solution in Visual Studio 2017
- Run Ganache and make these settings:
- Run ChangeManagerWPF.exe in the Release folder (multiple instances can use one smart contract at the same time)
- Add a Github Project (e.g.
Cryt1c/ChangeManagerWPF
) - Click on
Create new ContractManager
(You can leave the address empty, since we are deploying a new Contract) - Add the private key of the general manager, which you get from Ganache when you click on the key symbol next to an address
- A new ChangeManager contract is deployed to the blockchain and you can start creating ChangeRequests
- Add a Github Project (e.g.
Cryt1c/ChangeManagerWPF
) - Add the address of the existing ChangeManager contract, which you can find in ganache under
Logs
if you have already created a ChangeManager before - Click on
Use existing ContractManager
- Choose a git commit you want make make a ChangeRequest of
- Add your information (costs, estimation, info)
- Use your private key to sign the new ChangeRequest
- The ChangeRequest is now in the proposed state
After a ChangeRequest has been created the general manager, who is the owner of the smart contract, has to manage the ChangeRequest. She can reject the ChangeRequest or accept it and appoint responsible parties (addresses) who can vote on the ChangeRequest.
- Choose a proposed ChangeRequest from the table and select
Management Vote
from the tabs (Tab is only shown, if a proposed ChangeRequest is selected) - Add the responsible parties as comma-separated addresses (public keys), which you can find under
Accounts
in Ganache - Add your information (vote, info)
- Use your private key (You must use the private key of the general manager to manage a ChangeRequest)
- The ChangeRequest is now either in the rejected or managed state.
The addresses appointed by the general manager to vote on a ChangeRequest are able to accept or reject a ChangeRequest which has been managed.
- Choose a managed ChangeRequest from the table and select
Responsible Vote
from the tabs (Tab is only shown, if a managed ChangeRequest is selected) - Add your information (vote, info)
- Use your private key (You must use one of the appointed keys)
- As soon as all responsible parties have accepted or one has rejected the ChangeRequest it goes either into the accepted or the rejected state.