CustomToken

0x2ba854c26908142dd0564907d1f76803472cb682

Verification
Verified
v0.8.20+commit.a1b79de6
Type
Contract
7,082 bytes
ABI entries
57
22 read · 23 write
License
mit

Contract information

Address
0x2ba854c26908142dd0564907d1f76803472cb682
Chain
Robinhood Chain (4663)
Compiler
v0.8.20+commit.a1b79de6
Optimization
Enabled
Creation tx
0x81477a2bc3…4ac191726b

Token

Name
PONSHIB
Symbol
PONSHIB
Decimals
18
Holders
1

Read contract (22)

BUILD_ID()bytes32
allowance(address, address)uint256
antiBotBlokker()uint256
balanceOf(address)uint256
decimals()uint8
erPar(address)bool
handelAktivert()bool
hentInfo()string, string, uint256, uint256, address, bool, uint256, uint256, uint256, uint256, uint256
hviteliste(address)bool
maksLommebokBelop()uint256
maksTilbud()uint256
maksTxBelop()uint256
name()string
owner()address
pendingOwner()address
salgPauset()bool
sisteTxTid(address)uint256
startBlokk()uint256
svarteliste(address)bool
symbol()string
totalSupply()uint256
ventetidSekunder()uint256

Events (10)

ApprovalBrentEierskapOverforingStartetEierskapOverfortHandelAktivertHvitelisteOppdatertParOppdatertPregetSvartelisteOppdatertTransfer

ABI

[
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "name_",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "symbol_",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "startTilbud_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maksTilbud_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maksTxProsent_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maksLommebokProsent_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "antiBotBlokker_",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "fra",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "belop",
        "type": "uint256"
      }
    ],
    "name": "Brent",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "forrige",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "neste",
        "type": "address"
      }
    ],
    "name": "EierskapOverforingStartet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "forrige",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "neste",
        "type": "address"
      }
    ],
    "name": "EierskapOverfort",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "vedBlokk",
        "type": "uint256"
      }
    ],
    "name": "HandelAktivert",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "adresse",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "status",
        "type": "bool"
      }
    ],
    "name": "HvitelisteOppdatert",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "par",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "status",
        "type": "bool"
      }
    ],
    "name": "ParOppdatert",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "til",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "belop",
        "type": "uint256"
      }
    ],
    "name": "Preget",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "adresse",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "status",
        "type": "bool"
      }
    ],
    "name": "SvartelisteOppdatert",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "BUILD_ID",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "acceptOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "aktiverHandel",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "eier_",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "fullmektig",
        "type": "address"
      }
    ],
    "name": "allowance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "antiBotBlokker",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "belop",
        "type": "uint256"
      }
    ],
    "name": "brenn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fra",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "belop",
        "type": "uint256"
      }
    ],
    "name": "brennFra",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "deaktiverHandel",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "decimals",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "erPar",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "gjenopprettEth",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tokenAdresse",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "belop",
        "type": "uint256"
      }
    ],
    "name": "gjenopprettToken",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "handelAktivert",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "hentInfo",
    "outputs": [
      {
        "internalType": "string",
        "name": "_name",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "_symbol",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "_totalSupply",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_maxSupply",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_owner",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "_trading",
        "type": "bool"
      },
      {
        "internalType": "uint256",
        "name": "_launchBlock",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_antiBotBlocks",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_cooldown",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_maxTx",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_maxWallet",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "hviteliste",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maksLommebokBelop",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maksTilbud",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maksTxBelop",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pendingOwner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "til",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "belop",
        "type": "uint256"
      }
    ],
    "name": "preg",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "salgPauset",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "blokker_",
        "type": "uint256"
      }
    ],
    "name": "settAntiBotBlokker",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "adresse",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "status",
        "type": "bool"
      }
    ],
    "name": "settHviteliste",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "adresser",
        "type": "address[]"
      },
      {
        "internalType": "bool",
        "name": "status",
        "type": "bool"
      }
    ],
    "name": "settHvitelisteMasse",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "belop_",
        "type": "uint256"
      }
    ],
    "name": "settMaksLommebok",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "belop_",
        "type": "uint256"
      }
    ],
    "name": "settMaksTx",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "par_",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "status_",
        "type": "bool"
      }
    ],
    "name": "settPar",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "adresse",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "status",
        "type": "bool"
      }
    ],
    "name": "settSvarteliste",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "adresser",
        "type": "address[]"
      },
      {
        "internalType": "bool",
        "name": "status",
        "type": "bool"
      }
    ],
    "name": "settSvartelisteMasse",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "sekunder_",
        "type": "uint256"
      }
    ],
    "name": "settVentetid",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "sisteTxTid",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "status",
        "type": "bool"
      }
    ],
    "name": "sperrSalg",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "startBlokk",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "svarteliste",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "transfer",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "nyEier",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "ventetidSekunder",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "stateMutability": "payable",
    "type": "receive"
  }
]

Source code

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

