Skip to main content

Ardor Online Hackathon

Ardor Online Hackathon

22 October 2018 - 10 January 2019

Lightweight Contracts Competition with US$21,000 in Prizes to Spur Business Integration with the Ardor Platform

Update: The winners have now been announced!

The Ardor Online Hackathon 2018 is your chance as a Java developer to compete for prizes while solving real world business problems using the Ardor platform's most recent innovation, Lightweight Contracts. As the first full blockchain-as-a-service platform, Ardor has positioned itself to provide an unprecedented level of security while seamlessly integrating legacy business systems with the blockchain. Written in Java, the stateless Ardor Lightweight Contracts provide a safer and much more scalable alternative to the Ethereum smart contracts. Read more about each challenge and the submission requirements - then start building using the developer documentation and resources available at the Ardor Learning Hub!

Lightweight Contract Challenges

Challenge 1: Currency Exchange

Think you have what it takes to automate the process of currency exchanges? This is your chance to prove your skills by creating a Lightweight Contract to exchange between Bitcoin and Ignis. More details...

Challenge 2: Cloud Storage

Decentralized data storage has gotten lots of hype, but most blockchain platforms are still figuring out how to offer this type of feature. In this challenge, you will use the existing Data Cloud on the Ardor platform's child chains to take cloud storage and streaming to the next level. More details...

Challenge 3: Identity Verification

Fake social media accounts are a major issue, with platforms like Twitter implementing their own verification process. On the Ardor platform, we think this process can be done better. Join this challenge to develop a Lightweight Contract based on reputation management and identity verification. More details...


Launch: October 22nd, 2018

AMA: Nov 14, 2018, 17:00 UTC, Ardor & Nxt Slack. Subscribe to our list above to stay tuned for more details and regularly check this website and our twitter. The transcript of the AMA is now available. Thanks to all who participated!

Opening Date for Submissions: November 22nd.

Deadline Date for Submissions: January 10th, 2019, 11:59 UTC

Winners Announcement: January 31st, 2019

Submission Instructions

  1. Upload your contract to the Ardor testnet.
  2. Send us the source code of your lightweight contract in a zip file, by email to We will respond to confirm receipt of your email. After the end of the submission period, you should also publish your code to a publicly accessible git repository.
  3. In your email, also include the account id from which you uploaded the contract, and a signed token to verify that you really control this account. To generate such a token, use the Generate Token link under the cogwheel menu in the Ardor wallet header, and enter your email address as Data to be signed.
  4. Include in your email a brief explanation of the approach you used to design and solve your chosen challenge(s), in a basic text document.
  5. (Optional) in a separate text document, tell us about yourself – what is your overall interest in blockchain? How did you get to know about Ardor? How do you see yourself developing additional applications on Ardor in the future? Feel free to include any important feedback from your development experience throughout the Hackathon.


Developer specific questions should be tagged with the "Ardor" keyword and posted publicly on the Bitcoin Stackexchange.

Project specific questions should be emailed to Allow a minimum of 3 business days for responses.

If you want to interact with other community members you can find us in the Ardor Nxt Slack.

Terms & Conditions

Official Ardor Online Hackathon Terms and Conditions

Lightweight Contract Coding Challenge #1: Currency Exchange

Exchange Bitcoin to Ignis

Your objective

Develop a lightweight contract which accepts as input a proof of incoming Bitcoin transaction to the contract owner address (as specified by the contract configuration), and an address of an Ardor account.

The contract will use a Bitcoin SPV wallet to confirm that the Bitcoin transaction is included in the Bitcoin blockchain and has enough confirmations.

Once confirmed, the contract will use a publicly available information source to calculate the exchange rate between Bitcoin and IGNIS. Using the calculated exchange rate, the contract will submit a transaction to fund the senders Ardor account with the calculated amount of IGNIS tokens.

Design goals

Reliability, the contract should be able to recover from a node restart and still perform the exchange. It should also support monitoring for multiple exchanges at the same time.

Simplicity, the contract should implement the requested task using a very simple setup.

Extensibility, the contract should be designed so that adding different blockchain protocols or a different Ardor child chain is simple.



Lightweight Contract Coding Challenge #2: Cloud Storage

Integrate Ardor with a cloud storage platform

Your objective

Develop a lightweight contract which provides interface to a data storage cloud service of your choice.

The contract should support the following operations:

Upload - a file is uploaded to the contract which streams the content of the file to the cloud service, receives confirmation about a successful upload then submits an Ignis cloud data transaction which proves the existence of the file on the cloud service either by hashing the uploaded file or by getting a proof of upload from the cloud service itself. The data recorded on the blockchain should be sufficient to later download the file and validate that it wasn't changed since upload.

Download - given a trigger message containing the hash of a cloud data transaction, the contract should locate the file pointed to by the cloud data transaction on the cloud service, download it, validate it against any proof stored on the blockchain, then make it available to the user.

Support for very large files, larger than the available workstation RAM is an advantage.

Design goals

Reliability, the contract should be able to recover from a node restart and still perform the download action. If an upload action is aborted in the middle the contract should not record any information on the blockchain.

Simplicity, the contract should implement the requested task using a very simple setup.

Extensibility, the contract should be designed so that the blockchain operations are decoupled from the cloud storage interface to enable plugging additional cloud services in the future using the same interface.



Lightweight Contract Coding Challenge #3: Identity Verification

Blockchain Based Reputation System

Your objective

Develop a lightweight contract which given a signed token, validates the ownership of a well known account on a centralized service.

The contract should act as an interface between the blockchain and a well known social network, e-commerce site or any other online resource which can establish the credentials of a blockchain account owner.

Users who would like to prove their reputation, will ask the contract for challenge text signed by the contract, and create a token which signs this text using their account passphrase.

The user will then post the signed token text in some public location accessible only to their account. For example to prove ownership of a social network account, post the token text as a message on the social network or as part of your public account description or status. To prove ownership of an e-commerce account, post the token as part of your public shop description.

Next the user will pay the contract Ignis, attaching as a message a public URL which can be used by the contract to verify the existence of the signed token published earlier. The contract will extract the token from the public URL and validate that it is indeed signing the challenge message provided by the contract. If the validation succeeds the contract will set an account property on the sender account confirming its reputation by including the original challenge text as the value.

Design goals

Simplicity, the contract should implement the requested task using a very simple setup.

Extensibility, the contract should be designed so that the blockchain operations are decoupled from the external reputation system to enable plugging in additional reputation systems in the future using the same interface.