With the entries of the third round moved into this fourth round in order to allow for more entries to compete for the prizes, this round sees quite a few entries that we will cover and provide some useful feedback for. The jury finds that instead of simply cancelling the prize money from round 3, it is far better to simply extend the contest with an additional round in October. So after the round with deadline on October 10th, there will be an additional round with deadline on October 24th.

The testnet has undergone massive updates and improvements and several new features and possibilities have seen the day of light. Perhaps it was a bit too tight for contestants or ideas already on the drawing board had to be completed before exploring the new possibilities. One thing is clear, though: None of the entries for this round makes use of the added possibility to integrate websites or chat bots, but we have heard rumors that some have already tried these features out.

The Autonomous Agents channel on the Obyte Discord has been incredibly active with developers suggesting improvements as they run into features that would either make new things possible or make certain things easier. Therefore, the team of core developers keep a constant eye on the channel and regularly jumps in to lend a helping hand or provide useful answers. We highly encourage people to follow the discussions in there, as more often than not, the debates can help spark new ideas or creative non-developers could suggest changes to the Autonomous Agents being developed.

Autonomous Agents Entries For Round 4

Since entries of round 3 are included in this round, we will of course cover all of the entries of those two rounds combined. So without further ado, let’s jump right in and take a look at all of the entries.

Entry 1 — “Red vs Blue” by whoisterencelee

Introducing the first game-entry to the Autonomous Agents Developer contest, this entry allows users to place an amount on either red or blue side. The winning side will take the entire pool, which is then shared equally among those having picked the right side.

While the idea is definitely interesting and it does invite users to keep an eye on things and introduce several tactics in order to try and beat the other side, the amount of help to the players leaves a bit to want for. The game also introduces a degree of randomness which the initial lottery-entries proved hard to get sufficiently random. With solid knowledge of how the AA behaves in advance, even by drawing on as much outside factors as possible, will still not introduce true randomness, making it theoretically possible to rig.

The game itself provides several features and the amount of thought put into this Autonomous Agent is quite impressive which this quite elaborate flow diagram also proves:

For entries this complex, it would be great to see it followed up by a set of instructions, a simple guide to new users or a short blog post to help users off to a good start even if they haven’t read the explanations on the Discord channel.

Autonomous Agent Definition

Autonomous Agent Address: VRGQZN7EOW7GRB4E5CYQLE32HICKVVXT

Entry 2 — “Select Random Registered Address” by whoisterencelee

With his second game or gimmick entry, whoisterencelee introduces this Autonomous Agent that allows users to send small gifts to random participants of the game. The idea is actually quite fun, and who wouldn’t be happy to receive an unexpected amount of crypto?

Once again, the randomness is a key element of the entry, and once again, enabling true randomness isn’t possible. Therefore, a carefully crafted unit could be sent to the Autonomous Agent, making it possible to tip the scale in favor of yourself. It would require several wallets from the same user, though, so to a certain degree, the ability to rig the randomness takes a bit more effort without a guaranteed win.

Autonomous Agent Definition

Autonomous Agent Address: XV7T64HGBBEWJKUXIYNCWDFW6YNK4BKY

Entry 3 — “EOS-like Crowdsale (updated)” by alvarlaigna

As the entry was already awarded a prize in a previous round, the entry isn’t eligible for this round’s awards. But the update made to the entry is rather important. By introducing a new restriction, the creators of the crowdsale won’t be able to withdraw raised funds until after the sale ends. This eliminates the possibility that the issuer could regularly withdraw raised funds and use it to purchase more tokens in order to inflate the sale and thus making the token appear more popular with investors than it actually is.

The entry definitely deserves a second look and for someone considering running an ICO on Obyte, this entry could very well serve as inspiration.

Autonomous Agent Definition

Documentation on GitHub

Entry 4 — “Rent Guarantee (ARGAA)” by hey_monkey

One thing that became possible with the introduction of Prosaic Contracts, was the ability to negotiate and reach agreement before entering a contract. Introducing the Rent Guarantee Autonomous Agent, a clever trick by sending small messages back and forth between users enables roughly the same. A guarantee is deposited and each of the two parties of the agreement will then be able to release certain amounts to the other party upon agreement.

A rather important fact about Autonomous Agents is the availability of the code that anyone can check. This unique opportunity easily gets wasted if the code is unintentionally left difficult to read or understand. Using variables that allows a reader to quickly understand what it’s used for highly improves the readability of the code and enables more non-developers to understand the code. The variable names of this entry does leave a bit to wish for in that department.

Autonomous Agent Definition

Autonomous Agent Address: OHCLVB63IQ2NWFS3WQMUJXDO6G2YLKE4

Documentation on GitHub

