Skip to content

Releases: aeternity/aeternity

Hyperchains v0.8

06 Dec 06:36
1023f7c
Compare
Choose a tag to compare
Hyperchains v0.8 Pre-release
Pre-release

Hyperchains

This is an Internal pre-release of Hyperchains as described in Periodically Syncing HyperChains.
See also aeternity Hyperchains.

Hyperchains integrate with other blockchain networks, leveraging their security and consensus mechanisms while providing scalable, energy-efficient hyperchains.

An aeternity Hyperchain comes with all the normal features of aeternity:

  • FATE VM: Efficient virtual machine for executing smart contracts.
  • Sophia Language: A functional programming language for secure smart contracts.
  • State Channels: Off-chain scaling for private and secure transactions.
  • AENS: Æternity Naming System for human-readable addresses.
  • Oracles: Bridging real-world data into the blockchain ecosystem.

See aeternity.com for more information.

About this release

This preliminary implementation of Hyperchains lays the foundation for a scalable and energy-efficient blockchain system. Key features introduced in this release include:

  • Possible to spin up hyperchain on local machine with æternity as pinning chain also running on local machine.
  • Introduction of Epochs.
  • Introduction of a Staking Cycle.
  • Future leader election.
  • Leader schedule per epoch.
  • Pinning. Instead of posting every block on parent chain, pin at most once per epoch.
  • Fix block synchronization.
  • Change from Bitcoin.NG to 1 microblock per generation.
  • Change the order of keyblock and microblocks.
  • Introduce block flags for placeholder for late blocks.
  • Introduce a real notion of time.
  • Hyperchains configuration including contracts and configurable coinbase and timings.

Core Features

  1. Staking Mechanism

    • Enables participants to stake tokens and qualify for block production and validation. The staking framework ensures fairness and rewards based on contributions and performance.
  2. Periodic Synchronization with Pinning Mechanism

    • Introduces a semi-lockstep synchronization model that aligns the epochs of Hyperchains with the pinning chain.
    • A cryptographically secure pinning mechanism anchors the hyperchain state to the pinning chain, ensuring robust alignment and reduced operational overhead.
  3. Future Leader Election

    • Implements a randomized leader election system, utilizing entropy derived from the pinning chain.
    • This ensures predictable and secure block production, enhancing efficiency and reducing the need for frequent consensus actions.
  4. Finality Guarantees

    • Fast Finality: When all validators are online and behaving correctly, blocks achieve instant finality.
  5. High Throughput

    • Optimized system design supports processing a high volume of transactions, meeting the demands of modern blockchain applications.

Governance and Consensus Enhancements

  1. Efficient Consensus Mechanism
    • Randomized leader election reduces the need for frequent votes, streamlining the consensus process and lowering computational overhead.

Key Improvements Over Previous Releases

  1. Reduced pinning-Chain Dependency
    • Optimized the relationship between the hyperchains and pinning chains, minimizing interaction and operational costs while maintaining security.

Known Limitations

This pre-release does not yet address all advanced features proposed in the whitepaper, such as enhanced fork resolution strategies and multi-epoch staking scenarios.

  • Fork resolution is not fully implemented.
  • Voting is not fully implemented.
  • Fee distribution between block producers is not optimal.
  • Default values for token economics are not yet fully balanced.
  • Performance is not fully tested and optimized.

Plans for Version 1.0.0

The 1.0 release aims to achieve the following:

  1. Comprehensive Fork Handling: Implement robust solutions for fork scenarios.
  2. Enhanced Staking Options: Introduce multi-cycle locking and flexible staking schedules.
  3. Optimized Block Production: Refine reward distribution to incentivize timely and accurate block creation.
  4. Enhanced Token Economics: Refine fees, rewards and penalties in default configuration and present configuration suggestion for different scenarios.
  5. Improved API: Depending on community feedback the hyperchain API might be changed in version 1.0.0

Future Releases

