I think we can verify the checksum of the running code for plugin matches the source code. Similar to signing of .jar files
Can you describe with details few things:
- what the plugins could do and why they should be used
- HOW they should be made? (that is should they operate on API or they should be REAL plugins)
- what about people who don't want plugins? how limiting it (lack of plugins) will be?
- How do you actually imagine this smtp plugin would work like (I'd like really detailed description along with use case description https://en.wikipedia.org/wiki/Use_case)
- How do you imagine TRUSTing the plugins?
To be clear, I'm asking those questions, as most likely I will criticize the idea, once you answer to those questions.
https://bitcointalk.org/index.php?topic=364218.msg5007726#msg5007726 has the original post about NXTplugins. Probably lost on this thread.
I use the term plugin just as a placeholder, I am beginning to think it means different specific things to different people and is not the best term. When I say NXTplugin, I mean the code that is invoked when the forging node scans the AM data and finds that it is input meant for a specific plugin.
I have a bounty out on how to make plugins, it depends on what is needed to be able to do realtime checksum/hash of its code space in memory.
A node does not have to have any NXTplugins, however if a NXTplugin is not on the servers that are forging most of the time, it could be a long time before it will get called. TF can be used to find the node that will actually call the plugin and so all the other nodes will know when to look for the result and error code.
NXTsmtp is to flesh out the details of the NXTplugin architecture, eg. is it the right way to expand NXT VM power? How to implement it? What sorts of requirements will we need to constrain the actual production NXTplugins, etc.
I imagine trusting the plugins because they will be tested and source reviewed and realtime checksummed against tampering and peers will be able to validate that it actually ran and for mission critical plugins, we probably need an external verification, eg. blockchain.info for bitcoind operations
James