Contest proposal: Free TON wallet as a Chrome extension

I suggest to move “Notifications on events” to “Soft criteria”. If you make extension by google recommendation “persistent: false”, you can send events only over outside centralized server. For instance, extraTON will never do it.

Please, don’t be greedy.

I perfectly know the cost of development of such toolset that is asked within this contest, and it is worth 2 full-stack developers with salaries well under $3k.

The main prize in this contest is 35k TONs, which is $17.5k roughly, and the TON rate is growing now. Even if you pay your developers $3k each for two months, you get a $5.5k profit.

Next, if you compare this contest and DeX, the latter is at least five times harder, that’s why the main prize differs accordingly.

Last, but not least: I extremely simplified the contest to let the maximum number of participants step in, and there will be at least two or three contests for improvement coming, with their own prize fund.

So it’s up to you to participate in this contest or not :man_shrugging:

Agree, that’s fair. I will move it to soft criteria.

That’s not about greedy.

I perfectly know the cost of development of such toolset that is asked within this contest, and it is worth 2 full-stack developers with salaries well under $3k.

I definitely sure that you are mistaken about knowledges of such toolset development.

Next, if you compare this contest and DeX, the latter is at least five times harder, that’s why the main prize differs accordingly.

Yes, i agree that DEX contest is harder. And due to that my calculations of rewards fund is one third that:
1st place………… 120 000 TON
2nd place………… 70 000 TON
3rd place………… 30 000 TON
4-5th place……… 10 000 TON
Total prize amount: 230 000 TON

And it’s not much more than your suggestion, but your stairs of rewards is very strange: 35, 30, 25, 20, 15, 5*5. It is conducive to just participate, but not to make best solution.

My point being that original proposal is well-ballanced as it offers a minimal features set which can be developed within a month. Such an approach lets community to see several open-source solutions on Stage #1.

The prize fund of 120k per 1st place can be slightly redcuced - I’m not sure why the point of ‘greed’ is raised. Having a good award encourages developers to offer best solutions possible, healthy competition. At least 2 community members showed interest in participating.

There are examples of contests with 1 submission - ain’t sure if it’s best practice.

The doc with all features should become stages #2-6 (or more, it’s a subject to be discussed) with 1 month per stage. With essential features as the core and extra features as a plus - to be within the market.

1 Like

After the discussion with the community, we have elaborated this updated version:

Contest dates

  • Warm-up period: 3 days after approving this proposal in the governance interface;
  • Submission period: 2 calendar months after the warm-up period;
  • Judging period: 1 month after the submission period.

Abstract

Create a detailed, well-grounded, scalable, and secure Free TON extension for popular web browsers: Chrome (and Chromium-based browsers), Firefox, Brave, Edge.

Motivation

Many of us use mobile and desktop wallets to interact with Free TON. Surf, Crystal Wallet, Kilox, Extraton, Broxus, and many other applications make our life easier.

We aim to bring even more convenience to every common or business user of Free TON with web browser extensions with this contest.

If you ever worked with Ethereum, for sure, you know Metamask and how useful it is. Operate with tokens, submit transactions, interact with smart contracts, stake in depools, and many other things were made simple with this browser extension.

Now is the time to have such extensions in Free TON.

Stages

  1. Basic browser wallet
  2. Multisig wallet, tokens support, multiaccounts and multitransactions
  3. DePools support, Web3-like connection, smart-contracts interaction

General contest requirements

Your submission should include:

  • The general technical architecture of the solution including all of the features listed below in the hard evaluation criteria section, along with the proposed customer journeys
  • Detailed technical specification of the proposed implementation with the justification of the selected approach: smart contracts, integration layer, interfaces
  • Name and contact information of the contestant for communication (Telegram username, e-mail)

Your work and the proposed solution must be:

  • Original. It should not include more than 10% of other contestants’ works and citing from other works available on the Internet;
  • Implementable. Keep in mind the peculiarities and goals of FreeTON;
  • Consistent. Its elements should not contradict each other and the FreeTON Declaration of Decentralization;
  • Safe. It must ensure a due level of funds security;
  • Modern. Inspire by the leading market solutions like Metamask;
  • Open-sourced. All the results of your efforts should be accessible in an open way, without password protection, and licensed under an open-source license, preferably Apache 2.0 or GPL 3.0. If your submission includes code, all dependencies source code should also be available openly.

