Hourly Pay Smart-Contract
An Open-Sourced Ethereum contract
that allows a safe Hourly payment mechanism
between client and employee.

https://github.com/vicnaum/hourlyPay

Features:
Daily Limits
Set a maximum amount of hours your employee can work and bill you daily
Contract Life-span
Contract can have a Life-span - anywhere 1 to 365 days. No more work can be billed after contract life.
Delayed Withdrawals
Set a Payout frequency from 1 to 30 days - so the Client can have time to check the work done before any funds can be withdrawn
Guaranteed Balance
Contract should loaded with a minimum 1 day balance to allow to start the work.
Start/Stop Time Tracking
To start earning ETH - just send a startWork transaction. When you're finished - invoke stopWork, and your earnings will be saved.
Comments On Tasks
A comment needs to be added when the Employee starts work. That way the Client can track tasks and hours spent.
Possible Use-cases
There are numerous use-cases the Hourly Pay contract can be applied in:
1
Full-time hourly-wage work with a single client
Automate the payments for your work with a full-time Client using the Hourly Pay contract.
2
Protect yourself during Freelance work
Hourly Pay contract is also perfect for small tasks work. Have a one week task from a new client? Suggest to use this contract to protect both of you.
3
Targeted Donations
Use the contract with 0x0 as a Client to receive Donations for your Project. That way people would see the work you do, and allow you prove that every penny they've donated went to improve the Project.
How Does It Work?
Contract Creation & Setup
1. Client creates the contract
2. Funds the balance with ETH
3. Sets the options, such as:
- Daily Limit
- Contract Duration
- Payday Frequency
- Convenient NewDay timestamp
Hire Freelancer
1. Client Hires an Employee
2. During the Hire, the Hourly Rate is set
Work!
1. Employee can bill the client hourly using Start Work and Stop Work calls

No more than Daily Limit can be billed
Withdraw ETH
After the Payday Period passes Employee can Withdraw the billed Earnings.

Default Payday frequency is every 3 days.
Future Plans
There are a lot of ideas how this Contract can be improved:
1
More features
Currently the contract is a basic MVP and is restricted in many ways. For example, if the work session happens on the two days boundary - only first day is counted toward your earnings. This could be solved, but it requires a more complex approach with much more sturdy testing.
2
Good UI / FrontEnd
Work-In-Progress test FrontEnd is available here:
https://vicnaum.github.io/hourlyPayTest/
Although it's far from convenient, and still not functional for sending transactions.
Mobile App is also planned.
3
Code Review, More Tests and Refactoring
As the contract is still just a Working Prototype, its code isn't perfect (but tested to be safe). Tests code also needs rework, with separating for Unit tests and Test Scenarios.
Help the project evolve.
Make a Targeted Donation:
This contract is still MVP and there is so many ideas and so much work still to be done: FrontEnd, Mobile UI, Contract Improvements, etc...

So I've created myself a Hourly Pay contract for the Targeted Donations:
0x6ad3289a265911890d68ea50c6257f942eb26ca3

Just send some ETH with a simple transaction, and this will add to the Contract balance.

Which means that all donations sent there would be spent on making this Contract better!
FAQ
Is it 100% safe?
So how do you minimize the risk?
But what stops the Worker from just logging 8-hour days and do nothing?
Wait, so the Client can cancel all and refund the money?
But why give such a permission to Client, even only for the latest period?
Ok, but why block-chain? Why contract? Why can't I just ask my client to pay me everyday?
I think it reminds me of something...
How cheap is the contract? How much gas does it use?
Still have questions?