ton-blockchain / TIPs

Improvement Proposal repository
71 stars 14 forks source link

Contest: FunC plugin for popular IDE #39

Open tolya-yanot opened 2 years ago

tolya-yanot commented 2 years ago

Contest: FunC plugin for popular IDE.

Prize fund: 10000 TON.

Deadline: 13:00 on Oct, 29 (Dubai Time).

Task: FunC is a programming language for developing smart contracts in TON.

We ask you to develop a plugin for one of the popular IDE (Intellij IDEA, Visual Studio Code in priority) that helps development on FunC - code highlighting, error highlighting, autocomplete, etc. The more useful functionality you implement correctly, the closer you are to the first place. For non-trivial functionality, an additional bonus to the prize pool is possible.

You might find the FunC documentation, standard smart contracts *.fc code, and the FunC compiler source code useful.

Who can take part: Anyone.

How do I submit: Please comment this issue on the GitHub by attaching an archive or link to the open source code with a solution, a description of the functionality, a description of the installation, your TON address to receive an award.

To avoid plagiarism, you can attach a link to a private repo to the submission, which you will make public after the deadline.

Lilmars1989 commented 2 years ago

Yes

clicman commented 2 years ago

Interesting, but bad time for contest. Could create it on November holidays.

leonid-qw commented 2 years ago

35

undrfined commented 2 years ago

https://github.com/undrfined/func-lsp

EQCEU2c1HzLz5kZUfRbAoK9h4NP8sVyOaP_MRNte2bG4JYJ3

nothing is ready, there's only a basic highlighting of function declaration (and it's not working properly anyway)

Installation: clone, open in vscode, hit run, open .fc files

I agree with @clicmain, that's a really bad timing for contest. And it should've probably lasted for 3 weeks, since quality grammars for syntax highlighting take quite some time for creating, not mentioning other features like error highlighting and docs on hover. Anyway, thanks for the fun!

savva425 commented 2 years ago

Syntax highlighting is ready, highlighting errors on ')'. Highlighting functions from stdlib.fc. Autocompletion. Documentation highlighting is ready(documentation prepared for data types, functions and methods from stlib). To access the documentation, select the function or data type you need and press "f2".

Installation: clone the repository, unzip, move the folder to "C:\Users\youruser\AppData\Roaming\Sublime Text 3\Packages" or open sublime text "Preference" => Browse Packages

https://github.com/savva425/func_plugin_sublimetext3

0:3aa208c52e9f1cc700c90b007061e42c6afa9246276d8663e332046a040aad98

For communication - mobkon1070@gmail.com

savva425 commented 2 years ago

Hi, how soon will the results be known?

tolya-yanot commented 2 years ago

2 submissions

@undrfined

  1. Installation - missing npm install in install note. It's a compilation from source, how install it in ordinary VS Code as a plugin?

  2. Syntax highlighting - basic highlighting only of comments and function declaration

It is not usable at the moment, but the choice of LSP is promising - if finished, it will work on almost all types of editors and IDEs.

@savva425

  1. Installation - OK, no problem with Sublime Text

  2. Syntax highlighting - OK

  3. stdlib.fc highlighting - OK, but it would be better to do this not by hardcode, but by analyzing other files in the project folder

  4. Autocompletion - OK to start

  5. Open quote/bracket error highlighting - only works in the body of a function. Does not work in function signature.

  6. Documentation - don’t work on MacOS, but the plugin code contains documentation for data types, functions and methods from stlib

It's quite usable right now.

Results

🥇 1st place - @savva425 - 5000 TON

🎖 Bonus reward - @undrfined - 500 TON

We hope that you will continue to improve your work. This would be a really useful contribution to TON.

savva425 commented 2 years ago

Hi, thank you very much, it was very interesting. And how soon should the reward come?

leonid-qw commented 2 years ago

Ok

tolya-yanot commented 2 years ago

Hi, thank you very much, it was very interesting. And how soon should the reward come?

