YAKINDU Solidity Tools is a solidity editor, that provides most of the features we all know and are used to from modern IDEs, including context sensitive help and code proposals, quick fixes, refactorings, templates and live validation. The source code of YAKINDU Solidity IDE is provided under the Eclipse Public License. Note that YAKINDU Solidity IDE is in beta state and we give no warranty on the correctness of any output it produces. If you find a bug or have a feature request please use our issue tracker to report it.
Download & Installation
In addition to the source code provided here on GitHub, we also provide ready-to-use builds for Windows (Linux and OS X is under construction) along with an Eclipse update site. If you just want to use YAKINDU Solidity IDE we strongly recommend to go this way.
Or install via update site into latest Eclipse: https://updates.yakindu.com/solidity/milestones
How To Contribute
We appreciate feedback of any kind and there are various ways to do so:
- Report bugs and request features in our issue tracker
- Follow @yakindu on twitter and spread the word about this project.
- Get the source code (see below) - fork it - work on it - and provide pull requests …
YAKINDU Solidity Tools features all the goodies you can expect from a professional IDE, including:
Solidity is bleeding-edge technology, best practises change frequently, even syntax changes are common in new versions. Quick fixes can help to resolve issues, which are reported from the IDE or from the Soldity compiler, fast and reliably. We implemented an initial set of quick fixes that resolve simple SOLC warnings like “No visibility specified”. More sophisticated quick fixes are to come.
Code navigation is a handy feature to quickly jump to a function or variable declaration defined at another location in the program. In Eclipse-based tooling, this is usually done with [CTRL + click]. However, this feature is not only about comfort – it also helps a lot when trying to understand a language’s scoping and shadowing rules. When mixing function overloading, extension methods and multiple inheritance, it can be quite hard to understand which function is actually called. Code navigation is a nice little helper in such situations.
Code formatting is always a matter of taste. In the Solidity documentation, there is a large section on how to format your source code. Well, the style guide would have been different if I had written it. (I prefer tabs over spaces :-)) Anyways, as long as it is not only you who is working on some piece of code, it is crucial to agree on a common code style. Diffing and merging code with disparate formatting is no fun at all. Thus, an automatic code formatter that formats your code according to the Solidity style guide after pressing [CTRL + SHIFT + F] can save you a lot of time.
- rename refactoring
- live validation
- semantic highlighting
- solidity compiler integration
- and much more!
This is not the end of our efforts to make smart contract development better. This is what we plan to do in the next year:
YAKINDU Statechart Tools Integration
When examining various smart contracts it became somehow obvious that most of the contracts are basically a description of “who is allowed to do what, under which circumstances” which is in fact a very simple description of a state machine. Calling a method on such is nothing else than an incoming event on a state. We started to integrate YAKINDU SCT with YAKINDU Solidity IDE. This basically means that we can access built-in features of Solidity like implicitly globally available variables, constants and functions while modeling our statechart. Once the user is satisfied with his model, and have performed the necessary verifications, we can generate the solidity code, EVM byte code and ABI with a single button press.
Language Server Protocol
With LSP Support you can use your favorite editor like Atom, Visual Studio Code or any other editor that supports LSP and thus benefit from most of the features. We are planning to implement a Solidity Language Server. With minimal implementation effort this allows others to reuse YAKINDU Solidity Tools features in any third party editor.
Who is behind YAKINDU Solidity Tools?
YAKINDU Solidity Tools is developed and driven by developers of itemis AG, a well-known consulting company specialized on model-based development and language engineering. The YAKINDU Solidity Tools are currently developed by
Florian Antony (@FlorianAntony) Florian works as software engineer at itemis AG in Lünen, Germany. He is involved in developing the YAKINDU product family and has a strong interest in blockchain technology.
Andreas Mülder (@andreasmuelder) Andreas works as a principal software engineer at itemis AG in Lünen, Germany. He is especially interested in Eclipse modeling technologies and technical project lead of the open source project YAKINDU Statechart tools. For more information, visit http://www.statecharts.org
Karsten Thoms (@kthoms) Karsten works as software architect at itemis AG in Lünen, Germany. He is part of the Xtext team. He strongly believes that Model Driven Software Development helps to be more efficient in mission critical projects. He has more than 15 years of experience in the field of language engineering and is committer to several eclipse projects including Xtext and Platform.