Test passing on bsc testnet; console transaction error

Test passing on bsc testnet but executing the same sequence in the console generates a transaction error.

:memo:Details

Test Code:

truffle test --network bsctestnet test/GhostmarketERC721.test.js

it('mintWithFee should accept payments', async function () {
  const value = ether('0.1');
  await this.GhostmarketERC721.setGhostmarketFeeAddress(mintingFeeAccount)
  await this.GhostmarketERC721.setGhostmarketFeeMultiplier(1)
  await this.GhostmarketERC721.setGhostmarketMintFee(value)
  let feeAddressEthBalanceBefore = await web3.eth.getBalance(mintingFeeAccount)

  console.log("ghostmarketFeeMultiplier: ", await this.GhostmarketERC721.ghostmarketFeeMultiplier())
  console.log("ghostmarketMintingFee: ", await this.GhostmarketERC721.ghostmarketMintingFee())
  console.log("ghostmarketFeeAddress: ", await this.GhostmarketERC721.ghostmarketFeeAddress())
  await this.GhostmarketERC721.mintWithFee(minter, [], [], "", { value: value })
  let feeAddressEthBalanceAfter = await web3.eth.getBalance(mintingFeeAccount)
  console.log("feeAddress eth balance before: ", feeAddressEthBalanceBefore)
  console.log("feeAddress eth balance after: ", feeAddressEthBalanceAfter)
  expect(parseInt(feeAddressEthBalanceAfter)).to.equal(parseInt(feeAddressEthBalanceBefore) + parseInt(value))
});

Console Commands:

let ghost = await GhostmarketERC721.deployed()
await ghost.setGhostmarketFeeAddress("0xf71f7C916311702d74aCaEee4FDA80E6caeEd943")
await ghost.setGhostmarketFeeMultiplier(1)
await ghost.setGhostmarketMintFee(100000000000000)

await ghost.mintWithFee("0x1a1122c2483e8f988F9a800F3A6eE316dB77e4e0", [], [], "", { value: "100000000000000"})

setGhostmarketFeeAddress gnerates a error but the address is still set

Error:

