The Use-a-Thon enters the last week, and true to the tradition, we’re thrilled to bring you the weekly progress report. We will of course take a look at the blog posts from contestants, but also introduce our readers to another unique features of the Byteball platform: Smart Contracts!
One step at a time
From this week’s blog posts, it’s evident that the contestants are exploring new corners of the Byteball platform. During work on one idea, others form or new obstacles arise, that needs to be addressed. Of the participating contestants, only two posted an update on their progress this week, leaving this week a head-to-head race between @genievot and @malos10.
Both of them created some truly marvelous posts describing their progress and it’s thrilling to see the different approaches they take to their use cases. But before we delve further into this week’s posts, let us first take a look at Byteball’s Smart Contracts.
What makes a contract smart?
We all know what a contract is. An exchange of rights and obligations. The rights of one party is the obligations of the other and vice versa.
The key here is that both parties fulfill their end of the agreement. That requires a certain degree of trust. It is exactly the required trust that Byteball manages to totally write out of the equation.
Atomic swaps
When two transactions happens simultaneously, it’s called an atomic swap. In Byteball’s Smart Contracts, either both transactions/legs of the contract happens or none of them do. This means, that should one person break his part of the agreement, the other party gets his stake back. To further explain this, imagine two people that makes a bet on a sports match. Without Smart Contracts both have to trust the other party to pay up if he wins. With a Byteball Smart Contract, the conditions are set in stone in the contract and both parties pay the stake to the Smart Contract.
Oracles
But how do we resolve the conditions on the contract? Byteball does it by the use of so-called Oracles. Third parties that doesn’t have anything at stake in the contract. When the two persons created the smart contract, they also agreed to both trust a given Oracle to provide “the truth”. In a sports bet this truth-providing Oracle could be reading data from a renowned sports betting site or a sports results service. The results then get posted to Byteball’s distributed ledger (the DAG) by the Oracle.
No need for trust
Unlike platforms where smart contracts are pieces of code created by a developer, Byteball offers human readable conditions. They can be composed by normal users directly from their wallet. This makes Smart Contracts truly smart! Let’s take a closer look at what a contract can look like and break down the conditions.
Since most Steemians already have at least one Smart Contract with a time lock, let’s take a closer look at such a contract.
In condition A I can see that if I try to send funds from the contract (when I sign a spend attempt) and the date is after July 31st 2019, entire condition A is met, and the spend will be possible. If I don’t sign the spend or if I do it before the specified date, the condition isn’t met and I won’t be allowed to send funds from this contract.
In condition B I can see that the peer of the contract can also be allowed to send funds away from the contract by signing a spend. The second part of condition B says that the date has to be after July 31st 2020.
Spending funds from this smart contract is possible under two different conditions. I can spend the funds if condition A is true and the peer can spend it if condition B is true.
Conditions can also contain conditions about data posted by Oracles. An example of that is the Smart Contracts created by the Betting Bot in the Bot Store in the wallet.
In condition B I can see that the peer of the contract can also be allowed to send funds away from the contract by signing a spend. The second part of condition B says that the date has to be after July 31st 2020.
Spending funds from this smart contract is possible under two different conditions. I can spend the funds if condition A is true and the peer can spend it if condition B is true.
Conditions can also contain conditions about data posted by Oracles. An example of that is the Smart Contracts created by the Betting Bot in the Bot Store in the wallet.
In the above you can see the part of the condition that contains the data from the Oracle. It says that if I sign a spend and the oracle posted data stating that Washington Nationals won the match and if I paid my stake then I can spend money from this contract. Of course, contracts can be far more complicated than this, as they often need to take all sorts of eventualities into account. What if the match gets postponed? What if the user doesn’t pay his part of the bet? And so on and so on.
Personal Oracles
You think that Oracles posting data from data providers sounds awfully complex? No need to worry. Anyone can act as an Oracle themselves! Directly in your wallet’s Send-screen, you can chose to send “Data into datafeed”. This is exactly what an Oracle does!
@genievot
@malos10
So whether you’re a couple of friends making a bet who will win the next round of 8-ball or you’re an organizer of a live quiz, you can provide the result data needed for smart contracts to pick up and resolve conditions.
Summary of this week's blog posts
Before the final week of the Use-a-Thon, only 2 contestants wrote reports on their progress. Both of the reports were great and the judges once again found themselves having a hard time deciding on the winner.
Even though he’s actively competing with three different use cases, this week’s blog post described how he managed to create a Discord bot, that allows users to send Bytes to others directly from within Discord. Users can register a paper wallet with the bot and use the bot to make transactions from that paper wallet. We love to see how the iterative approach leads to more ideas forming as he gets deeper and deeper into the Byteball platform and sees new opportunities as he completes what he set out to do. By open sourcing the code for the bot, he allows others to jump in and contribute as well.
Having refined his approach, he set out to meet new merchants to convince of the benefits of accepting Bytes as means of payment. A very thorough research in Venezuela’s government’s regulation of crypto markets lead him to convince shop owners that accepting crypto is not only legal, but even encouraged by the government, who has a crypto project brewing on their own to circumvent some of the embargoes placed upon the country.
Here is the 1 GB award being paid to his registered account.
And the corresponding Byteball transaction unit
Weekly report - Launch week
Weekly report - Week 1
Weekly report - Week 2
Weekly report - Week 3
Steem Use-a-Thon Wiki page where all relevant information for the contest can be found.
Byteball Slack where users can seek help, ask questions and collaborate - please state that you are a participant in the Use-a-Thon.
Byteball Wiki contains information about all features, references to external sources etc.
Developer guides for those wanting to build entirely new stuff.
Easy-to-use JavaScript library to easily integrate Byteball features on websites without the need of headless wallets.
Byteball main GitHub repository for those wanting to dig deep.
Beside knowing the laws of the country, it has proved a great help to also establish a close cooperation with the Capybara Exchange, that offers an easy and cheap conversion between Bytes and Bolivares.
This week's winner of 1 GB
Unfortunately, there can be only one winner each week, and the jury decided that this week’s winner is ....@genievot
With a full week to the deadline there’s still plenty of time for more contestants to join and create a blog post describing a use case. We therefore encourage even more contestants to join in on the fun! Keep in mind, that it’s not a requirement that the use case is realized during the contest. Anyone able to produce interesting, creative and engaging new use cases are welcome do describe their ideas and plans to execute on it to compete for the grand prizes of the Use-a-Thon.
This concludes the last of the four weekly progress reports, since next Sunday is the deadline for contestants to post their use cases. After the deadline, the jury will take some days to evaluate all the participants’ work and use cases and announce the final winners.
This concludes the last of the four weekly progress reports, since next Sunday is the deadline for contestants to post their use cases. After the deadline, the jury will take some days to evaluate all the participants’ work and use cases and announce the final winners.
Previous posts
Announcement of the Use-a-ThonWeekly report - Launch week
Weekly report - Week 1
Weekly report - Week 2
Weekly report - Week 3
Get more information
With a constantly growing community, there is a vast library of available resources. Here is a list of some of relevant resources:Steem Use-a-Thon Wiki page where all relevant information for the contest can be found.
Byteball Slack where users can seek help, ask questions and collaborate - please state that you are a participant in the Use-a-Thon.
Byteball Wiki contains information about all features, references to external sources etc.
Developer guides for those wanting to build entirely new stuff.
Easy-to-use JavaScript library to easily integrate Byteball features on websites without the need of headless wallets.
Byteball main GitHub repository for those wanting to dig deep.