Welcome to mint’s documentation!
mint is a merkle root based eligibility system for NFT issuance and price discovery.

Setting up
Frontend
Repository link: Mint
In the influence terminal:
git checkout develop
Install dependencies:
npm install
Run application:
npm start
Backend
Repository link: Mint backend
In the minting-backend repo:
nvm use
npm i
docker-compose up --build
Deploying smart contracts on testnet
MerkleIdentity.sol:
address _mgmt atribute -> creator wallet address
VoterID.sol:
ooner atribute -> creator wallet address minter atribute -> MerkleIdentity contract address nomen atribute -> name of your choice symbowl atribute -> symbol of your choice
AmaluEligibility.sol or MerkleEligibility.sol:
AmaluEligibility: _mgmt atribute -> creator wallet address _gatemaster atribute -> MerkleIdentity contract address MerkleEligibility: _gatemaster atribute -> MerkleIdentity contract address
AmaluPriceGate.sol or FixedPricePassThruGate.sol or SpeedBumpPriceGate.sol
Attention
NFT address = VoterId contract address
GATE address = MerkleIdentity contract address
Create New Mint
Form type
Series
Form to create another tree under an already existing mint. Choose that type if you need to add at least 2 new addresses to the whitelist, new NFT series or grant another minting permissions (eligibility) to users in the tree.
Mint
Form to create a brand new mint. Choose that type if you want to create minting for a whole new NFT address.
To set up a mint or to add series you have to fill in the tokenID (numbers) and uri (for example, ipfs links with metadata containing all NFT attributes and graphics). Each tokenID must be an unique number and have its own uri link. Uri link could be duplicated, provided metadata for all tokens is the same.
Mint type
Selectable
NFTs aren’t minted in an order, user can choose what number wants to mint
Sequential
NFTs are minted in an order, user cannot choose freely the number
Eligibility type
Amalu
Everyone are allowed to mint. It’s an open mint. No addresses list needed.
Merkle
Only users in the tree are eligible to mint. Tree is calculated from the uploaded addresses list.
Whitelist
-
Tokenmapping
-
Price type
Amalu
Price is always 0. It’s a free mint.
Fixed
NFT’s price is set.
Speedbump
NFT’s price changes with interest. The more frequently NFTs are minted, the higher the price. Price increases with each mint, and decays in time.
price decay parameter - price drop multiplier
price increase parameter - price increase multiplier
price denominator parameter - time in seconds that specifies how quickly the price should decrease
Mint configures
unboxing video
Displaying after the minting transaction successfully passes. Once the unboxing video box is checked, there is an additional option that specifies whether the video should be played for the minter only or for everyone who has the minting page open during the minting process.
placeholder image
An image that displays above the minting component when ‘show next media’ is unchecked.
tokens externally hosted
If token uri are hosted on external server (e.g. on ipfs), this box needs to be chcecked.
show next media
If the user may see upfront what token will be minted, this box should be checked. This option shouldn’t be used in case the NFT has a predefined rarity.
reveal
Decide whether minted NFT should be shown after successful minting or not.
show traffic lights
Three lights that show the current state of the token (green - available to mint, yellow - transaction pending, token reserved, red - token unavailable)
show progress bar
Line under the Mint button with a live view of the minting progress.
stages based
Option allowing to split minting into stages and to decide on the strategy of that.
sold out - the next stage opens once the previous one sold out
timebased - the next stage opens at a specific time
simultaneous - the next stage opens either on the previous stage sold out or at a specific time (whichever comes first)
Set up mint steps
Select chain.
Choose ‘mint’ on the switch.
Pass the addresses (whitelist) and token metadata (tokenID and uri).
Create Group (key) - it’s the address of the mint (i.e. https://mint.factorydao.org/Group(key)).
Pass VoterID contract address as NFT address.
Pass MerkleIdentity contract address as Gate address.
Select mint type (Sequential or Selectable).
Select the start date and time.
Select the eligibility type (Amalu or Merkle).
Pass AmaluEligibility or MerkleEligibility contract addresses as Eligibility address.
Decide on maximum withdrawals per address and maximum total withdrawals. The latter must always be bigger than the first, regardless of the whitelist size.
Pass the eligibility gate index or uncheck the box if you don’t have one.
Choose price type (Amalu, Fixed or Speedbump).
Pass AmaluPriceGate or FixedPricePassThruGate or SpeedBumpPriceGate contract address as the Price address.
for a fixed price, pass the price gate index if it exists, or uncheck the box and pass the beneficiary wallet address that will gain the interest from the minting process.
for speedbump, pass the price gate index if it exists, or uncheck the box and pass price decay, price increase, price denominator and beneficiary wallet address that will gain the interest from the minting process.
Specify token range (what is the tokenID range, e.g. 1-100)
Upload placeholder image (File type), or cloudflare video ID (cloudflare type).
Decide on minting options:
unboxing video - if yes, pass the cloudflare video ID and decide if unboxing will be streamable for the minter or for everyone (if for everyone, check the box),
check the ‘Tokens externally hosted’ box if tokens are hosted on ipfs,
optionally choose reveal, traffic lights, progress bar boxes,
decide if mint will be split into stages and choose stages strategy.
Add series steps
Select chain.
Choose ‘series’ on the switch.
Select Group key you will be adding to from the dropdown.
Pass the addresses (whitelist) and token metadata (tokenID and uri).
Select the start date and time.
Select the eligibility type (Amalu or Merkle).
Pass AmaluEligibility or MerkleEligibility contract addresses as Eligibility address.
Decide on maximum withdrawals per address and maximum total withdrawals. The latter must always be bigger than the first, regardless of the whitelist size.
Pass the eligibility gate index or uncheck the box if you don’t have one.
Choose price type (Amalu, Fixed or Speedbump).
Pass AmaluPriceGate or FixedPricePassThruGate or SpeedBumpPriceGate contract address as the Price address.
for a fixed price, pass the price gate index if it exists, or uncheck the box and pass the beneficiary wallet address that will gain the interest from the minting process.
for speedbump, pass the price gate index if it exists, or uncheck the box and pass price decay, price increase, price denominator and beneficiary wallet address that will gain the interest from the minting process.
Specify token range (what is the tokenID range, e.g. 101-170)
1 Of 1 auction setting up
Steps:
1. contracts deploy
2. setting up auction
3. bidding
4. concluding auction
Contracts deploy
finance.vote/contracts/contracts/auction/NFTAuctionFactory.sol
finance.vote/identity-contracts/contracts/VoterID.sol
In the ./factory-dao-mint/src/contracts/NFTAuctionFactory.json file change lines:
Set up auction
Load both contracts into the remix
In the VoterID fill in createIdentityFor field:
In the NFTAuctionFactory in addAuction fill in those fields:
_numSamplesBeforeSale - for test purposes put here number < 10
_secondsPerSample - recommended 60
_startingPrice - set in Wei, for example 100000000000000
_beneficiary1Pct - recommended 5
_startDelay - recommended 0
_metadata - 0x0000000000000000000000000000000000000000000000000000000000000000
_beneficiary1 - your wallet address
_beneficiary2 - 0x0000000000000000000000000000000000000000
_nftContract - VoterID contract addess
_tokenForSale - number of token that will be selled in the auction, for example 1 (same as thisToken in the previous step)
In the NFTAuctionFactory hit startAuction
Bidding
_numSamplesBeforeSale
* _secondsPerSample
)Concluding auction
concludeAuction
then withdrawNFT
.