contract CustomToken {
    bytes32 public constant BUILD_ID = 0x4383aaaae666b92ed241e3cb715182abb8eff9854776737d4c81cca9668eb453;


    string  public name;
    string  public symbol;
    uint8   public constant decimals = 18;
    uint256 public totalSupply;
    uint256 public maksTilbud;

    mapping(address => uint256)                     private _saldo;
    mapping(address => mapping(address => uint256)) private _tillatelser;

    address public owner;
    address public pendingOwner;

    mapping(address => bool) public erPar;
    mapping(address => bool) public svarteliste;
    mapping(address => bool) public hviteliste;
    mapping(address => uint256) public sisteTxTid;

    bool    public handelAktivert;
    bool    public  salgPauset;
    uint256 public startBlokk;
    uint256 public antiBotBlokker  = 3;
    uint256 public ventetidSekunder = 0;
    uint256 public maksTxBelop;
    uint256 public maksLommebokBelop;

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event EierskapOverforingStartet(address indexed forrige, address indexed neste);
    event EierskapOverfort(address indexed forrige, address indexed neste);
    event HandelAktivert(uint256 vedBlokk);
    event SvartelisteOppdatert(address indexed adresse, bool status);
    event HvitelisteOppdatert(address indexed adresse, bool status);
    event ParOppdatert(address indexed par, bool status);
    event Preget(address indexed til, uint256 belop);
    event Brent(address indexed fra, uint256 belop);

    modifier kunEier() {
        require(msg.sender == owner, "ikke eieren");
        _;
    }

    constructor(
        string  memory name_,
        string  memory symbol_,
        uint256 startTilbud_,
        uint256 maksTilbud_,
        uint256 maksTxProsent_,
        uint256 maksLommebokProsent_,
        uint256 antiBotBlokker_
    ) {
        name   = name_;
        symbol = symbol_;
        owner  = msg.sender;
        antiBotBlokker = antiBotBlokker_;

        hviteliste[msg.sender]    = true;
        hviteliste[address(this)] = true;
        _fyllHviteliste();

        // Uniswap V4 PoolManager (Robinhood) — token gaar HIT ved salg => merk som "par"
        erPar[0x8366a39CC670B4001A1121B8F6A443A643e40951] = true;

        uint256 startWei = startTilbud_ * 10 ** 18;

        maksTilbud = maksTilbud_ > 0 ? maksTilbud_ * 10 ** 18 : type(uint256).max;
        require(maksTilbud >= startWei, "maksTilbud < startTilbud");

        _preg(msg.sender, startWei);

        maksTxBelop       = maksTxProsent_       > 0 ? startWei * maksTxProsent_       / 10000 : type(uint256).max;
        maksLommebokBelop = maksLommebokProsent_ > 0 ? startWei * maksLommebokProsent_ / 10000 : type(uint256).max;
    }

    function balanceOf(address account) public view returns (uint256) {
        return _saldo[account];
    }

    function allowance(address eier_, address fullmektig) public view returns (uint256) {
        return _tillatelser[eier_][fullmektig];
    }

    function transfer(address to, uint256 amount) public returns (bool) {
        _overfor(msg.sender, to, amount);
        return true;
    }

    function approve(address spender, uint256 amount) public returns (bool) {
        _tillatelser[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address from, address to, uint256 amount) public returns (bool) {
        uint256 tillatt = _tillatelser[from][msg.sender];
        if (tillatt != type(uint256).max) {
            require(tillatt >= amount, "utilstrekkelig tillatelse");
            _tillatelser[from][msg.sender] = tillatt - amount;
        }
        _overfor(from, to, amount);
        return true;
    }

    function _overfor(address avsender, address mottaker, uint256 belop) internal {
        require(avsender != address(0) && mottaker != address(0), "nulladresse");
        require(_saldo[avsender] >= belop, "utilstrekkelig saldo");
        require(!svarteliste[avsender], "avsender svartelistet");
        require(!svarteliste[mottaker], "mottaker svartelistet");

        bool erKjop = erPar[avsender];
        bool erSalg = erPar[mottaker];
        bool erFritatt = hviteliste[avsender] || hviteliste[mottaker];

        if (erSalg && salgPauset) {
            require(hviteliste[avsender], "pauset");
        }

        if (!erFritatt) {
            require(handelAktivert, "handel deaktivert");

            if (erKjop && startBlokk > 0 && block.number <= startBlokk + antiBotBlokker) {
                svarteliste[mottaker] = true;
                emit SvartelisteOppdatert(mottaker, true);
            }

            if (ventetidSekunder > 0) {
                require(block.timestamp >= sisteTxTid[avsender] + ventetidSekunder, "ventetid aktiv");
                sisteTxTid[avsender] = block.timestamp;
            }

            if (maksTxBelop < type(uint256).max) {
                require(belop <= maksTxBelop, "overskrider maksTx");
            }

            if (!erSalg && maksLommebokBelop < type(uint256).max) {
                require(_saldo[mottaker] + belop <= maksLommebokBelop, "overskrider maksLommebok");
            }
        }

        _saldo[avsender] -= belop;
        _saldo[mottaker] += belop;
        emit Transfer(avsender, mottaker, belop);
    }

    function _preg(address til, uint256 belop) internal {
        require(totalSupply + belop <= maksTilbud, "overskrider maksTilbud");
        totalSupply    += belop;
        _saldo[til]    += belop;
        emit Transfer(address(0), til, belop);
    }

    function _fyllHviteliste() private {

    }

    function aktiverHandel() external kunEier {
        require(!handelAktivert, "allerede aktivert");
        handelAktivert = true;
        startBlokk     = block.number;
        emit HandelAktivert(block.number);
    }

    function deaktiverHandel() external kunEier {
        handelAktivert = false;
    }

    function sperrSalg(bool status) external kunEier {
        salgPauset = status;
    }

    function settPar(address par_, bool status_) external kunEier {
        require(par_ != address(0), "nulladresse");
        erPar[par_]      = status_;
        hviteliste[par_] = status_;
        emit ParOppdatert(par_, status_);
    }

    function settMaksTx(uint256 belop_) external kunEier {
        require(belop_ == 0 || belop_ >= totalSupply / 1000, "minst 0.1%");
        maksTxBelop = belop_ == 0 ? type(uint256).max : belop_;
    }

    function settMaksLommebok(uint256 belop_) external kunEier {
        require(belop_ == 0 || belop_ >= totalSupply / 1000, "minst 0.1%");
        maksLommebokBelop = belop_ == 0 ? type(uint256).max : belop_;
    }

    function settAntiBotBlokker(uint256 blokker_) external kunEier {
        antiBotBlokker = blokker_;
    }

    function settVentetid(uint256 sekunder_) external kunEier {
        require(sekunder_ <= 300, "maksimalt 300s");
        ventetidSekunder = sekunder_;
    }

    function settSvarteliste(address adresse, bool status) external kunEier {
        require(adresse != owner, "eier kan ikke svartelistes");
        svarteliste[adresse] = status;
        emit SvartelisteOppdatert(adresse, status);
    }

    function settSvartelisteMasse(address[] calldata adresser, bool status) external kunEier {
        for (uint256 i = 0; i < adresser.length; i++) {
            if (adresser[i] != owner) {
                svarteliste[adresser[i]] = status;
                emit SvartelisteOppdatert(adresser[i], status);
            }
        }
    }

    function settHviteliste(address adresse, bool status) external kunEier {
        hviteliste[adresse] = status;
        emit HvitelisteOppdatert(adresse, status);
    }

    function settHvitelisteMasse(address[] calldata adresser, bool status) external kunEier {
        for (uint256 i = 0; i < adresser.length; i++) {
            hviteliste[adresser[i]] = status;
            emit HvitelisteOppdatert(adresser[i], status);
        }
    }

    function preg(address til, uint256 belop) external kunEier {
        _preg(til, belop);
        emit Preget(til, belop);
    }

    function brenn(uint256 belop) external {
        require(_saldo[msg.sender] >= belop, "utilstrekkelig saldo");
        _saldo[msg.sender] -= belop;
        totalSupply        -= belop;
        emit Transfer(msg.sender, address(0), belop);
        emit Brent(msg.sender, belop);
    }

    function brennFra(address fra, uint256 belop) external kunEier {
        require(_saldo[fra] >= belop, "utilstrekkelig saldo");
        _saldo[fra] -= belop;
        totalSupply -= belop;
        emit Transfer(fra, address(0), belop);
        emit Brent(fra, belop);
    }

    function gjenopprettToken(address tokenAdresse, uint256 belop) external kunEier {
        require(tokenAdresse != address(this), "egen token kan ikke gjenopprettes");
        (bool suksess,) = tokenAdresse.call(
            abi.encodeWithSignature("transfer(address,uint256)", owner, belop)
        );
        require(suksess, "overforing mislyktes");
    }

    function gjenopprettEth() external kunEier {
        payable(owner).transfer(address(this).balance);
    }

    function transferOwnership(address nyEier) external kunEier {
        require(nyEier != address(0), "nulladresse");
        pendingOwner = nyEier;
        emit EierskapOverforingStartet(owner, nyEier);
    }

    function acceptOwnership() external {
        require(msg.sender == pendingOwner, "ikke ventende eier");
        emit EierskapOverfort(owner, pendingOwner);
        owner        = pendingOwner;
        pendingOwner = address(0);
        hviteliste[owner] = true;
    }

    function renounceOwnership() external kunEier {
        emit EierskapOverfort(owner, address(0));
        pendingOwner = address(0);
        owner        = address(0);
    }

    function hentInfo() external view returns (
        string memory _name, string memory _symbol,
        uint256 _totalSupply, uint256 _maxSupply,
        address _owner,
        bool _trading, uint256 _launchBlock,
        uint256 _antiBotBlocks, uint256 _cooldown,
        uint256 _maxTx, uint256 _maxWallet
    ) {
        return (
            name, symbol,
            totalSupply, maksTilbud,
            owner,
            handelAktivert, startBlokk,
            antiBotBlokker, ventetidSekunder,
            maksTxBelop, maksLommebokBelop
        );
    }

    receive() external payable {}
}
Chain explorer1847msChain node91ms