0.13

Echo 0.13 Release

Full start Bitcoin and Ethereum sidechain

One of the main network updates is full sidechain support, which includes Bitcoin with BTC cryptocurrency and Ethereum with ETH cryptocurrency, sidechain support for ERC20 tokens on the Ethereum. The details what is the sidechain here https://github.com/echoprotocol/echowiki/blob/master/.gitbook/assets/echo-sidechains-whitepaper.pdf

Testnet uses the Bitcoin Testnet network for BTC sidechain and Ethereum Rinkeby for Ethereum sidechain. Now interaction with sidechains is available in the Echo mobile wallet:

In addition, all necessary methods for working with sidechains are available in libraries and frameworks:

Sidechains support will be added for the Desktop Wallet for a while.

Update PoWR Protocol

In the last two versions, changes and updates were made to the consensus related to its optimization and correction. The main change is the exclusion of the blocks producing by the network without transactions. Now the network goes into standby mode in case of missing transactions in the memory pool. This change allows to optimize networking experience by eliminating unnecessary messages from being sent over the network, and optimize the database size by eliminating the storage of unnecessary blocks. Each block becomes more "expensive" and "significant" which improves the quality of the confirmation of the transaction by subsequent blocks.

See the technical details of the Protocol here - https://github.com/echoprotocol/echowiki/blob/master/.gitbook/assets/powr-whitepaper.pdf

Change account registration mechanism

The operator of node is given the opportunity to open the account registration through its nodes, paying the cost of registration, receiving for this delegation opportunity to participate in the consensus from the registered account. In order to ensure that users do not abuse the possibility of free registration, each registration now requires some work on the registrar 's side. At the same time, the complexity of the work performed is set up on the side of the node registrar, which allows to reduce or, on the contrary, increase the work time execution and spent resources.

More information about the node startup parameters here - https://docs.echo.org/advanced/node-operators/node-config

Solidity support up to and including version 0.5.11

Now Echo supports all versions of Solidity up to and including 0.5.11. For the user in Echo, contracts can be compiled by both the original Solc and Echo-solc, an extended version of solc that has support for additional methods (the list of methods can be seen here - https://docs.echo.org/technologies/evm-support/differences-from-ethereum#new-features-in-solidity).

The relevant list of the supported versions and references to compilers are here - https://echoprotocol.github.io/solc-bin/bin/list.json

Implementing edverify in EVM

As Echo uses EdDSA rather ECDSA, as in Ethereum, the ecrecover method in smart contracts is nonvalid and should not be used. You should use edverify method to confirm your account and verify your signature. Detals - https://docs.echo.org/technologies/evm-support/differences-from-ethereum#edverify

Change mechanism of work with the contract logs

Now getting contract logs is implemented in a similar way to how it works in Ethereum network with the option of complex filtering by topics. Details - https://docs.echo.org/api-reference/echo-node-api/database-api#get_contract_logs-contract_logs_filter_options

More details and a low-level changelog is below.

[0.13.1]

Removed

[0.13.0]

Added

  • Bitcoin sidechain

    • Field bool is_sent to btc_withdraw_object to check whether the funds were sent to the address specified in the withdrawal operation

    • Field uint32_t echo_block_number to btc_withdraw_object block number in ECHO when BTC withdrawal request was made

    • Field bool is_relevant to btc_address_object to check whether the current recharge address is up to date

  • Fields reciever, amount to block_reward_operation

  • Field x86_64_maximum_contract_size to chain_parameters for limit for x86 contract size

  • Database API

Changed

  • Bitcoin sidechain

    • Field committee_member_ids_in_script is map<account_id_type, echo::sidechain::btc::public_key> for [btc_address_object, btc_intermediate_deposit_object, btc_aggregating_object]

    • Rename method get_active_committee_set to get_active_committee_pub_keys_map

  • Wallet API

  • Frozen balances are taken into account now. Changed method get_balance in interval_tree_selector_impl

  • Maximum number active committee members of 19 now

  • Database API

Removed

  • Bitcoin sidechain

    • Field block_number from btc_withdraw_object

    • Object compare_intermediate_by_ready_to_send

    • Operation sidechain_btc_approve_withdraw_operation

  • Field rewards in block_reward_operation

  • Field next_available_vote_id from global_property_object

  • Field committee_member from committee_frozen_balance_deposit_operation

  • Field network_fee_percentage from account_object

  • Fields reserve_percent_of_fee, network_percent_of_fee, committee_pay_vesting_seconds, max_predicate_opcode, maximum_committee_count from chain_parameters

  • Mechanism increase registration fee

Fixed

  • Fallback signatures verification

  • Block reward are accumulated and issues with block_reward_operation during maintenance

  • Committee_member_create_operation at zero deposit

  • Incorrect withdraw in Ethereum sidechain

  • Bug with updating ethereum address of a committee member

  • Sidechain called twice in the emulator

  • Signatures check in method aggregate_btc from btc_sidechain

  • SIGSEGV during messages processing

  • Problem with block application because of invalid state of websocket

  • Deprecated-copy error with gcc 9.x

  • Build macOS with unused-parameter as error

  • Fallback message generation

Improved

  • Updated Ethereum sidechain to reflect the absence of empty blocks

  • Implement Child Pays For Parent logic and related functionality

  • Separate on_maintanance and on_committee_update signals in Database

  • Improved synchronization in echorand plugin

  • Echorand messages are dispatched asynchronously

  • Handling zero-balances and zero-block at chain start

  • Contract results getters are optimized

  • Optimize interval_tree_selector::get_points

  • Remove empty blocks

Refactoring code with Static Analyzer Code

Changed data structures

Actual operation order

Actual objects order

Updated chain parameters

Updated dynamic global property object

Updated config