Evaluation criteria and winning conditions

Hard criteria

  • Generic
    • English language of the interface;
    • Support of Google Chrome;
    • Absence of analytical trackers (Google Analytics, Yandex Metrika, etc.);
    • Support of mainnet and testnet(s);
    • On-chain activity history (transactions, messages, contract interactions, etc.);
    • Any calls that require the user’s keys must ask for the password input to decrypt them from the local storage.
  • Wallet features
    • Native support of any open-sourced non-custodial Free TON wallets, e.g.:
    • Random seed phrase generation;
    • 12 or 24 words wallet initialization (based on wallet contract);
    • Wallet seed phrase backup and restoration;
    • Public and private keys generation, backup, and restoration;
    • Encrypted local key storage;
    • Password protection;
    • Support of sending a memo with messages (or encoded payload).

Soft criteria

  • Multilanguage support;
  • The extension is published in the Chrome store;
  • Support of additional browsers (Firefox, Brave, Edge, Safari, Opera);
  • Browser notifications on events;
  • Detailed and easily understandable charts explaining the architecture and business processes;
  • Brevity;
  • Mostly everyday English to facilitate understanding;
  • Readiness to participate in the implementation of the solution in the next stage;
  • Verifiable extension security along with the process to verify the equality of published version with source code.

Artifacts

  • Technical paper in PDF format explaining the architecture in details along with detailed user scenarios;
  • Source code for all modules published in any open repository like GitHub, GitLab, BitBucket, etc.

Licensing

  • All works published under this contest enter the public domain immediately after the publication;
  • The work should use any copyleft license (preferably Apache 2.0 or GNU GPL v. 3).

Procedural reminders to contestants

Keep in mind these simple principles to make sure your submission is well-formed:

  • Accessibility. All submissions must be accessible for the Jury to open and view without a password, so please double-check your submission. If the submission is inaccessible or does not fit the criteria described, jurors have the right to reject the submission.
  • Timing. Contestants must submit their work before the closing of the filing of applications. If not submitted on time, the submission will not count.
  • Contact information. All submissions must contain the contestant’s contact information, preferably a Telegram username by which jurors can verify that the submission belongs to the individual who submitted it. If not, jurors have the right to reject your submission.
  • Content. The content published in the forum and the provided PDF file should not differ, except for formatting. Otherwise, jurors have the right to reject the submission.
  • Well-formed links. Suppose your submission has links to the work performed. In that case, the content of those links must have the contestant’s contact details, preferably a Telegram username, or backlink to your submission at the FreeTON forum, so jurors can match it and verify to whom the work belongs. If not, jurors have the right to reject your submission.
  • Multiple submissions.
    • Each contestant has the right to provide several submissions if they contain different approaches to the contest problem’s solving. However, if works are not unique enough or differ just in insignificant details, jurors have the right to reject such repeating submissions.
    • If the contestant wants to make an additional submission that overrides the one previously published, he must inform the Jury about this fact and indicate the correct revision to assess. In this case, only the indicated work will count. If the contestant hasn’t indicated the updated submission as the correct one, only the first one will count, the Jury will reject all the others.

Fair play

It is not enough to win to enjoy the fruits of success. Triumph must be measured by absolute fair means, honesty and just play.

As a contestant, you agree to follow these simple rules to ensure fair play among contestants.

  • Respect. Fair play requires unconditional respect for opponents, jurors, governance, and community members.
  • Friendship. Rivalry in the contest does not exclude friendship. On the contrary, friendship could grow from noble rivalries.
  • Solidarity. It is important to support each other and share feelings, aims and dreams. Mutual support brings mutual success on and off the field.
  • Tolerance. The willingness to accept behavior or decisions you may not agree with develops your self-control. Ultimately, that could be the deciding factor when it comes to winning or losing.
  • Plagiarism-free. Your work should be the product of your own mind and contain at least 90% of the original content. If some part of your work is taken from another source or submission, you must clearly cite the source.
  • Public domain.
    • The work you submit for the contest enters the public domain immediately after publication, even if it doesn’t win any prize places.
    • If your work has been made partly or in full by someone else, it is your responsibility to get and publish the proper waivers from this person. If any juror discovers that the submission violates the original author’s rights, it gets immediately disqualified, even if other jurors have already assigned some points to the work.
    • Free TON, its Subgovernances, or any of its members shall in no case be liable for any possible claims from the original content owner(s), public authorities, or any other person or body.

