We are looking for an Ethereum wizard to work with us on Aragon Core and the future Aragon Network.
- Fulltime commitment. Side projects and open source are accepted (and encouraged).
- Completely remote position, no relocation required.
- Very competitive and negotiable compensation.
- You decide how to allocate your salary in USD, ETH or ANT. Rates will be revisited every 6 months.
- Bonus in ANT based on performance.
- Expert understanding of Ethereum and the inner workings of the EVM.
- Ability (and a track record) to ship high quality, well crafted code running on Ethereum.
- Strong unit testing culture.
- Being passionate about decentralization (having some concerns is totally fine, we all do).
- Being an autonomous individual with a proactive attitude and a love for time self-management (We are focus-driven work, not hours-driven).
- Interest and knowledge in cryptoeconomics.
- Experience contributing or managing open source projects.
- Very good written communication skills.
- We are a fully distributed company – we don't think talent is geographically centralized. We do offsites regularly for the team to meet and work together for a week.
- We do focused deep work sessions 4 days a week, leaving Friday for all meetings, calls, thinking time and side projects.
- We encourage team members to spend a substantial part of their paid work time on unrelated blockchain open source projects to speed up the development of the ecosystem.
- We are open source only.
- We are a technology company. Our focus is product first.
- We will reward referrals for successful hires up to 10% of the first yearly salary. This would be done with a vesting type smart contract that would be voided in case the hire leaves the organization.
-
Write the code (deployable to the EVM), publish it on Github (public or private) and send link to repo plus any information you consider important to [email protected], with the subject
Solidity opening application
. -
The code we are looking for could be comformant to the following interface. Feel free to remove/add any functions as you see fit:
// For the sake of simplicity lets assume USD is a ERC20 token
// Also lets assume we can 100% trust the exchange rate oracle
contract PayrollInterface {
/* OWNER ONLY */
function addEmployee(address accountAddress, address[] allowedTokens, uint256 initialYearlyUSDSalary);
function setEmployeeSalary(uint256 employeeId, uint256 yearlyUSDSalary);
function removeEmployee(uint256 employeeId);
function addFunds() payable;
function scapeHatch();
// function addTokenFunds()? // Use approveAndCall or ERC223 tokenFallback
function getEmployeeCount() constant returns (uint256);
function getEmployee(uint256 employeeId) constant returns (address employee); // Return all important info too
function calculatePayrollBurnrate() constant returns (uint256); // Monthly usd amount spent in salaries
function calculatePayrollRunway() constant returns (uint256); // Days until the contract can run out of funds
/* EMPLOYEE ONLY */
function determineAllocation(address[] tokens, uint256[] distribution); // only callable once every 6 months
function payday(); // only callable once a month
/* ORACLE ONLY */
function setExchangeRate(address token, uint256 usdExchangeRate); // uses decimals from token
}
Considering USD isn't transferrable on the blockchain (as opposed to ETH and ANT), how can one write a smart contract to pay their own salary--especially assuming the extreme case where they want to be paid 100% in USD?