StatusError: Transaction: 0xcafadde3066c8ca9250ac7015dd3d6d76cd5cef09133d51f9b4789faaee13d85 exited with an error (status 0).
    at evalmachine.<anonymous>:1:15
    at evalmachine.<anonymous>:2:49
    at sigintHandlersWrap (vm.js:272:15)
    at Script.runInContext (vm.js:139:14)
    at runScript (/Users/selimerunkut/dev_freelance/GhostMarketContractBSC/node_modules/truffle/build/webpack:/packages/core/lib/console.js:270:1)
    at Console.interpret (/Users/selimerunkut/dev_freelance/GhostMarketContractBSC/node_modules/truffle/build/webpack:/packages/core/lib/console.js:285:1)
    at bound (domain.js:430:14)
    at REPLServer.runBound [as eval] (domain.js:443:12)
    at REPLServer.onLine (repl.js:809:10)
    at REPLServer.emit (events.js:314:20)
    at REPLServer.EventEmitter.emit (domain.js:486:12)
    at REPLServer.Interface._onLine (readline.js:337:10)
    at REPLServer.Interface._line (readline.js:666:8)
    at REPLServer.Interface._ttyWrite (readline.js:1010:14)
    at REPLServer.self._ttyWrite (repl.js:899:9)
    at ReadStream.onkeypress (readline.js:213:10)
    at ReadStream.emit (events.js:314:20)
    at ReadStream.EventEmitter.emit (domain.js:486:12)
    at emitKeys (internal/readline/utils.js:335:14)
    at emitKeys.next (<anonymous>)
    at ReadStream.onData (readline.js:1144:36)
    at ReadStream.emit (events.js:314:20)
    at ReadStream.EventEmitter.emit (domain.js:486:12)
    at addChunk (_stream_readable.js:303:12)
    at readableAddChunk (_stream_readable.js:279:9)
    at ReadStream.Readable.push (_stream_readable.js:218:10) {
  tx: '0xcafadde3066c8ca9250ac7015dd3d6d76cd5cef09133d51f9b4789faaee13d85',
  receipt: {
    blockHash: '0xe2d95d70bb6a81244865de7a517169a6f3fecd4a99dce1d30e610ee50d782477',
    blockNumber: 8615401,
    contractAddress: null,
    cumulativeGasUsed: 1064088,
    from: '0x9d1cb8509a7b60421ab28492ce05e06f52ddf727',
    gasUsed: 25742,
    logs: [],
    logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
    status: false,
    to: '0x64f583241f2f932b756c9854965cc928ddf357d8',
    transactionHash: '0xcafadde3066c8ca9250ac7015dd3d6d76cd5cef09133d51f9b4789faaee13d85',
    transactionIndex: 4,
    type: '0x0',
    rawLogs: []
  },
  reason: undefined,
  hijackedStack: 'StatusError: Transaction: 0xcafadde3066c8ca9250ac7015dd3d6d76cd5cef09133d51f9b4789faaee13d85 exited with an error (status 0). \n' +
    '     Please check that the transaction:\n' +
    '     - satisfies all conditions set by Solidity `require` statements.\n' +
    '     - does not trigger a Solidity `revert` statement.\n' +
    '\n' +

Minting is generating an error and the NFT is not minted:

await ghost.mintWithFee("0xB03E1C325d5875515579945955517F6aBF41Aa9F", [], [], "", { value: 1})

Uncaught:
StatusError: Transaction: 0x5068047307a47a2ccb882a61867f5fd843fc96a20e1066944ee7374e3b935fbb exited with an error (status 0).
    at evalmachine.<anonymous>:1:15
    at evalmachine.<anonymous>:2:49
    at sigintHandlersWrap (vm.js:272:15)
    at Script.runInContext (vm.js:139:14)
    at runScript (/Users/selimerunkut/dev_freelance/GhostMarketContractBSC/node_modules/truffle/build/webpack:/packages/core/lib/console.js:270:1)
    at Console.interpret (/Users/selimerunkut/dev_freelance/GhostMarketContractBSC/node_modules/truffle/build/webpack:/packages/core/lib/console.js:285:1)
    at bound (domain.js:430:14)
    at REPLServer.runBound [as eval] (domain.js:443:12)
    at REPLServer.onLine (repl.js:809:10)
    at REPLServer.emit (events.js:314:20)
    at REPLServer.EventEmitter.emit (domain.js:486:12)
    at REPLServer.Interface._onLine (readline.js:337:10)
    at REPLServer.Interface._line (readline.js:666:8)
    at REPLServer.Interface._ttyWrite (readline.js:1010:14)
    at REPLServer.self._ttyWrite (repl.js:899:9)
    at ReadStream.onkeypress (readline.js:213:10)
    at ReadStream.emit (events.js:314:20)
    at ReadStream.EventEmitter.emit (domain.js:486:12)
    at emitKeys (internal/readline/utils.js:335:14)
    at emitKeys.next (<anonymous>)
    at ReadStream.onData (readline.js:1144:36)
    at ReadStream.emit (events.js:314:20)
    at ReadStream.EventEmitter.emit (domain.js:486:12)
    at addChunk (_stream_readable.js:303:12)
    at readableAddChunk (_stream_readable.js:279:9)
    at ReadStream.Readable.push (_stream_readable.js:218:10) {
  tx: '0x5068047307a47a2ccb882a61867f5fd843fc96a20e1066944ee7374e3b935fbb',
  receipt: {
    blockHash: '0xeebd90191df0be9c37a7987dca7f1c5e2bd941d9fb365ec2e2892eb4ec19d7a2',
    blockNumber: 8615587,
    contractAddress: null,
    cumulativeGasUsed: 81778,
    from: '0x9d1cb8509a7b60421ab28492ce05e06f52ddf727',
    gasUsed: 29192,
    logs: [],
    logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
    status: false,
    to: '0x64f583241f2f932b756c9854965cc928ddf357d8',
    transactionHash: '0x5068047307a47a2ccb882a61867f5fd843fc96a20e1066944ee7374e3b935fbb',
    transactionIndex: 2,
    type: '0x0',
    rawLogs: []
  },
  reason: undefined,
  hijackedStack: 'StatusError: Transaction: 0x5068047307a47a2ccb882a61867f5fd843fc96a20e1066944ee7374e3b935fbb exited with an error (status 0). \n' +
    '     Please check that the transaction:\n' +
    '     - satisfies all conditions set by Solidity `require` statements.\n' +
    '     - does not trigger a Solidity `revert` statement.\n' +
    '\n' +
    '    at Object.receipt (/Users/selimerunkut/dev_freelance/GhostMarketContractBSC/node_modules/truffle/build/webpack:/packages/contract/lib/handlers.js:128:1)\n' +
    '    at runMicrotasks (<anonymous>)\n' +
    '    at processTicksAndRejections (internal/process/task_queues.js:93:5)\n' +
    '    at Function.start (/Users/selimerunkut/dev_freelance/GhostMarketContractBSC/node_modules/truffle/build/webpack:/packages/contract/lib/override.js:49:1)'
}
truffle(bsctestnet)> await ghost.mintWithFee("0xB03E1C325d5875515579945955517F6aBF41Aa9F", [], [], "", { value: 1})
Uncaught:
StatusError: Transaction: 0x8f4b79571cbd8eba25cc55ca5371dec3085e6ba9c85e5b60b912a7d2077919fc exited with an error (status 0).
    at evalmachine.<anonymous>:1:15
    at evalmachine.<anonymous>:2:49
    at sigintHandlersWrap (vm.js:272:15)
    at Script.runInContext (vm.js:139:14)
    at runScript (/Users/selimerunkut/dev_freelance/GhostMarketContractBSC/node_modules/truffle/build/webpack:/packages/core/lib/console.js:270:1)
    at Console.interpret (/Users/selimerunkut/dev_freelance/GhostMarketContractBSC/node_modules/truffle/build/webpack:/packages/core/lib/console.js:285:1)
    at bound (domain.js:430:14)
    at REPLServer.runBound [as eval] (domain.js:443:12)
    at REPLServer.onLine (repl.js:809:10)
    at REPLServer.emit (events.js:314:20)
    at REPLServer.EventEmitter.emit (domain.js:486:12)
    at REPLServer.Interface._onLine (readline.js:337:10)
    at REPLServer.Interface._line (readline.js:666:8)
    at REPLServer.Interface._ttyWrite (readline.js:1010:14)
    at REPLServer.self._ttyWrite (repl.js:899:9)
    at ReadStream.onkeypress (readline.js:213:10)
    at ReadStream.emit (events.js:314:20)
    at ReadStream.EventEmitter.emit (domain.js:486:12)
    at emitKeys (internal/readline/utils.js:335:14)
    at emitKeys.next (<anonymous>)
    at ReadStream.onData (readline.js:1144:36)
    at ReadStream.emit (events.js:314:20)
    at ReadStream.EventEmitter.emit (domain.js:486:12)
    at addChunk (_stream_readable.js:303:12)
    at readableAddChunk (_stream_readable.js:279:9)
    at ReadStream.Readable.push (_stream_readable.js:218:10) {
  tx: '0x8f4b79571cbd8eba25cc55ca5371dec3085e6ba9c85e5b60b912a7d2077919fc',
  receipt: {
    blockHash: '0x53568be2307f933d2beb98c2731189e847609f84c718ec4e270ad9c3add3725c',
    blockNumber: 8615591,
    contractAddress: null,
    cumulativeGasUsed: 180841,
    from: '0x9d1cb8509a7b60421ab28492ce05e06f52ddf727',
    gasUsed: 29192,
    logs: [],
    logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
    status: false,
    to: '0x64f583241f2f932b756c9854965cc928ddf357d8',
    transactionHash: '0x8f4b79571cbd8eba25cc55ca5371dec3085e6ba9c85e5b60b912a7d2077919fc',
    transactionIndex: 4,
    type: '0x0',
    rawLogs: []
  },
  reason: undefined,
  hijackedStack: 'StatusError: Transaction: 0x8f4b79571cbd8eba25cc55ca5371dec3085e6ba9c85e5b60b912a7d2077919fc exited with an error (status 0). \n' +
    '     Please check that the transaction:\n' +
    '     - satisfies all conditions set by Solidity `require` statements.\n' +
    '     - does not trigger a Solidity `revert` statement.\n' +
    '\n' +
    '    at Object.receipt (/Users/selimerunkut/dev_freelance/GhostMarketContractBSC/node_modules/truffle/build/webpack:/packages/contract/lib/handlers.js:128:1)\n' +
    '    at runMicrotasks (<anonymous>)\n' +
    '    at processTicksAndRejections (internal/process/task_queues.js:93:5)\n' +
    '    at Function.start (/Users/selimerunkut/dev_freelance/GhostMarketContractBSC/node_modules/truffle/build/webpack:/packages/contract/lib/override.js:49:1)'

:computer: Environment
“@openzeppelin/contracts-upgradeable”: “^4.0.0”,
“truffle”: “^5.3.1”

:1234: Code to reproduce
selimerunkut/nft_troubleshoot

It looks like ok, so after you deploy the contract in the console:

let ghost = await GhostmarketERC721.deployed()

what would you get when just input ghost? That is:

let ghost = await GhostmarketERC721.deployed()
ghost

Seems like a normal contract output:

first part:

TruffleContract {
  constructor: [Function: TruffleContract] {
    _constructorMethods: {
      configureNetwork: [Function: configureNetwork],
      setProvider: [Function: setProvider],
      new: [Function: new],
      at: [AsyncFunction: at],
      deployed: [AsyncFunction: deployed],
      defaults: [Function: defaults],
      hasNetwork: [Function: hasNetwork],
      isDeployed: [Function: isDeployed],
      detectNetwork: [AsyncFunction: detectNetwork],
      setNetwork: [Function: setNetwork],
      setNetworkType: [Function: setNetworkType],
      setWallet: [Function: setWallet],
      resetAddress: [Function: resetAddress],
      link: [Function: link],
      clone: [Function: clone],
      addProp: [Function: addProp],
      toJSON: [Function: toJSON],
      decodeLogs: [Function: decodeLogs]
    },
    _properties: {
      contract_name: [Object],
      contractName: [Object],
      gasMultiplier: [Object],
      timeoutBlocks: [Object],
      autoGas: [Object],
      numberFormat: [Object],
      abi: [Object],
      metadata: [Function: metadata],
      network: [Function: network],
      networks: [Function: networks],
      address: [Object],
      transactionHash: [Object],
      links: [Function: links],
      events: [Function: events],
      binary: [Function: binary],
      deployedBinary: [Function: deployedBinary],
      unlinked_binary: [Object],
      bytecode: [Object],
      deployedBytecode: [Object],
      sourceMap: [Object],
      deployedSourceMap: [Object],
      source: [Object],
      sourcePath: [Object],
      legacyAST: [Object],
      ast: [Object],
      compiler: [Object],
      schema_version: [Function: schema_version],
      schemaVersion: [Function: schemaVersion],
      updated_at: [Function: updated_at],
      updatedAt: [Function: updatedAt],
      userdoc: [Function: userdoc],
      devdoc: [Function: devdoc],
      networkType: [Object],
      immutableReferences: [Object],
      generatedSources: [Object],
      deployedGeneratedSources: [Object],
      db: [Object]
    },
    _property_values: {},
    _json: {
      contractName: 'GhostmarketERC721',
      abi: [Array],
      metadata: '{"compiler":{"version":"0.8.3+commit.8d00100c"},"language":"Solidity","output":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"value","type":"string"}],"indexed":false,"internalType":"struct GhostmarketERC721.AttributesStruct[]","name":"attributes","type":"tuple[]"}],"name":"AttributesSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newValue","type":"address"}],"name":"GhostmarketFeeAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"GhostmarketFeeMultiplierChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"GhostmarketFeePaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"GhostmarketMintFeeChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"msgSender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"string","name":"lockedContent","type":"string"}],"name":"LockedContentViewed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"recipients","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"bps","type":"uint256[]"}],"name":"SecondarySaleFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_lockedContent","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"attribute","outputs":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"fees","outputs":[{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getAttributes","outputs":[{"components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"value","type":"string"}],"internalType":"struct GhostmarketERC721.AttributesStruct[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getCurrentLockedContentViewTracker","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getFeeBps","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getFeeRecipients","outputs":[{"internalType":"address payable[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getLockedContent","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ghostmarketFeeAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ghostmarketFeeMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ghostmarketMintingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"uri","type":"string"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"components":[{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct GhostmarketERC721.Fee[]","name":"_fees","type":"tuple[]"},{"components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"value","type":"string"}],"internalType":"struct GhostmarketERC721.AttributesStruct[]","name":"_attributes","type":"tuple[]"},{"internalType":"string","name":"lockedcontent","type":"string"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"components":[{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct GhostmarketERC721.Fee[]","name":"_fees","type":"tuple[]"},{"components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"value","type":"string"}],"internalType":"struct GhostmarketERC721.AttributesStruct[]","name":"_attributes","type":"tuple[]"},{"internalType":"string","name":"lockedcontent","type":"string"}],"name":"mintWithFee","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"gmfa","type":"address"}],"name":"setGhostmarketFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gmfm","type":"uint256"}],"name":"setGhostmarketFeeMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gmmf","type":"uint256"}],"name":"setGhostmarketMintFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","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":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"updateFeeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"updateRecipientsFees","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"ERC721 token with minting, burning, pause, secondary sales royalitiy functions.","kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"burn(uint256)":{"details":"Burns `tokenId`. See {ERC721-_burn}. Requirements: - The caller must own `tokenId` or be an approved operator."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"getAttributes(uint256)":{"details":"get the nft token attributes with the tokenId"},"getCurrentLockedContentViewTracker(uint256)":{"details":"get the durrent locked content view tracker for specific _tokenId"},"getFeeBps(uint256)":{"details":"get the \\"secondary sales\\"/royalities fee for the NFT id fee basis points 10000 = 100%"},"getFeeRecipients(uint256)":{"details":"get the \\"secondary sales\\"/royalities fee recepients with the tokenId"},"getLockedContent(uint256)":{"details":"locked content for a NFT can be retrived only by emitting an event example event: msgSender: 0x1a1122c2483e8f988F9a800F3A6eE316dB77e4e0 (type: address), tokenId: 0 (type: uint256), lockedContent: \'top secret\' (type: string)"},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role\'s admin, use {_setRoleAdmin}."},"getRoleMember(bytes32,uint256)":{"details":"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information."},"getRoleMemberCount(bytes32)":{"details":"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role."},"ghostmarketFeeAddress()":{"returns":{"_0":"the ghostmarketFeeAddress"}},"ghostmarketFeeMultiplier()":{"returns":{"_0":"the ghostmarketFeeMultiplier."}},"ghostmarketMintingFee()":{"returns":{"_0":"the ghostmarketMintingFee."}},"grantRole(bytes32,address)":{"details":"Overload {grantRole} to track enumerable memberships"},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"mint(address)":{"details":"Creates a new token for `to`. Its token ID will be automatically assigned (and available on the emitted {IERC721-Transfer} event), and the token URI autogenerated based on the base URI passed at construction. See {ERC721-_mint}. Requirements: - the caller must have the `MINTER_ROLE`."},"mint(address,(address,uint256)[],(string,string)[],string)":{"details":"mint NFT and set fee"},"mintWithFee(address,(address,uint256)[],(string,string)[],string)":{"details":"minting with fee, sending to Ghostmarket address"},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"pause()":{"details":"Pauses all token transfers. See {ERC721Pausable} and {Pausable-_pause}. Requirements: - the caller must have the `PAUSER_ROLE`."},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"renounceRole(bytes32,address)":{"details":"Overload {renounceRole} to track enumerable memberships"},"revokeRole(bytes32,address)":{"details":"Overload {revokeRole} to track enumerable memberships"},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"setGhostmarketFeeAddress(address)":{"details":"set the wallet address where fees will be collected"},"setGhostmarketFeeMultiplier(uint256)":{"details":"sets the transfer fee multiplier"},"setGhostmarketMintFee(uint256)":{"details":"sets the transfer fee"},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenByIndex(uint256)":{"details":"See {IERC721Enumerable-tokenByIndex}."},"tokenOfOwnerByIndex(address,uint256)":{"details":"See {IERC721Enumerable-tokenOfOwnerByIndex}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"totalSupply()":{"details":"See {IERC721Enumerable-totalSupply}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."},"unpause()":{"details":"Unpauses all token transfers. See {ERC721Pausable} and {Pausable-_unpause}. Requirements: - the caller must have the `PAUSER_ROLE`."},"updateFeeAccount(uint256,address,address)":{"details":"change the recepient address of the \\"secondary sales\\"/royalities fee"},"updateRecipientsFees(uint256,address,uint256)":{"details":"change the \\"secondary sales\\"/royalities fee value for a specific recipient address"}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"/Users/selimerunkut/dev_freelance/GhostMarketContractBSC/contracts/GhostmarketERC721.sol":"GhostmarketERC721"},"evmVersion":"istanbul","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":1337},"remappings":[]},"sources":{"/Users/selimerunkut/dev_freelance/GhostMarketContractBSC/contracts/GhostmarketERC721.sol":{"keccak256":"0x0b60ad1816f030412dc991f222a328c24ecdc9778256c3364cead159f9731d2f","license":"MIT","urls":["bzz-raw://166b8c2abd2126bb7198e7ec63765957d5227cdf740e2fbe6258b1e220ff0f7f","dweb:/ipfs/QmcWh9dpsUaagqJTwQsHUtuKCSammEw5Pqj6pHDxM624PK"]},"@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol":{"keccak256":"0x24809d17a2d5bb3aa7195bbed04e7c228982c2d36e371e8a8cb2364877b0aa34","license":"MIT","urls":["bzz-raw://cb1b568e2adb0d15bb367036220a081ce3d0c5af7dc374732e1dfa2888e7a470","dweb:/ipfs/QmUGFhcCNHTdTVzJ8QNJfQiiwGjTPxTLnrsiaSj4bke6oT"]},"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol":{"keccak256":"0x03715be1098d3c552dfa96634ceb4c512965d312ab7c57141e6c63f0e4417dc9","license":"MIT","urls":["bzz-raw://24189b5f6017f8cb6412925b18e752dac0b1296c660d4cf60dc44bae606a5e81","dweb:/ipfs/QmYz2NhRuxnqR6UXiAr7TzUw2v5coUGtMCfQa5pa2byvpT"]},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"keccak256":"0x60aac6a853246704b017e55f9d3b456debfd0a7f49dd9a99e7113bed03ef0696","license":"MIT","urls":["bzz-raw://67add465d6dec3198061b5fb7ed4d8b0e1a26f0c0200115d338241ca74a693de","dweb:/ipfs/Qmerko5uM4L1jwJKK7yPiqTq1QTgd6cbNEy6ffmTLBj6MW"]},"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol":{"keccak256":"0x742c0fbab73bf595ca40025f6e81cb48dbd5e133950717f7befd062a925c0148","license":"MIT","urls":["bzz-raw://104b5ce52aba5c5f57735005b5869e8c97232a9ac6a37a8dcdf8dc38e17ea5aa","dweb:/ipfs/QmRdWh7R1oYzZMAAwwGUu8Sw18ChMAyCXD513RidThvjuZ"]},"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x89fa60d14355f7ae06af11e28fce2bb90c5c6186645d681a30e1b36234a4c210","license":"MIT","urls":["bzz-raw://6f05bc422cea1903d9ba10eece86d8bce72c2f1a225f174101b992b978534c2d","dweb:/ipfs/QmQzi5ZMexyRRfkyur7G2uHUmaQg4VfvCkUuxbSdqsXTSv"]},"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol":{"keccak256":"0xa0ebb4a22e77b476065176ffbd8dbac451c7af3c35fe04ece51b578eaad6a784","license":"MIT","urls":["bzz-raw://d85b865d2730e691db959d85dcd39132caa7ffd52560ed904617b410ec16ba8c","dweb:/ipfs/Qmd3yQYdFqQpiidhgZb46Bv3ujkzP9y8dUZVWo1SDaHRL9"]},"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol":{"keccak256":"0x33620beff0655c5e728a72fff76fb6ce2dc32fc6b61eb8e435b12ed1adf31525","license":"MIT","urls":["bzz-raw://6b88aa0f47c7cea8e39cbf6025935242c0466a8b68d2d3bf5efc6d5d31185dc2","dweb:/ipfs/QmPfTy74xdPaHJx6RuEz4LorCsSeMndeffZqvEspACjjQj"]},"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol":{"keccak256":"0x9ef7f2874f4a491f253a81eb4c5b9a7b6467a287aa0c32ac3dd684260a3cd7ad","license":"MIT","urls":["bzz-raw://665e87b1b3174681684da2e4074d48c47f0ae029be3b6d8c6dd958c8b82a3910","dweb:/ipfs/QmNdJ4gAeM1STX4WH69va4WJh41enhjyr6XPg6iaMeE7Gw"]},"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721BurnableUpgradeable.sol":{"keccak256":"0xe2a579e3c0d885b5a230215af8964922bb6cea9c3cc2c96cd035dc84c063f276","license":"MIT","urls":["bzz-raw://e88e55b66f4aa6ca8c315a8290f2a305d800d51c51e5c18204386ac9af19d3e4","dweb:/ipfs/QmZM8mXPBDWPxtdMxaWTXoc9edHi472GG8EjjfT4pmfnJY"]},"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol":{"keccak256":"0xb980ca221be9fc789a1af6f2bf33f4f7b5950e32ac1d55c8e83422cdcf0b4d1d","license":"MIT","urls":["bzz-raw://d88b77757261bdf6afde4ece56fbbfe2dc67d9b7273c0e56bfdf5c935fd536f6","dweb:/ipfs/QmaHoq2MV5UDTJQqKb6csV9pY6zhkV4kJdabLXXrnEfn2f"]},"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721PausableUpgradeable.sol":{"keccak256":"0xf1a58e8ba12e5ef5f94b096fc927f2e4ae28e17af6bd48fd51f0a1d79da0425d","license":"MIT","urls":["bzz-raw://0fa2b56cd89f41d507a34f67063fac7ac6e466b930438e3567e2d14206be2ce4","dweb:/ipfs/QmaKkujU6HRJ6yD3vfVcJyyT2FmLf7kdCb51Pg3M1o5q2N"]},"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721EnumerableUpgradeable.sol":{"keccak256":"0xb16ff89dbc7c288e670fabe2aaf59bd6eeb7869febec09eccc248d584ca0d89f","license":"MIT","urls":["bzz-raw://c3d77296c6256d9ce306293f6b3eebab90e1f45862a15d6a28f1b706e9e064e7","dweb:/ipfs/QmUac3NvShf4TqRbthuGVMqt4N5m33GRs6wawc5YHNBsjU"]},"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol":{"keccak256":"0x64581a092c059ab0cb74f473545e379b8a88f36a6a57f805515ef8c6ae061847","license":"MIT","urls":["bzz-raw://7ee9823850f7757295f1bfde9691b6268c1c82d1cb3bb15bcbc3dae8f282071c","dweb:/ipfs/QmbFusD9jZu7wsNZiVygaGeFxr1ZEB16HjAm1gQZyt234x"]},"@openzeppelin/contracts-upgradeable/token/ERC721/presets/ERC721PresetMinterPauserAutoIdUpgradeable.sol":{"keccak256":"0xb1df862f95d9d86004b29c519ff24cc42cf91bab3f28aebe7a9b36d9f054c5ca","license":"MIT","urls":["bzz-raw://5f3eac8835fca5bec92ae2979f44d2a718b15410604439604bdbf7072634a172","dweb:/ipfs/QmUsthz4hS55Y4MHeWkQ3sp14qmXJen52j8e6oJUbywBQq"]},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"keccak256":"0x5642ae1d6b33c5c0b71a8412c6c64cbcf2468b84a002bee3e33cdb5644d25cdb","license":"MIT","urls":["bzz-raw://07ba474854eacf022fca2ab63af2b09653f476a9ef2d144ea3d022a0c0b92726","dweb:/ipfs/QmVNfrArMejFSrPMktAtDte64FJ2fGPQHqgSXDz2SH6dse"]},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"keccak256":"0x8e9eb503de1189f50c5f16fef327da310b11898d6b9ab3ca937df07c35233b9e","license":"MIT","urls":["bzz-raw://9631a7abcad07067f268b6295668a287e205ea9a8dc0fca02c2bf4db6c39431d","dweb:/ipfs/QmUYFfB2AngTZLEsah4u8Z44riaB6yWkUXeasi1oG7ipfS"]},"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol":{"keccak256":"0xec472de031bf21bae80739c99f9fec4edcd0d728e424f0f557c4288b3e58e49d","license":"MIT","urls":["bzz-raw://7dfa1ca8ddca5cae1ea9bf9bc3d635c5d728a8615a2474340352f8c9ba81a328","dweb:/ipfs/QmeLzrsatGUjoSMAvTYNciBBbR7CV58VErTdXfxs7wqJwQ"]},"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol":{"keccak256":"0x6964377da5c19ade6b3e96bae0c0e82494d518af70cf12d2cdb3276f78fb3d85","license":"MIT","urls":["bzz-raw://6fdcd89cc451559fcf17eb5b0a657a4d6217809603ece8439f933f836521f31f","dweb:/ipfs/QmU75qTF1VG5KUaxZv2TrFYDPLmkraeTdmAG4P4j1ehoa6"]},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0x17c9c5d2d6b56527215ee7b3da6dde66b6f23f1b3d5c66cc436e753ef349a97a","license":"MIT","urls":["bzz-raw://dd7c775bc6000f44c048796b5e013dbb3ec7592986bc289868b19ff9439ee31d","dweb:/ipfs/QmSuBfTT9z9sEpmEcGihEc5DJGsXery8QyyuNfvub875ej"]},"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0x1c4860acd323e34a67b3e97faab9aaa55fe8e92b1dcf08b5f47f3468d58ce75c","license":"MIT","urls":["bzz-raw://3c2746f8ebb4bfb6b8e8a768296c7f85f11b36f4873daabb91933c3602f00590","dweb:/ipfs/QmdumDez8WEdk9FDuP7Jp5pDSJiQeFtFSJw3B5CEHJL4KU"]},"@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol":{"keccak256":"0x23ebf6e219f634c3cc7445147368066dbfb5c1278fc4c48edbb9e0bd38aa4151","license":"MIT","urls":["bzz-raw://f35b1f048c7f38621b3fb70f69e26c06b977f804736a474e4d3f408f7c42076d","dweb:/ipfs/QmUj1gAvJ5PkJuznE9VZTzDU3caSMHFVPMQrj1EXZKFv1P"]}},"version":1}',
      bytecode:

second part:

source: '// SPDX-License-Identifier: MIT\n' +
    'pragma solidity ^0.8.3;\n' +
    '\n' +
    'import "@openzeppelin/contracts-upgradeable/token/ERC721/presets/ERC721PresetMinterPauserAutoIdUpgradeable.sol";\n' +
    'import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol";\n' +
    '\n' +
    '/**\n' +
    ' * @dev ERC721 token with minting, burning, pause, secondary sales royalitiy functions.\n' +
    ' *\n' +
    ' */\n' +
    'contract GhostmarketERC721 is\n' +
    '    Initializable,\n' +
    '    ERC721PresetMinterPauserAutoIdUpgradeable\n' +
    '{\n' +
    '    // struct for secondary sales fees\n' +
    '    struct Fee {\n' +
    '        address payable recipient;\n' +
    '        uint256 value;\n' +
    '    }\n' +
    '\n' +
    '    //nft attributes struct\n' +
    '    struct AttributesStruct {\n' +
    '        string key;\n' +
    '        string value;\n' +
    '    }\n' +
    '\n' +
    '    // tokenId => attributes array\n' +
    '    mapping(uint256 => AttributesStruct[]) public attribute;\n' +
    '\n' +
    '    // tokenId => fees array\n' +
    '    mapping(uint256 => Fee[]) public fees;\n' +
    '\n' +
    '    // tokenId => locked content string\n' +
    '    mapping(uint256 => string) public _lockedContent;\n' +
    '    // tokenId => locked content view counter\n' +
    '    mapping(uint256 => uint256) private _lockedContentViewTracker;\n' +
    '\n' +
    '    event SecondarySaleFees(\n' +
    '        uint256 tokenId,\n' +
    '        address[] recipients,\n' +
    '        uint256[] bps\n' +
    '    );\n' +
    '\n' +
    '    event LockedContentViewed(\n' +
    '        address msgSender,\n' +
    '        uint256 tokenId,\n' +
    '        string lockedContent\n' +
    '    );\n' +
    '\n' +
    '    event AttributesSet(uint256 tokenId, AttributesStruct[] attributes);\n' +
    '    event GhostmarketFeeAddressChanged(address newValue);\n' +
    '    event GhostmarketFeeMultiplierChanged(uint256 newValue);\n' +
    '    event GhostmarketMintFeeChanged(uint256 newValue);\n' +
    '    event GhostmarketFeePaid(address sender, uint256 value);\n' +
    '\n' +
    '    // fee multiplier\n' +
    '    uint256 private _ghostmarketFeeMultiplier;\n' +
    '\n' +
    '    // minting fee\n' +
    '    uint256 private _ghostmarketMintingFee;\n' +
    '\n' +
    '    //address where the transfer fees will be sent\n' +
    '    address payable private _ghostmarketFeeAddress;\n' +
    '\n' +
    '    //Reentrancy lock checker\n' +
    '    bool locked;\n' +
    '\n' +
    '    function initialize(\n' +
    '        string memory name,\n' +
    '        string memory symbol,\n' +
    '        string memory uri\n' +
    '    ) public override initializer {\n' +
    '        __ERC721_init_unchained(name, symbol);\n' +
    '        __ERC721PresetMinterPauserAutoId_init_unchained(name, symbol, uri);\n' +
    '        locked = false;\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @dev saves the nft tokens custom attributes to contract storage\n' +
    '     * emits AttributesSet event\n' +
    '     */\n' +
    '    function setAttributes(\n' +
    '        uint256 _tokenId,\n' +
    '        AttributesStruct[] memory _attributes\n' +
    '    ) internal {\n' +
    '        for (uint256 i = 0; i < _attributes.length; i++) {\n' +
    '            require(\n' +
    '                keccak256(abi.encodePacked(_attributes[i].key)) !=\n' +
    '                    keccak256(abi.encodePacked("")),\n' +
    '                "Attribute key should not be empty"\n' +
    '            );\n' +
    '            require(\n' +
    '                keccak256(abi.encodePacked(_attributes[i].value)) !=\n' +
    '                    keccak256(abi.encodePacked("")),\n' +
    '                "Attribute value should not be empty"\n' +
    '            );\n' +
    '            attribute[_tokenId].push(_attributes[i]);\n' +
    '            emit AttributesSet(_tokenId, _attributes);\n' +
    '        }\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @dev get the nft token attributes with the tokenId\n' +
    '     */\n' +
    '    function getAttributes(uint256 _tokenId)\n' +
    '        public\n' +
    '        view\n' +
    '        returns (AttributesStruct[] memory)\n' +
    '    {\n' +
    '        return attribute[_tokenId];\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @dev get the "secondary sales"/royalities fee recepients with the tokenId\n' +
    '     */\n' +
    '    function getFeeRecipients(uint256 _tokenId)\n' +
    '        public\n' +
    '        view\n' +
    '        returns (address payable[] memory)\n' +
    '    {\n' +
    '        Fee[] memory _fees = fees[_tokenId];\n' +
    '        address payable[] memory result = new address payable[](_fees.length);\n' +
    '        for (uint256 i = 0; i < _fees.length; i++) {\n' +
    '            result[i] = _fees[i].recipient;\n' +
    '        }\n' +
    '        return result;\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @dev get the "secondary sales"/royalities fee for the NFT id\n' +
    '     * fee basis points 10000 = 100%\n' +
    '     */\n' +
    '    function getFeeBps(uint256 _tokenId)\n' +
    '        public\n' +
    '        view\n' +
    '        returns (uint256[] memory)\n' +
    '    {\n' +
    '        Fee[] memory _fees = fees[_tokenId];\n' +
    '        uint256[] memory result = new uint256[](_fees.length);\n' +
    '        for (uint256 i = 0; i < _fees.length; i++) {\n' +
    '            result[i] = _fees[i].value;\n' +
    '        }\n' +
    '        return result;\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @dev save the "secondary sales"/royalities fee for the NFT id\n' +
    '     * fee basis points 10000 = 100%\n' +
    '     */\n' +
    '    function saveFees(uint256 _tokenId, Fee[] memory _fees) internal {\n' +
    '        require(\n' +
    '            _exists(_tokenId),\n' +
    '            "ERC721: approved query for nonexistent token"\n' +
    '        );\n' +
    '        for (uint256 i = 0; i < _fees.length; i++) {\n' +
    '            require(\n' +
    '                _fees[i].recipient != address(0x0),\n' +
    '                "Recipient should be present"\n' +
    '            );\n' +
    '            require(_fees[i].value > 0, "Fee value should be positive");\n' +
    '            fees[_tokenId].push(_fees[i]);\n' +
    '        }\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @dev change the "secondary sales"/royalities fee value for a specific recipient address\n' +
    '     */\n' +
    '    function updateRecipientsFees(\n' +
    '        uint256 _tokenId,\n' +
    '        address _from,\n' +
    '        uint256 _value\n' +
    '    ) external {\n' +
    '        require(\n' +
    '            hasRole(MINTER_ROLE, _msgSender()),\n' +
    '            "updating fee value is not allowed by this account"\n' +
    '        );\n' +
    '        require(_value > 0, "new Fee value should be positive");\n' +
    '        Fee[] memory _fees = fees[_tokenId];\n' +
    '        for (uint256 i = 0; i < _fees.length; i++) {\n' +
    '            if (fees[_tokenId][i].recipient == _from) {\n' +
    '                fees[_tokenId][i].value = _value;\n' +
    '            }\n' +
    '        }\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @dev change the recepient address of the "secondary sales"/royalities fee\n' +
    '     */\n' +
    '    function updateFeeAccount(\n' +
    '        uint256 _tokenId,\n' +
    '        address _from,\n' +
    '        address _to\n' +
    '    ) external {\n' +
    '        require(\n' +
    '            hasRole(MINTER_ROLE, _msgSender()),\n' +
    '            "updating fee recepients is not allowed by this account"\n' +
    '        );\n' +
    '        uint256 length = fees[_tokenId].length;\n' +
    '        for (uint256 i = 0; i < length; i++) {\n' +
    '            if (fees[_tokenId][i].recipient == _from) {\n' +
    '                fees[_tokenId][i].recipient = payable(address(uint160(_to)));\n' +
    '            }\n' +
    '        }\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @dev mint NFT and set fee\n' +
    '     */\n' +
    '    function mint(\n' +
    '        address _to,\n' +
    '        Fee[] memory _fees,\n' +
    '        AttributesStruct[] memory _attributes,\n' +
    '        string memory lockedcontent\n' +
    '    ) public {\n' +
    '        mint(_to);\n' +
    '        uint256 _tokenId = (getCurrentCounter() - 1);\n' +
    '        address[] memory recipients = new address[](_fees.length);\n' +
    '        uint256[] memory bps = new uint256[](_fees.length);\n' +
    '        if (_fees.length > 0) {\n' +
    '            saveFees(_tokenId, _fees);\n' +
    '            emit SecondarySaleFees(_tokenId, recipients, bps);\n' +
    '        }\n' +
    '        if (_attributes.length > 0) {\n' +
    '            setAttributes(_tokenId, _attributes);\n' +
    '        }\n' +
    '        if (\n' +
    '            keccak256(abi.encodePacked(lockedcontent)) !=\n' +
    '            keccak256(abi.encodePacked(""))\n' +
    '        ) {\n' +
    '            setLockedContent(_tokenId, lockedcontent);\n' +
    '        }\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @dev minting with fee, sending to Ghostmarket address\n' +
    '     */\n' +
    '    function mintWithFee(\n' +
    '        address _to,\n' +
    '        Fee[] memory _fees,\n' +
    '        AttributesStruct[] memory _attributes,\n' +
    '        string memory lockedcontent\n' +
    '    ) public payable {\n' +
    '        if (_ghostmarketFeeMultiplier > 0) {\n' +
    '            require(\n' +
    '                _ghostmarketFeeAddress != address(0),\n' +
    '                "Ghostmarket minting Fee Address not set"\n' +
    '            );\n' +
    '            require(\n' +
    '                _ghostmarketMintingFee > 0,\n' +
    '                "Ghostmarket minting Fee is zero"\n' +
    '            );\n' +
    '            _sendMintingFee();\n' +
    '        }\n' +
    '\n' +
    '        mint(_to, _fees, _attributes, lockedcontent);\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @dev send minting fee to Ghostmarket\n' +
    '     */\n' +
    '    function _sendMintingFee() internal {\n' +
    '        require(!locked, "Reentrant detected!");\n' +
    '        locked = true;\n' +
    '        uint256 feevalue = _calculateGhostmarketMintingFee();\n' +
    '\n' +
    '        (bool success, ) = _ghostmarketFeeAddress.call{value: feevalue}("");\n' +
    '        require(success, "Transfer failed.");\n' +
    '        locked = false;\n' +
    '        emit GhostmarketFeePaid(msg.sender, feevalue);\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @dev set the wallet address where fees will be collected\n' +
    '     */\n' +
    '    function setGhostmarketFeeAddress(address payable gmfa) public {\n' +
    '        require(\n' +
    '            hasRole(DEFAULT_ADMIN_ROLE, _msgSender()),\n' +
    '            "Caller must have admin role to set minting fee address"\n' +
    '        );\n' +
    '\n' +
    '        _ghostmarketFeeAddress = gmfa;\n' +
    '        emit GhostmarketFeeAddressChanged(_ghostmarketFeeAddress);\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @dev sets the transfer fee multiplier\n' +
    '     */\n' +
    '    function setGhostmarketFeeMultiplier(uint256 gmfm) public {\n' +
    '        require(\n' +
    '            hasRole(DEFAULT_ADMIN_ROLE, _msgSender()),\n' +
    '            "Caller must have admin role to set minting fee percent"\n' +
    '        );\n' +
    '        _ghostmarketFeeMultiplier = gmfm;\n' +
    '        emit GhostmarketFeeMultiplierChanged(_ghostmarketFeeMultiplier);\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @dev sets the transfer fee\n' +
    '     */\n' +
    '    function setGhostmarketMintFee(uint256 gmmf) public {\n' +
    '        require(\n' +
    '            hasRole(DEFAULT_ADMIN_ROLE, _msgSender()),\n' +
    '            "Caller must have admin role to set minting fee percent"\n' +
    '        );\n' +
    '        _ghostmarketMintingFee = gmmf;\n' +
    '        emit GhostmarketMintFeeChanged(_ghostmarketMintingFee);\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @return the ghostmarketFeeAddress\n' +
    '     */\n' +
    '    function ghostmarketFeeAddress() public view returns (address payable) {\n' +
    '        return _ghostmarketFeeAddress;\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @return the ghostmarketMintingFee.\n' +
    '     */\n' +
    '    function ghostmarketMintingFee() public view returns (uint256) {\n' +
    '        return _ghostmarketMintingFee;\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @return the ghostmarketFeeMultiplier.\n' +
    '     */\n' +
    '    function ghostmarketFeeMultiplier() public view returns (uint256) {\n' +
    '        return _ghostmarketFeeMultiplier;\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @return the calculated fee for minting a NFT.\n' +
    '     */\n' +
    '    function _calculateGhostmarketMintingFee() internal view returns (uint256) {\n' +
    '        return _ghostmarketMintingFee * _ghostmarketFeeMultiplier;\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @dev save locked content as string for a specific _tokenId.\n' +
    '     */\n' +
    '    function setLockedContent(uint256 _tokenId, string memory content)\n' +
    '        internal\n' +
    '    {\n' +
    '        _lockedContent[_tokenId] = content;\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @dev locked content for a NFT can be retrived only by emitting an event\n' +
    '     *\n' +
    '     * example event:\n' +
    '     * msgSender: 0x1a1122c2483e8f988F9a800F3A6eE316dB77e4e0 (type: address),\n' +
    '     * tokenId: 0 (type: uint256),\n' +
    "     * lockedContent: 'top secret' (type: string)\n" +
    '     */\n' +
    '    function getLockedContent(uint256 _tokenId) public returns (string memory) {\n' +
    '        require(\n' +
    '            ownerOf(_tokenId) == msg.sender,\n' +
    '            "Caller must be the owner of the NFT"\n' +
    '        );\n' +
    '        _incrementCurrentLockedContentViewTracker(_tokenId);\n' +
    '        emit LockedContentViewed(\n' +
    '            msg.sender,\n' +
    '            _tokenId,\n' +
    '            _lockedContent[_tokenId]\n' +
    '        );\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @dev increment locked content view tracker\n' +
    '     */\n' +
    '    function _incrementCurrentLockedContentViewTracker(uint256 _tokenId)\n' +
    '        private\n' +
    '    {\n' +
    '        _lockedContentViewTracker[_tokenId] =\n' +
    '            _lockedContentViewTracker[_tokenId] +\n' +
    '            1;\n' +
    '    }\n' +
    '\n' +
    '    /**\n' +
    '     * @dev get the durrent locked content view tracker for specific _tokenId\n' +
    '     */\n' +
    '    function getCurrentLockedContentViewTracker(uint256 _tokenId)\n' +
    '        public\n' +
    '        view\n' +
    '        returns (uint256)\n' +
    '    {\n' +
    '        return _lockedContentViewTracker[_tokenId];\n' +
    '    }\n' +
    '}\n',
  sourcePath: '/Users/selimerunkut/dev_freelance/GhostMarketContractBSC/contracts/GhostmarketERC721.sol',
third part:

    ast: [Object],
      legacyAST: [Object],
      compiler: [Object],
      networks: [Object],
      schemaVersion: '3.3.4',
      updatedAt: '2021-05-06T19:51:01.395Z',
      networkType: 'ethereum',
      devdoc: [Object],
      userdoc: [Object],
      db: undefined
    },
    configureNetwork: [Function: bound configureNetwork],
    setProvider: [Function: bound setProvider],
    new: [Function: bound new] {
      estimateGas: [Function: bound estimateDeployment],
      request: [Function: bound requestDeployment]
    },
    at: [Function: bound at] AsyncFunction,
    deployed: [Function: bound deployed] AsyncFunction,
    defaults: [Function: bound defaults],
    hasNetwork: [Function: bound hasNetwork],
    isDeployed: [Function: bound isDeployed],
    detectNetwork: [Function: bound detectNetwork] AsyncFunction,
    setNetwork: [Function: bound setNetwork],
    setNetworkType: [Function: bound setNetworkType],
    setWallet: [Function: bound setWallet],
    resetAddress: [Function: bound resetAddress],
    link: [Function: bound link],
    clone: [Function: bound clone],
    addProp: [Function: bound addProp],
    toJSON: [Function: bound toJSON],
    decodeLogs: [Function: bound decodeLogs],
    enums: {},
    class_defaults: {
      from: '0x9D1Cb8509A7b60421aB28492ce05e06f52Ddf727',
      gas: 10000000,
      gasPrice: 10000000000
    },
    interfaceAdapter: Web3InterfaceAdapter { web3: [Web3Shim] },
    web3: Web3Shim {
      currentProvider: [Getter/Setter],
      _requestManager: [RequestManager],
      givenProvider: null,
      providers: [Object],
      _provider: [HDWalletProvider],
      setProvider: [Function (anonymous)],
      setRequestManager: [Function (anonymous)],
      BatchRequest: [Function: bound Batch],
      extend: [Function],
      version: '1.3.5',
      utils: [Object],
      eth: [Eth],
      shh: [Shh],
      bzz: [Bzz],
      networkType: 'ethereum'
    },
    currentProvider: HDWalletProvider {
      walletHdpath: "m/44'/60'/0'/0/",
      wallets: [Object],
      addresses: [Array],
      engine: [Web3ProviderEngine],
      send: [Function (anonymous)],
      _alreadyWrapped: true
    },
    _chainId: undefined,
    network_id: '97',
    disableConfirmationListener: undefined,
    ens: { enabled: false, registryAddress: null }
  },
  methods: {
    'DEFAULT_ADMIN_ROLE()': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'MINTER_ROLE()': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'PAUSER_ROLE()': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    '_lockedContent(uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'approve(address,uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'attribute(uint256,uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'balanceOf(address)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'burn(uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'fees(uint256,uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'getApproved(uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'getCurrentCounter()': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'getRoleAdmin(bytes32)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'getRoleMember(bytes32,uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'getRoleMemberCount(bytes32)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'grantRole(bytes32,address)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'hasRole(bytes32,address)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'isApprovedForAll(address,address)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'name()': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'ownerOf(uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'pause()': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'paused()': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'renounceRole(bytes32,address)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'revokeRole(bytes32,address)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'safeTransferFrom(address,address,uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'safeTransferFrom(address,address,uint256,bytes)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'setApprovalForAll(address,bool)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'supportsInterface(bytes4)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'symbol()': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'tokenByIndex(uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'tokenOfOwnerByIndex(address,uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'tokenURI(uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'totalSupply()': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'transferFrom(address,address,uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'unpause()': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'initialize(string,string,string)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'getAttributes(uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'getFeeRecipients(uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'getFeeBps(uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'updateRecipientsFees(uint256,address,uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'updateFeeAccount(uint256,address,address)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'mint(address,(address,uint256)[],(string,string)[],string)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'mint(address)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'mintWithFee(address,(address,uint256)[],(string,string)[],string)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'setGhostmarketFeeAddress(address)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'setGhostmarketFeeMultiplier(uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'setGhostmarketMintFee(uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'ghostmarketFeeAddress()': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'ghostmarketMintingFee()': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'ghostmarketFeeMultiplier()': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'getLockedContent(uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    },
    'getCurrentLockedContentViewTracker(uint256)': [Function (anonymous)] {
      call: [Function (anonymous)],
      sendTransaction: [Function (anonymous)],
      estimateGas: [Function (anonymous)],
      request: [Function (anonymous)]
    }
  },
  abi: [
    {
      anonymous: false,
      inputs: [Array],
      name: 'Approval',
      type: 'event',
      constant: undefined,
      payable: undefined,
      signature: '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925'
    },
    {
      anonymous: false,
      inputs: [Array],
      name: 'ApprovalForAll',
      type: 'event',
      constant: undefined,
      payable: undefined,
      signature: '0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31'
    },
    {
      anonymous: false,
      inputs: [Array],
      name: 'AttributesSet',
      type: 'event',
      constant: undefined,
      payable: undefined,
      signature: '0xa5800424c9d59fec069be83c374ba1fad8ad7472fcb6fb6648cbf62a557ae4e7'
    },
    {
      anonymous: false,
      inputs: [Array],
      name: 'GhostmarketFeeAddressChanged',
      type: 'event',
      constant: undefined,
      payable: undefined,
      signature: '0x42e58c2251766d60a378c8984cb15020e19218cae37fa9e7556ce617200f6851'
    },
    {
      anonymous: false,
      inputs: [Array],
      name: 'GhostmarketFeeMultiplierChanged',
      type: 'event',
      constant: undefined,
      payable: undefined,
      signature: '0x7bc6903b724da310ba4dbf15a52e7ae8597dcbe9763ff4d88e2b197a648b4a31'
    },
    {
      anonymous: false,
      inputs: [Array],
      name: 'GhostmarketFeePaid',
      type: 'event',
      constant: undefined,
      payable: undefined,
      signature: '0xf867832f09d3df16244ef05b595ad6197c4fc2da636495ff70035f1acdf2ba0a'
    },
    {
      anonymous: false,
      inputs: [Array],
      name: 'GhostmarketMintFeeChanged',
      type: 'event',
      constant: undefined,
      payable: undefined,
      signature: '0xe28e57f6cdaccbb98c150b646656c0178b4b67253ae73deaba3b9c76525b987e'
    },
    {
      anonymous: false,
      inputs: [Array],
      name: 'LockedContentViewed',
      type: 'event',
      constant: undefined,
      payable: undefined,
      signature: '0x544b1d1249133c50ce89743ed1ca34a815bd50d42b71e6d331a1ac560013a8ec'
    },
    {
      anonymous: false,
      inputs: [Array],
      name: 'Paused',
      type: 'event',
      constant: undefined,
      payable: undefined,
      signature: '0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258'
    },
    {
      anonymous: false,
      inputs: [Array],
      name: 'RoleAdminChanged',
      type: 'event',
      constant: undefined,
      payable: undefined,
      signature: '0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff'
    },
    {
      anonymous: false,
      inputs: [Array],
      name: 'RoleGranted',
      type: 'event',
      constant: undefined,
      payable: undefined,
      signature: '0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d'
    },
    {
      anonymous: false,
      inputs: [Array],
      name: 'RoleRevoked',
      type: 'event',
      constant: undefined,
      payable: undefined,
      signature: '0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b'
    },
    {
      anonymous: false,
      inputs: [Array],
      name: 'SecondarySaleFees',
      type: 'event',
      constant: undefined,
      payable: undefined,
      signature: '0x99aba1d63749cfd5ad1afda7c4663840924d54eb5f005bbbeadedc6ec13674b2'
    },
    {
      anonymous: false,
      inputs: [Array],
      name: 'Transfer',
      type: 'event',
      constant: undefined,
      payable: undefined,
      signature: '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'
    },
    {
      anonymous: false,
      inputs: [Array],
      name: 'Unpaused',
      type: 'event',
      constant: undefined,
      payable: undefined,
      signature: '0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa'
    },
    {
      inputs: [],
      name: 'DEFAULT_ADMIN_ROLE',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0xa217fddf'
    },
    {
      inputs: [],
      name: 'MINTER_ROLE',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0xd5391393'
    },
    {
      inputs: [],
      name: 'PAUSER_ROLE',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0xe63ab1e9'
    },
    {
      inputs: [Array],
      name: '_lockedContent',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0x529aae66'
    },
    {
      inputs: [Array],
      name: 'approve',
      outputs: [],
      stateMutability: 'nonpayable',
      type: 'function',
      constant: undefined,
      payable: undefined,
      signature: '0x095ea7b3'
    },
    {
      inputs: [Array],
      name: 'attribute',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0x3daab032'
    },
    {
      inputs: [Array],
      name: 'balanceOf',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0x70a08231'
    },
    {
      inputs: [Array],
      name: 'burn',
      outputs: [],
      stateMutability: 'nonpayable',
      type: 'function',
      constant: undefined,
      payable: undefined,
      signature: '0x42966c68'
    },
    {
      inputs: [Array],
      name: 'fees',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0x6308f1cd'
    },
    {
      inputs: [Array],
      name: 'getApproved',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0x081812fc'
    },
    {
      inputs: [],
      name: 'getCurrentCounter',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0x73448c46'
    },
    {
      inputs: [Array],
      name: 'getRoleAdmin',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0x248a9ca3'
    },
    {
      inputs: [Array],
      name: 'getRoleMember',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0x9010d07c'
    },
    {
      inputs: [Array],
      name: 'getRoleMemberCount',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0xca15c873'
    },
    {
      inputs: [Array],
      name: 'grantRole',
      outputs: [],
      stateMutability: 'nonpayable',
      type: 'function',
      constant: undefined,
      payable: undefined,
      signature: '0x2f2ff15d'
    },
    {
      inputs: [Array],
      name: 'hasRole',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0x91d14854'
    },
    {
      inputs: [Array],
      name: 'isApprovedForAll',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0xe985e9c5'
    },
    {
      inputs: [],
      name: 'name',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0x06fdde03'
    },
    {
      inputs: [Array],
      name: 'ownerOf',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0x6352211e'
    },
    {
      inputs: [],
      name: 'pause',
      outputs: [],
      stateMutability: 'nonpayable',
      type: 'function',
      constant: undefined,
      payable: undefined,
      signature: '0x8456cb59'
    },
    {
      inputs: [],
      name: 'paused',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0x5c975abb'
    },
    {
      inputs: [Array],
      name: 'renounceRole',
      outputs: [],
      stateMutability: 'nonpayable',
      type: 'function',
      constant: undefined,
      payable: undefined,
      signature: '0x36568abe'
    },
    {
      inputs: [Array],
      name: 'revokeRole',
      outputs: [],
      stateMutability: 'nonpayable',
      type: 'function',
      constant: undefined,
      payable: undefined,
      signature: '0xd547741f'
    },
    {
      inputs: [Array],
      name: 'safeTransferFrom',
      outputs: [],
      stateMutability: 'nonpayable',
      type: 'function',
      constant: undefined,
      payable: undefined,
      signature: '0x42842e0e'
    },
    {
      inputs: [Array],
      name: 'safeTransferFrom',
      outputs: [],
      stateMutability: 'nonpayable',
      type: 'function',
      constant: undefined,
      payable: undefined,
      signature: '0xb88d4fde'
    },
    {
      inputs: [Array],
      name: 'setApprovalForAll',
      outputs: [],
      stateMutability: 'nonpayable',
      type: 'function',
      constant: undefined,
      payable: undefined,
      signature: '0xa22cb465'
    },
    {
      inputs: [Array],
      name: 'supportsInterface',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0x01ffc9a7'
    },
    {
      inputs: [],
      name: 'symbol',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0x95d89b41'
    },
    {
      inputs: [Array],
      name: 'tokenByIndex',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0x4f6ccce7'
    },
    {
      inputs: [Array],
      name: 'tokenOfOwnerByIndex',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0x2f745c59'
    },
    {
      inputs: [Array],
      name: 'tokenURI',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0xc87b56dd'
    },
    {
      inputs: [],
      name: 'totalSupply',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0x18160ddd'
    },
    {
      inputs: [Array],
      name: 'transferFrom',
      outputs: [],
      stateMutability: 'nonpayable',
      type: 'function',
      constant: undefined,
      payable: undefined,
      signature: '0x23b872dd'
    },
    {
      inputs: [],
      name: 'unpause',
      outputs: [],
      stateMutability: 'nonpayable',
      type: 'function',
      constant: undefined,
      payable: undefined,
      signature: '0x3f4ba83a'
    },
    {
      inputs: [Array],
      name: 'initialize',
      outputs: [],
      stateMutability: 'nonpayable',
      type: 'function',
      constant: undefined,
      payable: undefined,
      signature: '0xa6487c53'
    },
    {
      inputs: [Array],
      name: 'getAttributes',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0x4378a6e3'
    },
    {
      inputs: [Array],
      name: 'getFeeRecipients',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0xb9c4d9fb'
    },
    {
      inputs: [Array],
      name: 'getFeeBps',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0x0ebd4c7f'
    },
    {
      inputs: [Array],
      name: 'updateRecipientsFees',
      outputs: [],
      stateMutability: 'nonpayable',
      type: 'function',
      constant: undefined,
      payable: undefined,
      signature: '0xffbd264d'
    },
    {
      inputs: [Array],
      name: 'updateFeeAccount',
      outputs: [],
      stateMutability: 'nonpayable',
      type: 'function',
      constant: undefined,
      payable: undefined,
      signature: '0x36d8ec09'
    },
    {
      inputs: [Array],
      name: 'mint',
      outputs: [],
      stateMutability: 'nonpayable',
      type: 'function',
      constant: undefined,
      payable: undefined,
      signature: '0x0ffbe0c1'
    },
    {
      inputs: [Array],
      name: 'mint',
      outputs: [],
      stateMutability: 'nonpayable',
      type: 'function',
      constant: undefined,
      payable: undefined,
      signature: '0x6a627842'
    },
    {
      inputs: [Array],
      name: 'mintWithFee',
      outputs: [],
      stateMutability: 'payable',
      type: 'function',
      constant: undefined,
      payable: true,
      signature: '0xf67684fd'
    },
    {
      inputs: [Array],
      name: 'setGhostmarketFeeAddress',
      outputs: [],
      stateMutability: 'nonpayable',
      type: 'function',
      constant: undefined,
      payable: undefined,
      signature: '0xfc24a8a9'
    },
    {
      inputs: [Array],
      name: 'setGhostmarketFeeMultiplier',
      outputs: [],
      stateMutability: 'nonpayable',
      type: 'function',
      constant: undefined,
      payable: undefined,
      signature: '0xc20b8336'
    },
    {
      inputs: [Array],
      name: 'setGhostmarketMintFee',
      outputs: [],
      stateMutability: 'nonpayable',
      type: 'function',
      constant: undefined,
      payable: undefined,
      signature: '0xdac0f3d9'
    },
    {
      inputs: [],
      name: 'ghostmarketFeeAddress',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0xfb3e09af'
    },
    {
      inputs: [],
      name: 'ghostmarketMintingFee',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0x6213801f'
    },
    {
      inputs: [],
      name: 'ghostmarketFeeMultiplier',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0xe38189c9'
    },
    {
      inputs: [Array],
      name: 'getLockedContent',
      outputs: [Array],
      stateMutability: 'nonpayable',
      type: 'function',
      constant: undefined,
      payable: undefined,
      signature: '0x1c7e78f3'
    },
    {
      inputs: [Array],
      name: 'getCurrentLockedContentViewTracker',
      outputs: [Array],
      stateMutability: 'view',
      type: 'function',
      constant: true,
      payable: undefined,
      signature: '0xc6f4f0f0'
    }
  ],
  address: '0x64f583241F2f932B756c9854965Cc928DDf357d8',
  transactionHash: undefined,
  contract: Contract {
    setProvider: [Function (anonymous)],
    currentProvider: [Getter/Setter],
    _requestManager: RequestManager {
      provider: [HDWalletProvider],
      providers: [Object],
      subscriptions: Map(0) {}
    },
    givenProvider: null,
    providers: {
      WebsocketProvider: [Function: WebsocketProvider],
      HttpProvider: [Function: HttpProvider],
      IpcProvider: [Function: IpcProvider]
    },
    _provider: HDWalletProvider {
      walletHdpath: "m/44'/60'/0'/0/",
      wallets: [Object],
      addresses: [Array],
      engine: [Web3ProviderEngine],
      send: [Function (anonymous)],
      _alreadyWrapped: true
    },
    setRequestManager: [Function (anonymous)],
    BatchRequest: [Function: bound Batch],
    extend: [Function: ex] {
      formatters: [Object],
      utils: [Object],
      Method: [Function: Method]
    },
    clearSubscriptions: [Function (anonymous)],
    options: { address: [Getter/Setter], jsonInterface: [Getter/Setter] },
    handleRevert: [Getter/Setter],
    defaultCommon: [Getter/Setter],
    defaultHardfork: [Getter/Setter],
    defaultChain: [Getter/Setter],
    transactionPollingTimeout: [Getter/Setter],
    transactionConfirmationBlocks: [Getter/Setter],
    transactionBlockTimeout: [Getter/Setter],
    defaultAccount: [Getter/Setter],
    defaultBlock: [Getter/Setter],
    methods: {
      DEFAULT_ADMIN_ROLE: [Function: bound _createTxObject],
      '0xa217fddf': [Function: bound _createTxObject],
      'DEFAULT_ADMIN_ROLE()': [Function: bound _createTxObject],
      MINTER_ROLE: [Function: bound _createTxObject],
      '0xd5391393': [Function: bound _createTxObject],
      'MINTER_ROLE()': [Function: bound _createTxObject],
      PAUSER_ROLE: [Function: bound _createTxObject],
      '0xe63ab1e9': [Function: bound _createTxObject],
      'PAUSER_ROLE()': [Function: bound _createTxObject],
      _lockedContent: [Function: bound _createTxObject],
      '0x529aae66': [Function: bound _createTxObject],
      '_lockedContent(uint256)': [Function: bound _createTxObject],
      approve: [Function: bound _createTxObject],
      '0x095ea7b3': [Function: bound _createTxObject],
      'approve(address,uint256)': [Function: bound _createTxObject],
      attribute: [Function: bound _createTxObject],
      '0x3daab032': [Function: bound _createTxObject],
      'attribute(uint256,uint256)': [Function: bound _createTxObject],
      balanceOf: [Function: bound _createTxObject],
      '0x70a08231': [Function: bound _createTxObject],
      'balanceOf(address)': [Function: bound _createTxObject],
      burn: [Function: bound _createTxObject],
      '0x42966c68': [Function: bound _createTxObject],
      'burn(uint256)': [Function: bound _createTxObject],
      fees: [Function: bound _createTxObject],
      '0x6308f1cd': [Function: bound _createTxObject],
      'fees(uint256,uint256)': [Function: bound _createTxObject],
      getApproved: [Function: bound _createTxObject],
      '0x081812fc': [Function: bound _createTxObject],
      'getApproved(uint256)': [Function: bound _createTxObject],
      getCurrentCounter: [Function: bound _createTxObject],
      '0x73448c46': [Function: bound _createTxObject],
      'getCurrentCounter()': [Function: bound _createTxObject],
      getRoleAdmin: [Function: bound _createTxObject],
      '0x248a9ca3': [Function: bound _createTxObject],
      'getRoleAdmin(bytes32)': [Function: bound _createTxObject],
      getRoleMember: [Function: bound _createTxObject],
      '0x9010d07c': [Function: bound _createTxObject],
      'getRoleMember(bytes32,uint256)': [Function: bound _createTxObject],
      getRoleMemberCount: [Function: bound _createTxObject],
      '0xca15c873': [Function: bound _createTxObject],
      'getRoleMemberCount(bytes32)': [Function: bound _createTxObject],
      grantRole: [Function: bound _createTxObject],
      '0x2f2ff15d': [Function: bound _createTxObject],
      'grantRole(bytes32,address)': [Function: bound _createTxObject],
      hasRole: [Function: bound _createTxObject],
      '0x91d14854': [Function: bound _createTxObject],
      'hasRole(bytes32,address)': [Function: bound _createTxObject],
      isApprovedForAll: [Function: bound _createTxObject],
      '0xe985e9c5': [Function: bound _createTxObject],
      'isApprovedForAll(address,address)': [Function: bound _createTxObject],
      name: [Function: bound _createTxObject],
      '0x06fdde03': [Function: bound _createTxObject],
      'name()': [Function: bound _createTxObject],
      ownerOf: [Function: bound _createTxObject],
      '0x6352211e': [Function: bound _createTxObject],
      'ownerOf(uint256)': [Function: bound _createTxObject],
      pause: [Function: bound _createTxObject],
      '0x8456cb59': [Function: bound _createTxObject],
      'pause()': [Function: bound _createTxObject],
      paused: [Function: bound _createTxObject],
      '0x5c975abb': [Function: bound _createTxObject],
      'paused()': [Function: bound _createTxObject],
      renounceRole: [Function: bound _createTxObject],
      '0x36568abe': [Function: bound _createTxObject],
      'renounceRole(bytes32,address)': [Function: bound _createTxObject],
      revokeRole: [Function: bound _createTxObject],
      '0xd547741f': [Function: bound _createTxObject],
      'revokeRole(bytes32,address)': [Function: bound _createTxObject],
      safeTransferFrom: [Function: bound _createTxObject],
      '0x42842e0e': [Function: bound _createTxObject],
      'safeTransferFrom(address,address,uint256)': [Function: bound _createTxObject],
      '0xb88d4fde': [Function: bound _createTxObject],
      'safeTransferFrom(address,address,uint256,bytes)': [Function: bound _createTxObject],
      setApprovalForAll: [Function: bound _createTxObject],
      '0xa22cb465': [Function: bound _createTxObject],
      'setApprovalForAll(address,bool)': [Function: bound _createTxObject],
      supportsInterface: [Function: bound _createTxObject],
      '0x01ffc9a7': [Function: bound _createTxObject],
      'supportsInterface(bytes4)': [Function: bound _createTxObject],
      symbol: [Function: bound _createTxObject],
      '0x95d89b41': [Function: bound _createTxObject],
      'symbol()': [Function: bound _createTxObject],
      tokenByIndex: [Function: bound _createTxObject],
      '0x4f6ccce7': [Function: bound _createTxObject],
      'tokenByIndex(uint256)': [Function: bound _createTxObject],
      tokenOfOwnerByIndex: [Function: bound _createTxObject],
      '0x2f745c59': [Function: bound _createTxObject],
      'tokenOfOwnerByIndex(address,uint256)': [Function: bound _createTxObject],
      tokenURI: [Function: bound _createTxObject],
      '0xc87b56dd': [Function: bound _createTxObject],
      'tokenURI(uint256)': [Function: bound _createTxObject],
      totalSupply: [Function: bound _createTxObject],
      '0x18160ddd': [Function: bound _createTxObject],
      'totalSupply()': [Function: bound _createTxObject],
      transferFrom: [Function: bound _createTxObject],
      '0x23b872dd': [Function: bound _createTxObject],
      'transferFrom(address,address,uint256)': [Function: bound _createTxObject],
      unpause: [Function: bound _createTxObject],
      '0x3f4ba83a': [Function: bound _createTxObject],
      'unpause()': [Function: bound _createTxObject],
      initialize: [Function: bound _createTxObject],
      '0xa6487c53': [Function: bound _createTxObject],
      'initialize(string,string,string)': [Function: bound _createTxObject],
      getAttributes: [Function: bound _createTxObject],
      '0x4378a6e3': [Function: bound _createTxObject],
      'getAttributes(uint256)': [Function: bound _createTxObject],
      getFeeRecipients: [Function: bound _createTxObject],
      '0xb9c4d9fb': [Function: bound _createTxObject],
      'getFeeRecipients(uint256)': [Function: bound _createTxObject],
      getFeeBps: [Function: bound _createTxObject],
      '0x0ebd4c7f': [Function: bound _createTxObject],
      'getFeeBps(uint256)': [Function: bound _createTxObject],
      updateRecipientsFees: [Function: bound _createTxObject],
      '0xffbd264d': [Function: bound _createTxObject],
      'updateRecipientsFees(uint256,address,uint256)': [Function: bound _createTxObject],
      updateFeeAccount: [Function: bound _createTxObject],
      '0x36d8ec09': [Function: bound _createTxObject],
      'updateFeeAccount(uint256,address,address)': [Function: bound _createTxObject],
      mint: [Function: bound _createTxObject],
      '0x0ffbe0c1': [Function: bound _createTxObject],
      'mint(address,(address,uint256)[],(string,string)[],string)': [Function: bound _createTxObject],
      '0x6a627842': [Function: bound _createTxObject],
      'mint(address)': [Function: bound _createTxObject],
      mintWithFee: [Function: bound _createTxObject],
      '0xf67684fd': [Function: bound _createTxObject],
      'mintWithFee(address,(address,uint256)[],(string,string)[],string)': [Function: bound _createTxObject],
      setGhostmarketFeeAddress: [Function: bound _createTxObject],
      '0xfc24a8a9': [Function: bound _createTxObject],
      'setGhostmarketFeeAddress(address)': [Function: bound _createTxObject],
      setGhostmarketFeeMultiplier: [Function: bound _createTxObject],
      '0xc20b8336': [Function: bound _createTxObject],
      'setGhostmarketFeeMultiplier(uint256)': [Function: bound _createTxObject],
      setGhostmarketMintFee: [Function: bound _createTxObject],
      '0xdac0f3d9': [Function: bound _createTxObject],
      'setGhostmarketMintFee(uint256)': [Function: bound _createTxObject],
      ghostmarketFeeAddress: [Function: bound _createTxObject],
      '0xfb3e09af': [Function: bound _createTxObject],
      'ghostmarketFeeAddress()': [Function: bound _createTxObject],
      ghostmarketMintingFee: [Function: bound _createTxObject],
      '0x6213801f': [Function: bound _createTxObject],
      'ghostmarketMintingFee()': [Function: bound _createTxObject],
      ghostmarketFeeMultiplier: [Function: bound _createTxObject],
      '0xe38189c9': [Function: bound _createTxObject],
      'ghostmarketFeeMultiplier()': [Function: bound _createTxObject],
      getLockedContent: [Function: bound _createTxObject],
      '0x1c7e78f3': [Function: bound _createTxObject],
      'getLockedContent(uint256)': [Function: bound _createTxObject],
      getCurrentLockedContentViewTracker: [Function: bound _createTxObject],
      '0xc6f4f0f0': [Function: bound _createTxObject],
      'getCurrentLockedContentViewTracker(uint256)': [Function: bound _createTxObject]
    },
    events: {
      Approval: [Function: bound ],
      '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925': [Function: bound ],
      'Approval(address,address,uint256)': [Function: bound ],
      ApprovalForAll: [Function: bound ],
      '0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31': [Function: bound ],
      'ApprovalForAll(address,address,bool)': [Function: bound ],
      AttributesSet: [Function: bound ],
      '0xa5800424c9d59fec069be83c374ba1fad8ad7472fcb6fb6648cbf62a557ae4e7': [Function: bound ],
      'AttributesSet(uint256,(string,string)[])': [Function: bound ],
      GhostmarketFeeAddressChanged: [Function: bound ],
      '0x42e58c2251766d60a378c8984cb15020e19218cae37fa9e7556ce617200f6851': [Function: bound ],
      'GhostmarketFeeAddressChanged(address)': [Function: bound ],
      GhostmarketFeeMultiplierChanged: [Function: bound ],
      '0x7bc6903b724da310ba4dbf15a52e7ae8597dcbe9763ff4d88e2b197a648b4a31': [Function: bound ],
      'GhostmarketFeeMultiplierChanged(uint256)': [Function: bound ],
      GhostmarketFeePaid: [Function: bound ],
      '0xf867832f09d3df16244ef05b595ad6197c4fc2da636495ff70035f1acdf2ba0a': [Function: bound ],
      'GhostmarketFeePaid(address,uint256)': [Function: bound ],
      GhostmarketMintFeeChanged: [Function: bound ],
      '0xe28e57f6cdaccbb98c150b646656c0178b4b67253ae73deaba3b9c76525b987e': [Function: bound ],
      'GhostmarketMintFeeChanged(uint256)': [Function: bound ],
      LockedContentViewed: [Function: bound ],
      '0x544b1d1249133c50ce89743ed1ca34a815bd50d42b71e6d331a1ac560013a8ec': [Function: bound ],
      'LockedContentViewed(address,uint256,string)': [Function: bound ],
      Paused: [Function: bound ],
      '0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258': [Function: bound ],
      'Paused(address)': [Function: bound ],
      RoleAdminChanged: [Function: bound ],
      '0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff': [Function: bound ],
      'RoleAdminChanged(bytes32,bytes32,bytes32)': [Function: bound ],
      RoleGranted: [Function: bound ],
      '0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d': [Function: bound ],
      'RoleGranted(bytes32,address,address)': [Function: bound ],
      RoleRevoked: [Function: bound ],
      '0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b': [Function: bound ],
      'RoleRevoked(bytes32,address,address)': [Function: bound ],
      SecondarySaleFees: [Function: bound ],
      '0x99aba1d63749cfd5ad1afda7c4663840924d54eb5f005bbbeadedc6ec13674b2': [Function: bound ],
      'SecondarySaleFees(uint256,address[],uint256[])': [Function: bound ],
      Transfer: [Function: bound ],
      '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef': [Function: bound ],
      'Transfer(address,address,uint256)': [Function: bound ],
      Unpaused: [Function: bound ],
      '0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa': [Function: bound ],
      'Unpaused(address)': [Function: bound ],
      allEvents: [Function: bound ]
    },
    _address: '0x64f583241F2f932B756c9854965Cc928DDf357d8',
    _jsonInterface: [
      [Object], [Object], [Object], [Object], [Object],
      [Object], [Object], [Object], [Object], [Object],
      [Object], [Object], [Object], [Object], [Object],
      [Object], [Object], [Object], [Object], [Object],
      [Object], [Object], [Object], [Object], [Object],
      [Object], [Object], [Object], [Object], [Object],
      [Object], [Object], [Object], [Object], [Object],
      [Object], [Object], [Object], [Object], [Object],
      [Object], [Object], [Object], [Object], [Object],
      [Object], [Object], [Object], [Object], [Object],
      [Object], [Object], [Object], [Object], [Object],
      [Object], [Object], [Object], [Object], [Object],
      [Object], [Object], [Object], [Object], [Object],
      [Object]
    ]
  },
  Approval: [Function (anonymous)],
  ApprovalForAll: [Function (anonymous)],
  AttributesSet: [Function (anonymous)],
  GhostmarketFeeAddressChanged: [Function (anonymous)],
  GhostmarketFeeMultiplierChanged: [Function (anonymous)],
  GhostmarketFeePaid: [Function (anonymous)],
  GhostmarketMintFeeChanged: [Function (anonymous)],
  LockedContentViewed: [Function (anonymous)],
  Paused: [Function (anonymous)],
  RoleAdminChanged: [Function (anonymous)],
  RoleGranted: [Function (anonymous)],
  RoleRevoked: [Function (anonymous)],
  SecondarySaleFees: [Function (anonymous)],
  Transfer: [Function (anonymous)],
  Unpaused: [Function (anonymous)],
  DEFAULT_ADMIN_ROLE: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  MINTER_ROLE: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  PAUSER_ROLE: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  _lockedContent: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  approve: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  attribute: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  balanceOf: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  burn: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  fees: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  getApproved: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  getCurrentCounter: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  getRoleAdmin: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  getRoleMember: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  getRoleMemberCount: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  grantRole: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  hasRole: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  isApprovedForAll: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  name: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  ownerOf: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  pause: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  paused: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  renounceRole: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  revokeRole: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  safeTransferFrom: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  setApprovalForAll: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  supportsInterface: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  symbol: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  tokenByIndex: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  tokenOfOwnerByIndex: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  tokenURI: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  totalSupply: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  transferFrom: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  unpause: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  initialize: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  getAttributes: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  getFeeRecipients: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  getFeeBps: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  updateRecipientsFees: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  updateFeeAccount: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  mint: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  mintWithFee: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  setGhostmarketFeeAddress: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  setGhostmarketFeeMultiplier: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  setGhostmarketMintFee: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  ghostmarketFeeAddress: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  ghostmarketMintingFee: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  ghostmarketFeeMultiplier: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  getLockedContent: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  getCurrentLockedContentViewTracker: [Function (anonymous)] {
    call: [Function (anonymous)],
    sendTransaction: [Function (anonymous)],
    estimateGas: [Function (anonymous)],
    request: [Function (anonymous)]
  },
  sendTransaction: [Function (anonymous)],
  send: [Function (anonymous)],
  allEvents: [Function (anonymous)],
  getPastEvents: [Function (anonymous)]
}

How about installing the latest version of the truffle?

Upgraded truffle, the same problem persists. (it works with the local environment on ganache)

Another thing that I could not figure out is that I need always to use {value: <some_ether_value>}
with.
It does not matter if I use:

_ghostmarketFeeAddress.transfer(_ghostmarketMintingFee);

or this logic:

(bool success, ) = _ghostmarketFeeAddress.call{value: _ghostmarketMintingFee}("");
        require(success, "Transfer failed.");

Also the <some_ether_value> needs to be equal to _ghostmarketMintingFee

else I get this error:

"after each" hook: after test for "should send fee to mintingFeeAccount":
         Uncaught RuntimeError: abort(Error: Returned error: VM Exception while processing transaction: revert). Build with -s ASSERTIONS=1 for more info.

Here is also the test, that I’m using:

it('should send fee to mintingFeeAccount', async function () {
  const value = ether('0.1');
  await this.GhostmarketERC721.setGhostmarketFeeAddress(mintingFeeAccount)
  await this.GhostmarketERC721.setGhostmarketMintFee(value)
  const feeAddressEthBalanceBefore = await web3.eth.getBalance(mintingFeeAccount)

  this.GhostmarketERC721.mintGhost(minter, [], "", "", {value: value})
  const feeAddressEthBalanceAfter = await web3.eth.getBalance(mintingFeeAccount)

  expect(parseInt(feeAddressEthBalanceAfter)).to.equal(parseInt(feeAddressEthBalanceBefore) + parseInt(value))
});

Solved it with first paying the contract, then creating a external withdraw function that can be used