Outsourcing software development requires establishing trust between involved parties. Our solution automates trust establishment.

What it does

Our solution allows code requestors to specify software requirements and publish a task on the blockchain using smart contracts. Any developer, can then create code fulfilling the requirements. The smart contract is able to check the correctness of the proposed solution and automatically unlock the payment for the developer.

How we built it

The smart contract part resides on ethereum blockchain and is written in Solidity. For code testing purposes, we use GitLab Continuous Integration & Deployment. The requestor specify the environment using .yml files creating a docker image with tests to pass. A developer who wants to write a solution, forks the GitLab repository, adds the requested code and submits it to the smart contract. The smart contract, check if the requested tests passed and unlocks the payment. We use oraclize as an interface between the smart contract and gitlab.

Challenges we ran into

extracting from GitLab verifying remote host identity from smart contracts building docker image inside GitLab environment huge size of Ethereum test network oraclize has limited capacities authentication tokens for GitLab API

Accomplishments that we're proud of

We established communication between the Smart Contract and GitLab, correctly extracting status of submitted code.

What we learned

How to automate builds in GitLab How to make smart contracts interact with external world

What's next for ChainSoft

We would love to continue the project. Improve the quality of the software, extend the interface, the range of possible tests and potentially write a research paper about it.

Built With

Share this project: