Payroll dapp

https://github.com/expanse-org/payroll-dapp

PAYROLL dapp

PAY ROLL DAPP

Price Oracle Address

0xb385fa580fc98c0291d40f3960bea4f36b404976

Payroll Oracle Address

0xed201029d05de2b63fed87b8d9254ddc9e4e5159

Payroll Contract ABI

[
{
"constant": true,
"inputs": [],
"name": "prices",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "balances",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_n",
"type": "uint256"
}
],
"name": "calcEXP",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_name",
"type": "bytes16"
}
],
"name": "employeeLookUp",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalEXPPay",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "emps",
"outputs": [
{
"name": "isActive",
"type": "bool"
},
{
"name": "isEXP",
"type": "bool"
},
{
"name": "payRate",
"type": "uint256"
},
{
"name": "name",
"type": "bytes16"
},
{
"name": "nextPay",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "expHardCap",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_e",
"type": "address"
}
],
"name": "getEmployee",
"outputs": [
{
"name": "isActive",
"type": "bool"
},
{
"name": "isEXP",
"type": "bool"
},
{
"name": "payRate",
"type": "uint256"
},
{
"name": "expBalance",
"type": "uint256"
},
{
"name": "expPayRate",
"type": "uint256"
},
{
"name": "name",
"type": "bytes16"
},
{
"name": "nextPay",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getPrice",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "root",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalUSDPay",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "bytes32"
}
],
"name": "names",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "admins",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "uint256"
}
],
"name": "employees",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_e",
"type": "address"
}
],
"name": "payEmployee",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "Employee",
"type": "address"
},
{
"indexed": false,
"name": "Rate",
"type": "uint256"
}
],
"name": "PayedEmployee",
"type": "event"
},
{
"constant": false,
"inputs": [
{
"name": "_e",
"type": "address"
},
{
"name": "_isActive",
"type": "bool"
}
],
"name": "setIsActive",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "withdraw",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_e",
"type": "address"
},
{
"name": "_isEXP",
"type": "bool"
}
],
"name": "setIsEXP",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_e",
"type": "address"
}
],
"name": "removeEmployee",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_e",
"type": "address"
},
{
"name": "_nextPay",
"type": "uint256"
}
],
"name": "setNextPay",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_newOwner",
"type": "address"
}
],
"name": "transferRoot",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "calcTotalPay",
"outputs": [
{
"name": "",
"type": "uint256"
},
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "kill",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"payable": true,
"stateMutability": "payable",
"type": "fallback"
},
{
"constant": false,
"inputs": [
{
"name": "_e",
"type": "address"
},
{
"name": "_isActive",
"type": "bool"
},
{
"name": "_isEXP",
"type": "bool"
},
{
"name": "_payRate",
"type": "uint256"
}
],
"name": "setEmployee",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"payable": true,
"stateMutability": "payable",
"type": "constructor"
},
{
"constant": false,
"inputs": [
{
"name": "_expHardCap",
"type": "uint256"
}
],
"name": "setExpHardCap",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "payEmployees",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_e",
"type": "address"
},
{
"name": "_payRate",
"type": "uint256"
},
{
"name": "_isEXP",
"type": "bool"
},
{
"name": "_name",
"type": "bytes16"
}
],
"name": "addEmployee",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_oldAcct",
"type": "address"
},
{
"name": "_newAccount",
"type": "address"
}
],
"name": "transferEmployeeAcct",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_prices",
"type": "address"
}
],
"name": "setPrices",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_e",
"type": "address"
},
{
"name": "_payRate",
"type": "uint256"
}
],
"name": "setPayRate",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "index",
"type": "uint256"
}
],
"name": "removeIndex",
"outputs": [
{
"name": "",
"type": "address[]"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_sendTo",
"type": "address"
}
],
"name": "empty",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "forceWithdrawAll",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_acct",
"type": "address"
},
{
"name": "_set",
"type": "bool"
}
],
"name": "setAdmin",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
]

How To Setup Payroll Contracts

  • Launch payroll contract with price oracle

  • setEXPHardCap

  • Add employees

  • calcTotal

  • Send EXP to contract equivalent to the return of the “totalEXPPay” call

How To Pay Employees

  • Click calcTotal

  • Update expanse price using price oracle (expPrice * 100)

  • Divide totalUSDPay by getPrice

  • Send exp to contract

  • Click “pay employees”

  • Employees can then withdraw their funds at will

How To Setup Payroll With MEW

  • Go to myetherwallet.com

  • Go to contracts tab

  • Copy and paste payroll oracle contract address

  • Copy and paste payroll abi json

  • Click access

  • Load your address up

  • Select “withdraw” from drop down menu

Notes

Make sure to use the address you supplied me to withdraw your funds.

How to Setup Payroll with Mist / Luna

  • Open mist

  • Go to contracts tab

  • Click “watch contract”

  • Copy and paste payroll contract address into address field

  • Copy and paste payroll contract abi into abi field

  • type “Payroll” into name field

  • Click ok

  • Click “Payroll” on contracts tab

  • On the right side select “withdraw” from “pick a function” dropdown menu

  • Select your address from “execute from” drop down menu

Notes

Make sure to use the address you supplied me to withdraw your funds.