https://ton.sh/address/0:3aa208c52e9f1cc700c90b007061e42c6afa9246276d8663e332046a040aad98

https://ton.sh/address/EQCEU2c1HzLz5kZUfRbAoK9h4NP8sVyOaP_MRNte2bG4JYJ3

savva425 commented 2 years ago

Sorry, I provided you with the wrong wallet, apparently https://web.ton.surf/ and https://tonwallet.me/ these are completely different things, am I right?

tolya-yanot commented 2 years ago

Sorry, I provided you with the wrong wallet, apparently https://web.ton.surf/ and https://tonwallet.me/ these are completely different things, am I right?

Yes, tonsurf is a wallet of a completely different network.

It use other smart-contracts for wallets. But in theory, you can access this account on TON network, because you have a private key.

To do this, you need to use the freeton tools (cli) but with the config of TON network.

When you have done this, please open source the solution 😅

savva425 commented 2 years ago

Sorry, I didn't quite understand what I need to do, please describe in more detail :) I also cannot understand how it is possible to transfer coins to a wallet that is not in this network. It turns out that he created such a wallet and transferred coins to it?

savva425 commented 2 years ago

I think I won't be able to do this, because I need the seed phrase anyway. But I got a purse TON EQCpz8S2OdPUbILtRVtkZZaTKIOwRRtmWfkfmH6YS0tRljOP . I'll try again tomorrow, but I think it won't work:(

Ahmadmahh commented 2 years ago

40

RocketJannis commented 2 years ago

Hi nice people, I just found out about the contest. I'm a bit late to the party but if you wish, I'd like to write a FunC support plugin for the IntelliJ platform @tolya-yanot

akifoq commented 2 years ago

By the way, I have made FunC (context free) grammar in tree-sitter framework this summer, so you can try to use it for making a plugin (e.g. in Atom).

jemeraldo commented 2 years ago

I think I won't be able to do this, because I need the seed phrase anyway. But I got a purse TON EQCpz8S2OdPUbILtRVtkZZaTKIOwRRtmWfkfmH6YS0tRljOP . I'll try again tomorrow, but I think it won't work:(

As i know, Free TON (now Everscale) and TON are both descendants of Telegram Open Network and should have same key-pair format. So you can get your private key in web.ton.surf wallet settings and somehow import it to TON wallet.

savva425 commented 2 years ago

I think I won't be able to do this, because I need the seed phrase anyway. But I got a purse TON EQCpz8S2OdPUbILtRVtkZZaTKIOwRRtmWfkfmH6YS0tRljOP . I'll try again tomorrow, but I think it won't work:(

As i know, Free TON (now Everscale) and TON are both descendants of Telegram Open Network and should have same key-pair format. So you can get your private key in web.ton.surf wallet settings and somehow import it to TON wallet.

Yes, you're right, but I can't do it without seed phrases that differ in the two networks

jemeraldo commented 2 years ago

I may be wrong, but technically, the private key is a hash from the seed phrase. Thus, if you have a private key, this is enough to manage your wallet on the TON network. You just need to implement the code to import it into some TON wallet.

I think I won't be able to do this, because I need the seed phrase anyway. But I got a purse TON EQCpz8S2OdPUbILtRVtkZZaTKIOwRRtmWfkfmH6YS0tRljOP . I'll try again tomorrow, but I think it won't work:(

As i know, Free TON (now Everscale) and TON are both descendants of Telegram Open Network and should have same key-pair format. So you can get your private key in web.ton.surf wallet settings and somehow import it to TON wallet.

Yes, you're right, but I can't do it without seed phrases that differ in the two networks

tolya-yanot commented 2 years ago

Sorry, I didn't quite understand what I need to do, please describe in more detail :) I also cannot understand how it is possible to transfer coins to a wallet that is not in this network. It turns out that he created such a wallet and transferred coins to it?

@Custler has made a working restore script for such cases https://github.com/Custler/tc_Rescue

You can recover coins with this

savva425 commented 2 years ago

Thank you very much, everything worked out.