Contest proposal: DeBot web embedding

Contest dates

  • Submissions: 18.10.2021 - 18.11.2021 23:59 UTC
  • Voting: 19.11.2021 - 03.12.2021 23:59 UTC

Motivation

The usage of traditional web is still massive and we can only dream of the Web Free concept becoming reality. We already have DeBots which provide users direct connection with blockchain. Though, user experience is still pretty limited - both by functionality and visualisation. What if we combine the traditional web navigation with built-in features of DeBots by injecting DeBot into web-pages. The interaction with them can be organized through browser extensions or wallets that support the technology.

The goal

Provide the developers with an easy-to-use solution of injecting DeBots into traditional web-sites. Provide the users with a convenient way of communicating with blockchain using familiar tools.

The solution should use one of the 2 ways (both is the better) of embedding to any site:

Web Component could be provided using JS-script placed in CDN or using NPM-package.

Codebase

The code of DeBrowser can be used from the submissions of previous contests or created by the participant from scratch to fit the conditions of the current contest. Browser extension with the needed modifications can be also be used from the previous contests.

Security

To reach the needed security level when creating and signing the transactions itā€™s essential to fit the following criteria:

  • while using an extension: the keys should be stored in the extension and not transmitted to the browser
  • while using a mobile app: generation of a QR code (or link)

Visualization (design)

The solution should be visually customizable to seamlessly adopt it in site of different design. The list of customizable options should include but not be limited to:

  • color palette
  • fields and controls/buttons (customizable UI)
  • DeBot and dApp server address binding
  • on/off switching of particular control elements

Submission format and requirements

  • GitHub repository
  • PR in freeton repository
  • Open-source license
  • Submissions with failing builds/tests/samples will be rejected
  • Video presentation - a strong plus
  • Apart from uploading a submission, a code should be submitted in accordance with GitHub - freeton-org/readme 3 .

Evaluation criteria

  • Functionality
  • Security
  • Code quality & documentation
  • Providing the possibility of interaction between DeBot Browser and web-site (automatic data reading, automatic data entering) and with the userā€™s wallet (to sign the transactions) will be a huge plus.

Voting

  • The juror must have a solid understanding of the described technology to provide a score and feedback. If not, the juror should choose to ā€˜Abstainā€™.
  • Jurors or 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 1 to 10 or can choose to reject it if it does not meet requirements or vote ā€˜Abstainā€™ if they feel unqualified to judge.
  • Jurors must provide feedback on submissions or lose their reward.
  • The Jury will reject duplicate, sub-par, incomplete, or inappropriate submissions.

Contest rewards

1st placeā€¦ā€¦ā€¦ā€¦ 80 000 TON
2nd placeā€¦ā€¦ā€¦ā€¦ 50 000 TON
3rd placeā€¦ā€¦ā€¦ā€¦ 30 000 TON
4th placeā€¦ā€¦ā€¦ 20 000 TON
5th placeā€¦ā€¦ā€¦ 15 000 TON
6th placeā€¦ā€¦ā€¦ 10 000 TON
7th placeā€¦ā€¦ā€¦ 8 000 TON
8th placeā€¦ā€¦ā€¦ 6 000 TON
9th placeā€¦ā€¦ā€¦ 4 000 TON
10th placeā€¦ā€¦ā€¦ 2 000 TON

ā€‹ā€‹Minimum score to receive reward for 1 - 5 places is 6.
Minimum score to receive reward for 6 - 10 places is 3.

Overall prize pool: 225 000 TON

ā€‹ā€‹Note: If the number of winning submissions is less than the number of rewards available, any remaining rewards are not subject to distribution and are considered void.

Rewards distribution model

Winners receive 20 000 TON of their rewards when contest results are evaluated. The remaining amount is distributed within a 6 month period in equal parts on a monthly basis. To receive all distributions, the solution should be supported within vesting timeframe:

  • Github issues should be responded to within 3 days.
  • The code should be updated within a reasonable timeframe - 2 weeks maximum
  • Major GitHub Issues should be resolved within a reasonable timeframe - 2 weeks maximum

