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.
3.7.0 2024-10-09
- Added support of CANCUN hardfork by @mrLSD. (#926)
- Added support of EIP-3607 by @mrLSD. (#930)
- Removed restrictions from funding XCC sub-accounts by @birchmd. (#931)
- Made some EVM gas costs optimisations by @mrLSD. (#934)
- Refactored the gas charge logic form EVM exit reasons by @mrLSD. (#935)
- Updated some dependencies and rust-toolchain by @mrLSD. (#936)
- Removed unused
bytes_to_hex
function by @dwiekawki. (#942) - Added building of actual version of the
near-sandbox
in the scheduled CI job by @aleksuss (#950)
- Removed duplicated
test
task in theREADME.md
by @dwiekawki. (#943) - Fixed some typos in the
README.md
andCargo.toml
by @DemoYeti. (#945) (#946) - Fixed exceeded prepaid gas error in the
mirror_erc20_token
transaction by @aleksuss (#951) - Modified
hardhat.config.js
to support contract verification by @spilin (#958)q
3.6.4 2024-07-22
- Added a possibility to provide amount of gas for the
state_migration
callback in theupgrade
transaction by @aleksuss. (#937)
3.6.3 2024-04-16
3.6.2 2024-03-27
- Added a new view transaction
ft_balances_of
for getting balances for multiple accounts by @karim-en. (#905)
- The
ft_resolve_transfer
callback doesn't require running the contract to finish theft_transfer_call
correctly by @aleksuss. (#906) - Borsh has been bumped to 1.3 what allows to get rid of additional feature
borsh-compat
by @aleksuss. (#907) - The
ExecutionProfile
has been extended with logs for tests by @mrLSD. (#910) - The interface of the engine standalone storage has been extended with a couple of methods for allowing set/get arbitrary data outside the crate by @aleksuss. (#913)
3.6.1 2024-02-15
- Improved the format of a panic message by extending it with nonces from an account and a transaction by @aleksuss. (#898)
3.6.0 2024-02-06
- Fixed underflow in the modexp gas calculation by @guidovranken. (#883)
- Prevented subtraction underflow in the xcc module by @guidovranken. (#888)
- Fixed balance and gas overflows in the xcc module by @guidovranken. (#889)
- CI was updated by changing self-hosted runner to the GitHub heavy by @aleksuss. (#881)
- Removed a logic of fee calculation in the eth-connector by @karim-en. (#882)
- Version of the rust nightly was updated to 2023-12-15 by @RomanHodulak. (#885)
3.5.0 2023-12-06
- Added a new transaction
upgrade
which allows upgrading the contract and invoking thestate_migration
callback with one call by @aleksuss. (#878)
- Updated the logic of upgrading XCC router which works properly on both
mainnet
andtestnet
by @birchmd. (#877)
3.4.0 2023-11-28
- Added a possibility to pass initialize arguments in json format to the
new
transaction by @aleksuss. (#871) - The
SubmitResult
was made available forft_on_transfer
transactions in the standalone engine by @birchmd. (#869) - The order of producing the exit precompile and XCC promises has been changed to sequential by @birchmd. (#868)
- Removed the code hidden behind the feature that isn't used anymore by @joshuajbouw. (#870)
- The logic of unwrapping wNEAR has been changed to the Bridge's native by @birchmd. (#867)
- Bumped the
near-workspaces
to 0.9 by @aleksuss. (#862)
- Add a method for upgrading XCC router contract by @birchmd. (#866)
- Fixed a potential panic in the
ExitToNear
precompile by @guidovranken. (#865) - Fixed a behaviour when the
ft_transfer
could occur before thenear_withdraw
by @birchmd. (#864) - Fixed correctness of reproducing the NEAR runtime random value in the standalone engine by @birchmd. (#863)
3.3.1 2023-10-26
- The smart contract owner whose account id is not the same as the contract account id can set ERC-20 metadata by @aleksuss. (#858)
3.3.0 2023-10-23
-
Changed the logic of cost calculation in Silo mode. Specifically, the fixed cost has been replaced with a fixed amount of gas per transaction by @aleksuss. (#854)
-
near-workspaces-rs
has been updated to 0.8.0 by @aleksuss. (#855)
3.2.0 2023-10-17
- Changed structure
SetEthConnectorContractAccountArgs
for setting eth connector account. It was extended with additional field:withdraw_serialize_type
for defining serialization type for withdraw arguments by @aleksuss. (#834) - Updated rocksdb up to 0.21.0 by @aleksuss. (#840)
- Added a possibility of mirroring deployed ERC-20 contracts in the main Aurora contract in Silo mode by @aleksuss. (#845)
- Allow to initialize hashchain directly with the
new
method by @birchmd. (#846) - Added a silo logic which allows to set fixed gas costs per transaction by @aleksuss. (#746)
- Added a new type of transaction which allows to add full access key into account of the smart contract by @aleksuss. (#847)
3.1.0 2023-09-25
- Added the possibility to use native NEAR instead of wNEAR on Aurora by @karim-en. (#750)
- Added hashchain integration by @birchmd. (#831)
- Added functions for setting and getting metadata of ERC-20 contracts deployed with
deploy_erc20_token
transaction by @aleksuss. (#837)
3.0.0 2023-08-28
- Updated SputnikVM dependency with bugfix in the
returndatacopy
implementation and a performance improvement in accessing EVM memory by @birchmd. (#826)
- BREAKING:
engine-standalone-storage
no longer automatically writes to the DB whenconsume_message
is called. It is up to downstream users of the library to commit the diff (after doing any validation for correctness) by @birchmd. (#825)
- New crate for the so-called "hashchain" implementation. It will enable verification of Aurora blocks by light clients in the future by @birchmd. (#816)
2.10.2 2023-08-10
- Added a view transaction
factory_get_wnear_address
for returning address for thewNEAR
ERC-20 contract by @aleksuss. (#807)
- Fixed a bug where standalone engine can crash on tracing transactions with too large contract deployment by @birchmd. (#817)
- Fixed a bug and performance improvements with unusual exponents in the
engine-modexp
crate by @guidovranken. (#814)
2.10.1 2023-07-27
- Updated sputnikvm dependency with bugfix in the
shanghai
implementation @mandreyel. (#803)
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 improvement: 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 improvement: 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>,
}