Step 2 - Edit CSV File
In the previous step Step 1 - Initialize collection a template CSV file 00000.nfts.csv was created. The purpose of this file is to provide all necessary information for each NFT in your collection in an easy as possible way. This requires, that the artist edits the CSV file according to his NFTs. This can be done most efficiently within MS Excel, Google Spreadsheet or similar tools.
Structure of the CSV
Each line within the document represents a single NFT, and a file may look like this
name,description,symbol,edition,royalties,identifier,image1,image2,image3,attribute1,attribute2,attribute3,attribute4,attribute5,attribute6,attribute7,attribute8,listingMode,price,offerPrice,auctionEnd
Awesome NFT #1,This is the most valuable NFT ever,AWESOME,Summer,10,1,/home/ohager/Desktop/massup_test_data/1.png,,,key1:value1,key2:value2,key3:value3,,,,,,FixedPrice,1000,0,
Awesome NFT #2,This is the most valuable NFT ever,AWESOME,Summer,10,2,/home/ohager/Desktop/massup_test_data/2.png,,,key1:value1,key2:value2,key3:value3,,,,,,FixedPrice,1000,0,
Awesome NFT #3,This is the most valuable NFT ever,AWESOME,Summer,10,3,/home/ohager/Desktop/massup_test_data/3.png,,,key1:value1,key2:value2,key3:value3,,,,,,FixedPrice,1000,0,
Awesome NFT #4,This is the most valuable NFT ever,AWESOME,Summer,10,4,/home/ohager/Desktop/massup_test_data/4.png,,,,,,,,,,,FixedPrice,1000,0,
Awesome NFT #5,This is the most valuable NFT ever,AWESOME,Summer,10,5,/home/ohager/Desktop/massup_test_data/5.png,,,,,,,,,,,FixedPrice,1000,0,
Awesome NFT #6,This is the most valuable NFT ever,AWESOME,Summer,10,6,/home/ohager/Desktop/massup_test_data/6.png,,,,,,,,,,,FixedPrice,1000,0,
Awesome NFT #7,This is the most valuable NFT ever,AWESOME,Summer,10,7,/home/ohager/Desktop/massup_test_data/7.png,,,,,,,,,,,OnAuction,500,1100,2022-05-30T10:00:00Z
Awesome NFT #8,This is the most valuable NFT ever,AWESOME,Summer,10,8,/home/ohager/Desktop/massup_test_data/8.png,,,,,,,,,,,NotForSale,1000,0,
Awesome NFT #9,This is the most valuable NFT ever,AWESOME,Summer,10,9,/home/ohager/Desktop/massup_test_data/9.png,,,,,,,,,,,FixedPrice,1000,0,
Awesome NFT #10,This is the most valuable NFT ever,AWESOME,Summer,10,9,/home/ohager/Desktop/massup_test_data/10.png,,,,,,,,,,,FixedPrice,1000,0,
Column | Description | Format | Example | |||
|---|---|---|---|---|---|---|
name* | The Name of the NFT | String (Min: 4 Max: 32) | Cute Monstas | |||
description* | The Description of the NFT | String (Min: 16 Max: 512) | This is the ultimate collection of cute monstas | |||
symbol | A alphanumeric Symbol | String (Max: 16) | MONSTA | |||
edition | A alphanumeric Edition | String (Max: 24) | Season 1 | |||
royalties* | The royalties in percent you earn when sold | Number (Max: 25) | 10 | |||
identifier | Some numeric identifier, usually an incremental value | Number | 666 | |||
image1* | The absolute file path to the first image | String - Supported formats are PNG, JPG, WEBP, GIF, SVG | /home/ohager/Desktop/generated-cute-monstas/4.png (Posix and Windows paths are possible) | |||
image2 | The absolute file path to the second image | String - Supported formats are PNG, JPG, WEBP, GIF, SVG | | |||
image3 | The absolute file path to the third image | String - Supported formats are PNG, JPG, WEBP, GIF, SVG | | |||
attribute1 | The attribute/trait of the NFTs. This value is used to calculate rarities within a collection. It is a key-value tuple and each NFT can have up to eight attributes | String Pattern: key:value (separated by : ) | background:green | |||
attribute2 | | | | |||
attribute3 | | | | |||
attribute4 | | | | |||
attribute5 | | | | |||
attribute6 | | | | |||
attribute7 | | | | |||
attribute8 | | | | |||
listingMode* | The initial listing mode, i.e For Sale, For Auction, or Not For Sale | One of: FixedPrice OnAuction or NotForSale | OnAuction | |||
price** | Only required if listingMode is OnAuction or FixedPrice - The initial price n SIGNA Only required if listingMode is OnAuction - "Buy Now" price for auctions in SIGNA Only required if listingMode is OnAuction - "Buy Now" price for auctions in SIGNA Only required if listingMode is OnAuction | Number | 1000 | |||
offerPrice** | Only required if listingMode is OnAuction - "Buy Now" price for auctions in SIGNA Only required if listingMode is OnAuction Only required if listingMode is OnAuction | Number | 1500 | |||
auctionEnd** | Only required if listingMode is OnAuction - Date and Time when auction ends. The date will be converted in Blocktime and might result in estimated targed time. This way minute precision is not guaranteed. | Date String in ISO-Format: YYYY-MM-DDThh:mm:ssZ (best is to use UTC-00 time aka GMT) | 2022-05-30T10:00:00Z |
Validate the CSV file
Editing so much data/lines can be error prone, so validation of the input data is necessary. Of course, the signumart-massup tool provides validation. Simply use the collection commit command in Trial Mode like this:
$> signumart-massup collection commit --try
=================== TRIAL RUN ====================
Nothing will be generated
================================================
Found Collection
┌────────────────────┬─────────────────────────────────────────────────────────────┐
│ (index) │ Values │
├────────────────────┼─────────────────────────────────────────────────────────────┤
│ Id │ '3267705388183728528' │
│ Name │ 'massup_logo_test' │
│ Description │ 'A lot of cool,Signum Logos' │
│ Socials │ '' │
│ Home Page │ '' │
│ Background │ 'QmRC1ihQaDTnKALzhkMhWE1hL8SNNS9a5oT36iQjspFwdH:image/webp' │
│ Social Media Image │ 'QmVs4dCX5WBNYFuRuVhUfB3ZAcH6vsiZcFVe9VYVCabeEV:image/webp' │
└────────────────────┴─────────────────────────────────────────────────────────────┘
? Do you want to continue preparing the NFTs data for upload? Yes
✔ Congratulations. All data is valid
┌─────────────────────────────┬──────────────┐
│ (index) │ Values │
├─────────────────────────────┼──────────────┤
│ Count │ 10 │
│ Auction Count │ 1 │
│ For Sale Count │ 8 │
│ Not For Sale Count │ 1 │
│ Minimum Total Amount │ '9500 SIGNA' │
│ Attribute Keys Count │ 3 │
│ Distinct Attributes Count │ 3 │
│ Items With Attributes Count │ 3 │
│ Validation Errors │ 0 │
└─────────────────────────────┴──────────────┘
*** TRIAL run finished. No artifacts were created.In case of errors they will be shown like in the following example:
$> signumart-massup collection commit --try
=================== TRIAL RUN ====================
Nothing will be generated
================================================
Found Collection
┌────────────────────┬─────────────────────────────────────────────────────────────┐
│ (index) │ Values │
├────────────────────┼─────────────────────────────────────────────────────────────┤
│ Id │ '3267705388183728528' │
│ Name │ 'massup_logo_test' │
│ Description │ 'A lot of cool,Signum Logos' │
│ Socials │ '' │
│ Home Page │ '' │
│ Background │ 'QmRC1ihQaDTnKALzhkMhWE1hL8SNNS9a5oT36iQjspFwdH:image/webp' │
│ Social Media Image │ 'QmVs4dCX5WBNYFuRuVhUfB3ZAcH6vsiZcFVe9VYVCabeEV:image/webp' │
└────────────────────┴─────────────────────────────────────────────────────────────┘
? Do you want to continue preparing the NFTs data for upload? Yes
✖ Found 2 errors
*** FOUND ERRORS ****
┌─────────┬─────────────────────────────────────────────────────────────────────────────────┐
│ (index) │ Values │
├─────────┼─────────────────────────────────────────────────────────────────────────────────┤
│ 0 │ 'Parse Error in line 8: /name: maxLength must NOT have more than 32 characters' │
│ 1 │ 'Parse Error in line 10: End Date is invalid' │
└─────────┴─────────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────┬──────────────┐
│ (index) │ Values │
├─────────────────────────────┼──────────────┤
│ Count │ 8 │
│ Auction Count │ 0 │
│ For Sale Count │ 7 │
│ Not For Sale Count │ 1 │
│ Minimum Total Amount │ '8000 SIGNA' │
│ Attribute Keys Count │ 0 │
│ Distinct Attributes Count │ 0 │
│ Items With Attributes Count │ 3 │
│ Validation Errors │ 2 │
└─────────────────────────────┴──────────────┘
Found 2 validation errors in [/home/ohager/code/signum/signum-art-massup/local_tests/massup_logo_test/00000.nfts.csv] - You need to fix them before you can continueBefore you execute a command, you should select the folder in which the csv and the data are stored in the command line tool!