mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2024-12-22 19:49:22 +00:00
fix: Issue with the privateKey of Solana wallets being different accross various apps (#1400)
This commit is contained in:
parent
4ed4659f9e
commit
65799a8764
1 changed files with 14 additions and 3 deletions
|
@ -27,6 +27,7 @@ import 'package:hex/hex.dart';
|
||||||
import 'package:hive/hive.dart';
|
import 'package:hive/hive.dart';
|
||||||
import 'package:mobx/mobx.dart';
|
import 'package:mobx/mobx.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
|
import 'package:solana/base58.dart';
|
||||||
import 'package:solana/metaplex.dart' as metaplex;
|
import 'package:solana/metaplex.dart' as metaplex;
|
||||||
import 'package:solana/solana.dart';
|
import 'package:solana/solana.dart';
|
||||||
|
|
||||||
|
@ -108,7 +109,17 @@ abstract class SolanaWalletBase
|
||||||
String? get seed => _mnemonic;
|
String? get seed => _mnemonic;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get privateKey => HEX.encode(_keyPairData!.bytes);
|
String get privateKey {
|
||||||
|
final privateKeyBytes = _keyPairData!.bytes;
|
||||||
|
|
||||||
|
final publicKeyBytes = _keyPairData!.publicKey.bytes;
|
||||||
|
|
||||||
|
final encodedBytes = privateKeyBytes + publicKeyBytes;
|
||||||
|
|
||||||
|
final privateKey = base58encode(encodedBytes);
|
||||||
|
|
||||||
|
return privateKey;
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> init() async {
|
Future<void> init() async {
|
||||||
final boxName = "${walletInfo.name.replaceAll(" ", "_")}_${SPLToken.boxName}";
|
final boxName = "${walletInfo.name.replaceAll(" ", "_")}_${SPLToken.boxName}";
|
||||||
|
@ -135,8 +146,8 @@ abstract class SolanaWalletBase
|
||||||
assert(mnemonic != null || privateKey != null);
|
assert(mnemonic != null || privateKey != null);
|
||||||
|
|
||||||
if (privateKey != null) {
|
if (privateKey != null) {
|
||||||
final privateKeyBytes = HEX.decode(privateKey);
|
final privateKeyBytes = base58decode(privateKey);
|
||||||
return await Wallet.fromPrivateKeyBytes(privateKey: privateKeyBytes);
|
return await Wallet.fromPrivateKeyBytes(privateKey: privateKeyBytes.take(32).toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
return Wallet.fromMnemonic(mnemonic!, account: 0, change: 0);
|
return Wallet.fromMnemonic(mnemonic!, account: 0, change: 0);
|
||||||
|
|
Loading…
Reference in a new issue