Three types of ERC20/ERC721 Smart Contracts and four types of reward-determining Smart Contracts are primarily utilized within the service.
The utility token (ERC20) deployed on Polygon PoS. It is used for gameplay rewards, restoring durability of pickaxes, leveling up pickaxes, and others. The supply limit is 1 billion tokens and Brilliantcrypto, the issuer, can issue them at its discretion.
Please refer here for information on the timing of discretionary issuance.
A pickaxe is an NFT (ERC721) deployed on Polygon PoS and it is an essential item to play the game. When purchased in the in-game marketplace, it is stored in Brilliantcrypto's wallet with off-chain records of user ownership. When transferring to outside the game, it moves to the user's wallet address and its metadata updates to reflect in-game upgrades and results. By transferring from the in-game wallet integrated back to the Brilliantcrypto wallet, users can once again utilize it within the game (gameplay, leveling up, and sales in the in-game marketplace). For external markets, a Royalty Fee (ERC2981) is configured. It also incorporates the functionality of the Operator Filter Registry provided by OpenSea, enabling restrictions on transactions within specific markets.
A gemstone is an NFT (ERC721) deployed on Ethereum. Gemstones obtained from gameplay rewards can be minted into NFTs at the player's discretion. Once minted, after a grace period, Brilliantcrypto issues it to the user's wallet. By executing a burn from the wallet connected to the game, players can once again use the gemstones within the game (such as selling them in the in-game marketplace). For external markets, a Royalty Fee (ERC2981) is configured. It also incorporates the functionality of the Operator Filter Registry provided by OpenSea, enabling restrictions on transactions within specific markets.
This is a contract on the Polygon PoS blockchain used as reference to allow determination of the mine reward overview. It uses the mine ID and a block hash from Bitcoin.
The mine reward overview includes details such as the number of gemstones and their approximate size.
This contract is deployed on a per-region basis, embedding the probability information necessary to determine the mine reward overview for that region. Once deployed, it will not be changed. When regions are added, a new contract with dedicated logic for that region will be deployed. For more details, please refer to the “Mining Rewards & Gemstone Determination Logic” section.
This is a contract on the Polygon PoS blockchain used as reference to allow determination of the details of gemstones mined in mines. It uses the gemstone determination seed, reward overview data and a block hash from Bitcoin.
The “gemstone details” refers to the quality, size, and cut of gemstones found in a mine.
This contract is deployed on a per-region basis in the game, embedding the probability information necessary to determine the mine reward overview for that region. Once deployed, it will not be changed. When regions and gemstones are added, a new contract with dedicated logic for that region will be deployed. For more details, please refer to the “Mining Rewards & Gemstone Determination Logic” section.
This is a contract on the Polygon PoS blockchain for the release of mining sites and recording data regarding the mines acquired by players. For more details on its use, please refer to the “Mining Rewards & Gemstone Determination Logic” section.
This is a contract on the Polygon PoS blockchain for recording the Bitcoin block hash which will form part of the seed. For more details on its use, please refer to the “Mining Rewards & Gemstone Determination Logic” section.
Below explains the process for determining the overview of the mine rewards, and gemstone details.
*Since Bitcoin's block time is not a definitive value, we will use a block at an arbitrary number of blocks ahead from the reference block for determining the details.
*If there is a delay in recording the mining site information to be published, the release of that mining site will be canceled. Additionally, if the reference block hash for the gemstone details is not recoreded before the Bitcoin block hash used to determine the gemstone details appears, the determination of the gemstone details will be postponed until the next scheduled time for gemstone detail determination.
Timeline Diagram
The above two components are used as a seed for keccak256. Through this, the number of gemstones and size of the gemstones are decided. The result will not change regardless of how many times it's executed since there is no random element included in the generation. The result is also not influenced by the player’s actions.
*A sufficient amount of time will be left before fixing this hash to allow for block finality. (expecting at least 6 blocks later) Even in the event of a significant reorg in Bitcoin, Brilliantcrypto will not alter the fixed block hash recorded at this time.
The below data related to the mining site will be json-formatted, hashed, and recorded on the blockchain.
By recording this data on the blockchain, it ensures that mines are released only when gemstones overview are not determined.
The below data related to mine acquisition during the mine acquisition period will be json-formatted, hashed, and recorded on the blockchain.
By recording this data on the blockchain, it ensures that mines can only be acquired before the details of the gemstones are determined.
The above three components are used as a seed for keccak256. Through this, the gemstone quality, size, and cut style are decided. The result will not change regardless of how many times it's executed since there is no random element included in the generation. The result is also not influenced by the player’s actions.
*A sufficient amount of time will be left before fixing this hash to allow for block finality. (expecting at least 6 blocks later) Even in the event of a significant reorg in Bitcoin, Brilliantcrypto will not alter the fixed block hash recorded at this time.
As explained in the “Mining Rewards & Gemstone Determination Logic,” various data are recorded on the blockchain. By verifying this data, we can prove that the gemstone information has not been tampered with.
Below explains the verification process.
First, obtain the “Gemstone Determination Parameters” necessary for verification from the app.
Open the mining site database and enter the token ID of the gemstone you want to verify in the “Mined Gemstone” field and search.
In the search results, click the icon to the right of the mining site name to obtain the “Aquired Gemstone Determination Parameters”.
*Only the discarded mining sites are recorded in the mining site database.
*Data will not be returned when the gemstone details have not been determined yet.
Then, obtain “Mining Acquisition Data.”
By accessing the “Acquistion List URL,” you will obtain a list of mining sites acquired during the target period in json format.
Each data entry in “jewel_seed_hash” includes SHA-256 “Gemstone Determination Seed”. Search within the file to obtain mining site data (hereinafter referred to as “Minng Site Evidence”) using SHA-256 “Gemstone Determination Seed”.
Using the information obtained above, execute the contract method for verification.
*Please refer to “Supplementary Information for Varification” for the steps to verify the validity of the “Mining Site Acquisiton Data”.
Call the contract method to perform the verification. For the contract ABI required to call, please refer to “Supplementary Information for Varification.”
Obtain the Bitcoin block hash for verification.
The contract_block_evidence_address in the "Mining Evidence" is the contract address of the Bitcoin block hash recorded. Use the BlockEvidence.json for ABI.
First, obtain the “Bitcoin block hash for Gemstone Overview.”
Call the getBlockForOverviewAndDetailReference method.
Then, obtain “Bitcoin block hash for Gemstone Details.”
Call the getBlockForDetail method for the following parameters.
The first result (index 0) is the “Bitcoin block hash for the Gemstone Details.”
Here is how to verify the overview of gemstones.
The contract address to determine the overview is contract_jewel_overview_address in “Mining Evidence.” Use MountainJewelOverview.json for ABI.
Call confirmOverviews method.
Each entry in the returned array represents the overview of the gemstone.
How to verify the gemstone details based on the gemstone overview result.
The contract address to determine the details is contract_jewel_detail_address in “Mining Evidence.” Use MountainJewelOverview.json for ABI.
Call confirmDetail method.
The method returns data for a set of gemstone details.
Perform this for all gems returned from the overview verification to ensure they are included in the results.
Contract ABIs
Varification Process for Validity of “Mining Site Acquisition Data”
The contract address that stores the hashed file of “Mining Site Acquisition Data” is contract_mountain_evidence_hash_address in “Mining Evidence.” Use MountainEvidenceHash.json for ABI.
Call getHash method.
Verify that the result obtained matches the SHA-256 “Mining Site Acquisition Data” file.