Procedural remarks for jurors

Jurors play an extremely important and vital role for the entire Free TON community. You and only you affect the quality and the perception of Free TON, in whole, and in parts.

This is a technology-intensive contest that requires a deep understanding of the contest subject from your side.

Voting process

As a juror, you agree to follow these simple rules at the moment of judging:

  • Technology understanding. Jury members who vote in the contest must have a solid understanding of the technology. Those jurors who don’t should choose “Abstain.”
  • Contest participation. Jurors whose team(s), relatives or friends intend to participate in the contest by providing submissions lose their right to vote in the contest and should choose “Abstain” for all works. They shall also clearly and publicly indicate this to other jurors.

Suppose anyone discovers that the juror violates this requirement. In that case, his scores will not be considered when calculating the resulting participants’ ranking, and he will not get rewarded for judging this contest.

  • Feedback. Jurors shall provide valuable feedback on each submission justifying their decision.
  • Quality filter. The Jury will reject duplicate, sub-par, incomplete, or inappropriate submissions.

Submissions assessment

  • Quorum.
    • Assessing the submissions is considered legitimate if at least 50%+1 of jurors have cast their votes, be it “Accept”, “Reject” or “Abstain”, to the submission with the least number of votes.

For example, if a group consists of 16 jurors, then at least 9 of them must assess the submissions.

  • However, if the number of jurors who have voted “Accept” or “Reject” (all together) will not exceed 3 (three), the contest submissions assessment is not considered legitimate and must be repeated from scratch.

I.e., one poorly voted submission may fail the whole contest, and you will need to re-vote again.

  • Scale. A juror shall assess a submission on a scale of 1 to 10 (10 is the highest score, 1 is the lowest score) or vote to “abstain” or “reject”.
    • The “Abstain” vote means that the juror is not qualified or eligible to assess the submission. Such a vote is not taken into account when a rating score is calculated.

Example. If a submission was assessed by 3 jurors as follows: “10”, “2” and “Abstain”, then the resulting score will be equal to (10 + 2) / 2 = 6.

  • The “Reject” vote means that a submission does not meet at least one of the contest conditions and should be disqualified.
  • If a juror considers a submission useless, although it formally meets contest requirements, he/she must notify its author and clearly state in feedback a reason for a low rating.
  • Average score. The average score of the submission is calculated per the following formula: Sum(Score) / Sum(N_Accept + N_Reject), where:
    • Score - the number of points assigned by a juror when casting the “Accept” vote
    • N_Accept - the number of “Accept” votes
    • N_Reject - the number of “Reject” votes

It means that “Reject” votes count as a zero score and lower the average score.

Example. A submission got the following votes: 5 (Accept), 3 (Accept), 4 (Accept), Reject, Reject. It means its average score will be (5 + 3 + 4)/(3 + 2)=2.4.

  • Threshold. The submission shall be eligible for participation in contest ranking and competing for prizes only if it meets the following criteria:
    • Soft majority acceptance. The total number of “Accept” votes exceeds the total number of “Reject” votes.

For the avoidance of doubts, in the case of an equal number of “Accept” and “Reject” votes, the submission is considered rejected.

  • Hard threshold. The average score of the submission is at least 4 points.

Rewards

Prize fund

Place Prize, TON
1 80,000
2 70,000
3 60,000
4-10 10,000

Prize payout and vesting

  • Winners receive no more than 10,000 TON of their rewards after contest results are finalized;
  • The remaining amount will be distributed within six months in equal parts monthly;
  • The contestant should support the solution for six months to receive all vesting distributions:
    • Major reported issues should be resolved within a reasonable timeframe - one month maximum.

Jury

This contest will be judged by a joint team of professional jurors from the DevEx and DeFi subgovernances as per the list below:

