0

This is a practical question. I am developing an application in Solidity with Remix. One thing that takes a lot of time is that when I make changes in the code, I then have to compile it in Remix and then copy and paste the ABIs into my Java front-end.

My question is whether there is a way to make that process more automated? Can you link the HTML page to the ABI source to make the process run more smoothly? It is not a major problem but it definitely does slow things down when developing.

Thanks!

3 Answers 3

3

Sincerely this cannot be a major item if you design your code in a structured way.

It seems probable that you use a different sw design paradigm from that for which REMIX has been designed.

In that paradigm, the ABI should change very rarely because it specifies the external interface surface of the code. If not, it could means that you change your system structure as methods description (as seen by the system) in order to solve detailed implementation problems and this is, generally speaking and without prejudice, the sign of a possible somehow improvable flow of the design.

In a project interfaced with web and/or physical devices, the very first stable design is that of the interfaces, i.e. the ABI in this case, mostly for an enhanced parallel design (I.e. other designer can go on with their part of the project without waiting the end of your part), but even for test tools stability (thinks to continuous integration). The ABI change should be a major and shared step, to make if some other measure is not convenient for the project.

In order to help, Remix give you all the user interface you can need in order to fix the ABI as first. You can do all you want without external stubs from the first compilation by means of the internal UI for functions test and management.

When it is Fixed the ABI (I.e. methods and calling parameters), you can begin to work deeply.

1
  • Thanks Rick. You are of course correct. I realize now that I do not have to update the ABI in my front-end unless I change parameters or return variables. My bad. Thanks for your response and getting me thinking in the right way... Jan 27, 2019 at 19:52
-1

You should not use Remix for any serious development. It's only good for small testing because, as you noticed, it doesn't really integrate with other programs.

You should use a direct Solidity compiler within your Java project so you can write your Solidity in the same IDE and compile it directly into bytecode and get the ABI. I'm not sure what all sorts of frameworks there are, but most likely there are quite a few options for even running a node directly. Quick googling gave for example such options: https://github.com/ether-camp/solcJ and https://github.com/ethereum/ethereumj

You will get much better and faster results if you integrate all the development inside the same IDE and at least within the same environment (Java).

-3

I'd recommend not use Remix in your case. Create an integrated project that contains all folders and settings. I am using a tool Etherlime - https://etherlime.readthedocs.io/en/latest/index.html. After you install it npm install -g etherlime than you can run etherlime init and it will create a project structure that contains contact folder, where you can place your contracts, also a deployment directory with deploy.js file and examples inside. And to your point - when you make some changes to the contract and it needed to be compiled again, than just run etherlime compile - it will create a ./build folder with compiled contract with its ABI. And you can get it from there automatically.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.