Crowdfunding on Amoveo: a step-by-step guide and a story of funding a meetup
In some of our previous blog posts, we talked about an Amoveo meetup in Moscow and how we’re trying to crowdfund it. The meetup went ahead, and it was a big success — we gathered over 70 industry professionals, entrepreneurs and technology enthusiasts together in one room, and many of them learned about Amoveo for the first time. You can read more about it here. One of the main goals of our meetup was to use and showcase the platform’s capabilities, and we did so with a crowdfunding campaign. Above all, we wanted to inspire other local communities to do the same, and spread the word about Amoveo in the process.
Our campaign was successful — we managed to raise 21 VEO from several contributors, and we are only just getting started. In this post, we will describe every step of the funding process, and by doing so we will provide every member of the community with a detailed guide on how to create their own fundraisers on Amoveo.
Dominant Assurance Contract (DAC)
The first thing to know about crowdfunding on Amoveo is that it is done through a Dominant Assurance Contract. This concept is explained in-detail in one of our previous blog posts.
In short, DACs are contracts which will only release funds to the creator of a public good if that good was created exactly as it was described. If the provider fails to do so, the investors will get their money back with interest on top. This model actually incentivizes contributions as the most profitable action for the investor, as they will either finance the good and get it, or increase their net worth. Thus, not contributing at all is the least profitable strategy of all.
Step 1: Pitch your idea to the community by providing the scope of work.
Depending on what you’re raising funds for, this can be done in various ways. The first successful DAC in Amoveo’s history was set up to fund the creation of an alternative user interface. Eric Arsenault, the community member that pitched the idea, uploaded a PDF file with the proposed idea and contact details to Google Drive. For this to be credible, it is critically important to upload a document that can’t be altered to change the proposition. The Telegram chat is the main hub of Amoveo community, but it’ll be worth posting it on the forum and other hubs as well as asking for it to be mentioned in the weekly newsletter.
Our approach was slightly different. We wanted to raise funds to cover at least a portion of our meetup expenses, so effectively our proposition was that the meetup will actually happen. After discussing this idea with several community members, we came up with a way to both prove that the event took place and add more value to our proposition. The DAC was to be considered fulfilled on our part if at least 10 people posted their pictures from the meetup on social networks with the #AmoveoDAC hashtag. For this, we didn’t need to create a document, we decided to include this information into the oracle question.
Step 2: Get some VEO and access the platform.
You can get your VEO on several exchanges, here is the complete list. There is also this Telegram bot which you can use to buy it for BTC or ETH with no KYC and no fees. In terms of storage solutions, you can use MyVeoWallet, an online and desktop wallet developed by Exantech, or set up a wallet using the Amoveo light node.
The easiest way to access the Amoveo light node is by using one of the servers maintained by community members. This one is maintained by Zack Hess, lead developer, and this one is hosted by Exantech and utilises the alternative user interface funded by the community. If you would prefer to set up your own light node, you can find the instructions here.
Step 3: Create an Oracle.
Oracles are mechanisms of blockchain platforms responsible for relaying information from the outside world into the platform. Creating an oracle will be your first step of interacting with Amoveo, as the subsequent contracts you make will be “tied” to that oracle.
In Amoveo, oracle questions are answered by community members verifying the information from the outside world and placing their bets on either ‘TRUE’, ‘FALSE’ or ‘BAD QUESTION’ outcomes. If the answer is universally known, there is no point in providing false information to the oracle, as it will inevitably result in the loss of funds, when the malicious reporter is outbid.
So let’s get started. Whichever interface you’re using, you need to choose ‘Create new questions to bet on’, this will take you to the new_oracle page. Click ‘mainnet mode’ and then ‘sync with network’. Wait until the ‘height’ number reaches the current height, you can look it up in this explorer.
The next step is to connect your wallet. Simply upload the .txt file with your private key by clicking ‘choose file’. This is how it should look once uploaded:
Once you’ve done that, you can move on to creating your oracle. By now, you should’ve already came up with a question that can be clearly answered yes or no, and the answer will be easy to look up. This was our question:
An Amoveo Meetup to be held on May 17th, 2019 in Moscow. At least 10 attendees to prove that the event happened by posting photos from the event to social networks with a hashtag #AmoveoDAC. Did it happen?
Then, you will need to calculate the block number by which the answer to your question should be known. On average, there are 144 blocks found every 24 hours. We decided to launch our oracle 5 days after the meetup, so we chose height 66675. Once everything is filled in, it should look like this:
Here, simply click ‘binary oracle’ (meaning it has two outcomes — ‘true’ or ‘false’), it will cost you about 0.024 VEO for creating it, so make sure you have enough funds in your wallet. At this point, you should see the following message:
Make a note of the OID. Your oracle should be included to the blockchain with the next block, which usually is around 10 minutes. Then, you will be able to look it up in this block explorer or in the lookup tool in the light node.
Step 4: Make an offer.
At this point, you can either create a bet offer and wait for someone to accept it, or find people to bet with and negotiate the odds in advance. Once you’re ready, click ‘Proposing custom P2P derivative contracts’ in the light node’s main menu, this will take you to the otc_derivatives page. Then, as always, sync with the network and connect your wallet. If you’re using the standard interface, skip the ‘channel’ section all together and move straight to the ‘direct derivatives form’.
Paste your Oracle ID and type in your bet amount, then click ‘binary’, new fields will appear. Type in the other participant’s bet amount, the amount of blocks the offer will be valid for (the default is 100, we left it at that) and your winning outcome. Here is how it should look like:
Then, click ‘print an offer that anyone can accept’ to download a .txt file. You will need to send it to the other participant so that they will be able to accept your offer.
As you can see from the screenshot above, one of the community members was willing to contribute 0.5 VEO for our cause and we agreed that if we fail to deliver at least 10 social media posts, we will pay a 0.05 interest. For us to collect the contribution, the oracle needed to resolve as ‘true’. This was the first contract of our campaign and we are going to continue using it as an example in this article.
Step 5: Accepting an offer.
To accept your offer, your partner needs to click ‘Accept proposals of custom P2P derivative contracts’ in the light node’s main menu, which will take them to the otc_listener page. As always, they will need to sync with the network first and connect their wallet. Again, let your partner know to ignore the ‘channel’ section and head straight to the ‘copy/paste response form’. There, they will simply need to upload your trade offer you sent them. Once that’s done, they’ll see something like this:
Here, they’re able to double check all the details. Once that’s done, they’ll need to click ‘accept trade and make channel’, which will generate a channel state .txt file in the ‘channel’ section. Your partner will need to save it and store in a secure place.
Step 6: Wait for the oracle to resolve.
5 days after our meetup, the oracle started accepting bets. By that point, we managed to get 10 posts across Facebook and Twitter, thus achieving what we set out to do. It took another week for the first bet on ‘true’ to appear in the oracle, and as its lifetime extends with every bet, it took approximately one more week for it to become closeable.
Step 7: Close the oracle.
To close the oracle, you simply need to click ‘Close an oracle’ in the light node’s main menu, which will take you to the oracle_close page. There, sync with the network, load your wallet and paste you oracle’s ID. Then, click ‘make bet’ and you should see this:
The oracle should be closed with the next block, you can check its status in this block explorer or in the lookup tool in the light node. Once your oracle is closed, you can close the channels where you made bets.
Step 8: Generate a channel close offer proposal.
To do this, click the ‘Settling contracts to get your money out. For closing channels.’ in the light node’s main menu, this will take you to the otc_finisher. As always, sync with the network and load your private key. Then, you have two options.
If you were the one who generated the bet offer, skip the ‘channel’ section and instead simply copy and paste all the text from your channel offer .txt file into the ‘channel proposal’ field at the very bottom of this page. It should look like this:
Then, click ‘load keys and channel proposal, then click this’ to the right of the field. Then, click ‘generate a proposal to end your contract early and get your money out’. The platform will then generate a proposal, which will look like this:
Simply copy and send the data to your partner.
If you were the one who accepted the channel offer, you will need to upload it to the ‘channel’ section and click ‘load your keys and channel data, then click this’ in the ‘p2p derivatives contract finisher’ section. The rest of the process is the same.
Step 9: Accepting a channel close offer.
This process is almost exactly the same as generating the offer. Depending on whether your has a channel offer .txt document, or a channel state .txt document, they should use the appropriate form to upload it, as described above. Then, have you partner paste the data you sent them from the previous step into the ‘close offer proposal’ field. It should look something like this:
Once they click ‘load the proposal’, they should see something like this:
If everything is correct, they will need to click ‘accept this proposal and close the channel’. This message will appear:
Once the transaction was included in the block, this part of our meetup’s funding was transferred to our wallet, as per our Dominant Assurance Contract. After closing this contract, we closed a couple of others and collected our 21 VEO. As you can see, there’s nothing stopping you from raising the funds for any of the work you can do to benefit the Amoveo community.