Juror name Public key Wallet address
Vladimir Maslyakov deb93a951c20140785ad7a9e7fa85fa6da5332cda85fbff6ef7784c805e963d3 0:7dd2b7e0067f4beda7505ff0b9e2ae524e64acbb886dcab68db8c02b8d6115e0
Sergey Shashev b0d4540c2d160266d9f3f487f571f591673fe1445ec6169086677f6d1cb23986 0:e2b874ee05cd7e5d1475d90bab04d26974e67fe7aef97d730c2adcba5ea895c3
Nimrod Lehavi 1f6ae87d306ec85695e456ee7faf825fde4beeac5646444343dd9bf118b50241 0:345309e3eee831dbfc361176f4ed439f8b8365df5f0e02c8882c3132b54dcd88
Alexey Vorobiev d856d4786b530491ef68a57b852a025c5c76b61d74c8b7c0a70f0ede2ab383fa 0:1c8de9089ecddf6ccb34efa87f81381315f8a6f1b80c326ad3caf2ba752afabb
Vladimir Kanin 86f8519e70ebf07bb0188dfe751a72c7ef526f9996541b1dc471177816cff326 0:deb918bd1621288605c0f8af4acb594dd0181e6680d65148a05fac9489b052be
Zurab Kazhiloti ba9fe16ae2fc0a4579f3865c0a4bab0c3ac76f8a69e40c76c3ded5ce1f2747a8 0:0109697d325e6cfde8eba3c5df9b050a8d883ad6fe67c0286a77b5a5b9967b60
Alexandr Vat 2e47421b83dad034656341f00efd9bfcee545f26b98e0fb3dc291747746bddde 0:418d17406d0b6cf306e2f2b7bcc55578fecde7a42804fcbe19966b5209b8b91e
Sergey Potekhin 4ae8805d074de685094cd917a97cb6a93ba5b9c83a54defe2962cabcad59c156 0:2e10bf781ccf0b42036fc4f35732fc847f27f4e22f82cf0c76a77f58047433fc
Ignat Shapkin d46cdc0a204a390cd2a01cee7078deb52d73ab313fee0ed69241209009465ef2 0:9ee55e89c3b48603d34d65f67e4c638863a1a3920b79dd662d7cd8c484f77445
Andrew @ DefiAlert 4492f389d8160d50ba2a58b349b69253ace196f34560ac01dc5827daae7eb530 0:f8603be35430ba13025d493504bc153f199185649c74f5ded84080dd07e5a829
Andrey 80c3447d22fc688a6e6da0114f7b81684852c0d029c24291bb7f700c56cb3c36 0:fb78684663132770da436010294cf05248da29cdc6dc69172b9975a083d499a6
Mitja Goroshevskiy 6ff322ad669dfad2f396b98bdc8690cc49926f6a10cd7f10d07f031841cf09ef 0:583228a98701dea50703b10b797e7e43a270b6172f5223b10ca877b0adaed702
Ilya Bugaev 69058bb4ffef28284b538babf9da6a11558e87b48d79efce0f48c5ab38fffeff 0:6f9591ee5a7d4531121c33fbde3a3132754f117fda9acfe2bcf1dc1255b7b2b6
Ilya Podoynitsyn 9833f9523c7966d60fc9e1cb0fe9fd4edb7539a10820456a9802274ddcdf03a9 0:2409a5faaa7af6e858074d2b0f9165987db8540fdc9d5809a2a93782bdfe0147
Denis 79c46c1272e796c129b09de892744fcb2e367ade180cb90da7e9812acfab06ee 0:24485b1570b6d8fa29986e80770b51671a3373e4e4819349f2bb8205827e2709
Alex 0c216e3d93677a191272fccfd66a5cab714ffcfc56cc893003d7169add4700b2 0:1db4191855bd895a16ce6060d7fde134eb70e902f33d501cf3cd8be7c1833105
Andrey Nedobylsky fb2fe560bfbdda910798e1365d9419ff6e0a75ed5262410b714f162434a88af6 0:c1f2b2941fe3ed16960c484db49186363ed4bbb7c825a8128f46d787f973ff2b
Sergey Tyurin 2c0ec55a109eb466d9db5ee7c3adb075e77627ade83ae17cea847671ab8f0a85 0:77772d4f5ecefb9e7ce02bca4a13cf81b65b4903ead16671e935850075fc6b4c
Peter Fedorov 9e808b1540babb85c428b9197b8df87860882d2db70607dfa134774a0513db30 0:b6ed2e819e29ac08c95af2e4d4b8fd7ad6179329e1c9712067ccdcfd4247820b
Aleksandr Hramcov 3bdb99452a6ed9138af385d035e0967250d0e2da6f58b90245f285daf250915c 0:625e7dda96d7b916d8779b1a44af8aa1e16e5cf6d029151207b0e359327ec7b9
Konstantin Konstantinov 0f07a7cb924c7420520d0d98afad87d9b5e1765920fda698c22da6d0cd3354b9 0:5b833e39e1a1c4e971c7905fc5139e03831d5fc4746a4a3c8c799db1417b3279
Boris Ivanovskiy 1a99622e54b4e87d603dd87c9cc936b388b2a0e1979bb56d4039cfad0fbadc8c 0:d2cd1ff399d441ca84c1585f634b60a16b65b46c27209fbd9cf928f97465bed2
Pavel Khachatrian d89e20f2e164f4e64a3637cc6926baf66482bf8c875e4e7eebedd6f28024998c 0:32b2ab6941e3e08e98d1cb483f22bce8360643762405adf548d0fc785ae9879c
Paul Mikhailov 7657b6b62ec6846e6341315ba3b8d611afe2ef79e8ee3214d45cc4ede3c50972 0:b68e4c06f8d547d12a08af03975e5130c2bd7dd1171fd0407a2875956ea7588d

