Admin Key Protocols

This document outlines what powers the superuser posses and in what circumstances those powers would be used

The team / superuser is compelled to implement changes to the contract based on the outcome of a community vote regardless if the individual in control of the contract agrees with the vote outcome or not.

There is a Pawthereum token contract on the Ethereum network and a Pawthereum token contract on the BNB network. Each contract has functions that can only be executed by the contract owner. This document outlines what those functions are, what the functions do, and when the functions would be called.

Ethereum Contract

  • setMarketingFee(uint256)

    • The owner can change the amount of tokens sent to the marketing wallet on each transaction.
    • Due to the immutability of the contract’s code, the owner can never set this fee higher than 2%
    • This function would only be called as the result of a vote to change the transaction fee
  • setLiquidityFee(uint256)

    • The owner can change the amount of tokens sent to the token contract on each transaction of which half will be swapped to Ethereum and the other half will be paired with that Ethereum when added to the Pawth/ETH liquidity pool
    • Due to the immutability of the contract’s code, the owner can never set this fee higher than 2%
    • This function would only be called as the result of a vote to change the transaction fee
  • setMaxTxAmount(uint256)

    • The owner can change the maximum amount of tokens that can be transferred in a single transaction.
    • The maximum transaction amount is set to the total supply of Pawthereum. There is no foreseeable reason to change this amount. Future versions of Pawthereum will likely not include this function.
  • setMinTokensBeforeSwap(uint256)

    • The owner can change the threshold for initiating swapAndLiquify. Once this threshold is met, the contract will sell half of the tokens in its possession for Ethereum and then pair the other half of the tokens to add to the Pawthereum/ETH liquidity pool on Uniswap v2.
    • This function would be called if the value of Pawthereum drastically changed – if Pawthereum’s value was very high, we may want to lower the threshold in order to have smaller sells when adding liquidity automatically.
  • setTaxFee(uint256)

    • The owner can change the amount of tokens reflected to holders on each transaction.
    • Due to the immutability of the contract’s code, the owner can never set this fee higher than 2%
    • This function would only be called as the result of a vote to change the transaction fee
  • setCharityFee(uint256)

    • The owner can change the amount of tokens sent to the charity wallet on each transaction.
    • Due to the immutability of the contract’s code, the owner can never set this fee higher than 2%
    • This function would only be called as the result of a vote to change the transaction fee
  • excludeAccount(address)

    • The owner can exclude an account from receiving reflections
    • This function is only called for addresses such as marketing wallets, charity wallets, and liquidity pair contracts to benefit holders.
  • includeAccount(address)

    • The owner can include an account to receive reflections if it was previously excluded
    • This function is only called in the event that excludeAccount was called erroneously
  • setPair(address)

    • The owner can change the uniswap V2 pair address that is checked before executing a swapAndLiquify
    • This function would only be called if a new LP was created and used as the primary LP for Pawthereum
  • setMarketingWallet(address)

    • The owner can change the address where marketing funds are sent with each transaction
    • This function would be called in the event that the marketing wallet needed to be changed
  • setCharityWallet(address)

    • The owner can change the address where marketing funds are sent with each transaction
    • This function would be called in the event that the marketing wallet needed to be changed
  • setTaxless(address)

    • The owner can preclude an account from incurring taxes when transferring the token
    • This function would be called for accounts such as accounts controlled by the project team that make donations or seed liquidity
  • setSwapAndLiquifyEnabled(bool)

    • The owner can toggle whether or not the contract automatically adds liquidity to uniswap when the minTokensBeforeSwap threshold is reached
    • This function would only be called as the result of a vote to change the transaction structures
  • setTaxActive(bool)

    • The owner can turn transaction taxes off for everyone
    • This function would only be called in the event where liquidity would need to be seeded or unseeded because liquidity transactions can be extremely large and are subject to taxes (even for taxless accounts due to the way the contract is coded)
  • transferOwnership(address)

    • Sets the owner of the contract to the specified address
    • This function would be called if there was a need to change the owner of the contract
  • renounceOwnership

    • Sets the owner of the contract to the dead address and would only be called if there was a good reason to forever relinquish control of the contract.

BNB Contract

The BNB contract includes all of the functions in the Ethereum contract with a caveat: While individual taxes are not bound to the 2% limit as in the Ethereum contract, the sum of all taxes is capped at 12% (which in essence is the same limit on Ethereum if all taxes were to be set to their max value)

  • initLp(payableAmount)

    • Initializes the LP on the BNB chain and sets the LP tax to 90% (as an anti-snipe measure). This function can only be called once - it was called when the LP was created and it will fail for anyone in subsequent attempts
  • setAutomatedMarketMakerPair(address, bool)

    • Designates an address as an LP address which is then used to determine if a transaction is a buy or a sell
    • This function would only be called if a new LP is created on the BNB chain
  • setLpTokenHolder (address)

    • Set the address that should receive LP tokens when the contract automatically adds liquidity to the LP
    • This function would be changed if there was a need to hold LP tokens in a specific place

*setPurr(bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)

  • Temporarily change the taxes for buying and selling pawth. The owner can never set a tax limit above 12% for buys or sells

  • This function is meant to be used for special occasions and community events to put pawthereum “on sale” by lowering buy taxes

  • setRouterAddress(address)

    • Change the uniswapV2 router used for swapAndLiquify
    • This function would be called if there was a need to switch the LP that was being used by swapAndLiquify (such as a pancakeswap migration)
  • setStakingWallet(address)

    • Change the address that receives the staking tax
    • This function would be called in the event that the staking wallet needed to be changed
  • setSwapAndLiquifyCharity(bool)

    • When enabled, the contract will send the charity wallet BNB that it received during swapAndLiquify
    • This function would be used if there was a need to send the charity wallet PAWTH instead of BNB
  • setSwapAndLiquifyMarketing(bool)

    • When enabled, the contract will send the marketing wallet BNB that it received during swapAndLiquify
    • This function would be used if there was a need to send the marketing wallet PAWTH instead of BNB
  • withdrawEthToOwner(uint256)

    • Withdraws the specified amount of BNB from the contract to the owner address
    • This function would be called in the event that BNB got trapped in the contract (this has happened in the ETH contract before)
  • withdrawTokenToOwner(address, uint256)

    • Withdraws the specified amount of the ERC-20 compatible token defined by the address to the owner
    • This function would be called in the event that PAWTH got trapped in the contract (this has happened in the ETH contract before and triggered a massive swapAndLiquify)