Entry 5 — “Offer Reward To Get Triggered In The Future (THAANKS)” by hey_monkey

Autonomous Agents doesn’t act as a piece of running code, but needs to be triggered in order to execute. This introduces quite a few limitations and one of them being the possibility to have the code executed on a specific date or time. With the THAANKS entry, hey_monkey introduces a really interesting solution to this limitation, by crowdsourcing the triggering of an Autonomous Agent.

By offering a reward to the user triggering the Autonomous Agent, the author hopes that someone will find the reward appealing enough to help trigger it during the right time frame. If the reward is big enough, it wouldn’t be hard to imagine a user simply setting an alarm on his smartphone, telling him to post a triggering transaction at a given time on a given date.

Users can subscribe to the service, and will have a timeframe within which the Autonomous Agent is possible to trigger.

It would not be recommended as a source of randomness, since a malicious user would be able to know exactly which time to trigger the Autonomous Agent to reach a favorable result. But for other things, this entry could actually prove really usefull, and it could potentially be an important building-block for other solutions built in the future.

The jury found, that to further improve the usefulness of this entry, enabling sending of arbitrary data along with the scheduled AA call, would greatly improve the use cases in which this entry could be used.

Autonomous Agent Definition

Autonomous Agent Address: UHNH72MK4SENTB6OIC3GETMEPATCAP4P

Documentation on GitHub

Entry 6 — “Safe Autonomous Agent Forwarding Estate (SAAFE)” by hey_monkey

As far as the jury is aware, this Autonomous Agent is the first in the contest to make use of signed messages. In an elaborate and highly useful entry, hey_monkey effectively makes use of a wallet’s public key and signed messages to allow a user to securely store any Obyte asset on the Autonomous Agent. The ability to withdraw at a later point in time relies on the user still having access to the private key and being able to sign another message.

The entry itself is quite impressive and the use case is definitely feasible. But it still requires quite a tech savvy end user to securely use. But the possibility to use this Autonomous Agent as a kind of online cold storage, makes the use case really interesting and would highly benefit from a user friendly interface offering a simpler and smoother process for users. Another improvement could be to once again tidy up the code a bit and use more descriptive variable names.

It is obvious that the realization that using state variables comes at a cost, has also made developers aware of how to keep the entries as tight and lightweight on the full nodes as possible. This goes for this entry as well.

Autonomous Agent Definition

Autonomous Agent Address: KXPXSL5JRNJCJGUBVNLXVV237DNGAF6U

Documentation on GitHub

Entry 7 — “Dynamic Asset Names Autonomous Agent (DANAA)” by hey_monkey

With the ability to issue tokens on Obyte also comes the need for being able to relate a human readable name to a given issuing unit and vice versa. With DANAA hey_monkey introduces a really useful addition to the Obyte DAG in general and other Autonomous Agents in particular.

A token issuer can register their token with DANAA and thereby make it possible for others to find the token’s metadata by using asset ID. The Autonomous Agent allows users to register a wide range of parameters for a token, thereby enabling more and easier use cases for their tokens. Naturally, DANAA checks that the wallet registering these additional parameters is the same as the one that issued the token.

One tiny drawback would be, that assets issued by Autonomous Agents would likely not be able to use this registry without additional programming. But for a variety of other use cases, this Autonomous Agent showcases some really interesting possibilities by making it possible to add metadata to units. Who says metadata is only relevant to units used to issue a token?

Autonomous Agent Definition

Autonomous Agent Address: LLAVLVFN3CPBHTAB62NOIZLAMPABR2YF

Documentation on GitHub

Entry 8 — “Ownerless AA Registry” by Barborico

If one were to define an overall topic for this round’s entries, registrations or attestations would likely be a candidate. The Ownerless AA Registry introduces a possibility for registering usernames with an AA acting as an attestor.

The Autonomous Agent is made in a way that makes it really easy to integrate with regular wallets. You simply change (or add) the address of the username attestor to the address of this Autonomous Agent, and the wallet will then enable you to send funds to registered usernames.

As a funny little addition, before the activation by the owner, the Autonomous Agent won’t work, and it definitely lets the user know so. I won’t spoil too much, but try using it without first activating and see for yourself.

A couple of suggestions for improving on the entry could be to reduce its footprint by allowing past registered users from other known attestors to simply be used instead of re-registering and taking up more space for state variables. Since Autonomous Agents are run by all full nodes, they can all see past attestations and would therefore be able to check for an existing attestation. It could also prevent confusion if two different users registered the same username with two different attestors. It could also be made slightly easier if users were able to send the registration request directly and not through the Autonomous Agent they want to register.

Autonomous Agent Definition

Autonomous Agent Address: C67F2UX4VNZZ2RJMPBADG7PRFPZZOT4E

