The Klein Bottle was first described in 1882 by the German mathematician Felix Klein. It is an example of a non-orientable surface with no clear boundary. If likened to a bottle, it will be a bottle that you can never fill up. It is a two-dimensional manifold against which a system for determining a normal vector cannot be consistently defined. Its surface will never end.

On the occasion of the first anniversary of the Ontology MainNet launch, we would like to pay our respect to every blockchain developer by presenting “the Ontology Klein Bottle Contest”, a technical challenge with unlimited solutions. To encourage developers to push back the frontiers of blockchain technology, we will choose the best solution submitted by developers in a week’s time and give away tens of thousands of ONG as rewards.

Just as you can never fill up a Klein Bottle, it is nevertheless a great achievement to explore the profound meaning of the universe within the limited space.

Challenge One: Regular Expression

A regular expression is a sequence of characters that define a search pattern. Usually, such patterns are used by string searching algorithms for “find” or “find and replace” operations on strings, or for input validation. Most programming languages today offer a standard library of the regular expression. At the moment, the regular expression standard library for smart contracts on the Ontology platform still has room for improvement.

The challenge is to develop a simple rule regular expression for smart contracts on the Ontology platform.

Judging Criteria:

Participants need to pass all the 200 test cases we have prepared. All characters are ASCII characters, the longest pattern has 16 characters and the longest string has 40 characters. Participants who used the fewest Ontology NeoVM instructions to complete all the tests will be the winner.

The Ontology Klein Bottle Contest will be divided into 2 rounds.

First Round

Reward:

Basic Reward Pool 50,000 ONG

Developer Boost Reward Pool (up to 50,000 ONG)

What is “Developer Boost Reward Pool”?

The Developer Boost Reward Pool is the extra incentive aimed to encourage developer participation. 100 ONG will be added to the Reward Pool for every developer who signs up for the contest.

How to sign up?

Get GitHub-verified ONT ID

Download ONTO Click “ONT ID” and sign up Complete GitHub ID verification

Submit the following information via Registration Form:

GitHub-verified ONT ID GitHub account Your email address

How to boost?

After submitting the above information, every time developers use their GitHub account to Fork and Star the Ontology MainNet code, the boost value will be added once, which means 100 ONG will be added to the Developer Boost Reward Pool. The amount of the Reward Pool will be updated every 24 hours, please refer to the Ontology official Twitter account for the latest amount. You can find the Ontology MainNet codes here.

How to submit codes?

After completing development and testing, developers must call the registry contract to record their ONT ID and contract hash (SHA-256) on the blockchain. You’ll have to pay 0.01 ONG for calling this contract as transaction fee. The tutorial is here.

After completing the above steps, developers need to submit their contract source codes via submission form. The information you need to submit includes:

Your ONT ID and email address

Transaction hash called by the registry contract

Contract code

Rules

Code submission time: 10:00 June 30th — 10:00 July 4th (UTC) Participants who used the fewest instructions to pass all the tests will be the winner (for more details please refer to the challenge rules). If there is more than one optimal solution, then participants who submitted first will be the winner. The submission time is determined by the time they called the registry contract. If developers submit their codes more than once, we will judge the result based on the codes in the final submission.

Winner Announcement

The winner list will be announced on July 5th (UTC).

For further details, please refer to Ontology’s official Twitter or Facebook.

What are the rewards for the winner?

If the winner confirms to claim the rewards of the first round, then they can get 60% of the entire reward pool (Basic Reward Pool + Developer Boost Reward Pool). After that, the winner’s journey in the Ontology Klein Bottle Contest ends.

The winner needs to decide whether to claim the rewards within 24 hours after the announcement by replying to our email, otherwise, the rewards will be automatically given to the winner.

Want more rewards?

The winner in the first round can accept challenges in the second round where all candidates have the chance to win the entire reward pool.

Second round — Taking up the challenge

Time: Within 24hrs of the Twitter announcement of the winner accepting the challenge.

In this round, participants need to submit their codes to ontio/Anniversary via GitHub Pull Request. The list of developers who ranked in the top 3 in the previous round will be announced at the beginning of this round.

Rules:

All developers can continue to sign up and submit their solutions, including the first-round winners. If the solutions in this round are better than that of the last round, then the winner will win the entire reward pool, instead of the 60% rewards in the previous round.

Please visit our GitHub for more details. If you have any questions, please ask us on Discord.