Free TON

Contest Proposal: Bindings for TON Client Library

Contest Proposal: Bindings for TON Client Library

Short description

Implement TON Client library bindings for any language of participant’s choice.

Dates

September 21st, 2020, the beginning of day UTC - October 7th, 2020, the end of day UTC

Motivation

TON adoption depends on the ecosystem of DApps, which doesn’t exist yet. We need to provide a set of libraries, tools, and materials for developers to build TON Dapps on any language, platform, and architecture.

The contest is focused on the TON-SDK (especially TON Client) library bindings for different languages, which is the foundation for developers to build DApps.

We expect each participant of the contest to get a deeper understanding of SDK internals and technical concepts behind TON.

Task

  1. Create TON Client library bindings for your language of choice. These bindings should provide an API for all SDK Library methods
  2. Write either unit tests or example code which illustrate the usage of the interface you’ve implemented

Submission format and requirements

  • Work should be submitted to the GitHub repository. The participant may use any GitHub account he/she wants to publish the repository
  • To make the evaluation process faster, include a README file with instructions to install dependencies (if any) and compile/run tests/examples
  • Submissions with failing builds/tests/samples will be rejected
  • Submission should use v1.0.0 Core SDK release

Evaluation criteria

Considering the following criteria set, the submission score increase:

  • API coverage completeness

  • Test coverage completeness:

    • amount of methods covered
    • “negative” tests
    • async request tested
    • tests on method execution correctness when called from one/different client contexts
  • Internal SDK errors are handled using error handling approaches. Error codes and messages are consistent with SDK errors.

  • It is possible to solve the following routines using participants’ submission code:

    • keypair derivation from TON Surf mnemonic
    • contract deployment
    • message / transaction sending
    • fee estimation
    • graphql queries execution
  • Asynchronous API (request with callback) binding implementation

  • Available via the appropriate package manager (e. g. pip for python or npm for js)

Considering the following criteria set, the submission score decrease:

  • Not implemented SDK methods
  • Binding mistakes causing SDK errors
  • Memleaks
  • Incomplete test coverage or tests inexistence
  • No instructions for running tests/examples
  • Bad code readability
  • Core Implementation inconsistency

Notes

JS and Rust bindings are allowed, but WASM bindings we don’t expect

Don’t implement core logic. You should use the Core SDK dynamic library (v1.0.0) to create your bindings.

The Jury

  • Strong technical background is a must.
  • There should not be less than 5 jurors

Contest Rewards

The reward for TOP-3 among all participants:

  1. :gem: 100’000
  2. :gem: 75’000
  3. :gem: 50’000

The reward for TOP-3 among participants of given language:

  1. :gem: 50’000
  2. :gem: 25’000
  3. :gem: 10’000

30% of this amount will be paid as a contest reward immediately after voting ends.
Another 70% of this amount will be vested over a 12-month period with the monthly distribution.

Prize Evaluation Example

Python binding submission took 2nd place among all participants and his solution is the best among all Python submissions. It will receive :gem: 75’000 + :gem: 50’000 = :gem: 125’000

Reward Distribution

  • Winners receive 30% of their rewards when contest results are evaluated.
  • Another 70% will be vested over a 12-month period with the monthly payouts.
  • To receive all 12 distributions, the solution should be supported for 1 year
    • The binding should be updated (in a reasonable timeframe) according to the main library changes
    • Major GitHub Issues should resolve within a reasonable timeframe
  • The first vesting payout is paid one month after the end of the contest
  • The first vesting payout :gem: 100
  • Payouts increase exponentially over a month

Exponential Vesting Distribution

As an incentive to support the winning solution during the whole vesting period, payouts increase exponentially each month.

Use this to play with parameters


Voting: 1-10 / reject / abstain
  • Each of the initial Free TON jurors can vote on your submission. Jurors whose team(s) intend to participate in this contest by providing submissions lose their right to vote in this contest.
  • Each juror will vote by rating each submission on a scale of 0 to 10 or can choose to reject it if it does not meet requirements, or they can choose to abstain from voting if they feel unqualified to judge.
  • Jurors will provide feedback on your submissions.
  • Duplicate, sub-par, incomplete or inappropriate submissions will be rejected.
Jury Rewards: 5%

An amount equal to 5% of the sum total of all total tokens actually awarded to winners of this contest will be divided equally between all jurors who vote and provide feedback. Both voting and feedback are mandatory in order to collect this reward.

Procedural requirements
  • All submissions must be accessible for the jury to open and view, so please double-check your submission. If the submission is inaccessible or does not fit the criteria described, the submission may be rejected by jurors.
  • Contestants must submit their work before the closing of the filing of submissions. If not submitted on time, the submission will not count.

Disclaimer

Anyone can participate, but Free TON cannot distribute tokens to US citizens or US entities.

15 Likes

Very good idea! Highly appricate this contest!

3 Likes

Can Bitbucket account be used instead of GitHub (I don’t like their politic)?

1 Like

No. We will stick to GitHub, because it’s defacto standard in Open Source community

1 Like

:rocket: :rocket: :rocket: :rocket: :rocket: :rocket: :rocket: :rocket: :rocket:

1 Like

Good idea. It will encourage people to get familiar with or better at SDK usage.

2 Likes

You can ask technical questions on SDK here

3 Likes

I participated in the Airdrop contest. Spent 2 days.
I participated in the Brand masters contest. Spent 2 weeks.
I read about DePool contests and talk with Validator contest participants.

This contest is harder! Need increase reward.

First
Look at rewards for other contests.

Airdrop 30, 29, 28, …
Brand masters 20, 18, 16, …
DevOps tools 30, 29, 28, …
Wiki 40, 20, 10, …

Second
Think about code support. If the SDK is updated or developers start use library,
the author will have to update the library. Library without support do not needed.

I propose to up reward to 70k, 55k and 40k for TOP-3 on one language.

2 Likes

I like idea, but I think need increase rewards as it will take much more time than DePool contest or Validator contest

2 Likes

Contest Proposal Updates:

  • Start Date rescheduled to September, 21st
  • Increased rewards
  • Introduced Exponential Vesting Distribution (sample vesting schedule attached to the proposal)
  • Minor formatting and readability updates

Enjoy :slight_smile:

2 Likes

The contest dates and reward structure will be updated soon. Detailed announce is in SDK chat, any feedback is welcome