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',