Settlers are small pixel-art gnomes, and each one belongs to a single Gno.land account, forever. A Settler
can't be sold, traded, or given to anyone else. Once it's yours, it stays yours.
Why they exist
Settlers are a thank-you to the people who were part of Gno.land from the very beginning. Anyone whose
account already held at least 15 GNOT when the gnoland-1 chain launched can claim one Settler. It's a
simple, permanent way of saying "this account was here at the start."
No two are alike
Nobody picks how their Settler looks. Its skin tone, hat, beard, clothes, glasses and background are all
worked out automatically from the account that claims it and the moment it's claimed, and the collection
makes sure the same combination is never drawn twice. So every Settler is one of a kind, and it's a little
surprise to see which one you get.
One per account
Each eligible account can claim exactly one Settler, on a first-come, first-served basis, until all of them
are gone (there are 3,000 in total). There's no cost beyond the usual cost of sending a transaction.
How to get one
If your account was eligible, you can claim your Settler from the mint page at
jeronimoalbi.github.io/gnoland-settlers. Once claimed, you
can look up any Settler, and see who it belongs to, right here in this realm.
The mint page is also the quickest way to get the proof for the
Mint call, type your address there and it shows both the proof
and the exact gnokey command, ready to copy.
A friendly word of caution
This project is made by one person, for fun. It has not been audited by anyone. Everything here is open source,
so please have a look yourself, or ask someone you trust to, before connecting a wallet or signing anything.
Nobody involved in this project is responsible for what happens to your account or your funds; using it is
entirely your own choice and your own responsibility.
Minting without the web page
If you'd rather not use the mint page at all, or just want to see everything for yourself first, you can do
the whole thing by hand with a terminal. Nothing here needs trusting a website: the list of eligible accounts
and your proof are both worked out from the public genesis of gnoland-1, and you can check every step
following the instructions you can find in jeronimoalbi/gnoland-settlers
repository.
See your Settler as a picture
Once you have your Settler, a separate avatar realm can draw it as a picture
whenever it's asked to, so you, or any other realm or web app, can show it next to your address, as profile
picture, in forum post, a leaderboard row, wherever you like.
1const( 2// Name is the NFT token's name. 3Name="Settlers" 4 5// Symbol is the NFT token's symbol. 6Symbol="SETTLER" 7 8// Capacity is the total number of Settlers that can be minted. 9capacity=30001011// Max nonce is how many gnomes are tried for a token before giving up,12// when the ones that come out are already taken.13maxNonce=641415// Max aunts is the longest proof accepted.16maxAunts=4017)
1var( 2// Realm path is the path of this realm. 3RealmPathstring 4 5// Notice is a realm-wide message the admin can post at any time, shown at the top of the page. 6// It never affects SVG, URI or Markdown, it is purely informational. 7Noticestring 8 9// NoticeType is the style Notice is shown as.10NoticeTypemdalert.Type1112// Admin account for the realm.13// This account is only valid to set snapshot params, once setted minting14// can start and after the first NFT is minted the account is not allowed to change15// snapshot params anymore.16// It is always allowed to post or clear realm-wide notices.17admin*ownable.Ownable1819// Supply cap is the number of Settlers that can be minted.20supplyCap=capacity2122// Root is the Merkle root value.23root[]byte2425// Total is the total number of leaves of the list of elegible accounts.26totalint2728// Collection is the GRC721 token, it keeps the owners and balances and emits the standard events.29collection*grc721.Token3031// Ledger is the writable side of the collection, only used to mint.32ledger*grc721.PrivateLedger3334// Tokens has the packed traits of every token, by ID (zero-padded, so it is in mint order).35tokens=bptree.NewBPTree32()3637// Claimed has the ID of the token for each account.38claimed=bptree.NewBPTree32()3940// Seen traits has the packed traits of minted tokens to check that two Settlers are never the same.41seenTraits=newTraitsFilter()42)
Mint mints a Settler to the caller and returns its ID.
The proof shows that the caller is in the list of eligible accounts. Proof format is "<index>.<aunts>". Only user accounts can mint, either with a call or a run transaction, realms can't.
SetSnapshot opens the mint. It sets the Merkle root of the list of eligible accounts, in hex, and the number of accounts in the list. Only the owner can call it. It can be called again to correct a mistake until the first Settler is minted, from then on the list is frozen.
TokenURI returns the Settler image as an SVG data URI. Wallets such as Adena read TokenURI directly as the token image, so this must be the image itself. The metadata lives in TokenMetadata.