Documentation on GitHub

Entry 9 — “Exchange Box and Deployer” by Barborico

While there has been past experiments, this entry seems to be the first Autonomous Agent to introduce issuing of another Autonomous Agent. The Autonomous Agent improves significantly on the first edition of his exchange which — by his own words — was “literally a bitch house”. One of the things that makes this entry far superior to the previous, is the fact that it consists of two independent Autonomous Agents, working together to enable the use case of the full solution.

This updated version rightfully fixes the issues of the first one, and introduces the issuing of an Autonomous Agent for each new trading pair, making it easier to keep track of things and prevent the grave mistakes of the first one.

The use of it can get a bit complicated but would seem to be a rather obvious candidate for someone to build an easier and more user friendly web based UI for, that generates the required messages to be sent from the wallet.

Autonomous Agent Definition

Autonomous Agent Address: GLNVVXEUVOSPWYHMFZ4I6SBSPC6ZVS5V

Documentation on GitHub

Guide And Tutorial Entries For Round 4

The interest in writing documentation or tutorials doesn’t seem to be quite as high as for writing Autonomous Agents. Yet, this round saw 2 entries.

Entry 1 — “How to come up with Autonomous Agent ideas” by whoisterencelee

The entry touches in a rather relevant point about how to approach the process of building an Autonomous Agent. While not covering the building process or the Oscript language itself, the entries brushes the surface of a rather difficult discipline: Idea generation and realization.

The author offers a unique insight into how he comes up with ideas and initially draws flow diagrams to envision the entire system before attacking the code head on first. This does seem to be a great approach to many, since it makes it easier to spot any problems, enables the developer to keep track of far more complex systems and generally provides a nice guideline to lean on, once the actual work begins.

Whether this method is useful to everyone is not possible to say, but it would be rather safe to say that illustrations often works far better to explain or understand a problem than hundreds of words.

Link to the article

Entry 2 — “Understanding AA Structures” by hey_monkey

In a tour de force of illustrations and breakdowns, hey_monkey has written an astonishing tutorial, that will help even non-developers understand the structure of Autonomous Agents.

Initially, the article introduces links to where readers can find required preliminary knowledge before heading off to a veritable explosion of increasingly complex structures that eventually ends up describing even the most complex topics of Autonomous Agents.

And at no time does the article seem to disconnect the reader. Step by step, everything gets explained and form the foundation on which more knowledge is built. We would be surprised if this tutorial wasn’t to become one of the must-reads for new developers wanting to explore the inner workings and understand the full potential of Autonomous Agents.

Link to the article

The winners

With the combined entries from third and fourth round, the jury had a substantial number of entries to choose between. The task is never an easy one and while one may favor one entry, another may favor another. But winners must be found, and eventually the jury must reach a conclusion in order for the deserved winners to be named, celebrated and awarded with prizes.

Here are the winning entries of the fourth round in the Autonomous Agents Developer Contest:

Third place

The third place and the prize of 35 GB and 73.85 GBB goes to:

Whoisterencelee — “Red vs Blue”

While the game is difficult at first glance, the number of intricate details and possibilities for applying different game tactics makes this entry a well deserved winner. It would probably be far more popular once it hits mainnet, if a set of rules and game objectives were published in an article.

Second place

The second place and the prize of 70 GB and 147.7 GBB goes to:

Barborico — “Ownerless AA Registry”

By showing how even small things can introduce great value and have a potential big impact on the entire Obyte Ecosystem, Barborico’s entry allows users to register a username that will then easily be possible for everyone (even those that didn’t use the AA themselves) to use. It shows how a little effort in one place in the ecosystem, can potentially benefit a far larger part of the ecosystem.

The winner

For this fourth round in the Autonomous Agent Developer Contest, the winner of 140 GB and 422 GBB is:

hey_monkey — “Offer reward to get triggered in the future (THAANKS)”

Generally speaking, one of the core features in crypto has always been incentives. Miners are rewarded for mining blocks, stakers for staking their assets and so on. Everywhere you have an incentive, you will find someone willing to help.

Best Guide / Tutorial

As in a previous round, the two entries takes an entirely different approach to the topic. While one entry takes a more holistic and general view on ideation, realization and illustration, the other takes aim at users wanting to understand Autonomous Agents in specific.

The jury finds that since this category should aim to make it easier for new users to get an understanding of Obyte, Oscript and Autonomous Agents concepts, the winner of this round’s best Tutorial and the reward of 55 GB and 116.05 GBB is:

hey_monkey — “Understanding AA Structures”

On behalf of the Obyte Core Team and the Jury, we congratulate the winners and look forward to even more entries for the fifth round. The deadline for new entries is Thursday the 26th and the winners will be announced Sunday the 29th.