Jury Rewards

An amount equal to 5% of the prize fund divided by the number of rewarded places and multiplied by the number of submitted works will be distributed to every jury member who vote and provide feedback. The formula for calculating the reward of the jury member for this particular contest is as follows:

Jury reward = 225ā€™000 * 0,05 / 10 * number of submitions;

This percentage will be awarded on the following basis:

  • Detailed feedback is mandatory to collect any rewards.
  • Voting for all submissions is mandatory to collect reward.
  • The votes of the jury members who did not receive the rewards for the reasons listed above will not be counted.
  • Jury rewards are distributed in full upon the end of voting regardless of the long term outcome.
  • Jury members are expected to communicate with participants and answer questions about the criteria for the assessment.

Defence of contest submissions

At the end of the submission acceptance period, AMA-session will be appointed for participants, jurors and everyone else. At this session, each contestant team has to present their work.

The preferable presentation language is English. The presentation time should not exceed 10-15 minutes.

If a contestant cannot present the work on-line, they should make a video recording and publish it on YouTube but any questions that arise should be answered.

Governance rewards

An amount equal to 3 % of the prize fund will equally distributed amongst community members who participated in organization of the contest:

@michael_kabanov
@anovi

The same percentage of the monthly reward will be received by the persons responsible for its distribution (vesting distribution overhead).

Contest announcement and attracting new members rewards

An amount equal to 5% of the prize fund will be allocated to announcing partners who participates in announcing the contest in different media according with the following table: media list for technical contests announcements, to be distributed equally among them:

  • @anovi
  • @Alex770
  • @lesnik13utsa
  • @Kronchs

Each participant of the contest, when submitting an application, will be asked through which announcing partner he/she learned about the contest. After the end of the contest, for each participant who won a reward, an amount equal to 5% of his/her reward will additionally be distributed:

  • To the announcing partner who attracted him, if the referral was given during work submission;
  • Or equally to all aforementioned partners of the announcement program, if the referral was not specified.
2 Likes

As I understood, thereā€™s no need to use DeBot browser in interactive mode and iFrame. Any third-party interface can work with DeBots with help of DeBot browser.

Ref. to DeBot Pipes in WP

P.S maybe we need to develop DeBot Browser which will be able to execute DeBot function and pass parameters to it and receive data from DeBot (without interactive mode).

Contest rules and details have been updated after the evaluation and discussion by DevEx Subgov members. Please, see the updated original post.

Solution from MTW team GitHub - mytonwallet/debot-web-embedding: The DeBot browser for Everscale (formerly Free TON) and the tool for embedding DeBot on any web page
Embedded DeBot
embedded DeBot

Embed tool
embed tool

We are awaiting cache purging from jsdelivr.com side. After this moment will happen, we will publish link to ā€œembed toolā€ that is fully ready to help bring any DeBot to the web.

UPDATE: cache is purged, you can try the ā€œembed toolā€ https://embeddebot.mytonwallet.com/, for example, ā€œnotification botā€ on devnet 0:433f7b97e4e613397175a2d9d1094643b5b90d1f095c423997f95fbf905a3ae3 or ā€œDemo interfaceā€ from extraton 0:5e4380c442b9cf09c113367e6f4c74b715d3826c57323491d7a1efc1c36c9ce9

We will try to issue video later, but all depends on work schedule. GIfs are already demonstrate 99% of all features. We think that better to try once, than watch video or gifs. :slight_smile:

We canā€™t create new PR, because the current is not merged, all changes are thereā€¦

1 Like

RSquad participates!

https://github.com/RSquad/debot-browser

Submission-2

https://github.com/everscale-org/devex/pull/17

Demo: https://debot-browser.rsquad.io/

1 Like

Confirm participation
PR: proposal-37/submission-9/free-ton-notifications-service and proposal-41/submission-3/debot-embedding by Strafi Ā· Pull Request #14 Ā· everscale-org/devex Ā· GitHub
Demo: https://browser.freeton-stats.org/

1 Like