Planned updates will focus on:

  • Performance
  • Enhanced governance through voting
  • More advanced staking and delegated staking mechanisms
  • Improve end of Epoch voting and progress
  • Clean up Bitcoin.NG legacy.

Feedback and Collaboration

We encourage the aeternity foundation to engage with this release and provide feedback through Æternity’s GitHub repository. Together, we aim to refine Hyperchains into a robust and scalable blockchain solution.

What's Changed

Exciting New Features 🎉

Bugfixes 🐞

Other Changes

Read more

v7.2.0

17 Jul 14:27
0dbfe4f
Compare
Choose a tag to compare

What's Changed

Exciting New Features 🎉

Bugfixes 🐞

Other Changes

Full Changelog: v7.1.0...v7.2.0

v7.1.0

22 May 12:02
b394868
Compare
Choose a tag to compare

What's Changed

This release reduces the default network finality to 20 blocks. I.e., unless otherwise configured, after an upgrade it will reduce the node finality on testnet and mainnet to 20 blocks.

Exciting New Features 🎉

  • Implement ad_hoc_listen_ports functionality by @mitchelli in #4337
  • Improve startup error when keys_dir is not available by @hanssv in #4347
  • Beacon v1: towards lower network finality time by @hanssv in #4353
  • Add GetNameEntryByNameHash to HTTP (v3) API by @hanssv in #4348
  • Add (bytearray) encoded key to pointers in HTTP API by @hanssv in #4349
  • Make db_direct_access the default by @uwiger in #4129

Bugfixes 🐞

Other Changes

  • Avoid overlapping block timestamps in eunit tests by @hanssv in #4340
  • Update test that checks whether tx has openAPI schema by @ThomasArts in #4339
  • Update sdk in sdk_smoke_test to 13.3.2 by @davidyuk in #4350

Full Changelog: v7.0.0...v7.1.0

v7.0.0

25 Apr 13:33
a949826
Compare
Choose a tag to compare

Ceres Release

  • Testnet protocol upgrade has been scheduled for block 939750 estimated to Wed Apr 24 08:30:00 UTC 2024.
  • Mainnet protocol upgrade has been scheduled for block 941700 estimated to Tue May 7 09:00:00 UTC 2024.

What's Changed

