3.3.1-dev
Pre-release
Pre-release
satoshiotomakan
released this
09 Oct 11:40
·
168 commits
to dev
since this release
What's Changed
This dev
release introduces several sweeping changes to the Wallet Core, primarily centering on the shift from C++ to Rust for improved performance, security, and maintenance:
- Elliptic Curves in Rust: We've successfully migrated most of the currently supported elliptic curves to Rust. Implementation details are as follows:
secp256k1
- using RustCrypto: k256ed25519
,ed25519-blake2b
,ed25519-cardano-extended
- using curve25519-daleknistp256p1
- using RustCrypto/p256
- Wallet Core Redesign: Exploiting Rust's robust type system, the Wallet Core design has been massively enhanced to promote easier implementation of features and long-term code maintainability.
- Ethereum Transition: We've shifted the main Ethereum functionality from C++ to Rust. The implementation encompasses Ethereum's basic operations, RLP and ABI interfaces, as well as EIP712 message signing. As it stands now, the Ethereum transition is fully executed.
- Bitcoin Transition: Progress is underway to move Bitcoin functionality from C++ to Rust. So far, this involves Bitcoin's basic operations and interface redesign. Pending tasks include:
- Establishing a bridge between the legacy and new Bitcoin protobuf interfaces for seamless transition.
- Shifting all tests to Rust.
- Implementing other Bitcoin-related functionality in Rust.
Progress
Breaking changes
VeChain
andTheta
no longer support JSON signing. Initially, the chains inheritedEthereum::Entry
, butEntry::signJSON
was not overridden with the chain specific implementation.UserOperation
signed transaction (JSON representation) now has thesender: Address
field normalized with EIP55 checksum.- Removed
Ethereum::RLP::decode
functionality as it's not used in C++. - Ethereum and all EVM-compatible chains no longer support
TWTransactionCompilerBuildInput
.
Deprecated
TWEthereumAbiFunction
and all methods.TWEthereumAbiEncode
. Consider usingTWEthereumAbiEncodeFunction
through Protobuf interface instead.TWEthereumAbiDecodeOutput
. Consider usingTWEthereumAbiDecodeParams
through Protobuf interface instead.TWEthereumAbiDecodeCall
. Consider usingTWEthereumAbiDecodeContractCall
through Protobuf interface instead.TWEthereumAbiValueDecodeValue
,TWEthereumAbiValueDecodeArray
and allTWEthereumAbiValueDecode*
. Consider usingTWEthereumAbiDecodeValue
through Protobuf interface instead.