RELEASE-NOTES-6.0.0.md
1 # About this release 2 3 [This](https://github.com/aeternity/aeternity/releases/tag/v6.0.0) is the stable Iris release. 4 5 It: 6 7 * Set height for `iris` hard fork to happen on block 441444, on 10 June 2021, 8 around 9:11am UTC 9 10 * Fixed buggy serialization of contract information - this means the compiler version is actually 11 stored on chain, and isn't replaced by "unknown". 12 13 * Added `AENS.update` to FATE VM 14 15 * Added `AENS.lookup` and `Oracle.expiry` lookup functions to FATE VM 16 17 * Fixed bug regarding TTL of preclaims in FATE VM - it was incorrectly always 18 set to 0, from `VM_FATE_SOPHIA_2` it has the correct value. 19 20 * Fixed a bug in `AENS.resolve` in FATE VM - for invalid names `VM_FATE_SOPHIA_1` 21 will crash. From `VM_FATE_SOPHIA_2` it will not crash, rather return `None`. 22 23 * Changed `Chain.block_hash` - in `VM_FATE_SOPHIA_2` it will return 24 `Some(<blockhash>)` for `Chain.block_height` (i.e. current generation) 25 previously it returned `None`. With Bitcoin-NG we do have the block hash of 26 the current generation, so no reason not to allow this. 27 28 * Extended AENS name max expiration time from 50000 generations (~100 days) to 29 180000 generations (~375 days). 30 31 * Changed how a meta transaction TTL's is being validated: so far it used to 32 be the outermost transaction's ttl that was taken into account, now it is 33 the innermost one instead. Meta transactions no longer have TTL. 34 35 * Fixed a protocol issue: a valid force progress call with invalid CallData or 36 failing call would result in on-chain transaction but tokens from the caller 37 would still be moved to the forced contract. This is fixed and failed calls 38 in successful force progress transactions result in rollback of the 39 off-chain balances. 40 41 * Improved the functionality of State Channel delegates: now they can provide 42 `channel_solo_snapshot_tx` as well. This is really handy in cases one party 43 is missing and the other is doing malicious force progress on-chain while the 44 channel is still open. 45 46 * Revisited the State Channel delegates: so far they were a shared list for 47 both participants. From Iris on, delegates are per peer: there is a list of 48 delegates for the `initiator` and another one for the `responder`. Old 49 channel objects can still be used but users are strongly recommended to reset 50 their `delegates` list if they had any. Note that the HTTP representations 51 are changed accordingly. 52 53 * Allowed delegates to force progress on behalf of the user that authorized 54 them to do so. 55 56 * Improved garbage collector for all Fate contracts form Iris 57 58 * Fate contracts of different versions can now call each other (Fate1 can call Fate2 and vice-versa) 59 60 * Opcode availability and behaviour now depends on VM version of the contract 61 (Fate2 opcodes are available both when Fate2 contract is called directly and 62 when called by another (possibly Fate1) contract) 63 64 * Generalized accounts, allow access to the signed transaction within the authentication context: 65 ``` 66 switch(Auth.tx) 67 Spend(from, to, amount, payload) => ... 68 AENSTransfer(from, to, name) => ... 69 ... 70 ``` 71 This enables more use-cases, for example in combination with PayingForTx. 72 73 * Added more crypto primitives (mainly pairing operations) for BLS12-381. This 74 enables for example Zero-knowledge proofs and more multi-signature schemes. 75 76 * Added functions related to strings. It introduces `to_list` and `from_list` 77 primitives that enables flexible string manipulation. `Strings.aes` standard 78 library functions include many useful string functions. 79 80 * Added the possibility to query an oracle by name hash. A name pointer can 81 map `oracle_pubkey` to an oracle to enable query by name hash. 82 83 * Added a new transaction to the protocol. `PayingForTx` allows an account to pay 84 for a transaction on behalf of someone else. This means paying for fees and 85 gas cost, but it will **not** cover the amount spent by the transaction just 86 the "the cost of the transaction" (and the extra size added by wrapping the 87 original transaction). 88 89 * Fixed a bug in the contract store garbage collector causing maps to be 90 more expensive than they should be. 91 92 * Added support for protected contract calls. Making a contract call with the named 93 argument `protected` set to `true` wraps the result of the call in an 94 `option` type, returning `Some(res)` if the call succeeds with result `res` 95 and `None` if the call fails for any reason. If the call fails, any 96 side-effects it performed are rolled back. 97 98 * AENS pointers are now limited, this is enforced when updating a name: 99 - No duplicate pointer keys. 100 - Pointer keys are not longer than 256 bytes. 101 - A name can not have more than 32 pointers. 102 When a name is updated, or looked up, inside a Sophia contract keys 103 that are no longer valid are automatically removed. 104 105 * Added support for `CREATE` opcode 106 107 * Added support for `CLONE` opcode 108 109 * Added support for `CLONE_G` opcode 110 111 * Added support for `BYTECODE_HASH` opcode 112 113 * Included full FATE 2 code with init in state trees. This also applies to off-chain contracts in state channels 114 115 * Changed comparison and MAP\_TO\_LIST FATE opcodes to follow ordering as defined in `aebytecode` 116 117 * Added a new FEE opcode that returns call transaction fee 118 119 * Fixed `STR_REVERSE` to reverse on unicode codepoints instead of raw bytes 120 121 * Deprecated Ubuntu 16.04 support. EOL Apr 2021. 122 123 * Introduced a new HTTP API for asking the node to provide a correct 124 `paying_for_tx`. It is marked as `debug` and it is intended to be used while 125 developing tools that produce that transaction. This API must not be used in 126 real-life scenarios. Since the inner transaction has a specific 127 `network_id`, a proper check has been added to the API so attempts to create 128 an erroneous `paying_for_tx` will fail. 129 130 * Revisited gas prices and gas charging mechanism. The main change is that gas 131 will, in some cases, be charged earlier - i.e. contracts run out of gas 132 before expensive operations rather than after. This should make the FATE VM 133 more efficient. Gas prices have also been adjusted and new operations have 134 been calibrated. 135 136 * Introduced a new HTTP endpoint: `/dry-run`. It is part of the `external` 137 interface and should be preferred over the existing `debug` endpoint. It 138 comes with some protections for the node: all transactions/calls provided 139 are limited to a total amount of `gas` that they can consume. There is a new 140 setting in the config where the node operator can change this according to 141 their needs, the default value is 6 000 000 gas. The new endpoint is 142 disabled by default and can be enabled via the new API group `dry-run`. 143 144 Please join the **mainnet** by following the instructions in the documentation below, 145 and let us know if you have any problems by [opening a ticket](https://github.com/aeternity/aeternity/issues). 146 Troubleshooting of common issues is documented [in the wiki](https://github.com/aeternity/aeternity/wiki/Troubleshooting). 147 148 ## Documentation 149 150 For an overview of the installation process for different platforms, 151 building the package from source, configuration and operation of the Aeternity 152 node please refer to [Aeternity node documentation](https://docs.aeternity.io/).