Multicall Beta Test

7 min read
To Share and +4 nLEARNs

Beta test sprint post mortem:

On May 10-12, we had a Beta test sprint in partnership with LNC.

I’ll start with a few stats:

  • 47 Multicall instances were created by (who we think are) 40 testers.
  • There were ~36 submissions in total. 12 invalid, 24 accepted.
  • The accepted submissions were done by 14 testers. On average, each one of these submissions had 2 feedback items => Typical power-law distribution: minority of testers submitted majority of feedback. We tried to adapt rewards accordingly.
  • 5 testers made a Twitter post.

It was made clear to us from the beginning that testers will find difficulties with our project, since it required familiarity with DAOs. We included instructions in our guide on how to create a DAO and pass proposals using SpuntikDAO. This confused many testers into thinking SputnikDAO is part of our project and so we got a lot of feedback about the SputnikDAO website, which we’ll forward to their team. Key learning here is that, in case multiple platforms are used, the test guide should very clearly state what platforms are the focus of the test sprint. Another key takeaway from this experience was the importance of making feedback easy. At first we used GitHub issue templates, which requires testers to have a GitHub account. What actually happened is that almost only people who already had GitHub accounts gave feedback. Others just didn’t bother. After switching to Airtable forms we got much more submissions. This was also reflected in the quality of feedback, where on the 1st day almost all submissions were valid, because people making them are somewhat technical (again, they were active on GitHub prior to this), but after the switch to Airtable, we got many invalid submissions (empty forms, mis-understanding…). Regardless, we’ll make sure our users can easily submit feedback in ways that require no extra effort from them.

All in all, the experience was very positive, and we’ll recommend other projects to do it as well. It helped us realize shortcomings about our UI/UX, as well as give us insights about what we should focus on, when writing user guides and tutorials.

 

Follow @LearnNEAR  and @multicall.near on Twitter
Beta test sprint starts: May 10, 9 am ET
Beta Test sprint ends: May 12, 11pm ET.

Requirements:

near-multicall testing guide

What’s a DAO?

Near-multicall is a tool that serves DAOs, so we’ll start by explaining DAOs first.
DAO stands for Decentralized Autonomous Organization, and is essentially a blockchain account governed by a group of people using rules set by a smart contract. A member can propose to do something, like “Donate 10 $NEAR to charity” or “Buy this NFT for 1 $NEAR”. Other DAO members can vote “yes” or “no”. If the proposal successfully passes voting, then this is where the true value of DAOs shines: members don’t have to trust a person to correctly execute the proposal actions. Instead the smart contract does it, which makes the process trustless.
We put emphasis on code and smart contracts, but luckily you don’t have to be a coder to make a DAO, there are projects that allow you to create your own DAO in few clicks: SputnikDAO and AstroDAO are such examples on NEAR protocol.

What’s near-multicall?

Near-multicall is a tool for DAOs to create and execute arbitrary actions in one single proposal. Example: a DAO has $USD tokens and wants to buy NFTs, which are listed for $NEAR tokens. Currently the DAO will have to make a proposal for each step:

  1. Exchange $USD tokens for $wNEAR tokens
  2. convert $wNEAR to $NEAR
  3. Buy the NFT

The DAO members will have to agree and vote 3 times, even though all steps serve one purpose (to buy the NFT). With Near-multicall this can be done in one proposal.

With this test sprint, we’d like to know about bugs or feature suggestions to improve our UX. You can submit feedback here.
Additionally for curious developers: we have a bug bounty on our contracts of up to 100 $NEAR for each critical issue that leads to: stealing or permanent freezing of funds by non-admins, or non-admins triggering any malicious logic on behalf of the contract. Other critical issues can be eligible and will be reviewed on case-by-case basis.

Setting up near-multicall

Step 1 – Create a DAO:

