Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 10 from a total of 10 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Batch Single Amo... | 5984657 | 2812 days ago | IN | 0 ETH | 0.00013768 | ||||
| Batch Single Amo... | 5984657 | 2812 days ago | IN | 0 ETH | 0.00013749 | ||||
| Batch Single Amo... | 5984649 | 2812 days ago | IN | 0 ETH | 0.00018249 | ||||
| Batch Single Amo... | 5984639 | 2812 days ago | IN | 0 ETH | 0.00018249 | ||||
| Batch Single Amo... | 5984638 | 2812 days ago | IN | 0 ETH | 0.00018249 | ||||
| Batch Single Amo... | 5984623 | 2812 days ago | IN | 0 ETH | 0.00018229 | ||||
| Batch Single Amo... | 5984617 | 2812 days ago | IN | 0 ETH | 0.00018249 | ||||
| Batch Single Amo... | 5984603 | 2812 days ago | IN | 0 ETH | 0.00205938 | ||||
| Batch Single Amo... | 5973270 | 2814 days ago | IN | 0 ETH | 0.00572617 | ||||
| Batch Single Amo... | 5775606 | 2848 days ago | IN | 0 ETH | 0.00392394 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
PPNAirdrop
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2018-06-12
*/
pragma solidity ^0.4.18;
contract PPNAirdrop {
/**
* @dev Air drop Public Variables
*/
address public admin;
PolicyPalNetworkToken public token;
using SafeMath for uint256;
/**
* @dev Token Contract Modifier
* Check if only admin
*
*/
modifier onlyAdmin() {
require(msg.sender == admin);
_;
}
/**
* @dev Token Contract Modifier
* Check if valid address
*
* @param _addr - The address to check
*
*/
modifier validAddress(address _addr) {
require(_addr != address(0x0));
require(_addr != address(this));
_;
}
/**
* @dev Token Contract Modifier
* Check if the batch transfer amount is
* equal or more than balance
* (For single batch amount)
*
* @param _recipients - The recipients to send
* @param _amount - The amount to send
*
*/
modifier validBalance(address[] _recipients, uint256 _amount) {
// Assert balance
uint256 balance = token.balanceOf(this);
require(balance > 0);
require(balance >= _recipients.length.mul(_amount));
_;
}
/**
* @dev Token Contract Modifier
* Check if the batch transfer amount is
* equal or more than balance
* (For multiple batch amounts)
*
* @param _recipients - The recipients to send
* @param _amounts - The amounts to send
*
*/
modifier validBalanceMultiple(address[] _recipients, uint256[] _amounts) {
// Assert balance
uint256 balance = token.balanceOf(this);
require(balance > 0);
uint256 totalAmount;
for (uint256 i = 0 ; i < _recipients.length ; i++) {
totalAmount = totalAmount.add(_amounts[i]);
}
require(balance >= totalAmount);
_;
}
/**
* @dev Airdrop Contract Constructor
* @param _token - PPN Token address
* @param _adminAddr - Address of the Admin
*/
function PPNAirdrop(
PolicyPalNetworkToken _token,
address _adminAddr
)
public
validAddress(_adminAddr)
validAddress(_token)
{
// Assign addresses
admin = _adminAddr;
token = _token;
}
/**
* @dev TokenDrop Event
*/
event TokenDrop(address _receiver, uint _amount);
/**
* @dev batch Air Drop by single amount
* @param _recipients - Address of the recipient
* @param _amount - Amount to transfer used in this batch
*/
function batchSingleAmount(address[] _recipients, uint256 _amount) external
onlyAdmin
validBalance(_recipients, _amount)
{
// Loop through all recipients
for (uint256 i = 0 ; i < _recipients.length ; i++) {
address recipient = _recipients[i];
// Transfer amount
assert(token.transfer(recipient, _amount));
// TokenDrop event
TokenDrop(recipient, _amount);
}
}
/**
* @dev batch Air Drop by multiple amount
* @param _recipients - Address of the recipient
* @param _amounts - Amount to transfer used in this batch
*/
function batchMultipleAmount(address[] _recipients, uint256[] _amounts) external
onlyAdmin
validBalanceMultiple(_recipients, _amounts)
{
// Loop through all recipients
for (uint256 i = 0 ; i < _recipients.length ; i++) {
address recipient = _recipients[i];
uint256 amount = _amounts[i];
// Transfer amount
assert(token.transfer(recipient, amount));
// TokenDrop event
TokenDrop(recipient, amount);
}
}
/**
* @dev Air drop single amount
* @param _recipient - Address of the recipient
* @param _amount - Amount to drain
*/
function airdropSingleAmount(address _recipient, uint256 _amount) external
onlyAdmin
{
assert(_amount <= token.balanceOf(this));
assert(token.transfer(_recipient, _amount));
}
}
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
*/
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;
}
/**
* @dev Integer division of two numbers, truncating the quotient.
*/
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 + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
/**
* @dev Adds two numbers, throws on overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
function Ownable() public {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
*/
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0));
OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
contract ERC20Basic {
function totalSupply() public view returns (uint256);
function balanceOf(address who) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
}
contract BasicToken is ERC20Basic {
using SafeMath for uint256;
mapping(address => uint256) balances;
uint256 totalSupply_;
/**
* @dev total number of tokens in existence
*/
function totalSupply() public view returns (uint256) {
return totalSupply_;
}
/**
* @dev transfer token for a specified address
* @param _to The address to transfer to.
* @param _value The amount to be transferred.
*/
function transfer(address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[msg.sender]);
// SafeMath.sub will throw if there is not enough balance.
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
Transfer(msg.sender, _to, _value);
return true;
}
/**
* @dev Gets the balance of the specified address.
* @param _owner The address to query the the balance of.
* @return An uint256 representing the amount owned by the passed address.
*/
function balanceOf(address _owner) public view returns (uint256 balance) {
return balances[_owner];
}
}
contract BurnableToken is BasicToken {
event Burn(address indexed burner, uint256 value);
/**
* @dev Burns a specific amount of tokens.
* @param _value The amount of token to be burned.
*/
function burn(uint256 _value) public {
require(_value <= balances[msg.sender]);
// no need to require value <= totalSupply, since that would imply the
// sender's balance is greater than the totalSupply, which *should* be an assertion failure
address burner = msg.sender;
balances[burner] = balances[burner].sub(_value);
totalSupply_ = totalSupply_.sub(_value);
Burn(burner, _value);
}
}
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender) public view returns (uint256);
function transferFrom(address from, address to, uint256 value) public returns (bool);
function approve(address spender, uint256 value) public returns (bool);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
contract StandardToken is ERC20, BasicToken {
mapping (address => mapping (address => uint256)) internal allowed;
/**
* @dev Transfer tokens from one address to another
* @param _from address The address which you want to send tokens from
* @param _to address The address which you want to transfer to
* @param _value uint256 the amount of tokens to be transferred
*/
function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[_from]);
require(_value <= allowed[_from][msg.sender]);
balances[_from] = balances[_from].sub(_value);
balances[_to] = balances[_to].add(_value);
allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
Transfer(_from, _to, _value);
return true;
}
/**
* @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
*
* Beware that changing an allowance with this method brings the risk that someone may use both the old
* and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
* race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
* @param _spender The address which will spend the funds.
* @param _value The amount of tokens to be spent.
*/
function approve(address _spender, uint256 _value) public returns (bool) {
allowed[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value);
return true;
}
/**
* @dev Function to check the amount of tokens that an owner allowed to a spender.
* @param _owner address The address which owns the funds.
* @param _spender address The address which will spend the funds.
* @return A uint256 specifying the amount of tokens still available for the spender.
*/
function allowance(address _owner, address _spender) public view returns (uint256) {
return allowed[_owner][_spender];
}
/**
* @dev Increase the amount of tokens that an owner allowed to a spender.
*
* approve should be called when allowed[_spender] == 0. To increment
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param _spender The address which will spend the funds.
* @param _addedValue The amount of tokens to increase the allowance by.
*/
function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
/**
* @dev Decrease the amount of tokens that an owner allowed to a spender.
*
* approve should be called when allowed[_spender] == 0. To decrement
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param _spender The address which will spend the funds.
* @param _subtractedValue The amount of tokens to decrease the allowance by.
*/
function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
uint oldValue = allowed[msg.sender][_spender];
if (_subtractedValue > oldValue) {
allowed[msg.sender][_spender] = 0;
} else {
allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
}
Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
}
contract PolicyPalNetworkToken is StandardToken, BurnableToken, Ownable {
/**
* @dev Token Contract Constants
*/
string public constant name = "PolicyPal Network Token";
string public constant symbol = "PAL";
uint8 public constant decimals = 18;
/**
* @dev Token Contract Public Variables
*/
address public tokenSaleContract;
bool public isTokenTransferable = false;
/**
* @dev Token Contract Modifier
*
* Check if a transfer is allowed
* Transfers are restricted to token creator & owner(admin) during token sale duration
* Transfers after token sale is limited by `isTokenTransferable` toggle
*
*/
modifier onlyWhenTransferAllowed() {
require(isTokenTransferable || msg.sender == owner || msg.sender == tokenSaleContract);
_;
}
/**
* @dev Token Contract Modifier
* @param _to - Address to check if valid
*
* Check if an address is valid
* A valid address is as follows,
* 1. Not zero address
* 2. Not token address
*
*/
modifier isValidDestination(address _to) {
require(_to != address(0x0));
require(_to != address(this));
_;
}
/**
* @dev Enable Transfers (Only Owner)
*/
function toggleTransferable(bool _toggle) external
onlyOwner
{
isTokenTransferable = _toggle;
}
/**
* @dev Token Contract Constructor
* @param _adminAddr - Address of the Admin
*/
function PolicyPalNetworkToken(
uint _tokenTotalAmount,
address _adminAddr
)
public
isValidDestination(_adminAddr)
{
require(_tokenTotalAmount > 0);
totalSupply_ = _tokenTotalAmount;
// Mint all token
balances[msg.sender] = _tokenTotalAmount;
Transfer(address(0x0), msg.sender, _tokenTotalAmount);
// Assign token sale contract to creator
tokenSaleContract = msg.sender;
// Transfer contract ownership to admin
transferOwnership(_adminAddr);
}
/**
* @dev Token Contract transfer
* @param _to - Address to transfer to
* @param _value - Value to transfer
* @return bool - Result of transfer
* "Overloaded" Function of ERC20Basic's transfer
*
*/
function transfer(address _to, uint256 _value) public
onlyWhenTransferAllowed
isValidDestination(_to)
returns (bool)
{
return super.transfer(_to, _value);
}
/**
* @dev Token Contract transferFrom
* @param _from - Address to transfer from
* @param _to - Address to transfer to
* @param _value - Value to transfer
* @return bool - Result of transferFrom
*
* "Overloaded" Function of ERC20's transferFrom
* Added with modifiers,
* 1. onlyWhenTransferAllowed
* 2. isValidDestination
*
*/
function transferFrom(address _from, address _to, uint256 _value) public
onlyWhenTransferAllowed
isValidDestination(_to)
returns (bool)
{
return super.transferFrom(_from, _to, _value);
}
/**
* @dev Token Contract burn
* @param _value - Value to burn
* "Overloaded" Function of BurnableToken's burn
*/
function burn(uint256 _value)
public
{
super.burn(_value);
Transfer(msg.sender, address(0x0), _value);
}
/**
* @dev Token Contract Emergency Drain
* @param _token - Token to drain
* @param _amount - Amount to drain
*/
function emergencyERC20Drain(ERC20 _token, uint256 _amount) public
onlyOwner
{
_token.transfer(owner, _amount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"_recipient","type":"address"},{"name":"_amount","type":"uint256"}],"name":"airdropSingleAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_recipients","type":"address[]"},{"name":"_amounts","type":"uint256[]"}],"name":"batchMultipleAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_recipients","type":"address[]"},{"name":"_amount","type":"uint256"}],"name":"batchSingleAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_token","type":"address"},{"name":"_adminAddr","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_receiver","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"TokenDrop","type":"event"}]Contract Creation Code
6060604052341561000f57600080fd5b6040516040806107ff83398101604052808051919060200180519150819050600160a060020a038116151561004357600080fd5b30600160a060020a031681600160a060020a03161415151561006457600080fd5b82600160a060020a038116151561007a57600080fd5b30600160a060020a031681600160a060020a03161415151561009b57600080fd5b505060008054600160a060020a03928316600160a060020a03199182161790915560018054939092169216919091179055610724806100db6000396000f3006060604052600436106100535763ffffffff60e060020a600035041663b3a06e758114610058578063c44798121461007c578063f851a440146100a6578063fc0c546a146100d5578063fd282afe146100e8575b600080fd5b341561006357600080fd5b61007a600160a060020a036004351660243561010a565b005b341561008757600080fd5b61007a6024600480358281019290820135918135918201910135610228565b34156100b157600080fd5b6100b961049d565b604051600160a060020a03909116815260200160405180910390f35b34156100e057600080fd5b6100b96104ac565b34156100f357600080fd5b61007a6024600480358281019291013590356104bb565b60005433600160a060020a0390811691161461012557600080fd5b600154600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561017e57600080fd5b6102c65a03f1151561018f57600080fd5b505050604051805182111590506101a257fe5b600154600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561020157600080fd5b6102c65a03f1151561021257600080fd5b50505060405180519050151561022457fe5b5050565b600080548190819033600160a060020a0390811691161461024857600080fd5b868680806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050858580806020026020016040519081016040528093929190818152602001838360200280828437505060015460009450849350839250600160a060020a031690506370a0823130836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561030557600080fd5b6102c65a03f1151561031657600080fd5b50505060405180519350506000831161032e57600080fd5b5060005b845181101561036b5761036184828151811061034a57fe5b90602001906020020151839063ffffffff6106b316565b9150600101610332565b8183101561037857600080fd5b600097505b8a88101561048f578b8b8981811061039157fe5b90506020020135600160a060020a0316965089898981811015156103b157fe5b60015460209091029290920135975050600160a060020a031663a9059cbb888860006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561041d57600080fd5b6102c65a03f1151561042e57600080fd5b50505060405180519050151561044057fe5b7fb88903f74059b09b78248a0df6ba49200ca616f185ca84aca28d3e74e754ab868787604051600160a060020a03909216825260208201526040908101905180910390a160019097019661037d565b505050505050505050505050565b600054600160a060020a031681565b600154600160a060020a031681565b60008054819033600160a060020a039081169116146104d957600080fd5b848480806020026020016040519081016040528093929190818152602001838360200280828437505060015488945060009350600160a060020a031691506370a08231905030836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561056557600080fd5b6102c65a03f1151561057657600080fd5b50505060405180519150506000811161058e57600080fd5b6105a08284519063ffffffff6106cd16565b8110156105ac57600080fd5b600094505b868510156106a9578787868181106105c557fe5b600154600160a060020a03602090920293909301358116965091909116905063a9059cbb858860006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561063757600080fd5b6102c65a03f1151561064857600080fd5b50505060405180519050151561065a57fe5b7fb88903f74059b09b78248a0df6ba49200ca616f185ca84aca28d3e74e754ab868487604051600160a060020a03909216825260208201526040908101905180910390a16001909401936105b1565b5050505050505050565b6000828201838110156106c257fe5b8091505b5092915050565b6000808315156106e057600091506106c6565b508282028284828115156106f057fe5b04146106c257fe00a165627a7a723058204104589ccb5427990b5c78fba8998a0347666d58938d0bd62ed40e4ede674f5b0029000000000000000000000000fedae5642668f8636a11987ff386bfd215f942ee0000000000000000000000003aac1359e01e8ab19b74a27dd52f2fb0ca03fab4
Deployed Bytecode
0x6060604052600436106100535763ffffffff60e060020a600035041663b3a06e758114610058578063c44798121461007c578063f851a440146100a6578063fc0c546a146100d5578063fd282afe146100e8575b600080fd5b341561006357600080fd5b61007a600160a060020a036004351660243561010a565b005b341561008757600080fd5b61007a6024600480358281019290820135918135918201910135610228565b34156100b157600080fd5b6100b961049d565b604051600160a060020a03909116815260200160405180910390f35b34156100e057600080fd5b6100b96104ac565b34156100f357600080fd5b61007a6024600480358281019291013590356104bb565b60005433600160a060020a0390811691161461012557600080fd5b600154600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561017e57600080fd5b6102c65a03f1151561018f57600080fd5b505050604051805182111590506101a257fe5b600154600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561020157600080fd5b6102c65a03f1151561021257600080fd5b50505060405180519050151561022457fe5b5050565b600080548190819033600160a060020a0390811691161461024857600080fd5b868680806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050858580806020026020016040519081016040528093929190818152602001838360200280828437505060015460009450849350839250600160a060020a031690506370a0823130836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561030557600080fd5b6102c65a03f1151561031657600080fd5b50505060405180519350506000831161032e57600080fd5b5060005b845181101561036b5761036184828151811061034a57fe5b90602001906020020151839063ffffffff6106b316565b9150600101610332565b8183101561037857600080fd5b600097505b8a88101561048f578b8b8981811061039157fe5b90506020020135600160a060020a0316965089898981811015156103b157fe5b60015460209091029290920135975050600160a060020a031663a9059cbb888860006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561041d57600080fd5b6102c65a03f1151561042e57600080fd5b50505060405180519050151561044057fe5b7fb88903f74059b09b78248a0df6ba49200ca616f185ca84aca28d3e74e754ab868787604051600160a060020a03909216825260208201526040908101905180910390a160019097019661037d565b505050505050505050505050565b600054600160a060020a031681565b600154600160a060020a031681565b60008054819033600160a060020a039081169116146104d957600080fd5b848480806020026020016040519081016040528093929190818152602001838360200280828437505060015488945060009350600160a060020a031691506370a08231905030836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561056557600080fd5b6102c65a03f1151561057657600080fd5b50505060405180519150506000811161058e57600080fd5b6105a08284519063ffffffff6106cd16565b8110156105ac57600080fd5b600094505b868510156106a9578787868181106105c557fe5b600154600160a060020a03602090920293909301358116965091909116905063a9059cbb858860006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561063757600080fd5b6102c65a03f1151561064857600080fd5b50505060405180519050151561065a57fe5b7fb88903f74059b09b78248a0df6ba49200ca616f185ca84aca28d3e74e754ab868487604051600160a060020a03909216825260208201526040908101905180910390a16001909401936105b1565b5050505050505050565b6000828201838110156106c257fe5b8091505b5092915050565b6000808315156106e057600091506106c6565b508282028284828115156106f057fe5b04146106c257fe00a165627a7a723058204104589ccb5427990b5c78fba8998a0347666d58938d0bd62ed40e4ede674f5b0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000fedae5642668f8636a11987ff386bfd215f942ee0000000000000000000000003aac1359e01e8ab19b74a27dd52f2fb0ca03fab4
-----Decoded View---------------
Arg [0] : _token (address): 0xfeDAE5642668f8636A11987Ff386bfd215F942EE
Arg [1] : _adminAddr (address): 0x3aaC1359e01e8aB19B74A27Dd52f2Fb0Ca03fab4
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000fedae5642668f8636a11987ff386bfd215f942ee
Arg [1] : 0000000000000000000000003aac1359e01e8ab19b74a27dd52f2fb0ca03fab4
Swarm Source
bzzr://4104589ccb5427990b5c78fba8998a0347666d58938d0bd62ed40e4ede674f5b
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.