* pom.xml now builds JavaDoc, sources and test JARs
* more descriptive output from test classes to aid debugging
* actually add/collate AT-generated transactions to test blockchain for analysis
* test block period changed from 10 minutes to 1 minute
* 'quiet' logger aded that doesn't emit DEBUG log entries
SLP_DAT addr: fixed to work as advertised
SLP_VAL value: sleeps for <value> blocks
SHL_VAL addr value: left-shifts the contents of addr by value bits
SHR_VAL addr value: right-shifts the contents of addr by value bits
EXT_FUN_VAL func value: pass a value to a function instead of fetching via addr
This allows new functions GET_A_DAT to take data segment address,
instead of convoluted GET_A_IND which requires an address stored in the data segment (like a pointer).
New FunctionCodes:
GET_A_DAT, GET_B_DAT, SET_A_DAT, SET_B_DAT (see above)
UNSIGNED_COMPARE_A_WITH_B, SIGNED_COMPARE_A_WITH_B
Add branch offset bounds checking to OpCode.calcOffset method (throws if out of bounds). Added test to cover.
Tidied up JavaDoc, which is now also generated by pom.xml!
Added JavaDoc comments to OpCodeParam enum entries.
Corrected some inaccurate descriptions.
Converted obsolete <tt> tags to <code>.
Fixed some invalid HTML, converted raw characters like &, <, >, etc. to HTML entites like &, > and →
Bumped version to 1.4.0
NOTE: this constructor's args have changed from:
public MachineState(byte[] creationBytes)
to:
public MachineState(API api, byte[] creationBytes)
The bug was miscalculating 'expectedLength'.
Added unit test to cover above.
Also added unit test to cover branching backwards.
Bumped version to 1.3.1 and also fixed pom.xml so it's possible
to call 'mvn clean package' from command line without errors.
API:
Added sample AT-emitted transaction types (payment/message).
Maximum number of steps per execution round no longer hard-coded.
API.putTransactionAfterTimestampInA() sets A to zero if no more transactions.
API.putMessageFromTransactionInAIntoB sets B to zero if not a message transaction.
Added some convenience methods.
MachineState:
Added support for minimum activation amount.
Added static method for packing AT into "creation bytes".
No need to store unchanging code in per-height AT state data.
Added support for multiple blockchains to "Timestamp".
General improvements based on Sonarlint suggestions.
General improvements to comments.
Replaced deprecated Byte/Short/Integer/Long constructor call with corresponding .valueOf() call.
Replaced some string concatenations with StringBuilder.
Moved Java-related .gitignore from root to /Java/
Removed .classpath and .project, and added same to .gitignore
Added info on how to add CIYAM AT JAR to other projects.
Updated pom.xml:
Bumped version to 1.2
Bumped Java version from 1.8 to 11
Bumped BouncyCastle from 1.60 to 1.64
Added more tests.