My Submission: GitHub - Arseny271/Everscale-DeBotWebEmbeddingContest
Example: https://example.debot.ever.arsen12.ru/

1 Like

Š˜ сŠ½Š¾Š²Š° Š·Š“рŠ°Š²ŃŃ‚Š²ŃƒŠ¹Ń‚Šµ.
ŠŸŠ¾ Š½Š°Š³Ń€Š°Š“Š°Š¼ тŠ¾Š¶Šµ ŠæрŠ¾Š±Š»ŠµŠ¼Š°.
ŠšŃ‚Š¾ Š²Ń‹ŠøŠ³Ń€Š°ŠµŃ‚? Š›ŃƒŃ‡ŃˆŠµ сŠ¾Š±ŠµŃ€ŠøтŠµŃŃŒ Šø сŠ“ŠµŠ»Š°Š¹Ń‚Šµ ŠžŠ±ŠµŃ€Ń‚Š¾Š½.
ŠŸŠøтŠøрŠøŠ¼ Š”Š¾Ń€Š¾ŠŗŠøŠ½ - ŠžŃ‚Ń€ŠøцŠ°Ń‚ŠµŠ»ŃŒŠ½Š°Ń сŠµŠ»ŠµŠŗцŠøя.

We have seen that the one judge had started to inspect contestant solutions. It is cool, because 7 days left. Also, we saw comments that was tested signing procedure. We have tried to repeat on ā€œNotification Botā€ - no luck.

0:433f7b97e4e613397175a2d9d1094643b5b90d1f095c423997f95fbf905a3ae3 on testnet canā€™t be run on demo pages among 3 participants.

Please provide address for debot address which was used to judge solutionsā€¦

rsquad - error with the message that debot is not supported. We have tried with enabled/disabled ton crystal wallet chrome extension.
freeton-stats - disabled ton crystal wallet chrome extension just breaks debot. If enable, then
freeton-stats-with crystal wallet
This solution procedures some logic, then stuck, we canā€™t select how to sign
arsen12

1 Like

In order for the menu for choosing a wallet for signing to appear, you need its data here: DeBot

Unfortunately, the situation when the wallets are not specified is not processed in any way and the debot gets stuck

I also want to draw the juryā€™s attention to the fact that the submission presents an opportunity for interaction between the site and DeBot Browser, which is ā€œa huge plusā€

1 Like

But it is the direct key storing, right? I am, as the website owner can get them

wallet-hack

Just the website owner needs to add js that will check that wallet keys are added and send by ā€œfetchā€

1 Like

localStorage is isolated storage, only the code running on debot.ever.arsen12.ru has direct access to the keys. The third party site cannot access walletā€™s data.

Theoretically, as the owner of the debot.ever.arsen12.ru domain, I can access the keys if I change the code of the web page. But this is a problem with any web wallet and key encryption will not help here. For example, nothing prevents surf developers from changing the page code so that after entering the password, the key is decrypted and transmitted to a third-party server.

2 Likes

I answer on behalf of RSquad, our debot browser does not work with keys, and does not support the signingBox and userInfo interfaces, this is what caused this error. The documentation states how we sign transactions. Therefore, we have attached the address of our debot, which reveals the full potential of our debot browser. We have also provided instructions on how to write a similar debot that can send transactions without having to enter keys.

Sincerely yours, RSquad.

1 Like

Can not completely understand, what do you mean by ā€œdisabledā€ crystal wallet, but an extension is required by the browser to work because of contest criteria:
image
Maybe Iā€™ve misunderstood something, but this is how it works for now

This message is shown if debot you are trying to access has interface that is not supported by browser. In your case, it is Base64 interface: DeBot-IS-consortium/Base64 at main Ā· tonlabs/DeBot-IS-consortium Ā· GitHub

For example, debot that just created to show some information doesnā€™t require browser extension. Or case, when a user doesnā€™t have a browser extension yet (newbie), such user will see a broken debot.

I guess that Notification Debot doesnā€™t use base64, only SignBox/UserInfo

