QRC721 Token Template
This project is an implementation of NFT (non-funhible token) based on ERC721 and OpenZeppelin. You can use it to issue your own NFTs and build corresponding DApps on Qtum.
You can refer to this article for a detailed description of NFT and ERC721.
- Install the Solidity compiler. You'd better install it from a binary package or the source code.
- Install Solar. Solar is a smart contract deployment tool of Qtum.
- Download this project and install dependencies, like this:
$ git clone https://github.com/qtumproject/QRC721Token.git
$ cd QRC721Token
$ npm install
- Start a Qtum full node. For example, a testnet Qtum QT node can be started on Mac like follows. Here you'd better specify the user name, password and port for RPC interfaces. Moreover, you should have some Qtum coins in the node for contract gas.
$ /Applications/Qtum-Qt.app/Contents/MacOS/Qtum-Qt -testnet -server -rpcuser=lickey -rpcpassword=qtum -rpcport=13889
- Deploy QRC721 using Solar. This command should be executed under the QRC721Token directory. The RPC parameters of the full node you start above should be specified here. You can replace the term name and symbol with anything you want.
$ solar deploy contracts/QRC721.sol '["name","symbol"]' --qtum_rpc=http://lickey:[email protected]:13889
exec: solc [contracts/QRC721.sol --combined-json bin,metadata --optimize --allow-paths /Users/qtum/Code/QRC721Token/QRC721Token]
cli gasPrice 40 40
🚀 All contracts confirmed
deployed contracts/QRC721.sol => 780e2578b08dddc56ca518277a18a2fb6f14da61
- After sucessful deployment, the contract address is shown in the command line. A file named solar.development.json is generated under current directory with information about the deployed contract, like the sender address, contract address, ABI and etc.
// part of solar.development.json
{
"contracts": {
"contracts/QRC721.sol": {
"source": "contracts/QRC721.sol:QRC721",
"abi": ...,
"bin": "...",
"binhash": "f9f27b8932c3bdfe03975201cbdd43c4058de166e737f044b43f53446d19468e",
"name": "QRC721",
"deployName": "contracts/QRC721.sol",
"address": "780e2578b08dddc56ca518277a18a2fb6f14da61",
"txid": "45f71bf4d95680e15a4d857e17be2a13aa8f85403a1e624db4151d8cfb98bf5b",
"createdAt": "2018-11-12T16:21:33.205371334+08:00",
"confirmed": true,
"sender": "qK2ha4bbrVusPwDvM243mLg4SAke9RqUrv",
"senderHex": "1022ba6fa5f2515857a5b226141144b74c3c7d85"
}
...
}
}
See example/cli.
- Mint some QRC721 tokens.
- Choose "Smart Contracts-Send To" in Qtum QT.
- Copy the contract address and ABI to the form.
- Choose the function mint and fill the form with specified "to address" and "token id". (Here the address is in hex format, which you can use the command "fromhexaddress" or "tohexaddress" in "Help-Debug Window-Console" to transfer it from or to a base58 format)
- Choose the contract sender address as "Sender Address", since only the contract owner can mint new tokens.
- Press "SEND TO CONTRACT" button and wait for the created transaction to be confirmed.
- Call QRC721 functions.
- Choose "Smart Contracts-Call" in Qtum QT.
- Copy the contract address and ABI to the form.
- Choose any function you want execute and Press "CALL CONTRACT" button. The you can see the result.
- Check the contract in the blockchain explorer. You can find the token name, total supply and other information in the page. More information about QRC721 will be supported later when needed.