For all to think about it and to support the AT Team.
Concerns and issue; compiled from a discussion with JL.
The team around AT needs to answer these questions during the testing period of AT.0) Problem is not to achieve something with AT, but how to restrict AT scripts to avoid inconsistent results: cf. below
1) We need to make it safe in certain ways:
- restricting AT scripts - transactions validation?
- can a script create other scripts (viruses)?
- access on core resources - querying them
- using core capabilities - like methods of the Account class and so on
2) Scalability:
- re-executing the script on every node?
- better of avoiding it?
- some sort of easy proof that the script was executed correctly?
3) Code complication
- minimizing the core code
- if script is using internal core methods, core modifications will be necessary everywhere -> first step: using regular transactions, second step: creating custom transactions, third step: introducing custom objects
4) How to start a script?
- by transaction?
- by height trigger?
- by what else?
5) Scientific research done?
6) How to do debugging?
- Who called what when and why?
- different languages in use
7) How to do updating a AT script?
How to migrate running/active AT scripts once the underlying program found flawed and a new version is/will be deployed?
9) Atomicity
- Are scripts atomic?
- How to achieve atomicity?
- How to split up atomicity within one script?
- When is the output of a script accepted, i.e. changes balances and the like? (turing complete -> Halting problem etc.)
- rollback necessary?
10) What is the output of a script?
- a sequence of regular Nxt transactions?
- using custom transaction types?
- directly manipulating the Core Objects like Account, Aliases, Orders etc. etc.
11) What is the input of a script?
- block headers?
- confirmed transactions?
- raw transactions?
12) When calling internal methods like DigitalGoodsStore.deliver(), how to we enforce rules that are set by the corresponding transaction type?
That is it for now. Keep you updated.