Address Contract Partially Verified
Address
0x5d4ABC77B8405aD177d8ac6682D584ecbFd46CEc
Balance
0 ETH
Nonce
1
Code Size
10180 bytes
Creator
0xCD593E2F...CA09 at tx 0x540fcc6d...790276
Indexed Transactions
0
Contract Bytecode
10180 bytes
0x60806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610122578063095ea7b3146101b25780630988ca8c1461021757806318160ddd146102a05780631bfe0308146102cb578063217fe6c61461035457806323b872dd146103f5578063313ce5671461047a57806354fd4d50146104a557806370a0823114610535578063732016671461058c5780637d72aa65146106035780638df15e191461068c57806395d89b41146106d9578063a4faf89e14610769578063a5a98d781461082a578063a9059cbb14610855578063ba6afc50146108ba578063be30eda8146108e5578063c669c95514610952578063dd62ed3e14610a13575b600080fd5b34801561012e57600080fd5b50610137610a8a565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561017757808201518184015260208101905061015c565b50505050905090810190601f1680156101a45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101be57600080fd5b506101fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b28565b604051808215151515815260200191505060405180910390f35b34801561022357600080fd5b5061029e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c1a565b005b3480156102ac57600080fd5b506102b5610c9b565b6040518082815260200191505060405180910390f35b3480156102d757600080fd5b50610352600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610ca1565b005b34801561036057600080fd5b506103db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610e4d565b604051808215151515815260200191505060405180910390f35b34801561040157600080fd5b50610460600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ed4565b604051808215151515815260200191505060405180910390f35b34801561048657600080fd5b5061048f61121e565b6040518082815260200191505060405180910390f35b3480156104b157600080fd5b506104ba611224565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104fa5780820151818401526020810190506104df565b50505050905090810190601f1680156105275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561054157600080fd5b50610576600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112c2565b6040518082815260200191505060405180910390f35b34801561059857600080fd5b50610601600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061134c565b005b34801561060f57600080fd5b5061068a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506116c3565b005b34801561069857600080fd5b506106d7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061186f565b005b3480156106e557600080fd5b506106ee6119cb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561072e578082015181840152602081019050610713565b50505050905090810190601f16801561075b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561077557600080fd5b506108106004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611a69565b604051808215151515815260200191505060405180910390f35b34801561083657600080fd5b5061083f611c83565b6040518082815260200191505060405180910390f35b34801561086157600080fd5b506108a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611df1565b604051808215151515815260200191505060405180910390f35b3480156108c657600080fd5b506108cf611fa3565b6040518082815260200191505060405180910390f35b3480156108f157600080fd5b50610950600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fad565b005b34801561095e57600080fd5b506109f96004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612299565b604051808215151515815260200191505060405180910390f35b348015610a1f57600080fd5b50610a74600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061258d565b6040518082815260200191505060405180910390f35b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b205780601f10610af557610100808354040283529160200191610b20565b820191906000526020600020905b815481529060010190602001808311610b0357829003601f168201915b505050505081565b600081600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b610c97826001836040518082805190602001908083835b602083101515610c565780518252602082019150602081019050602083039250610c31565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902061261490919063ffffffff16565b5050565b60065481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cfc57600080fd5b610d79826001836040518082805190602001908083835b602083101515610d385780518252602082019150602081019050602083039250610d13565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902061262d90919063ffffffff16565b7fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610e0e578082015181840152602081019050610df3565b50505050905090810190601f168015610e3b5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b6000610ecc836001846040518082805190602001908083835b602083101515610e8b5780518252602082019150602081019050602083039250610e66565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902061268b90919063ffffffff16565b905092915050565b600081610ee0856112c2565b10158015610f6a575081600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1515610f7557600080fd5b610fc782600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e490919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061105c82600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270f90919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061112e82600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e490919063ffffffff16565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60035481565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112ba5780601f1061128f576101008083540402835291602001916112ba565b820191906000526020600020905b81548152906001019060200180831161129d57829003601f168201915b505050505081565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054039050919050565b6040805190810160405280600881526020017f556e6c6f636b657200000000000000000000000000000000000000000000000081525061138c3382610c1a565b81841015151561139b57600080fd5b83600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156113e957600080fd5b61143b84600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e490919063ffffffff16565b600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f18585604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611527575060008214155b156116bc5761157e82600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e490919063ffffffff16565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061161382600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270f90919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561171e57600080fd5b61179b826001836040518082805190602001908083835b60208310151561175a5780518252602082019150602081019050602083039250611735565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902061273a90919063ffffffff16565b7fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b7004898282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611830578082015181840152602081019050611815565b50505050905090810190601f16801561185d5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b6040805190810160405280600681526020017f4c6f636b657200000000000000000000000000000000000000000000000000008152506118af3382610c1a565b816118b9846112c2565b101515156118c657600080fd5b61191882600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270f90919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f625fed9875dada8643f2418b838ae0bc78d9a148a18eee4ee1979ff0f3f5d4278383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050565b60048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a615780601f10611a3657610100808354040283529160200191611a61565b820191906000526020600020905b815481529060010190602001808311611a4457829003601f168201915b505050505081565b6000806040805190810160405280601581526020017f496e63656e74697665734469737472696275746f720000000000000000000000815250611aac3382610c1a565b83518551141515611abc57600080fd5b600091505b8451821015611c7757611af68483815181101515611adb57fe5b90602001906020020151600a546126e490919063ffffffff16565b600a81905550611b7c8483815181101515611b0d57fe5b90602001906020020151600c60008886815181101515611b2957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270f90919063ffffffff16565b600c60008785815181101515611b8e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508482815181101515611be457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8685815181101515611c4b57fe5b906020019060200201516040518082815260200191505060405180910390a38180600101925050611ac1565b60019250505092915050565b60008060008060006040805190810160405280601181526020017f496e666c6174696f6e4f70657261746f72000000000000000000000000000000815250611ccb3382610c1a565b4294506201518085811515611cdc57fe5b0493508360095414151515611cf057600080fd5b836009819055506301e133806008548603811515611d0a57fe5b0491506001821015611d395761016d600a600754811515611d2757fe5b04811515611d3157fe5b049250611d75565b601482101515611d4c5760009250611d74565b6103e861016d8360050260640360075402811515611d6657fe5b04811515611d7057fe5b0492505b5b611d8a83600a5461270f90919063ffffffff16565b600a81905550611da58360065461270f90919063ffffffff16565b6006819055507fb1231b3402177cbf2e12f37b280d75337efb1be12ac563171940fc3627da5df3600a546040518082815260200191505060405180910390a1600a549550505050505090565b600081611dfd336112c2565b10151515611e0a57600080fd5b611e5c82600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e490919063ffffffff16565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ef182600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270f90919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600a54905090565b6040805190810160405280600681526020017f4c6f636b65720000000000000000000000000000000000000000000000000000815250611fed3382610c1a565b81611ff7856112c2565b1015151561200457600080fd5b61205682600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e490919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120eb82600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270f90919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061218082600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270f90919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a37f625fed9875dada8643f2418b838ae0bc78d9a148a18eee4ee1979ff0f3f5d4278383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a150505050565b6000806040805190810160405280601381526020017f496e63656e7469766573436f6c6c6563746f72000000000000000000000000008152506122dc3382610c1a565b835185511415156122ec57600080fd5b600091505b84518210156125815761237a848381518110151561230b57fe5b90602001906020020151600b6000888681518110151561232757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e490919063ffffffff16565b600b6000878581518110151561238c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061245484838151811015156123e557fe5b90602001906020020151600c6000888681518110151561240157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e490919063ffffffff16565b600c6000878581518110151561246657fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124da84838151811015156124bf57fe5b90602001906020020151600a5461270f90919063ffffffff16565b600a81905550600073ffffffffffffffffffffffffffffffffffffffff16858381518110151561250657fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef868581518110151561255557fe5b906020019060200201516040518082815260200191505060405180910390a381806001019250506122f1565b60019250505092915050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61261e828261268b565b151561262957600080fd5b5050565b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008082840390508383111515156126f857fe5b8281018414151561270557fe5b8091505092915050565b600080828401905083811015151561272357fe5b8281038414151561273057fe5b8091505092915050565b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505600a165627a7a72305820ba0e4c6bef917fd3844fdbbc2b8f1592cfb850417b49257418cae2d0323ed9fa0029
Verified Source Code Partial Match
Compiler: v0.4.23+commit.124ca40d
EVM: byzantium
Optimization: No
PrimasToken.sol 246 lines
pragma solidity ^0.4.23;
library Roles {
struct Role {
mapping(address => bool) bearer;
}
function add(Role storage role, address addr) internal {
role.bearer[addr] = true;
}
function remove(Role storage role, address addr) internal {
role.bearer[addr] = false;
}
function check(Role storage role, address addr) view internal {
require(has(role, addr));
}
function has(Role storage role, address addr) view internal returns (bool) {
return role.bearer[addr];
}
}
contract RBAC {
address initialOwner;
using Roles for Roles.Role;
mapping(string => Roles.Role) private roles;
event RoleAdded(address addr, string roleName);
event RoleRemoved(address addr, string roleName);
modifier onlyOwner() {
require(msg.sender == initialOwner);
_;
}
function checkRole(address addr, string roleName) view public {
roles[roleName].check(addr);
}
function hasRole(address addr, string roleName) view public returns (bool) {
return roles[roleName].has(addr);
}
function addRole(address addr, string roleName) public onlyOwner {
roles[roleName].add(addr);
emit RoleAdded(addr, roleName);
}
function removeRole(address addr, string roleName) public onlyOwner {
roles[roleName].remove(addr);
emit RoleRemoved(addr, roleName);
}
modifier onlyRole(string roleName) {
checkRole(msg.sender, roleName);
_;
}
}
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
assert(c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b > 0);
// Solidity automatically throws when dividing by 0
uint256 c = a / b;
assert(a == b * c);
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a - b;
assert(b <= a);
assert(a == c + b);
return c;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
assert(a == c - b);
return c;
}
}
contract PrimasToken is RBAC {
using SafeMath for uint256;
string public name;
uint256 public decimals;
string public symbol;
string public version;
uint256 public totalSupply;
uint256 initialAmount;
uint256 deployTime;
uint256 lastInflationDayStart;
uint256 incentivesPool;
mapping(address => uint256) private userLockedTokens;
mapping(address => uint256) balances;
mapping(address => mapping(address => uint256)) allowed;
event Transfer(address indexed _from, address indexed _to, uint256 _value);
event Approval(address indexed _owner, address indexed _spender, uint256 _value);
event Lock(address userAddress, uint256 amount);
event Unlock(address userAddress,uint256 amount);
event Inflate (uint256 incentivesPoolValue);
constructor(uint256 _previouslyInflatedAmount) public {
name = "Primas Token";
decimals = 18;
symbol = "PST";
version = "V2.0";
initialAmount = 100000000 * 10 ** decimals;
initialOwner = msg.sender;
deployTime = block.timestamp;
lastInflationDayStart = 0;
incentivesPool = 0;
// Primas token is deployed at 2018/06/01
// When upgrading after new deployment of the contract
// we need to add the inflated tokens back
// for system consistency.
totalSupply = initialAmount.add(_previouslyInflatedAmount);
balances[msg.sender] = totalSupply;
emit Transfer(address(0), msg.sender, totalSupply);
}
function inflate() public onlyRole("InflationOperator") returns (uint256) {
uint256 currentTime = block.timestamp;
uint256 currentDayStart = currentTime / 1 days;
uint256 inflationAmount;
require(lastInflationDayStart != currentDayStart);
lastInflationDayStart = currentDayStart;
uint256 createDurationYears = (currentTime - deployTime) / 1 years;
if (createDurationYears < 1) {
inflationAmount = initialAmount / 10 / 365;
} else if (createDurationYears >= 20) {
inflationAmount = 0;
} else {
inflationAmount = initialAmount * (100 - (5 * createDurationYears)) / 365 / 1000;
}
incentivesPool = incentivesPool.add(inflationAmount);
totalSupply = totalSupply.add(inflationAmount);
emit Inflate(incentivesPool);
return incentivesPool;
}
function getIncentivesPool() view public returns (uint256) {
return incentivesPool;
}
function incentivesIn(address[] _users, uint256[] _values) public onlyRole("IncentivesCollector") returns (bool success) {
require(_users.length == _values.length);
for (uint256 i = 0; i < _users.length; i++) {
userLockedTokens[_users[i]] = userLockedTokens[_users[i]].sub(_values[i]);
balances[_users[i]] = balances[_users[i]].sub(_values[i]);
incentivesPool = incentivesPool.add(_values[i]);
emit Transfer(_users[i], address(0), _values[i]);
}
return true;
}
function incentivesOut(address[] _users, uint256[] _values) public onlyRole("IncentivesDistributor") returns (bool success) {
require(_users.length == _values.length);
for (uint256 i = 0; i < _users.length; i++) {
incentivesPool = incentivesPool.sub(_values[i]);
balances[_users[i]] = balances[_users[i]].add(_values[i]);
emit Transfer(address(0), _users[i], _values[i]);
}
return true;
}
function tokenLock(address _userAddress, uint256 _amount) public onlyRole("Locker") {
require(balanceOf(_userAddress) >= _amount);
userLockedTokens[_userAddress] = userLockedTokens[_userAddress].add(_amount);
emit Lock(_userAddress, _amount);
}
function tokenUnlock(address _userAddress, uint256 _amount, address _to, uint256 _toAmount) public onlyRole("Unlocker") {
require(_amount >= _toAmount);
require(userLockedTokens[_userAddress] >= _amount);
userLockedTokens[_userAddress] = userLockedTokens[_userAddress].sub(_amount);
emit Unlock(_userAddress, _amount);
if (_to != address(0) && _toAmount != 0) {
balances[_userAddress] = balances[_userAddress].sub(_toAmount);
balances[_to] = balances[_to].add(_toAmount);
emit Transfer(_userAddress, _to, _toAmount);
}
}
function transferAndLock(address _userAddress, address _to, uint256 _amount) public onlyRole("Locker") {
require(balanceOf(_userAddress) >= _amount);
balances[_userAddress] = balances[_userAddress].sub(_amount);
balances[_to] = balances[_to].add(_amount);
userLockedTokens[_to] = userLockedTokens[_to].add(_amount);
emit Transfer(_userAddress, _to, _amount);
emit Lock(_to, _amount);
}
function balanceOf(address _owner) view public returns (uint256 balance) {
return balances[_owner] - userLockedTokens[_owner];
}
function transfer(address _to, uint256 _value) public returns (bool success) {
require(balanceOf(msg.sender) >= _value);
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
emit Transfer(msg.sender, _to, _value);
return true;
}
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
require(balanceOf(_from) >= _value && allowed[_from][msg.sender] >= _value);
balances[_from] = balances[_from].sub(_value);
balances[_to] = balances[_to].add(_value);
allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
emit Transfer(_from, _to, _value);
return true;
}
function approve(address _spender, uint256 _value) public returns (bool success) {
allowed[msg.sender][_spender] = _value;
emit Approval(msg.sender, _spender, _value);
return true;
}
function allowance(address _owner, address _spender) constant public returns (uint256 remaining) {
return allowed[_owner][_spender];
}
}
Read Contract
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
checkRole 0x0988ca8c
decimals 0x313ce567 → uint256
getIncentivesPool 0xba6afc50 → uint256
hasRole 0x217fe6c6 → bool
name 0x06fdde03 → string
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
version 0x54fd4d50 → string
Write Contract 11 functions
These functions modify contract state and require a wallet transaction to execute.
addRole 0x7d72aa65
address addr
string roleName
approve 0x095ea7b3
address _spender
uint256 _value
returns: bool
incentivesIn 0xc669c955
address[] _users
uint256[] _values
returns: bool
incentivesOut 0xa4faf89e
address[] _users
uint256[] _values
returns: bool
inflate 0xa5a98d78
No parameters
returns: uint256
removeRole 0x1bfe0308
address addr
string roleName
tokenLock 0x8df15e19
address _userAddress
uint256 _amount
tokenUnlock 0x73201667
address _userAddress
uint256 _amount
address _to
uint256 _toAmount
transfer 0xa9059cbb
address _to
uint256 _value
returns: bool
transferAndLock 0xbe30eda8
address _userAddress
address _to
uint256 _amount
transferFrom 0x23b872dd
address _from
address _to
uint256 _value
returns: bool
Recent Transactions
No transactions found for this address