|
|
|
from os import getenv
|
|
|
|
from dotenv import load_dotenv
|
|
|
|
|
|
|
|
load_dotenv()
|
|
|
|
|
|
|
|
# App
|
|
|
|
SECRET_KEY = getenv('SECRET_KEY', 'yyyyyyyyyyyyy')
|
|
|
|
DATA_FOLDER = getenv('DATA_FOLDER', '/path/to/uploads')
|
|
|
|
SERVER_NAME = getenv('SERVER_NAME', '127.0.0.1:5000')
|
|
|
|
IPFS_SERVER = getenv('IPFS_SERVER', 'http://127.0.0.1:8080')
|
|
|
|
AVAX_RPC = getenv('AVAX_RPC', 'https://api.avax-test.network/ext/bc/C/rpc')
|
|
|
|
|
|
|
|
# Cache
|
|
|
|
CACHE_HOST = getenv('CACHE_HOST', 'localhost')
|
|
|
|
CACHE_PORT = getenv('CACHE_PORT', 6379)
|
|
|
|
|
|
|
|
# Uploads
|
|
|
|
SESSION_TYPE = 'filesystem'
|
|
|
|
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif', 'svg', 'mp4', 'webp'}
|
|
|
|
MAX_CONTENT_LENGTH = 32 * 1024 * 1024
|
|
|
|
TEMPLATES_AUTO_RELOAD = getenv('TEMPLATES_AUTO_RELOAD', True)
|
|
|
|
|
|
|
|
# Contract
|
|
|
|
CONTRACT_TESTNET = getenv('TESTNET', True)
|
|
|
|
CONTRACT_OWNER = 'lzamenace.eth'
|
|
|
|
if CONTRACT_TESTNET:
|
|
|
|
WOWX_ADDRESS = '0xc6B039b1e0be1ba0B433f319898438E782E5dEBA' # WOWX testnet
|
|
|
|
CONTRACT_ADDRESS = '0xE1b6483729557E539cfD9c3Bdb754C54c16cFCe7' # SWX testnet
|
|
|
|
else:
|
|
|
|
WOWX_ADDRESS = '0xba5dc7e77d150816b758e9826fcad2d74820e379' # WOWX mainnet
|
|
|
|
CONTRACT_ADDRESS = '' # SWX mainnet
|
|
|
|
|
|
|
|
CONTRACT_ABI = [
|
|
|
|
{
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"internalType": "address",
|
|
|
|
"name": "wowxAddress",
|
|
|
|
"type": "address"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"stateMutability": "nonpayable",
|
|
|
|
"type": "constructor"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"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": True,
|
|
|
|
"internalType": "address",
|
|
|
|
"name": "previousOwner",
|
|
|
|
"type": "address"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"indexed": True,
|
|
|
|
"internalType": "address",
|
|
|
|
"name": "newOwner",
|
|
|
|
"type": "address"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "OwnershipTransferred",
|
|
|
|
"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"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"internalType": "address",
|
|
|
|
"name": "to",
|
|
|
|
"type": "address"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "tokenId",
|
|
|
|
"type": "uint256"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "approve",
|
|
|
|
"outputs": [],
|
|
|
|
"stateMutability": "nonpayable",
|
|
|
|
"type": "function"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"internalType": "address",
|
|
|
|
"name": "owner",
|
|
|
|
"type": "address"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "balanceOf",
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "",
|
|
|
|
"type": "uint256"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"stateMutability": "view",
|
|
|
|
"type": "function",
|
|
|
|
"constant": True
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [],
|
|
|
|
"name": "contractCreator",
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"internalType": "string",
|
|
|
|
"name": "",
|
|
|
|
"type": "string"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"stateMutability": "view",
|
|
|
|
"type": "function",
|
|
|
|
"constant": True
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [],
|
|
|
|
"name": "contractTipCutPercent",
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "",
|
|
|
|
"type": "uint256"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"stateMutability": "view",
|
|
|
|
"type": "function",
|
|
|
|
"constant": True
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [],
|
|
|
|
"name": "contractVersion",
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"internalType": "string",
|
|
|
|
"name": "",
|
|
|
|
"type": "string"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"stateMutability": "view",
|
|
|
|
"type": "function",
|
|
|
|
"constant": True
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "tokenId",
|
|
|
|
"type": "uint256"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "getApproved",
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"internalType": "address",
|
|
|
|
"name": "",
|
|
|
|
"type": "address"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"stateMutability": "view",
|
|
|
|
"type": "function",
|
|
|
|
"constant": True
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"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",
|
|
|
|
"constant": True
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"internalType": "string",
|
|
|
|
"name": "",
|
|
|
|
"type": "string"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "metadataTokenId",
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "",
|
|
|
|
"type": "uint256"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"stateMutability": "view",
|
|
|
|
"type": "function",
|
|
|
|
"constant": True
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [],
|
|
|
|
"name": "name",
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"internalType": "string",
|
|
|
|
"name": "",
|
|
|
|
"type": "string"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"stateMutability": "view",
|
|
|
|
"type": "function",
|
|
|
|
"constant": True
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [],
|
|
|
|
"name": "owner",
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"internalType": "address",
|
|
|
|
"name": "",
|
|
|
|
"type": "address"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"stateMutability": "view",
|
|
|
|
"type": "function",
|
|
|
|
"constant": True
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "tokenId",
|
|
|
|
"type": "uint256"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "ownerOf",
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"internalType": "address",
|
|
|
|
"name": "",
|
|
|
|
"type": "address"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"stateMutability": "view",
|
|
|
|
"type": "function",
|
|
|
|
"constant": True
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [],
|
|
|
|
"name": "publisherTipCutPercent",
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "",
|
|
|
|
"type": "uint256"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"stateMutability": "view",
|
|
|
|
"type": "function",
|
|
|
|
"constant": True
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [],
|
|
|
|
"name": "renounceOwnership",
|
|
|
|
"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": "bytes4",
|
|
|
|
"name": "interfaceId",
|
|
|
|
"type": "bytes4"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "supportsInterface",
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"internalType": "bool",
|
|
|
|
"name": "",
|
|
|
|
"type": "bool"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"stateMutability": "view",
|
|
|
|
"type": "function",
|
|
|
|
"constant": True
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [],
|
|
|
|
"name": "symbol",
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"internalType": "string",
|
|
|
|
"name": "",
|
|
|
|
"type": "string"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"stateMutability": "view",
|
|
|
|
"type": "function",
|
|
|
|
"constant": True
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "",
|
|
|
|
"type": "uint256"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "tokenMeme",
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "publisherTipsAVAX",
|
|
|
|
"type": "uint256"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "creatorTipsAVAX",
|
|
|
|
"type": "uint256"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "contractTipsAVAX",
|
|
|
|
"type": "uint256"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "publisherTipsWOWX",
|
|
|
|
"type": "uint256"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "creatorTipsWOWX",
|
|
|
|
"type": "uint256"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "contractTipsWOWX",
|
|
|
|
"type": "uint256"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"internalType": "address",
|
|
|
|
"name": "publisherAddress",
|
|
|
|
"type": "address"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"internalType": "address",
|
|
|
|
"name": "creatorAddress",
|
|
|
|
"type": "address"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"internalType": "string",
|
|
|
|
"name": "metadataIPFSHash",
|
|
|
|
"type": "string"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"stateMutability": "view",
|
|
|
|
"type": "function",
|
|
|
|
"constant": True
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"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": [
|
|
|
|
{
|
|
|
|
"internalType": "address",
|
|
|
|
"name": "newOwner",
|
|
|
|
"type": "address"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "transferOwnership",
|
|
|
|
"outputs": [],
|
|
|
|
"stateMutability": "nonpayable",
|
|
|
|
"type": "function"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"internalType": "address",
|
|
|
|
"name": "",
|
|
|
|
"type": "address"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "userProfile",
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"internalType": "string",
|
|
|
|
"name": "wowneroAddress",
|
|
|
|
"type": "string"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"internalType": "string",
|
|
|
|
"name": "userHandle",
|
|
|
|
"type": "string"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"internalType": "string",
|
|
|
|
"name": "metadataIPFSHash",
|
|
|
|
"type": "string"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "tippedAVAX",
|
|
|
|
"type": "uint256"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "tippedWOWX",
|
|
|
|
"type": "uint256"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"stateMutability": "view",
|
|
|
|
"type": "function",
|
|
|
|
"constant": True
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [],
|
|
|
|
"name": "withdraw",
|
|
|
|
"outputs": [],
|
|
|
|
"stateMutability": "nonpayable",
|
|
|
|
"type": "function"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "percent",
|
|
|
|
"type": "uint256"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "setContractTipCut",
|
|
|
|
"outputs": [],
|
|
|
|
"stateMutability": "nonpayable",
|
|
|
|
"type": "function"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "percent",
|
|
|
|
"type": "uint256"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "setPublisherTipCut",
|
|
|
|
"outputs": [],
|
|
|
|
"stateMutability": "nonpayable",
|
|
|
|
"type": "function"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [],
|
|
|
|
"name": "totalSupply",
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "",
|
|
|
|
"type": "uint256"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"stateMutability": "view",
|
|
|
|
"type": "function",
|
|
|
|
"constant": True
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"internalType": "string",
|
|
|
|
"name": "wowneroAddress",
|
|
|
|
"type": "string"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "setUserWowneroAddress",
|
|
|
|
"outputs": [],
|
|
|
|
"stateMutability": "nonpayable",
|
|
|
|
"type": "function"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"internalType": "string",
|
|
|
|
"name": "handle",
|
|
|
|
"type": "string"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "setUserHandle",
|
|
|
|
"outputs": [],
|
|
|
|
"stateMutability": "nonpayable",
|
|
|
|
"type": "function"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"internalType": "string",
|
|
|
|
"name": "metadataIPFSHash",
|
|
|
|
"type": "string"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "setUserMetadata",
|
|
|
|
"outputs": [],
|
|
|
|
"stateMutability": "nonpayable",
|
|
|
|
"type": "function"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"internalType": "string",
|
|
|
|
"name": "metadataIPFSHash",
|
|
|
|
"type": "string"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"internalType": "address",
|
|
|
|
"name": "creatorAddress",
|
|
|
|
"type": "address"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "mint",
|
|
|
|
"outputs": [],
|
|
|
|
"stateMutability": "nonpayable",
|
|
|
|
"type": "function"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "tokenId",
|
|
|
|
"type": "uint256"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "amount",
|
|
|
|
"type": "uint256"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "tipAVAX",
|
|
|
|
"outputs": [],
|
|
|
|
"stateMutability": "payable",
|
|
|
|
"type": "function",
|
|
|
|
"payable": True
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "tokenId",
|
|
|
|
"type": "uint256"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "amount",
|
|
|
|
"type": "uint256"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "tipWOWX",
|
|
|
|
"outputs": [],
|
|
|
|
"stateMutability": "payable",
|
|
|
|
"type": "function",
|
|
|
|
"payable": True
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"internalType": "uint256",
|
|
|
|
"name": "tokenId",
|
|
|
|
"type": "uint256"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "tokenURI",
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"internalType": "string",
|
|
|
|
"name": "",
|
|
|
|
"type": "string"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"stateMutability": "view",
|
|
|
|
"type": "function",
|
|
|
|
"constant": True
|
|
|
|
}
|
|
|
|
]
|
|
|
|
WOWX_ABI = [
|
|
|
|
{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":False,"inputs":[{"indexed":True,"internalType":"address","name":"owner","type":"address"},{"indexed":True,"internalType":"address","name":"spender","type":"address"},{"indexed":False,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":False,"inputs":[{"indexed":True,"internalType":"address","name":"delegator","type":"address"},{"indexed":True,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":True,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":False,"inputs":[{"indexed":True,"internalType":"address","name":"delegate","type":"address"},{"indexed":False,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":False,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":False,"inputs":[{"indexed":True,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":True,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":False,"inputs":[{"indexed":True,"internalType":"address","name":"from","type":"address"},{"indexed":True,"internalType":"address","name":"to","type":"address"},{"indexed":False,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint32","name":"pos","type":"uint32"}],"name":"checkpoints","outputs":[{"components":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint224","name":"votes","type":"uint224"}],"internalType":"struct ERC20Votes.Checkpoint","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySi
|
|
|
|
|
|
|
|
|
|
|
|
# Logging
|
|
|
|
LOGGING_CONFIG = {
|
|
|
|
'version': 1,
|
|
|
|
'formatters': {'default': {
|
|
|
|
'format': '[%(asctime)s] %(levelname)s in %(module)s: %(message)s',
|
|
|
|
}},
|
|
|
|
'handlers': {
|
|
|
|
'console': {
|
|
|
|
'level': 'INFO',
|
|
|
|
'class': 'logging.StreamHandler',
|
|
|
|
'formatter': 'default',
|
|
|
|
'stream': 'ext://sys.stdout',
|
|
|
|
},
|
|
|
|
'wsgi': {
|
|
|
|
'class': 'logging.StreamHandler',
|
|
|
|
'stream': 'ext://flask.logging.wsgi_errors_stream',
|
|
|
|
'formatter': 'default'
|
|
|
|
}
|
|
|
|
},
|
|
|
|
'loggers': {
|
|
|
|
'gunicorn.error': {
|
|
|
|
'handlers': ['console'],
|
|
|
|
'level': 'INFO',
|
|
|
|
'propagate': False,
|
|
|
|
},
|
|
|
|
'gunicorn.access': {
|
|
|
|
'handlers': ['console'],
|
|
|
|
'level': 'INFO',
|
|
|
|
'propagate': False,
|
|
|
|
}
|
|
|
|
},
|
|
|
|
'root': {
|
|
|
|
'level': 'DEBUG',
|
|
|
|
'handlers': ['console'],
|
|
|
|
}
|
|
|
|
}
|