All this can be fixed of course and not so necessary, just I have asked my own questions from the judge. Because how is it possible to test the signing process if it doesnā€™t work?
I have asked the smart contract address to test also and all. I assume that all points are random againā€¦

It is pity but on the side of DeBot Browser we donā€™t know, does it require to sign something or not

Even if it is not used, it is still present in debot ā€œrequiredInterfacesā€

Well, I donā€™t think that any participant submitted a solution with a not working signing process. You were just lucky to collect all the gems (bugs) :slight_smile:

Just a browser extension is not a required case for the user. Need to ask from user to install some additional software if it is necessary for some specific action and donā€™t think that the user already has it. I am about this caseā€¦

Ok, but why this thread has appeared - the judge has mentioned the signing process. Not about that some interface is not implemented.

If so, letā€™s test on Debot that demonstrate that this process is working. Because it is really the most important process among other interfaces.

So thick trollo-lo-lol ))

I donā€™t think that some bugs can impact the end result. I just want to know why and how the judge does their own side. Just, why do participants spend many days developing when it seems that judges spend 10-60 mins to vote?..

Comment to Submission 2 -
Good design, clear interface, customization, and what other solutions lack - deep links. On the downside, signing a transaction is done only with surf. Why couldnā€™t you make hooks to sign a transaction right on the page?

And here we can see ā†’ debot-browser/deeplink.ts at master Ā· RSquad/debot-browser Ā· GitHub

I didnā€™t test this submission, but I can see that file exists, but the judge has commented that "lack "

All submissions have some unique features and the judge doesnā€™t vote when compare all them together.

03/12/2021 13:00 MSK (10:00 UTC) AMA-session for participants of #41 DeBot web embedding

Participants, jury members and everyone are welcome!

Hey,
Obviously, two votes are not enough for an objective assessment.
Actually I just forgot to update the jury list of this contest with the new jury list so to fix this mistake, I created following proposal.

Voting prolongation proposal for #41 DeBot web embedding

As we have a new jury members after the new jury contest finished recently, it is proposed:

Set the end date for voting on December 13, 2021.

Assign the following jury for the contest:

TG nickname Wallet Public key
@lailune 0:c1f2b2941fe3ed16960c484db49186363ed4bbb7c825a8128f46d787f973ff2b fb2fe560bfbdda910798e1365d9419ff6e0a75ed5262410b714f162434a88af6
@anovi 0:70759025778f37fd98ddb2b22aa8f6c54708a2917902cb3929e354d290b41d6a 6bf867e7773038f9491b5d397cb7da8a20e112b45db9523cd8dae9deb608fb5a
@nerzh 0:6423878fd5def4223b558f4597be027f5cae26fdae19c84a8a59fe739aba120c 764b4deb8d3dc8241b2972d9c94722f6a331cd4aabefa639cb02022f502407c9
@SergeyEgorovSPb 0:d0e20274758acb651930c5b9b7dfda330583624f0e4d0b8ffc63bc287c69c5e3 67dd20b9a760ae538a7f24ebfbaaf09a7075b4617a7ad09c19503c2551f57d81
@vadimrusakov 0:90e772545b0a3235f7fe808a6675d02dc3980e9e5eab05cb7682a94807a29468 e424edfc46631a1abd3875b8fa1c181f4e60dd8b745852d525559c7ebf8db38c
@Ovenstent 0:2b9a4bbe9fb10146225b44d244c83fdc299cf8d25f1ea224edf16848432b63ab 97d84615e5b248380b50802f354e7395f7f0d421557e867b9d1bd266306547e3
@webcounters 0:a9ef47b6bec35e001d1f295b34b9ec9abc0ca5c8623de4f414b4fd0b0dc6ca08 d7479123221af45d4ca1dd132aa5de45a6811820041838e555675d42144d40a8

If any of them do not have the opportunity to devote this week to study ALL works in this technically challenging contest, they will have to vote ā€œabstainā€ for all submissions.

After this vote, participants will receive awards in accordance with its results.

Proposal status: approved.

1 Like

I support, I considered all the applications, but I could not vote because I was on the jury after the start of the contest