fix: use cake wallet frontend code, remove unused imports (#2337)

Konstantin Ullrich committed Jun 26, 2025 at 15:43 UTC 04c86c567f8fd9cad71f9f8277db5bbc4c948872
1 file changed +13 -27
cw_ethereum/lib/deuro/deuro_savings.dart
+13 -27
@@ -1,19 +1,16 @@
1 -import 'dart:convert';
2 -import 'dart:typed_data';
3 -
4 -import 'package:crypto/crypto.dart';
1 import 'package:cw_core/crypto_currency.dart';
2 import 'package:cw_ethereum/deuro/deuro_savings_contract.dart';
3 import 'package:cw_ethereum/ethereum_wallet.dart';
4 import 'package:cw_evm/contract/erc20.dart';
5 import 'package:cw_evm/evm_chain_transaction_priority.dart';
6 import 'package:cw_evm/pending_evm_chain_transaction.dart';
7 +import 'package:web3dart/crypto.dart';
8 import 'package:web3dart/web3dart.dart';
9
13 -const String savingsGatewayAddress =
14 - "0x073493d73258C4BEb6542e8dd3e1b2891C972303";
10 +const String savingsGatewayAddress = "0x073493d73258C4BEb6542e8dd3e1b2891C972303";
11
12 const String dEuroAddress = "0xbA3f535bbCcCcA2A154b573Ca6c5A49BAAE0a3ea";
13 +const String frontendCode = "0x00000000000000000000000000000000000000000043616b652057616c6c6574";
14
15 class DEuro {
16 final SavingsGateway _savingsGateway;
@@ -35,27 +32,21 @@ class DEuro {
32 client: client,
33 );
34
38 - final frontendCode =
39 - Uint8List.fromList(sha256.convert(utf8.encode("wallet")).bytes);
40 -
41 - EthereumAddress get _address =>
42 - EthereumAddress.fromHex(_wallet.walletAddresses.primaryAddress);
35 + EthereumAddress get _address => EthereumAddress.fromHex(_wallet.walletAddresses.primaryAddress);
36
37 Future<BigInt> get savingsBalance async =>
38 (await _savingsGateway.savings(accountOwner: _address)).saved;
39
47 - Future<BigInt> get accruedInterest =>
48 - _savingsGateway.accruedInterest(accountOwner: _address);
40 + Future<BigInt> get accruedInterest => _savingsGateway.accruedInterest(accountOwner: _address);
41
42 Future<BigInt> get interestRate => _savingsGateway.currentRatePPM();
43
52 - Future<BigInt> get approvedBalance =>
53 - _dEuro.allowance(_address, _savingsGateway.self.address);
44 + Future<BigInt> get approvedBalance => _dEuro.allowance(_address, _savingsGateway.self.address);
45
46 Future<PendingEVMChainTransaction> depositSavings(
47 BigInt amount, EVMChainTransactionPriority priority) async {
48 final signedTransaction = await _savingsGateway.save(
58 - (amount: amount, frontendCode: frontendCode),
49 + (amount: amount, frontendCode: hexToBytes(frontendCode)),
50 credentials: _wallet.evmChainPrivateKey,
51 );
52
@@ -64,12 +55,10 @@ class DEuro {
55 contractAddress: _savingsGateway.self.address.hexEip55,
56 receivingAddressHex: _savingsGateway.self.address.hexEip55,
57 priority: priority,
67 - data: _savingsGateway.self.abi.functions[17]
68 - .encodeCall([amount, frontendCode]),
58 + data: _savingsGateway.self.abi.functions[17].encodeCall([amount, hexToBytes(frontendCode)]),
59 );
60
71 - final sendTransaction =
72 - () => _wallet.getWeb3Client()!.sendRawTransaction(signedTransaction);
61 + final sendTransaction = () => _wallet.getWeb3Client()!.sendRawTransaction(signedTransaction);
62
63 return PendingEVMChainTransaction(
64 sendTransaction: sendTransaction,
@@ -82,7 +71,7 @@ class DEuro {
71 Future<PendingEVMChainTransaction> withdrawSavings(
72 BigInt amount, EVMChainTransactionPriority priority) async {
73 final signedTransaction = await _savingsGateway.withdraw(
85 - (target: _address, amount: amount, frontendCode: frontendCode),
74 + (target: _address, amount: amount, frontendCode: hexToBytes(frontendCode)),
75 credentials: _wallet.evmChainPrivateKey,
76 );
77
@@ -91,12 +80,10 @@ class DEuro {
80 contractAddress: _savingsGateway.self.address.hexEip55,
81 receivingAddressHex: _savingsGateway.self.address.hexEip55,
82 priority: priority,
94 - data: _savingsGateway.self.abi.functions[17]
95 - .encodeCall([amount, frontendCode]),
83 + data: _savingsGateway.self.abi.functions[17].encodeCall([amount, hexToBytes(frontendCode)]),
84 );
85
98 - final sendTransaction =
99 - () => _wallet.getWeb3Client()!.sendRawTransaction(signedTransaction);
86 + final sendTransaction = () => _wallet.getWeb3Client()!.sendRawTransaction(signedTransaction);
87
88 return PendingEVMChainTransaction(
89 sendTransaction: sendTransaction,
@@ -107,8 +94,7 @@ class DEuro {
94 }
95
96 // Set an infinite approval to save gas in the future
110 - Future<PendingEVMChainTransaction> enableSavings(
111 - EVMChainTransactionPriority priority) async =>
97 + Future<PendingEVMChainTransaction> enableSavings(EVMChainTransactionPriority priority) async =>
98 (await _wallet.createApprovalTransaction(
99 BigInt.parse(
100 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',