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.
Copy link
Outline
PAYROLL dapp
Price Oracle Address
Payroll Oracle Address
Payroll Contract ABI
How To Setup Payroll Contracts
How To Pay Employees
How To Setup Payroll With MEW
How to Setup Payroll with Mist / Luna