All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
2.7.0 2022-08-19
- Get promise results precompile at address on
testnet
0x0a3540f79be10ef14890e87c1a0040a68cc6af71
by @birchmd. (#575) - Cross-contract calls to NEAR contracts are now available for
testnet
by @birchmd and @mfornet. (#560)
- Use NEAR host functions for alt bn256 precompile by @birchmd, @joshuajbouw, and @RomanHodulak. (#540)
- Fixed an issue where a transaction can panic on an empty input by @birchmd. (#573)
- Return the correct value while using the
get_bridge_prover
method by @birchmd. (#581)
2.6.1 2022-06-23
- Fixed an issue with accounting being problematic with the total supply of ETH on Aurora as it could artificially deplete by @birchmd. (#536)
- Fixed the possibility of forging receipts to allow for withdrawals on the Rainbow Bridge by @birchmd, @mfornet, @sept-en and @joshuajbouw. Written by @birchmd.
- Fixed the ability the steal funds from those by setting a fee when receiving NEP-141 as ERC-20 by @birchmd, @mfornet, and @joshuajbouw. Written by @joshuajbouw.
2.6.0 2022-06-08
- A precompile at the address
0x536822d27de53629ef1f84c60555689e9488609f
was created to expose the prepaid gas from the NEAR host function by @birchmd. (#479)
- A better implementation of caching was added to reduce the overall gas costs of storage reads resulting in roughly a 15% - 18% reduction of gas costs by @birchmd. (#488)
- If the
v
byte of secp256k1 is incorrect, it now returns correctly an empty vector by @RomanHodulak. (#513) - Original ETH transactions which do not contain a Chain ID are allowed again to allow for use of EIP-1820 by @joshuajbouw. (#520)
- Ecrecover didn't reject
r
,s
values larger than curve order by @RomanHodulak. (#515) - The predecessor account ID was failing in the
view
method by @birchmd. (#477) - Ecrecover was incorrectly setting the NEAR ecrecover malleability flag by @birchmd and @joshuajbouw. (#474)
2.5.3 2022-04-27
- Fixed inflation vulnerability relating to ExitToNear and ExitToEthereum by @birchmd, @mfornet, and @joshuajbouw. Written by @birchmd.
2.5.2 2022-03-22
- New Aurora-only precompiles removed since they do not work in NEAR view calls. This will need to be fixed and they will be re-added to a future release.
2.5.1 - 2022-03-16
- New Aurora-only precompiles for checking the current and predecessor NEAR account IDs by @birchmd. (#462)
2.5.0 - 2022-03-09
2.4.0 - 2022-02-16
- Performance improvements by @birchmd and @matklad; the engine should now consume much less NEAR gas: (#427) (#438) (#439) (#445) (#446)
- Security improvment: only Engine contract owner can use the
deploy_upgrade
method by @birchmd. (#410) - Bug fix: Engine now returns the error message in the case of a revert during an EVM contract deploy, previously it would always return an address (even when the deploy failed) by @birchmd. (#424)
- Security improvment: Engine will no longer accept EVM transactions without a chain ID as part of their signature by @birchmd. This should have no impact on users as all modern Ethereum tooling includes the chain ID. (#432)
- Improvements to code quality by @mrLSD: (#386) (#387)
- Improvements and additions to internal tests and benchmarks by @birchmd: (#408) (#415) (#429)
2.3.0 - 2021-12-10
- A precompile which exposes NEAR's random number generator was added by @mfornet as requested by @birchmd. (#368 #297)
- London hard fork support was added by @birchmd. (#244)
- The gas limit for
deposit
andft_on_transfer
were changed as they were not attaching enough gas, as changed by @mrLSD. (#389)
- There was an issue with the original storage not actually being stored. Unfortunately, previous transactions can't be updated with this change. This has been fixed by @birchmd. (#390)
- Call arguments were intended to have a value attached to them to make it equivalent to an ETH call. This was fixed in a backwards compatible manner by @andrcmdr, as reported by @birchmd. (#351 #309)
- Betanet support was dropped and will no longer be supported by @joshuajbouw. (#388)
2.2.0 - 2021-11-09
- Depositing ETH from Ethereum to Aurora now allows an
0x
prefix on the recipient address by @joshuajbouw. (#337)
2.1.0 - 2021-11-04
- Bug in
ft_transfer_call
andft_resolve_transfer
by @birchmd and @mrLSD. (#326 #330) - Incorrect gas cost on ripemd precompile by @joshuajbouw. (#329)
2.0.2 - 2021-11-01
2.0.1 - 2021-11-01
- Added logging of public keys during
submit
calls by @joshuajbouw. (#319)
2.0.0 - 2021-10-27
- EVM logs returned in
SubmitResult
include the address the log originates from by @birchmd. (#299)- Note: this is a breaking change in the
SubmitResult
binary format.
- Note: this is a breaking change in the
- Precompile bug fixes by @birchmd. (#305, #306)
- Update to latest
rust-blockchain/evm
version (fixes bug inJUMPI
) EVM opcode by @birchmd. (#316)
1.7.0 - 2021-10-13
- Add EVM events for exit precompiles by @birchmd
1.6.4 - 2021-09-29
- Fix JSON formatting in
ft_metadata
method by @birchmd. - Fix a bug in
block.timestamp
(units should be seconds) by @birchmd.
1.6.3 - 2021-09-14
- Revert the ERC-20 admin address changes for the time being by @joshuajbouw.
1.6.2 - 2021-09-13
- Change the ERC-20 admin address to have a dedicated account by @sept-en.
- Fix precompile promises that were broken in rust-blockchain/evm by @joshuajbouw and @birchmd.
- Fix the return format of
ft_balance_of
by @joshuajbouw.
- Remove Testnet balancing
balance_evm_and_nep141
by @birchmd.
1.6.1 - 2021-08-23
-
Update the
view
call to correctly return the Borsh serialization ofTransactionStatus
. Previously, it returned a string with the result of the transaction by name. -
Change the
ft_balance_of
result as previously it returned a non-JSON string value0
. This has been fixed to return"0"
.
1.6.0 - 2021-08-13
- Change the transaction status of
submit
as running out of gas, funds, or being out-of-the-offset are not fatal errors but failed executions.
The submit
call altered the SubmitResult
object to the following format:
enum TransactionStatus {
Succeed(Vec<u8>),
Revert(Vec<u8>),
OutOfGas,
OutOfFund,
OutOfOffset,
CallTooDeep,
}
struct ResultLog {
topics: Vec<[u8; 32]>,
data: Vec<u8>,
}
struct SubmitResult {
status: TransactionStatus, // above
gas_used: u64,
logs: Vec<ResultLog>,
}