Jury rewards

An amount equal to 5% of the prize fund will be divided equitably between all jurors who vote “Accept” and/or “Reject” and provide feedback, based on their votes’ quantity and quality. Both voting and feedback are mandatory to collect this reward.

This percentage will be awarded on the following basis:

  • The percentage of tokens awarded to the jury will be distributed based on the number of votes each juror casts. For example, if one juror votes 20 times and another juror votes 5 times, the juror who votes 20 times will get 4 times more tokens than the juror who votes 5 times.
  • Detailed feedback is mandatory in order to collect any rewards.
7 Likes

Chrome extension is the past

what are the dates сontest?

It’s always worth checking actual dates at gov.freeton.org

image

developers community should have interactive discussion with user community to know user trends and expectations.

Could you please more explain this item?
Support of sending a memo with messages (or encoded payload).
It is a little bit ambiguous for me.
Does the meaning to allow send transaction with data or allow to use “memo” to send encrypted payload (keystore) by email (mailto way)?

A MultisigWallet contract can send a payload to another contract. Payload can contain the message we see in ton.live. It’s called a memo. The contract can also write information to the payload that will tell the other contract which method to call and with what parameters. You need to implement support for all this functionality.

Example of memo:
link

Very appreciate. I need to learn the math )) because in other blockchains this names “to send a transaction”

Wow, cool this is your extension. I will use it, thanks guys! I’m waiting for updates!

Hi Guys, should I send Contest proposal to this forum thread, or create a new one?

Hi. If you have a proposal for a contest, you should create a new post at first page of forum by using " + New Topic" button. If you want to submit into “Free TON wallet as a Chrome extension” contest, you can use “reply” to the main text of proposal here.

Got you, thanks a lot!

Created MegaTon - chrome extension wallet as part of Free TON wallet as a Chrome extension contest

https://github.com/ArsenMkrt/mega-ton

Waiting to be approved in chrome store. Planning to port as a mobile application as well.
You are welcome to use and comment.

Update: Uploaded into google store

Happy Using
Regards

4 Likes

Hey guys, submitted proposal, as a description.pdf attached architectural document, but I see others are just attaching contest description… hope this is not a problem?

Regards

I have a question about this item:

  • Any calls that require the user’s keys must ask for the password input to decrypt them from the local storage.

Our team has realized web extension with the master password approach, that means the situation when keys stores in db in the encrypted view before the user will enter the master password to decrypt the wallet. But on each transaction this password is not demanded. Will this approach violate the item described above?
Just, Metamask doesn’t ask password for the confirmation on each transaction where user’s keys are demanded. They have realized the same approach - unlocking the keys for accounts by the one password.