Hairst Moose — Trials and Tribulations on DAOs and NFT’s

James McCall
LexDAOism
Published in
8 min readMar 10, 2021

Hairst Moose wee mammal with whyte underpairts and a nakit tail

Belangin tae the subfaimily Murinae, the genus isnae near sib tae ony ither murine genus

In the last article we had a low key experiment with NFT’s and stamping music licenses, but for this next low brow experiment we want to set up a fake Scot Wiki Moose Club. NFT’s show great promise, but there are many times that you want to manage an NFT as a group of individuals. There are DAO’s that are beginning to experiment with holding, fractionalizing, curating and buying and selling NFT’s. For the experiment here, we are trying to build a single member DAO, send a ENS domain name to the DAO for it to hold, and then have the DAO mint subdomains. Here we use etherscan to interoperate.

“We often discover what will do, by finding out what will not do; and probably he who never made a mistake never made a discovery”

Samuel Smiles, The Lives Of George And Robert Stephenson

The main thesis is that blockchain and decentralized networks are great for long tail(pun entirely intended) asset management. Therefore, we have the idea for a DAO that celebrates the Hairst Moose as it is cute and lovable demanding our full druid-like worship of its animalian charms. And it celebrates the lad or lass that put together the Scottish Wikipedia, which is basically a decentralized attempt at making up a new cultural language for the Scots. Read more about the long running takeover of their wikipedia here but is definitely demonstrative of the organic power of decentralized processes. So our DAO is actually a non 501(c) druidic expression of animalistic organization. Or a “DrAO”.

For our hairy project, we made a Hairst Moose Club token using the meme token factory at lextokenize which is a really dynamic and useful token factory contract. The token can be listed for sale at a fixed price to ETH and stamped for either terms or service, or with the link to wikipedia for Hairst Moose. For the uninitiated the Hairst Moose is a “wee mammal o the order rodentia naitive tae Europe an Asie. It is a kynd o moose. It can be fand in fields o cereal crops, lyke as wheat an aits, in reed beds or in ither heich grund vegetation, lyke lang gress an hedgeraws. It haes reddish-broon fur wae whyte underpairts an a nakit tail that it uises for climmin. It is the smawest European rodent; an adult mey wecht as few as 4 gram (0.14 oz). Breedin nests are spherical constructions carefully weaved frae gress an attachit tae stems heich up”

So obviously Hairst Moose fans need their own token, DAO, and ENS domain at “Hairstmoose.eth” in order to conduct their bisnes.

The ethereum name service (“ENS”) is basically a registrar of domains whose ownership is represented as an NFT. So rather than battle with GoDaddy, you can own and transfer the domain on the Ethereum network. ENS domains are powerful little things and to learn and explore more read on this blog post. This is a basic experiment to see where the use case of DAO might make sense and where the pain points are. This blog post is probably going to be more about how not to do things. But the start of religions are usually not without a little blud spilt.

HAIRST MOOSE MOLOCH V2X SUMMONED BY DRUIDS

Incantation Spells for Hairst Moose DRAO

To first summon the DrAO we go to the lexDAO Moloch V2X factory summoner.

  1. Connect wallet
  2. Deposit token is the main token you are collecting. For example wETH (which is the token address we choose) for the treasury.
  3. Stake Token, for this example we minted hairst moose club tokens for fans of wee mammals
  4. Summoner Address, needs to be bracketed (if array, need to add all addresses)
  5. Summoner Shares in wei, needs to be bracketed (if array, need to add all shares with no space after comma)
  6. Period Duration — Default 17280 4.8 hour period duration
  7. Voting Period 10 2 days or (10 * 4.8 hours)
  8. Grace Period 2 = 4.8 * 2 hours because moose move fas
  9. Dilution bound 3 is default,
  10. String Name aka Hairst Moose

Druid casts incantation spell and Hairst Moose appears and climbs under the door and disappears into the ether.

Fossils o Micromys date back tae the Late Miocene an include at least 10 extinct species, formin twathry lineages.

TRANSFER HAIRST MOOSE ENS to HAIRST MOOSE DrAO

To interact with the domains and mint subdomains via the embedded Minion agent in the Moloch, we also need to transfer the ENS NFT to our DrAO. We used Opensea to transfer the NFT to Hairst Moose DAO contract. Confirm it showed up on etherscan and there it is. Showing in etherscan as an ERC-721 now owned under the contract as an ENS.

Next we want to get the ENS registrar contract ABI. This is necessary to build the data blob, in order to pass this data along using the Moloch V2X embedded minion. We go to Registrar contract code and thankfully it has been verified. We click to copy the ABI to the clipboard. This is basically the recipe that the next step will use to bake the cake.

We use the ABI from the Registrar contract from step 1 ABI into https://abi.hashex.org/#

Then we “PARSE” and the functions should populate. We want Function 6 which is the setSubnodeRecord this is the function that mints the subdomains. There are the following inputs required:

Node — ENS uses a namehash, to hash the string “hairstmoose.eth” into a hash for the root domain. So here to get this input we found the following converter https://swolfeyes.github.io/ethereum-namehash-calculator/ We want “Hairstmoose.eth” hash.