For the purpose of this guide, we’ll be using SputnikDAO on testnet:

  1. Get a NEAR testnet wallet: https://wallet.testnet.near.org/

  2. Go to: https://testnet-v2.sputnik.fund/#/

  3. Sign in with the wallet you created: 

  4. Click “create new DAO”: 

  5. Fill out DAO info: 
    In the above picture:

    • Name: This also determines the DAO address. If we choose “my-test-dao” as DAO name, then DAO address will be “my-test-dao.sputnikv2.testnet”. This address works like a normal NEAR account: you can send funds to the DAO from your wallet, the DAO can interact with platforms on NEAR such as Paras or Ref-finance and it can hold several tokens as well as NFTs.
    • Purpose: any text works here, it does not affect how the DAO will work.
    • Council member: Your testnet wallet address goes here. This makes you the first member in the DAO.
    • Amount to tranfer: This is the aomunt of $NEAR tokens you’ll be giving to the DAO upon its creation. We suggest 20.
  6. Click submit and confirm the transaction:
    Upon success you’ll find your DAO page by modifying the following link to have its address:
    https://testnet-v2.sputnik.fund/#/DAO_ADDRESS
    for example:
    https://testnet-v2.sputnik.fund/#/my-test-dao.sputnikv2.testnet
    we’ll use the DAO page to create and vote on proposals, so leave it open on a separate browser tab to use it later.

  7. Done! :confetti_ball:

:round_pushpin:Note: If you need assistance with this step, please reach out in LNC Telegram or near-multicall discord

Step 2 – Get a near-multicall instance for your DAO:

  1. Go to https://multicall.app/ and login with your wallet.
  2. Enter the full DAO address in the DAO selector field: 
    Always make sure your DAO address is there during all tests.
  3. Create a multicall instance for your DAO: 
  4. go to DAO page (section (a) step 6): you should find a proposal that says: “create multicall instance for this DAO at …”. Vote “yes” on this proposal.
  5. go back to https://multicall.app/#/dao and enter DAO address in DAO selector again (like step 2). If you see the following then setup was successful :confetti_ball: 

:beetle: Seen any bugs? report HERE
:bulb: Got a suggestion? please use this FORM

Step 3 – Create proposals with multicall

  • First proposal will mint 2 tokens
    In this test we’re going to mint some $USDC and $DAI. If successful, the tokens will appear on your testnet wallet. Let’s start:
  1. go to: https://multicall.app/#/app

  2. enter the DAO address: 

  3. Let’s use our first card: 

  4. fill card information with the following:
    Contract address: nusdc.ft-fin.testnet
    Function name: mint
    Function arguments (!!! replace YOUR_WALLET_ADDRESS):

      {
          "account_id": "YOUR_WALLET_ADDRESS",
          "amount": "123456789"
      }
    

    Allocated gas: choose a number between 7 and 10. (i.e. 7.5 Tgas)
    Attached deposit: 0 yocto

  5. Second card:
    So the previous card was for minting tokens, the second card is just a trick for the wallet to display our token balances
    Contract address: nusdc.ft-fin.testnet
    Function name: ft_transfer
    Function arguments (!!! replace YOUR_WALLET_ADDRESS):

    {
        "receiver_id": "YOUR_WALLET_ADDRESS",
        "amount": "123456789"
    }
    

    Allocated gas: choose a number between 7 and 10. (i.e. 7.5 Tgas)
    Attached deposit: 0 yocto

  6. Mint a second token:
    In steps 4 & 5 we worked on cards that will mint $USDC, so now let’s do the same for a second token $USDT. The UI has a “clone” feature so we don’t repeat the work all over again. On the new cards we just change the address from nusdc.ft-fin.testnet to nusdt.ft-fin.testnet

  7. Almost done! we just have to propose our multicall to the DAO

  8. go to DAO page and vote yes on the proposal:

  9. Done! Can you see the tokens on your wallet? If you do, congrats, you did it! :confetti_ball:

  10. Take a screenshot of the proposal and tweet it:
    “I just made a @multicall.near proposal during Beta Test Sprint at @LearnNEAR”+screenshot

:beetle: Seen any bugs? report HERE
:bulb: Got a suggestion? please use this FORM


If you made it this far, thank you! We appreciate you taking the time to test our project.

Please use this FORM to share your experience, and any general thoughts with us!

The top 20 beta testers will get 2 NEAR, the best feedback submitter will get 10 NEAR. Please make sure your NEAR testnet and mainnet account MATCH exactly. – eg. john.testnet and john.near.

Happy testing!

 

55
Scroll to Top