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.10.0 2023-07-20
- Enabled Shanghai Ethereum hard fork support by @mandreyel. (#773)
- Added ability to pause and resume the core functionality of the contract by @Casuso. (#779)
- Added function call keys to be used with relayers by @aleksuss. (#792)
2.9.3 2023-07-19
- It is now possible for anyone to call the contract method
deploy_upgrade
by @joshuajbouw. (#794)
2.9.2 2023-06-22
2.9.1 2023-05-11
- Removed unused state variable
bridge_prover_id
by @birchmd. (#749) modexp
has been improved to be greatly faster than before by @birchmd. (#757)
- Fixed an issue where the owner could call
new
multiple times by [@lempire123]. (#733) - Fixed an issue with
deploy_upgrade
where the upgrade index isn't cleared by [@lempire123]. (#741)
2.9.0 2023-04-05
- Enabled XCC for mainnet release by @birchmd. (#694)
- Added
set_owner
contract method which sets the owner of the contract by @hskang9. (#690) - New variant of submit function
submit_with_args
which accepts additional arguments along with the transaction such as the max gas price a user is ready to pay by @aleksuss. (#696) - Added the ability to create and fund XCC sub-accounts from external NEAR accounts by @birchmd. (#735)
- Replaced
rjson
withserde_json
by @aleksuss. (#677) - Changed owner intended contract methods to now require owner or the contract itself by @hskang9. (#676)
- Fixed nonce incorrectly being incremented on an out of fund failure by @joshuajbouw. (#671)
- Fixed a check in promise results before executing cross contract calls (XCC) callbacks by @birchmd. (#693)
- Fixed a reachable panic in
receive_erc20_tokens
by @0x3bfc. (#709) - Fixed a lack of minimum size checks when instantiating a new
EthGas
object by [@lempire123]. (#722) - Fixed a lack of division by 0 checks in
EthGas::Div()
by [@lempire123]. (#718) - Fixed the validation of the return of
exports:storage_remove
by @0x3bfc. (#712) - Fixed missing account validations of NEAR account IDs by @0x3bfc. (#703)
- Fixed a reachable panic in the
exitToNear
andexitToEthereum
precompiles if the input amount is greater than 1^128 when cast from aU256
tou128
by @0x3bfc. (#681) - Fixed a reachable panic in
modExp
due to arithmetic overflow by @0x3bfc. (#688) - Fixed the ability attaching values to Aurora specific precompiles, this no longer is possible, by @0x3bfc. (#714)
- Fixed a return error if an ecrecover signature length is not exactly 65 by @0x3bfc. (#717)
- Fixed size checks on input array passed to
exitToNear
andexitToEthereum
precompiles by @0x3bfc. (#684) - Fixed missing gas costs in
exitToNear
andexitToEthereum
precompiles by [@lempire123]. (#687) - Fixed a reachable panic due to out of memory in the
modExp
precompile by @0x3bfc. (#689) - Fixed an assurance that the
sender_id
has a balance greater than the amount inft_transfer_call
by @0x3bfc. (#708) - Fixed returning
0x
when a length cannot be cast asusize
instead of returning an error in themodExp
precompile by @birchmd. (#737) - Miscellaneous minor fixes by @0x3bfc. (#738)
2.8.0 2022-11-15
- New functions
pause_precompiles
andresume_precompiles
to allow pausing/unpausing the exit precompiles on Aurora by @RomanHodulak. (#588) - Reproducible build in Docker by @RomanHodulak. (#633)
- Update to latest SputnikVM by @birchmd (fixes some security issues including a potential call stack overflow and incorrect
is_static
indicator in exit precompiles). (#628) - Minor fixes for the XCC functionality by @birchmd. (#610 #616 #622)
- Fix bn256 regression by @joshuajbouw. (#637)
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>,
}