0xdf3a1d9a97a4cb29a8b0c6182f12e0d57aadaf9d7d78102e1abdaf8db38f5ffd

Label — this is the subdomain label hash which is keccak256. So let’s say we want weemammal.hairstmoose.eth. We enter “weemammal” into https://emn178.github.io/online-tools/keccak_256.html and append 0x to beginning of has as that was not included in conversion.

0xe64737a1225048d1d8bad2253c397c7d0d243b0aca94ed99618eea3773ed0a05

Owner — This is the address to where the subdomain is to be minted. So in the case of Hairst Moose DAO, it is its followers’ address.

Resolver — Here we go to get the address for the resolver from the ens app https://app.ens.domains/name/hairstmoose.eth/details

TTL — Put zero

So the data blob is that computer language at the bottom. Copypasta into the following step to have the embedded Moloch Minion carry out the bidding. Remember to add 0x prior to blob.

0x3e9f6f2adf3a1d9a97a4cb29a8b0c6182f12e0d57aadaf9d7d78102e1abdaf8db38f5ffde64737a1225048d1d8bad2253c397c7d0d243b0aca94ed99618eea3773ed0a05000000000000000000000000d5b3988ed0ab5ec375e51bb6fd10e205cec16a2e0000000000000000000000004976fb03c32e5b8cfe2b6ccb31c09ba78ebaba410000000000000000000000000000000000000000000000000000000000000000

MINION SEEK AND DESTROY

Now we go to the HAIRST MOOSE DrAO that is currently a single member and the most exclusive club of animalistic moose worshippers. Feu understant! Function 14 unleashes the Minion to make arbitrary calls “bidding” on contracts.

Now we input.

Action to (address) — Input the contract that we want the minion to interact with. Again where we use the subdomain ENS Registrar contract code .

actionTokenAmount (uint256) — 0

actionValue (uint256) — 0

details (bytes32) — Here we convert a string of text to proposal. This is basically what would show on the Moloch “Pokemol” front end as the proposal description.

data (bytes) — This is where the data blob from the earlier step goes in. This is what the Minion will use to call the contract and execute. That is, if the proposal from the Minion passes. So the steps are to make an Action proposal using the data, and IF the DrAO agrees, then the Minions passes the Blob to the contract to carry out.

Last click “write” and this submits the action proposal to the HAIRST MOOSE DrAO council of druidic nomenclature.

Mystics Sponsor and Vote.

The procedures of the Moloch V2x “Mystic” pattern is to obviously make sure that outsiders aren’t triggering actions and spamming the DAO with nefarious proposals. So the next step in the chain is to have the DAO member “sponsor” the vote.

SPONSOR
We go to the function 12 to sponsor a proposal. The first proposal of the DAO starts at zero actually, so that is sorta Moloch level nuance. So put in zero and click write, to sponsor the proposal for a vote. After the sponsorship, we need to wait 4.8 hours, one period in DAO time in order to vote.

VOTE

This triggers the vote according to the parameters of the DAO. Ours (in a Golem precious sorta wei) was for 2 days.

So the voting is function #17

ProposalIndex — This is zero again. Should be able to find this on the read contracts.

uintVote — It goes: 0 is abstain. Since Hairst Moose don’t abstain, which is why they are so prolific we opt for 1 = Yes rather than 2 = No.

In the event that Hairst Moose fail tae produce any legitimate male heirs, their claim tae the Italian throne will pass on tae Amedeo an his male-line descendants.

With bated breath and anticipation we waited to see if the Minion could carry the data blob and mint the appropriated subdomain. Did it work, well…..

No, something wasn’t quite right. In all likelihood the data blob was incorrectly formatted. So in times like these we need to seek outside help. Anyone have Raid Guild’s number?

NEXT STEPS

For now, not many. I think we will wait until there is a Molochv3 and hopefully ENS has moved to an optimistic rollup. But we learned something about legal engineering, and the expense of testing in production. Until next time…

Special thanks to Ross Campbell for providing help on his V2X DAO, but all mistakes were my own.

All links provided are for informational purposes only and not meant as recommendations of the people or products. Nothing herein is legal or financial advice and should not be relied upon without reaching out to your own personal attorney. The linked ABA disclaimer is appended to the blog.

LexDAO is a non-profit association of legal engineering professionals that brings the traditional legal settlement layer to code, and coded agreements to the masses. We believe that everyone deserves access to justice provided in a quick and efficient manner. If legal services were easier to use, verify, and enforce, we could live in a fairer world. Blockchain technology offers solutions to many problems in the legal space. Our mission is to research, develop and evangelize first-class legal methods and blockchain protocols that secure rules and promises with code rather than trust. We do this by training LexDAO certified legal engineers and building LexDAO certified blockchain applications. We strive to balance new deterministic tools with the equitable considerations of law to better serve our clients, allies, and ultimately citizens.

lexDAO.chat to discuss more

To be continued…..

--

--

James McCall
LexDAOism

Love agriculture, finance, and law Not legal advice. DAO things w/ @lex_dao ; @farmapper working wit @realdao ; views are mine and relatively scenic