Skip to content

Validana Core 2.0.1

Compare
Choose a tag to compare
@wdenbakker wdenbakker released this 26 Nov 13:39
· 4 commits to master since this release
  • (MAJOR) Various postgres functions, such as random() or now() are no longer available to enforce determinism.
    • This is a database wide change, so if you use it for other purposes you may want to keep them available, in which case make sure to avoid using them inside smart contracts.
  • (MAJOR) Postgres queries may no longer contain localtime, current_time and current_date to enforce determinism.
  • (MAJOR) Postgres BIGINT arrays are returned as number[] instead of string[]
  • (MAJOR) encode/decodeURI(Component) and URL.parse() return undefined instead of throwing an error if invalid data is provided.
  • (MAJOR) Transaction with as payload an empty array are invalid. Use an empty object instead.
  • (MAJOR) Function.toString() no longer available inside smart contracts.
  • (MAJOR) Check length of addresses for (smart contracts) isValidAddress(). (As addresses contain a checksum it is unlikely for this to go wrong by accident.)
  • (MAJOR) The non-standard properties on RegExp objects are no longer available inside smart contracts.
  • (MAJOR) Can no longer create contract-specific tables with last argument of query() inside contracts. (Tables already created this way are still available by providing this argument, but not contract-specific anymore.)
  • (MINOR) The query() method for smart contracts accept direct sql queries, instead of having to provide the 'action', 'table' and 'info' as seperate arguments.
  • (MINOR) transactionId (hex string) is available inside smart contracts.
  • (MINOR) currentBlockTimestamp (number) is available inside smart contracts. It reflects when this block started being created, not when it finished, but is more up to date then previousBlockTimestamp.
  • (MINOR) addressAsString() and addressAsBuffer() are available inside smart contracts to transform an address. An error will be thrown if the address is invalid.
  • (MINOR) Can create version 2 contracts. Add validanaVersion: 2 to the payload when creating a contract.
    • Those contracts always run as 'use strict'.
    • The template type 'json' expects an object instead of a valid string for JSON.parse()
    • The template type 'id' is available, which must be a length 32 hex string.
    • Non-array template types ending in '?' are optional when calling the smart contract.
    • Contracts are rejected when calling the new reject() method instead of returning a non-"OK" string. This thus allows returning any string desired.
  • Fix check if a public/private key is correctly formatted.
  • Added tests.
  • Various other bugfixes and performance improvements.