Ceres Protocol Changes

  • Only allow GAAttachTx for nonce 1 - i.e. an account cannot later be transformed into a generalized account.
  • Adjust the AENS auction mechanism;
    1. make auctions initially shorter
    2. new bids only extend auctions with a short period,
      and it is only extended if the new bid comes near the end of the auction (within the extension period).
  • Make NamePreclaimTx optional. Since the introduction of auctions, the front-running protection offered by the 'PreClaim -> Claim' flow is no longer as important. To simplify name registrations (or the start of a name auction) we now allow NameClaimTx without a previous NamePreclaimTx. In this case we set the NameSalt to 0.
  • Adds new operations to the FATE VM (version 3)
    • bitwise operations on integers (band, bor, bxor, bnot, << and >>)
    • Address.to_bytes - converting an address to its binary representation
    • Int.mulmod - a combined multiplication and modulus operation for efficiency
    • Crypto.poseidon - a ZK/SNARK friendly hash function
    • Introduce arbitrary sized binary arrays (type bytes()); adding Bytes.split_any, Bytes.to_fixed_size, Bytes.to_any_size, Bytes.size, String.to_bytes, and Int.to_bytes; and adjust Bytes.concat, and Crypto.verify_sig to allow both fixed and arbitrary sized byte arrays.
    • Chain.network_id - the network id of the chain
  • Change the micro block gas limit to use actual used gas instead of upper gas limit.
    This makes the network work better when contract calls are overestimated and allow for more transactions to fit in each block.
  • Allow contracts to be called by name. The key contract_pubkey of the name is resolved while running the transaction.
    This has consequences for the contract call structure (aect_call) that gets a new field with the contract call identifier.
    In order to be able to find the call result without doing name resolution calls are stored relative to the id rather than the contract pubkey.
    NOTE: Names can change at any time (frontrunning is possible!) so only call
    contracts by name when you trust the owner of the name!
  • Introduce a new type of pointer for AENS names. The raw data pointer/value is
    an arbitrary sized byte array (max 1024 bytes). And since before there is a
    maximum of 32 key-pointer pairs. FATE VM and Sophia are updated to allow full
    access to the new pointer type (See
    https://github.com/aeternity/aesophia/blob/master/docs/sophia_stdlib.md#aensv2).
  • Add generic/wildcard AENS delegation signatures. I.e. instead of delegating
    authority for a contract to operate with a specific name (name hash), by
    signing just the string AENS (+ network id, public key and contract address
    as usual) you can delegate the authority for a contract to handle all your
    names with one signature. See Issue #4080 for details.
    BEWARE: This gives the contract authority to handle all current and future
    names on your behalf, so it should be used with extreme care and only for
    well-known (and well understood!!) contracts.
  • Include fields fee and gas_price in GAMetaTx when computing the TX-hash
    of the inner transaction. This way a malicious miner can't change them before
    inserting the transaction in a micro block. Note: The authentication logic
    still needs to actually use the Auth.TxHash during authentication for this
    to take effect!
  • Set Protocol Upgrade heights for CERES by @hanssv in #4333
  • More structured delegation signatures by @hanssv in #4219
  • AENSv2.DataPt should have type bytes() not string by @hanssv in #4233
  • Restrict GAAttachTx - only allowed for fresh accounts by @hanssv in #4237
  • Adjust cost for reading stored value by @hanssv in #4249
  • FATE: AENSv2.DataPt should contain FATE_BYTES by @hanssv in #4255
  • HC/FATE: fix issue when calling Chain.blockhash on a competing key-block by @hanssv in #4263
  • Arbitrary sized signed message in Crypto.verify_sig by @hanssv in #4193
  • Make NamePreclaim optional by @hanssv in #4201
  • Extend FATE with arbitrary size byte arrays by @hanssv in #4142
  • Add Chain.network_id as FATE operation by @hanssv in #4167
  • prepare AENS auction changes by @hanssv in #4113

Breaking Changes 🛠

  • Add note that swagger is deprecated and little release note placeholder by @ThomasArts in #4334

Exciting New Features 🎉

  • Change debug tx in mempool endpoint to use dry run by @mitchelli in #4318
  • Reject Txs spending to non-payable accounts in mempool by @hanssv in #4321
  • Sort paths and components in OpenApi by @davidyuk in #4330

Bugfixes 🐞

Other Changes

Full Changelog: v6.13.0...v7.0.0

v7.0.0-rc1

19 Apr 07:10
69569d2
Compare
Choose a tag to compare
v7.0.0-rc1 Pre-release
Pre-release

First Ceres Release Candidate

  • Testnet protocol upgrade has been scheduled for block 939750 estimated to Wed Apr 24 08:30:00 UTC 2024.
  • Mainnet protocol upgrade has been scheduled for block 941700 estimated to Tue May 7 09:00:00 UTC 2024.

What's Changed

Ceres Protocol Changes

  • Only allow GAAttachTx for nonce 1 - i.e. an account cannot later be transformed into a generalized account.
  • Adjust the AENS auction mechanism;
    1. make auctions initially shorter
    2. new bids only extend auctions with a short period,
      and it is only extended if the new bid comes near the end of the auction (within the extension period).
  • Make NamePreclaimTx optional. Since the introduction of auctions, the front-running protection offered by the 'PreClaim -> Claim' flow is no longer as important. To simplify name registrations (or the start of a name auction) we now allow NameClaimTx without a previous NamePreclaimTx. In this case we set the NameSalt to 0.
  • Adds new operations to the FATE VM (version 3)
    • bitwise operations on integers (band, bor, bxor, bnot, << and >>)
    • Address.to_bytes - converting an address to its binary representation
    • Int.mulmod - a combined multiplication and modulus operation for efficiency
    • Crypto.poseidon - a ZK/SNARK friendly hash function
    • Introduce arbitrary sized binary arrays (type bytes()); adding Bytes.split_any, Bytes.to_fixed_size, Bytes.to_any_size, Bytes.size, String.to_bytes, and Int.to_bytes; and adjust Bytes.concat, and Crypto.verify_sig to allow both fixed and arbitrary sized byte arrays.
    • Chain.network_id - the network id of the chain
  • Change the micro block gas limit to use actual used gas instead of upper gas limit.
    This makes the network work better when contract calls are overestimated and allow for more transactions to fit in each block.
  • Allow contracts to be called by name. The key contract_pubkey of the name is resolved while running the transaction.
    This has consequences for the contract call structure (aect_call) that gets a new field with the contract call identifier.
    In order to be able to find the call result without doing name resolution calls are stored relative to the id rather than the contract pubkey.
    NOTE: Names can change at any time (frontrunning is possible!) so only call
    contracts by name when you trust the owner of the name!
  • Introduce a new type of pointer for AENS names. The raw data pointer/value is
    an arbitrary sized byte array (max 1024 bytes). And since before there is a
    maximum of 32 key-pointer pairs. FATE VM and Sophia are updated to allow full
    access to the new pointer type (See
    https://github.com/aeternity/aesophia/blob/master/docs/sophia_stdlib.md#aensv2).
  • Add generic/wildcard AENS delegation signatures. I.e. instead of delegating
    authority for a contract to operate with a specific name (name hash), by
    signing just the string AENS (+ network id, public key and contract address
    as usual) you can delegate the authority for a contract to handle all your
    names with one signature. See Issue #4080 for details.
    BEWARE: This gives the contract authority to handle all current and future
    names on your behalf, so it should be used with extreme care and only for
    well-known (and well understood!!) contracts.
  • Include fields fee and gas_price in GAMetaTx when computing the TX-hash
    of the inner transaction. This way a malicious miner can't change them before
    inserting the transaction in a micro block. Note: The authentication logic
    still needs to actually use the Auth.TxHash during authentication for this
    to take effect!
  • Set Protocol Upgrade heights for CERES by @hanssv in #4333
  • More structured delegation signatures by @hanssv in #4219
  • AENSv2.DataPt should have type bytes() not string by @hanssv in #4233
  • Restrict GAAttachTx - only allowed for fresh accounts by @hanssv in #4237
  • Adjust cost for reading stored value by @hanssv in #4249
  • FATE: AENSv2.DataPt should contain FATE_BYTES by @hanssv in #4255
  • HC/FATE: fix issue when calling Chain.blockhash on a competing key-block by @hanssv in #4263
  • Arbitrary sized signed message in Crypto.verify_sig by @hanssv in #4193
  • Make NamePreclaim optional by @hanssv in #4201
  • Extend FATE with arbitrary size byte arrays by @hanssv in #4142
  • Add Chain.network_id as FATE operation by @hanssv in #4167
  • prepare AENS auction changes by @hanssv in #4113

Breaking Changes 🛠

  • Add note that swagger is deprecated and little release note placeholder by @ThomasArts in #4334

Exciting New Features 🎉

  • Change debug tx in mempool endpoint to use dry run by @mitchelli in #4318
  • Reject Txs spending to non-payable accounts in mempool by @hanssv in #4321
  • Sort paths and components in OpenApi by @davidyuk in #4330

Bugfixes 🐞

Other Changes

Full Changelog: v6.13.0...v7.0.0-rc1

v6.13.0

03 Apr 08:32
805c662
Compare
Choose a tag to compare

What's Changed

Breaking Changes 🛠

Next Consensus

  • [Ceres] More structured delegation signatures by @hanssv in #4219
  • AENSv2.DataPt should have type bytes() not string by @hanssv in #4233
  • [Ceres] Restrict GAAttachTx - only allowed for fresh accounts by @hanssv in #4237
  • [Ceres] Adjust cost for reading stored value by @hanssv in #4249
  • FATE: AENSv2.DataPt should contain FATE_BYTES by @hanssv in #4255
  • HC/FATE: fix issue when calling Chain.blockhash on a competing key-block by @hanssv in #4263

Exciting New Features 🎉

Bugfixes 🐞

  • DB might contain dict MP trees, convert them in from_db_format by @hanssv in #4239
  • HC: Don't crash if there are no local stakers by @hanssv in #4238
  • GH 4087 http endpoint info inner txs by @velzevur in #4120
  • Fix incorrect hashrate computation for status endpoint by @hanssv in #4272
  • fail gracefully on signed tx in /dry-run by @ThomasArts in #4287
  • Fix typo in aeternity config schema by @davidyuk in #4293
  • GetRecentGasPrices fixes by @davidyuk in #4295
  • Add missed definitions of Contract not found response in swagger by @ThomasArts in #4297
  • Add return_type enums to ContractCallObject, GAObject by @ThomasArts in #4299
  • Fix devmode accounts by changing data/aeplugin_dev_mode permissions by @davidyuk in #4307
  • Fix typo in aect_contracts.erl by @hanssv in #4314

Other Changes

New Contributors

Full Changelog: v6.12.0...v6.13.0

v6.12.0

12 Dec 10:05
d5e582b
Compare
Choose a tag to compare

What's Changed

Exciting New Features 🎉

Bugfixes 🐞

  • Fix testnet seed node address by @dincho in #4158
  • Correctly handle badly encoded transactions in http dry-run API by @hanssv in #4195
  • Remove continuation application during execution stack unwinding by @radrow in #4166
  • Fix /status for HC by @hanssv in #4227
  • HC: Fix empty parent generation issue by @hanssv in #4229

Next Consensus

  • [Ceres] Arbitrary sized signed message in Crypto.verify_sig by @hanssv in #4193
  • [Ceres] Make NamePreclaim optional by @hanssv in #4201

Other Changes

New Contributors

Full Changelog: v6.11.0...v6.12.0

Maintenance release

18 Jul 12:14
4d9fd25
Compare
Choose a tag to compare

What's Changed

Exciting New Features 🎉

  • Introduce FATE Debugger by @ghallak in #4079
  • Devmode improvement: no timeout for on kb_emit requests. This allows creating a lot more blocks on one go. by @uwiger in #4164
  • Bump aeplugin_devmode_version to 0.5.2 by @uwiger in #4169
  • Control when mempool sync starts during chain syncing by @uwiger in #4160

Next Consensus

  • [Ceres]: Extend FATE with arbitrary size byte arrays by @hanssv in #4142
  • [Ceres]: Add Chain.network_id as FATE operation by @hanssv in #4167

Full Changelog: v6.10.0...v6.11.0

Maintenance release

28 Jun 08:09
8888bf2
Compare
Choose a tag to compare

What's Changed

Exciting New Features 🎉

  • Bitcoin parent chain hyperchain connector by @seanhinde in #4124
  • Add ability to specify aeternity config file on command line by @seanhinde in #4149

Bugfixes 🐞

Next Consensus

Other Changes

  • Switch to c based ecrecover away from Rust lib by @seanhinde in #4071
  • Pin down current hyperchain config in schema by @seanhinde in #4146
  • GC follows top and automatically picks up siblings by @uwiger in #4147
  • Minor tweaks for HC in json config schema (stricter types). by @rumyanar in #4153
  • Update Rosetta README with current status by @seanhinde in #4143
  • Update node build requirements documentation by @loxs in #4154

New Contributors

Full Changelog: v6.9.0...v6.10.0

Maintenance release

25 Apr 04:33
b56c072
Compare
Choose a tag to compare