Skip to content

Commit e221f00

Browse files
committed
add support for LevelDB
1 parent 8a5fd68 commit e221f00

6 files changed

Lines changed: 355 additions & 7 deletions

File tree

.cirrus.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ task:
4242
install_script:
4343
- apt-get update
4444
# qml test reqs:
45-
- apt-get -y install libgl1 libegl1 libxkbcommon0 libdbus-1-3
45+
- apt-get -y install libgl1 libegl1 libxkbcommon0 libdbus-1-3 libleveldb-dev
4646
- pip install -r $ELECTRUM_REQUIREMENTS_CI
4747
# electrum itself:
4848
- export ELECTRUM_ECC_DONT_COMPILE=1
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
pytest
22
coverage
33
coveralls
4+
plyvel

electrum/commands.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -298,20 +298,22 @@ async def close_wallet(self, wallet_path=None):
298298
return await self.daemon._stop_wallet(wallet_path)
299299

300300
@command('')
301-
async def create(self, passphrase=None, password=None, encrypt_file=True, seed_type=None, wallet_path=None):
301+
async def create(self, passphrase=None, password=None, encrypt_file=True, seed_type=None, wallet_path=None, use_levelDB=False):
302302
"""Create a new wallet.
303303
If you want to be prompted for an argument, type '?' or ':' (concealed)
304304
305305
arg:str:passphrase:Seed extension
306306
arg:str:seed_type:The type of wallet to create, e.g. 'standard' or 'segwit'
307307
arg:bool:encrypt_file:Whether the file on disk should be encrypted with the provided password
308+
arg:bool:use_levelDB:Create levelDB storage. Note that LevelDB storage does not support file encryption. The password will only encrypt the keystore.
308309
"""
309310
d = create_new_wallet(
310311
path=wallet_path,
311312
passphrase=passphrase,
312313
password=password,
313314
encrypt_file=encrypt_file,
314315
seed_type=seed_type,
316+
use_levelDB=use_levelDB,
315317
config=self.config)
316318
wallet = d['wallet']
317319
return {
@@ -321,7 +323,7 @@ async def create(self, passphrase=None, password=None, encrypt_file=True, seed_t
321323
}
322324

323325
@command('')
324-
async def restore(self, text, passphrase=None, password=None, encrypt_file=True, wallet_path=None):
326+
async def restore(self, text, passphrase=None, password=None, encrypt_file=True, wallet_path=None, use_levelDB=False):
325327
"""Restore a wallet from text. Text can be a seed phrase, a master
326328
public key, a master private key, a list of bitcoin addresses
327329
or bitcoin private keys.
@@ -330,6 +332,7 @@ async def restore(self, text, passphrase=None, password=None, encrypt_file=True,
330332
arg:str:text:seed phrase
331333
arg:str:passphrase:Seed extension
332334
arg:bool:encrypt_file:Whether the file on disk should be encrypted with the provided password
335+
arg:bool:use_levelDB:Create levelDB storage. Note that LevelDB storage does not support file encryption. The password will only encrypt the keystore.
333336
"""
334337
# TODO create a separate command that blocks until wallet is synced
335338
d = restore_wallet_from_text(
@@ -338,6 +341,7 @@ async def restore(self, text, passphrase=None, password=None, encrypt_file=True,
338341
passphrase=passphrase,
339342
password=password,
340343
encrypt_file=encrypt_file,
344+
use_levelDB=use_levelDB,
341345
config=self.config)
342346
wallet = d['wallet']
343347
return {
@@ -358,7 +362,7 @@ async def password(self, password=None, new_password=None, encrypt_file=None, wa
358362
if encrypt_file is None:
359363
if not password and new_password:
360364
# currently no password, setting one now: we encrypt by default
361-
encrypt_file = True
365+
encrypt_file = wallet.storage.supports_file_encryption()
362366
else:
363367
encrypt_file = wallet.storage.is_encrypted()
364368
wallet.update_password(password, new_password, encrypt_storage=encrypt_file)

0 commit comments

Comments
 (0)