├── gui
├── kivy
│ ├── uix
│ │ ├── __init__.py
│ │ ├── dialogs
│ │ │ ├── nfc_transaction.py
│ │ │ ├── qr_scanner.py
│ │ │ ├── qr_dialog.py
│ │ │ ├── question.py
│ │ │ ├── checkbox_dialog.py
│ │ │ ├── label_dialog.py
│ │ │ ├── wallets.py
│ │ │ ├── choice_dialog.py
│ │ │ └── password_dialog.py
│ │ ├── context_menu.py
│ │ ├── ui_screens
│ │ │ ├── requests.kv
│ │ │ ├── invoices.kv
│ │ │ ├── about.kv
│ │ │ ├── network.kv
│ │ │ ├── history.kv
│ │ │ ├── invoice.kv
│ │ │ └── status.kv
│ │ ├── combobox.py
│ │ └── menus.py
│ ├── data
│ │ ├── background.png
│ │ ├── fonts
│ │ │ ├── Roboto.ttf
│ │ │ ├── tron
│ │ │ │ ├── Tr2n.ttf
│ │ │ │ ├── License.txt
│ │ │ │ └── Readme.txt
│ │ │ ├── Roboto-Bold.ttf
│ │ │ ├── Roboto-Medium.ttf
│ │ │ └── Roboto-Condensed.ttf
│ │ ├── glsl
│ │ │ ├── default.png
│ │ │ ├── default.fs
│ │ │ ├── default.vs
│ │ │ ├── header.fs
│ │ │ └── header.vs
│ │ ├── logo
│ │ │ └── kivy-icon-32.png
│ │ └── images
│ │ │ ├── defaulttheme-0.png
│ │ │ └── defaulttheme.atlas
│ ├── theming
│ │ └── light
│ │ │ ├── card.png
│ │ │ ├── gear.png
│ │ │ ├── info.png
│ │ │ ├── logo.png
│ │ │ ├── nfc.png
│ │ │ ├── pen.png
│ │ │ ├── save.png
│ │ │ ├── tab.png
│ │ │ ├── btn_nfc.png
│ │ │ ├── camera.png
│ │ │ ├── clock1.png
│ │ │ ├── clock2.png
│ │ │ ├── clock3.png
│ │ │ ├── clock4.png
│ │ │ ├── clock5.png
│ │ │ ├── close.png
│ │ │ ├── contact.png
│ │ │ ├── dialog.png
│ │ │ ├── error.png
│ │ │ ├── globe.png
│ │ │ ├── network.png
│ │ │ ├── qrcode.png
│ │ │ ├── shadow.png
│ │ │ ├── tab_btn.png
│ │ │ ├── wallet.png
│ │ │ ├── wallets.png
│ │ │ ├── bit_logo.png
│ │ │ ├── card_btn.png
│ │ │ ├── card_top.png
│ │ │ ├── confirmed.png
│ │ │ ├── important.png
│ │ │ ├── mail_icon.png
│ │ │ ├── nfc_clock.png
│ │ │ ├── nfc_phone.png
│ │ │ ├── settings.png
│ │ │ ├── tab_strip.png
│ │ │ ├── action_bar.png
│ │ │ ├── add_contact.png
│ │ │ ├── arrow_back.png
│ │ │ ├── btn_send_nfc.png
│ │ │ ├── calculator.png
│ │ │ ├── card_bottom.png
│ │ │ ├── closebutton.png
│ │ │ ├── icon_border.png
│ │ │ ├── manualentry.png
│ │ │ ├── paste_icon.png
│ │ │ ├── shadow_right.png
│ │ │ ├── stepper_full.png
│ │ │ ├── stepper_left.png
│ │ │ ├── tab_disabled.png
│ │ │ ├── unconfirmed.png
│ │ │ ├── logo_atom_dull.png
│ │ │ ├── nfc_stage_one.png
│ │ │ ├── action_group_dark.png
│ │ │ ├── blue_bg_round_rb.png
│ │ │ ├── btn_send_address.png
│ │ │ ├── carousel_selected.png
│ │ │ ├── contact_overlay.png
│ │ │ ├── create_act_text.png
│ │ │ ├── electrum_icon640.png
│ │ │ ├── overflow_btn_dn.png
│ │ │ ├── star_big_inactive.png
│ │ │ ├── tab_btn_disabled.png
│ │ │ ├── tab_btn_pressed.png
│ │ │ ├── textinput_active.png
│ │ │ ├── action_button_group.png
│ │ │ ├── action_group_light.png
│ │ │ ├── btn_create_account.png
│ │ │ ├── carousel_deselected.png
│ │ │ ├── dropdown_background.png
│ │ │ ├── overflow_background.png
│ │ │ ├── white_bg_round_top.png
│ │ │ ├── create_act_text_active.png
│ │ │ ├── lightblue_bg_round_lb.png
│ │ │ ├── stepper_restore_seed.png
│ │ │ ├── btn_create_act_disabled.png
│ │ │ └── stepper_restore_password.png
│ ├── tools
│ │ ├── bitcoin_intent.xml
│ │ └── blacklist.txt
│ ├── Readme.rst
│ ├── Makefile
│ ├── i18n.py
│ ├── nfc_scanner
│ │ ├── __init__.py
│ │ └── scanner_dummy.py
│ └── __init__.py
├── __init__.py
└── qt
│ ├── address_dialog.py
│ └── qrwindow.py
├── plugins
├── hw_wallet
│ ├── __init__.py
│ └── plugin.py
├── email_requests
│ └── __init__.py
├── exchange_rate
│ ├── __init__.py
│ └── kivy.py
├── plot
│ └── __init__.py
├── greenaddress_instant
│ └── __init__.py
├── audio_modem
│ └── __init__.py
├── virtualkeyboard
│ ├── __init__.py
│ └── qt.py
├── ledger
│ ├── __init__.py
│ ├── cmdline.py
│ └── qt.py
├── keepkey
│ ├── __init__.py
│ ├── qt.py
│ ├── client.py
│ ├── cmdline.py
│ └── keepkey.py
├── trezor
│ ├── __init__.py
│ ├── qt.py
│ ├── client.py
│ ├── cmdline.py
│ └── trezor.py
├── labels
│ ├── __init__.py
│ ├── kivy.py
│ └── qt.py
├── cosigner_pool
│ └── __init__.py
├── trustedcoin
│ └── __init__.py
├── __init__.py
└── README
├── Uwallet.ico
├── uwallet.ico
├── icons
├── copy.png
├── file.png
├── key.png
├── left.png
├── lock.png
├── page.png
├── seal.png
├── seed.png
├── zoom.png
├── Slider.png
├── caveat.png
├── clock1.png
├── clock2.png
├── clock3.png
├── clock4.png
├── clock5.png
├── ic_spa.png
├── ic_up.png
├── ledger.png
├── prompt.png
├── qrcode.png
├── right.png
├── trezor.png
├── unlock.png
├── unpaid.png
├── warn1.png
├── warn2.png
├── confirmed.png
├── drop_down.png
├── electrum.ico
├── electrum.png
├── expired.png
├── ic_clear.png
├── ic_down.png
├── ic_folder.png
├── ic_remove.png
├── ic_search.png
├── keepkey.png
├── last_page.png
├── network.png
├── next_page.png
├── options.png
├── speaker.png
├── warning.png
├── first_page.png
├── ic_crop_5_4.png
├── ic_qr_code.png
├── ic_query_0.png
├── ic_settings.png
├── ic_spa_pre.png
├── microphone.png
├── network_red.png
├── options_box.png
├── options_pre.png
├── preferences.png
├── trustedcoin.png
├── unconfirmed.png
├── first_page_pre.png
├── ic_clear_pre.png
├── ic_folder_pre.png
├── ic_lock_colse.png
├── ic_lock_open.png
├── ic_qr_code_pre.png
├── ic_remove_pre.png
├── last_page_pre.png
├── network_green.png
├── network_yellow.png
├── next_page_pre.png
├── previous_page.png
├── small_window.png
├── status_lagging.png
├── status_waiting.png
├── ic_crop_5_4_pre.png
├── ic_library_books.png
├── ic_lock_open_pre.png
├── ic_settings_pre.png
├── keepkey_unpaired.png
├── ledger_unpaired.png
├── options_box_pre.png
├── small_window_pre.png
├── status_connected.png
├── trezor_unpaired.png
├── electrum_dark_icon.png
├── electrum_launcher.png
├── electrum_light_icon.png
├── ic_clear_copy_pre.png
├── ic_lock_colse_pre.png
├── previous_page_pre.png
├── status_disconnected.png
├── electrum_light_icon1.png
├── ic_library_books_pre.png
└── electrum_android_launcher_icon.png
├── uwallet.icns
├── lib
├── cryptohello_hash.so
├── locale
│ └── zh_CN
│ │ ├── ulord.mo
│ │ └── LC_MESSAGES
│ │ └── ulord.mo
├── www
│ └── example.php
├── version.py
├── __init__.py
├── i18n.py
├── signmessage.py
├── paymentrequest.proto
├── msqr.py
├── qrscanner.py
└── contacts.py
├── .gitignore
├── .travis.yml
├── tox.ini
├── scripts
├── estimate_fee
├── get_history
├── txradar
├── servers
├── block_headers
├── watch_address
├── bip70
├── peers
└── util.py
├── contrib
├── make_apk
├── sign_packages
├── build-wine
│ ├── portable.patch
│ ├── README.rst
│ ├── prepare-hw.sh
│ ├── prepare-wine.sh
│ ├── build-electrum-git.sh
│ └── deterministic.spec
├── make_download
├── make_packages
└── make_locale
├── MANIFEST.in
├── uwallet.conf.sample
├── uwallet.desktop
├── AUTHORS
├── Info.plist
├── uwallet-env
├── UpdateAppClient_install.py
├── progressbar_pyinstaller.py
├── app.fil
├── uwallet_pyinstaller.py
├── process.dat
├── c.spec
├── progressbarWindow.spec
├── UpdateAppClient.spec
├── LICENCE
├── uwallet.spec
├── version
├── README.rst
├── pubkeys
├── Animazing.asc
└── kyuupichan.asc
├── setup.py
├── setup-release.py
└── deterministic.spec
/gui/kivy/uix/__init__.py:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/plugins/hw_wallet/__init__.py:
--------------------------------------------------------------------------------
1 | from plugin import HW_PluginBase
2 |
--------------------------------------------------------------------------------
/Uwallet.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/Uwallet.ico
--------------------------------------------------------------------------------
/uwallet.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/uwallet.ico
--------------------------------------------------------------------------------
/icons/copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/copy.png
--------------------------------------------------------------------------------
/icons/file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/file.png
--------------------------------------------------------------------------------
/icons/key.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/key.png
--------------------------------------------------------------------------------
/icons/left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/left.png
--------------------------------------------------------------------------------
/icons/lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/lock.png
--------------------------------------------------------------------------------
/icons/page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/page.png
--------------------------------------------------------------------------------
/icons/seal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/seal.png
--------------------------------------------------------------------------------
/icons/seed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/seed.png
--------------------------------------------------------------------------------
/icons/zoom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/zoom.png
--------------------------------------------------------------------------------
/uwallet.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/uwallet.icns
--------------------------------------------------------------------------------
/icons/Slider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/Slider.png
--------------------------------------------------------------------------------
/icons/caveat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/caveat.png
--------------------------------------------------------------------------------
/icons/clock1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/clock1.png
--------------------------------------------------------------------------------
/icons/clock2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/clock2.png
--------------------------------------------------------------------------------
/icons/clock3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/clock3.png
--------------------------------------------------------------------------------
/icons/clock4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/clock4.png
--------------------------------------------------------------------------------
/icons/clock5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/clock5.png
--------------------------------------------------------------------------------
/icons/ic_spa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_spa.png
--------------------------------------------------------------------------------
/icons/ic_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_up.png
--------------------------------------------------------------------------------
/icons/ledger.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ledger.png
--------------------------------------------------------------------------------
/icons/prompt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/prompt.png
--------------------------------------------------------------------------------
/icons/qrcode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/qrcode.png
--------------------------------------------------------------------------------
/icons/right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/right.png
--------------------------------------------------------------------------------
/icons/trezor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/trezor.png
--------------------------------------------------------------------------------
/icons/unlock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/unlock.png
--------------------------------------------------------------------------------
/icons/unpaid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/unpaid.png
--------------------------------------------------------------------------------
/icons/warn1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/warn1.png
--------------------------------------------------------------------------------
/icons/warn2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/warn2.png
--------------------------------------------------------------------------------
/icons/confirmed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/confirmed.png
--------------------------------------------------------------------------------
/icons/drop_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/drop_down.png
--------------------------------------------------------------------------------
/icons/electrum.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/electrum.ico
--------------------------------------------------------------------------------
/icons/electrum.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/electrum.png
--------------------------------------------------------------------------------
/icons/expired.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/expired.png
--------------------------------------------------------------------------------
/icons/ic_clear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_clear.png
--------------------------------------------------------------------------------
/icons/ic_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_down.png
--------------------------------------------------------------------------------
/icons/ic_folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_folder.png
--------------------------------------------------------------------------------
/icons/ic_remove.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_remove.png
--------------------------------------------------------------------------------
/icons/ic_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_search.png
--------------------------------------------------------------------------------
/icons/keepkey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/keepkey.png
--------------------------------------------------------------------------------
/icons/last_page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/last_page.png
--------------------------------------------------------------------------------
/icons/network.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/network.png
--------------------------------------------------------------------------------
/icons/next_page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/next_page.png
--------------------------------------------------------------------------------
/icons/options.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/options.png
--------------------------------------------------------------------------------
/icons/speaker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/speaker.png
--------------------------------------------------------------------------------
/icons/warning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/warning.png
--------------------------------------------------------------------------------
/icons/first_page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/first_page.png
--------------------------------------------------------------------------------
/icons/ic_crop_5_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_crop_5_4.png
--------------------------------------------------------------------------------
/icons/ic_qr_code.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_qr_code.png
--------------------------------------------------------------------------------
/icons/ic_query_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_query_0.png
--------------------------------------------------------------------------------
/icons/ic_settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_settings.png
--------------------------------------------------------------------------------
/icons/ic_spa_pre.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_spa_pre.png
--------------------------------------------------------------------------------
/icons/microphone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/microphone.png
--------------------------------------------------------------------------------
/icons/network_red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/network_red.png
--------------------------------------------------------------------------------
/icons/options_box.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/options_box.png
--------------------------------------------------------------------------------
/icons/options_pre.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/options_pre.png
--------------------------------------------------------------------------------
/icons/preferences.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/preferences.png
--------------------------------------------------------------------------------
/icons/trustedcoin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/trustedcoin.png
--------------------------------------------------------------------------------
/icons/unconfirmed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/unconfirmed.png
--------------------------------------------------------------------------------
/icons/first_page_pre.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/first_page_pre.png
--------------------------------------------------------------------------------
/icons/ic_clear_pre.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_clear_pre.png
--------------------------------------------------------------------------------
/icons/ic_folder_pre.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_folder_pre.png
--------------------------------------------------------------------------------
/icons/ic_lock_colse.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_lock_colse.png
--------------------------------------------------------------------------------
/icons/ic_lock_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_lock_open.png
--------------------------------------------------------------------------------
/icons/ic_qr_code_pre.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_qr_code_pre.png
--------------------------------------------------------------------------------
/icons/ic_remove_pre.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_remove_pre.png
--------------------------------------------------------------------------------
/icons/last_page_pre.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/last_page_pre.png
--------------------------------------------------------------------------------
/icons/network_green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/network_green.png
--------------------------------------------------------------------------------
/icons/network_yellow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/network_yellow.png
--------------------------------------------------------------------------------
/icons/next_page_pre.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/next_page_pre.png
--------------------------------------------------------------------------------
/icons/previous_page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/previous_page.png
--------------------------------------------------------------------------------
/icons/small_window.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/small_window.png
--------------------------------------------------------------------------------
/icons/status_lagging.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/status_lagging.png
--------------------------------------------------------------------------------
/icons/status_waiting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/status_waiting.png
--------------------------------------------------------------------------------
/lib/cryptohello_hash.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/lib/cryptohello_hash.so
--------------------------------------------------------------------------------
/icons/ic_crop_5_4_pre.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_crop_5_4_pre.png
--------------------------------------------------------------------------------
/icons/ic_library_books.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_library_books.png
--------------------------------------------------------------------------------
/icons/ic_lock_open_pre.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_lock_open_pre.png
--------------------------------------------------------------------------------
/icons/ic_settings_pre.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_settings_pre.png
--------------------------------------------------------------------------------
/icons/keepkey_unpaired.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/keepkey_unpaired.png
--------------------------------------------------------------------------------
/icons/ledger_unpaired.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ledger_unpaired.png
--------------------------------------------------------------------------------
/icons/options_box_pre.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/options_box_pre.png
--------------------------------------------------------------------------------
/icons/small_window_pre.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/small_window_pre.png
--------------------------------------------------------------------------------
/icons/status_connected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/status_connected.png
--------------------------------------------------------------------------------
/icons/trezor_unpaired.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/trezor_unpaired.png
--------------------------------------------------------------------------------
/lib/locale/zh_CN/ulord.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/lib/locale/zh_CN/ulord.mo
--------------------------------------------------------------------------------
/gui/kivy/data/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/data/background.png
--------------------------------------------------------------------------------
/icons/electrum_dark_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/electrum_dark_icon.png
--------------------------------------------------------------------------------
/icons/electrum_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/electrum_launcher.png
--------------------------------------------------------------------------------
/icons/electrum_light_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/electrum_light_icon.png
--------------------------------------------------------------------------------
/icons/ic_clear_copy_pre.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_clear_copy_pre.png
--------------------------------------------------------------------------------
/icons/ic_lock_colse_pre.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_lock_colse_pre.png
--------------------------------------------------------------------------------
/icons/previous_page_pre.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/previous_page_pre.png
--------------------------------------------------------------------------------
/icons/status_disconnected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/status_disconnected.png
--------------------------------------------------------------------------------
/gui/kivy/data/fonts/Roboto.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/data/fonts/Roboto.ttf
--------------------------------------------------------------------------------
/gui/kivy/data/glsl/default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/data/glsl/default.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/card.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/gear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/gear.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/info.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/logo.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/nfc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/nfc.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/pen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/pen.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/save.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/save.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/tab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/tab.png
--------------------------------------------------------------------------------
/icons/electrum_light_icon1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/electrum_light_icon1.png
--------------------------------------------------------------------------------
/icons/ic_library_books_pre.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/ic_library_books_pre.png
--------------------------------------------------------------------------------
/gui/kivy/data/fonts/tron/Tr2n.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/data/fonts/tron/Tr2n.ttf
--------------------------------------------------------------------------------
/gui/kivy/theming/light/btn_nfc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/btn_nfc.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/camera.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/camera.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/clock1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/clock1.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/clock2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/clock2.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/clock3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/clock3.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/clock4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/clock4.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/clock5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/clock5.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/close.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/contact.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/contact.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/dialog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/dialog.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/error.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/globe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/globe.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/network.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/network.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/qrcode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/qrcode.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/shadow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/shadow.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/tab_btn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/tab_btn.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/wallet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/wallet.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/wallets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/wallets.png
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 | build
3 | *.egg
4 | *.xml
5 | .idea/workspace.xml
6 |
7 | *.pyd
8 | *.pyc
9 | /dist
10 | /UWallet.egg-info
--------------------------------------------------------------------------------
/gui/kivy/data/fonts/Roboto-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/data/fonts/Roboto-Bold.ttf
--------------------------------------------------------------------------------
/gui/kivy/data/logo/kivy-icon-32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/data/logo/kivy-icon-32.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/bit_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/bit_logo.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/card_btn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/card_btn.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/card_top.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/card_top.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/confirmed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/confirmed.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/important.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/important.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/mail_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/mail_icon.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/nfc_clock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/nfc_clock.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/nfc_phone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/nfc_phone.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/settings.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/tab_strip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/tab_strip.png
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | sudo: false
2 | language: python
3 | python:
4 | - "2.7"
5 | install:
6 | - pip install tox
7 | script:
8 | - tox
9 |
--------------------------------------------------------------------------------
/gui/kivy/data/fonts/Roboto-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/data/fonts/Roboto-Medium.ttf
--------------------------------------------------------------------------------
/gui/kivy/data/glsl/default.fs:
--------------------------------------------------------------------------------
1 | $HEADER$
2 | void main (void){
3 | gl_FragColor = frag_color * texture2D(texture0, tex_coord0);
4 | }
5 |
--------------------------------------------------------------------------------
/gui/kivy/data/images/defaulttheme-0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/data/images/defaulttheme-0.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/action_bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/action_bar.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/add_contact.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/add_contact.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/arrow_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/arrow_back.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/btn_send_nfc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/btn_send_nfc.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/calculator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/calculator.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/card_bottom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/card_bottom.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/closebutton.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/closebutton.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/icon_border.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/icon_border.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/manualentry.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/manualentry.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/paste_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/paste_icon.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/shadow_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/shadow_right.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/stepper_full.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/stepper_full.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/stepper_left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/stepper_left.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/tab_disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/tab_disabled.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/unconfirmed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/unconfirmed.png
--------------------------------------------------------------------------------
/lib/locale/zh_CN/LC_MESSAGES/ulord.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/lib/locale/zh_CN/LC_MESSAGES/ulord.mo
--------------------------------------------------------------------------------
/gui/kivy/data/fonts/Roboto-Condensed.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/data/fonts/Roboto-Condensed.ttf
--------------------------------------------------------------------------------
/gui/kivy/theming/light/logo_atom_dull.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/logo_atom_dull.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/nfc_stage_one.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/nfc_stage_one.png
--------------------------------------------------------------------------------
/icons/electrum_android_launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/icons/electrum_android_launcher_icon.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/action_group_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/action_group_dark.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/blue_bg_round_rb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/blue_bg_round_rb.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/btn_send_address.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/btn_send_address.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/carousel_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/carousel_selected.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/contact_overlay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/contact_overlay.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/create_act_text.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/create_act_text.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/electrum_icon640.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/electrum_icon640.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/overflow_btn_dn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/overflow_btn_dn.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/star_big_inactive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/star_big_inactive.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/tab_btn_disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/tab_btn_disabled.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/tab_btn_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/tab_btn_pressed.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/textinput_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/textinput_active.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/action_button_group.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/action_button_group.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/action_group_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/action_group_light.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/btn_create_account.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/btn_create_account.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/carousel_deselected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/carousel_deselected.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/dropdown_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/dropdown_background.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/overflow_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/overflow_background.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/white_bg_round_top.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/white_bg_round_top.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/create_act_text_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/create_act_text_active.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/lightblue_bg_round_lb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/lightblue_bg_round_lb.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/stepper_restore_seed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/stepper_restore_seed.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/btn_create_act_disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/btn_create_act_disabled.png
--------------------------------------------------------------------------------
/gui/kivy/theming/light/stepper_restore_password.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/UlordChain/uwallet-client-pro/HEAD/gui/kivy/theming/light/stepper_restore_password.png
--------------------------------------------------------------------------------
/tox.ini:
--------------------------------------------------------------------------------
1 | [tox]
2 | envlist = py27
3 |
4 | [testenv]
5 | deps=
6 | pytest
7 | coverage
8 | commands=
9 | coverage run --source=lib -m py.test -v
10 | coverage report
11 |
--------------------------------------------------------------------------------
/plugins/email_requests/__init__.py:
--------------------------------------------------------------------------------
1 | from uwallet.i18n import _
2 |
3 | fullname = _('Email')
4 | description = _("Send and receive payment request with an email account")
5 | available_for = ['qt']
6 |
--------------------------------------------------------------------------------
/plugins/exchange_rate/__init__.py:
--------------------------------------------------------------------------------
1 | from uwallet.i18n import _
2 |
3 | fullname = _("Exchange rates")
4 | description = _("Exchange rates and currency conversion tools.")
5 | available_for = ['qt','kivy']
6 |
--------------------------------------------------------------------------------
/scripts/estimate_fee:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | import util, json
3 | peers = util.get_peers()
4 | results = util.send_request(peers, 'blockchain.estimatefee', [2])
5 | print json.dumps(results, indent=4)
6 |
--------------------------------------------------------------------------------
/contrib/make_apk:
--------------------------------------------------------------------------------
1 | pushd contrib
2 | VERSION=$(python -c "import versions; print versions.version_apk")
3 | popd
4 | echo $VERSION
5 | echo $VERSION > contrib/apk_version
6 | pushd ./gui/kivy/; make apk; popd
7 |
--------------------------------------------------------------------------------
/gui/kivy/data/glsl/default.vs:
--------------------------------------------------------------------------------
1 | $HEADER$
2 | void main (void) {
3 | frag_color = color * vec4(1.0, 1.0, 1.0, opacity);
4 | tex_coord0 = vTexCoords0;
5 | gl_Position = projection_mat * modelview_mat * vec4(vPosition.xy, 0.0, 1.0);
6 | }
7 |
--------------------------------------------------------------------------------
/plugins/plot/__init__.py:
--------------------------------------------------------------------------------
1 | from uwallet.i18n import _
2 |
3 | fullname = 'Plot History'
4 | description = _("Ability to plot transaction history in graphical mode.")
5 | requires = [('matplotlib', 'matplotlib')]
6 | available_for = ['qt']
7 |
--------------------------------------------------------------------------------
/plugins/greenaddress_instant/__init__.py:
--------------------------------------------------------------------------------
1 | from uwallet.i18n import _
2 |
3 | fullname = 'GreenAddress instant'
4 | description = _("Allows validating if your transactions have instant confirmations by GreenAddress")
5 | available_for = ['qt']
6 |
--------------------------------------------------------------------------------
/plugins/audio_modem/__init__.py:
--------------------------------------------------------------------------------
1 | from uwallet.i18n import _
2 |
3 | fullname = _('Audio MODEM')
4 | description = _('Provides support for air-gapped transaction signing.')
5 | requires = [('amodem', 'http://github.com/romanz/amodem/')]
6 | available_for = ['qt']
7 |
8 |
--------------------------------------------------------------------------------
/gui/kivy/data/glsl/header.fs:
--------------------------------------------------------------------------------
1 | #ifdef GL_ES
2 | precision highp float;
3 | #endif
4 |
5 | /* Outputs from the vertex shader */
6 | varying vec4 frag_color;
7 | varying vec2 tex_coord0;
8 |
9 | /* uniform texture samplers */
10 | uniform sampler2D texture0;
11 |
--------------------------------------------------------------------------------
/plugins/virtualkeyboard/__init__.py:
--------------------------------------------------------------------------------
1 | from uwallet.i18n import _
2 |
3 | fullname = 'Virtual Keyboard'
4 | description = '%s\n%s' % (_("Add an optional virtual keyboard to the password dialog."), _("Warning: do not use this if it makes you pick a weaker password."))
5 | available_for = ['qt']
6 |
--------------------------------------------------------------------------------
/gui/__init__.py:
--------------------------------------------------------------------------------
1 | # To create a new GUI, please add its code to this directory.
2 | # Three objects are passed to the ElectrumGui: config, daemon and plugins
3 | # The Wallet object is instanciated by the GUI
4 |
5 | # Notifications about network events are sent to the GUI by using network.register_callback()
6 |
--------------------------------------------------------------------------------
/plugins/ledger/__init__.py:
--------------------------------------------------------------------------------
1 | from uwallet.i18n import _
2 |
3 | fullname = 'Ledger Wallet'
4 | description = 'Provides support for Ledger hardware wallet'
5 | requires = [('btchip', 'github.com/ledgerhq/btchip-python')]
6 | registers_keystore = ('hardware', 'ledger', _("Ledger wallet"))
7 | available_for = ['qt', 'cmdline']
8 |
--------------------------------------------------------------------------------
/plugins/keepkey/__init__.py:
--------------------------------------------------------------------------------
1 | from uwallet.i18n import _
2 |
3 | fullname = 'KeepKey'
4 | description = _('Provides support for KeepKey hardware wallet')
5 | requires = [('keepkeylib','github.com/keepkey/python-keepkey')]
6 | registers_keystore = ('hardware', 'keepkey', _("KeepKey wallet"))
7 | available_for = ['qt', 'cmdline']
8 |
--------------------------------------------------------------------------------
/plugins/trezor/__init__.py:
--------------------------------------------------------------------------------
1 | from uwallet.i18n import _
2 |
3 | fullname = 'TREZOR Wallet'
4 | description = _('Provides support for TREZOR hardware wallet')
5 | requires = [('trezorlib','github.com/trezor/python-trezor')]
6 | registers_keystore = ('hardware', 'trezor', _("TREZOR wallet"))
7 | available_for = ['qt', 'cmdline']
8 |
9 |
--------------------------------------------------------------------------------
/gui/kivy/tools/bitcoin_intent.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/gui/kivy/data/fonts/tron/License.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2010-2011, Jeff Bell [www.randombell.com] | [jeffbell@randombell.com].
2 | This font may be distributed freely however must retain this document as well as the Readme.txt file.
3 | This Font Software is licensed under the SIL Open Font License, Version 1.1.
4 | This license is available with a FAQ at: http://scripts.sil.org/OFL
--------------------------------------------------------------------------------
/plugins/labels/__init__.py:
--------------------------------------------------------------------------------
1 | from uwallet.i18n import _
2 |
3 | fullname = _('LabelSync')
4 | description = ' '.join([
5 | _("Save your wallet labels on a remote server, and synchronize them across multiple devices where you use uwallet."),
6 | _("Labels, transactions IDs and addresses are encrypted before they are sent to the remote server.")
7 | ])
8 | available_for = ['qt', 'kivy']
9 |
10 |
--------------------------------------------------------------------------------
/plugins/labels/kivy.py:
--------------------------------------------------------------------------------
1 | from labels import LabelsPlugin
2 | from uwallet.plugins import hook
3 |
4 | class Plugin(LabelsPlugin):
5 |
6 | @hook
7 | def load_wallet(self, wallet, window):
8 | self.window = window
9 | self.start_wallet(wallet)
10 |
11 | def on_pulled(self, wallet):
12 | self.print_error('on pulled')
13 | self.window.update_tab('history')
14 |
15 |
--------------------------------------------------------------------------------
/plugins/trezor/qt.py:
--------------------------------------------------------------------------------
1 | from ..trezor.qt_generic import QtPlugin
2 | from trezor import TrezorPlugin
3 |
4 |
5 | class Plugin(TrezorPlugin, QtPlugin):
6 | icon_unpaired = ":icons/trezor_unpaired.png"
7 | icon_paired = ":icons/trezor.png"
8 |
9 | @classmethod
10 | def pin_matrix_widget_class(self):
11 | from trezorlib.qt.pinmatrix import PinMatrixWidget
12 | return PinMatrixWidget
13 |
--------------------------------------------------------------------------------
/plugins/keepkey/qt.py:
--------------------------------------------------------------------------------
1 | from ..trezor.qt_generic import QtPlugin
2 | from keepkey import KeepKeyPlugin
3 |
4 |
5 | class Plugin(KeepKeyPlugin, QtPlugin):
6 | icon_paired = ":icons/keepkey.png"
7 | icon_unpaired = ":icons/keepkey_unpaired.png"
8 |
9 | @classmethod
10 | def pin_matrix_widget_class(self):
11 | from keepkeylib.qt.pinmatrix import PinMatrixWidget
12 | return PinMatrixWidget
13 |
--------------------------------------------------------------------------------
/scripts/get_history:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 |
3 | import sys
4 | from uwallet import Network
5 | from uwallet.util import json_encode, print_msg
6 |
7 | try:
8 | addr = sys.argv[1]
9 | except Exception:
10 | print "usage: get_history "
11 | sys.exit(1)
12 |
13 | n = Network()
14 | n.start()
15 | h = n.synchronous_get(('blockchain.address.get_history',[addr]))
16 | print_msg(json_encode(h))
17 |
--------------------------------------------------------------------------------
/plugins/cosigner_pool/__init__.py:
--------------------------------------------------------------------------------
1 | from uwallet.i18n import _
2 | fullname = _('Cosigner Pool')
3 | description = ' '.join([
4 | _("This plugin facilitates the use of multi-signatures wallets."),
5 | _("It sends and receives partially signed transactions from/to your cosigner wallet."),
6 | _("Transactions are encrypted and stored on a remote server.")
7 | ])
8 | #requires_wallet_type = ['2of2', '2of3']
9 | available_for = ['qt']
10 |
--------------------------------------------------------------------------------
/MANIFEST.in:
--------------------------------------------------------------------------------
1 | include LICENCE RELEASE-NOTES AUTHORS
2 | include README.rst
3 | include uwallet.conf.sample
4 | include uwallet.desktop
5 | include *.py
6 | include uwallet
7 | recursive-include lib *.py
8 | recursive-include gui *.py
9 | recursive-include plugins *.py
10 | recursive-include packages *.py
11 | recursive-include packages cacert.pem
12 | include app.fil
13 | include icons.qrc
14 | recursive-include icons *
15 | recursive-include scripts *
16 |
17 |
--------------------------------------------------------------------------------
/contrib/sign_packages:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python2
2 |
3 | import sys, re, shutil, os, hashlib
4 | import imp
5 | import getpass
6 |
7 | if __name__ == '__main__':
8 |
9 | os.chdir("dist")
10 | password = getpass.getpass("Password:")
11 | for f in os.listdir('.'):
12 | if f.endswith('asc'):
13 | continue
14 | os.system( "gpg --sign --armor --detach --passphrase \"%s\" %s"%(password, f) )
15 |
16 | os.chdir("..")
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/gui/kivy/data/glsl/header.vs:
--------------------------------------------------------------------------------
1 | #ifdef GL_ES
2 | precision highp float;
3 | #endif
4 |
5 | /* Outputs to the fragment shader */
6 | varying vec4 frag_color;
7 | varying vec2 tex_coord0;
8 |
9 | /* vertex attributes */
10 | attribute vec2 vPosition;
11 | attribute vec2 vTexCoords0;
12 |
13 | /* uniform variables */
14 | uniform mat4 modelview_mat;
15 | uniform mat4 projection_mat;
16 | uniform vec4 color;
17 | uniform float opacity;
18 |
--------------------------------------------------------------------------------
/plugins/trustedcoin/__init__.py:
--------------------------------------------------------------------------------
1 | from uwallet.i18n import _
2 |
3 | fullname = _('Two Factor Authentication')
4 | description = ''.join([
5 | _("This plugin adds two-factor authentication to your wallet."), '
',
6 | _("For more information, visit"),
7 | " https://api.trustedcoin.com/#/uwallet-help"
8 | ])
9 | requires_wallet_type = ['2fa']
10 | registers_wallet_type = '2fa'
11 | available_for = ['qt']
12 |
--------------------------------------------------------------------------------
/uwallet.conf.sample:
--------------------------------------------------------------------------------
1 | # Configuration file for the electrum client
2 | # Settings defined here are shared across wallets
3 | #
4 | # copy this file to /etc/electrum.conf if you want read-only settings
5 |
6 | [client]
7 | server = electrum.novit.ro:50001:t
8 | proxy = None
9 | gap_limit = 5
10 | # booleans use python syntax
11 | use_change = True
12 | gui = qt
13 | num_zeros = 2
14 | # default transaction fee is in Satoshis
15 | fee = 10000
16 | winpos-qt = [799, 226, 877, 435]
17 |
--------------------------------------------------------------------------------
/plugins/trezor/client.py:
--------------------------------------------------------------------------------
1 | from trezorlib.client import proto, BaseClient, ProtocolMixin
2 | from clientbase import TrezorClientBase
3 |
4 | class TrezorClient(TrezorClientBase, ProtocolMixin, BaseClient):
5 | def __init__(self, transport, handler, plugin):
6 | BaseClient.__init__(self, transport)
7 | ProtocolMixin.__init__(self, transport)
8 | TrezorClientBase.__init__(self, handler, plugin, proto)
9 |
10 |
11 | TrezorClientBase.wrap_methods(TrezorClient)
12 |
--------------------------------------------------------------------------------
/lib/www/example.php:
--------------------------------------------------------------------------------
1 | Wallet balance
'."\n";
7 | try {
8 |
9 | $balance = $electrum->getbalance();
10 | echo 'confirmed: '.$balance['confirmed'].'
'."\n";
11 | echo 'unconfirmed: '.$balance['unconfirmed'].'
'."\n";
12 |
13 | } catch (Exception $e) {
14 | echo nl2br($e->getMessage()).'
'."\n";
15 | }
16 |
17 | ?>
18 |
--------------------------------------------------------------------------------
/scripts/txradar:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | import util, sys
3 | try:
4 | tx = sys.argv[1]
5 | except:
6 | print "usage: txradar txid"
7 | sys.exit(1)
8 |
9 | peers = util.get_peers()
10 | results = util.send_request(peers, 'blockchain.transaction.get', [tx])
11 |
12 | r1 = []
13 | r2 = []
14 |
15 | for k, v in results.items():
16 | (r1 if v else r2).append(k)
17 |
18 | print "Received %d answers"%len(results)
19 | print "Propagation rate: %.1f percent" % (len(r1) *100./(len(r1)+ len(r2)))
20 |
--------------------------------------------------------------------------------
/contrib/build-wine/portable.patch:
--------------------------------------------------------------------------------
1 | diff --git a/electrum b/electrum
2 | index 8c972c6..46903b7 100755
3 | --- a/electrum
4 | +++ b/electrum
5 | @@ -454,6 +454,8 @@ if __name__ == '__main__':
6 | if config_options.get('server'):
7 | config_options['auto_connect'] = False
8 |
9 | + config_options['portable'] = True
10 | +
11 | if config_options.get('portable'):
12 | config_options['electrum_path'] = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'electrum_data')
13 |
14 |
--------------------------------------------------------------------------------
/uwallet.desktop:
--------------------------------------------------------------------------------
1 | # If you want electrum to appear in a linux app launcher ("start menu"), install this by doing:
2 | # sudo desktop-file-install electrum.desktop
3 |
4 | [Desktop Entry]
5 | Comment=Lightweight Bitcoin Client
6 | Exec=electrum %u
7 | GenericName[en_US]=Electrum
8 | GenericName=Electrum
9 | Icon=electrum
10 | Name[en_US]=Electrum Bitcoin Wallet
11 | Name=Electrum Bitcoin Wallet
12 | Categories=Network;
13 | StartupNotify=false
14 | Terminal=false
15 | Type=Application
16 | MimeType=x-scheme-handler/bitcoin;
17 |
18 |
--------------------------------------------------------------------------------
/AUTHORS:
--------------------------------------------------------------------------------
1 | ThomasV - Creator and maintainer.
2 | Animazing / Tachikoma - Styled the new GUI. Mac version.
3 | Azelphur - GUI stuff.
4 | Coblee - Alternate coin support and py2app support.
5 | Deafboy - Ubuntu packages.
6 | EagleTM - Bugfixes.
7 | ErebusBat - Mac distribution.
8 | Genjix - Porting pro-mode functionality to lite-gui and worked on server
9 | Slush - Work on the server. Designed the original Stratum spec.
10 | Julian Toash (Tuxavant) - Various fixes to the client.
11 | rdymac - Website and translations.
12 | kyuupichan - Miscellaneous.
--------------------------------------------------------------------------------
/plugins/ledger/cmdline.py:
--------------------------------------------------------------------------------
1 | from legder import LedgerPlugin
2 | from uwallet.util import print_msg
3 |
4 | class BTChipCmdLineHandler:
5 | def stop(self):
6 | pass
7 |
8 | def show_message(self, msg):
9 | print_msg(msg)
10 |
11 | def prompt_auth(self, msg):
12 | import getpass
13 | print_msg(msg)
14 | response = getpass.getpass('')
15 | if len(response) == 0:
16 | return None
17 | return response
18 |
19 | class Plugin(LedgerPlugin):
20 | handler = BTChipCmdLineHandler()
21 |
--------------------------------------------------------------------------------
/plugins/keepkey/client.py:
--------------------------------------------------------------------------------
1 | from keepkeylib.client import proto, BaseClient, ProtocolMixin
2 | from ..trezor.clientbase import TrezorClientBase
3 |
4 | class KeepKeyClient(TrezorClientBase, ProtocolMixin, BaseClient):
5 | def __init__(self, transport, handler, plugin):
6 | BaseClient.__init__(self, transport)
7 | ProtocolMixin.__init__(self, transport)
8 | TrezorClientBase.__init__(self, handler, plugin, proto)
9 |
10 | def recovery_device(self, *args):
11 | ProtocolMixin.recovery_device(self, False, *args)
12 |
13 |
14 | TrezorClientBase.wrap_methods(KeepKeyClient)
15 |
--------------------------------------------------------------------------------
/lib/version.py:
--------------------------------------------------------------------------------
1 | UWallet_VERSION = '1.0.6' # version of the client package
2 | PROTOCOL_VERSION = '0.10' # protocol version requested
3 |
4 | OLD_SEED_VERSION = 4 # electrum versions < 2.0
5 | NEW_SEED_VERSION = 11 # electrum versions >= 2.0
6 | FINAL_SEED_VERSION = 12 # electrum >= 2.7 will set this to prevent
7 | # old versions from overwriting new format
8 |
9 |
10 | # The hash of the mnemonic seed must begin with this
11 | SEED_PREFIX = '01' # Electrum standard wallet
12 | SEED_PREFIX_2FA = '101' # extended seed for two-factor authentication
13 |
--------------------------------------------------------------------------------
/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleURLTypes
6 |
7 |
8 | CFBundleURLName
9 | bitcoin
10 | CFBundleURLSchemes
11 |
12 | bitcoin
13 |
14 |
15 |
16 | LSArchitecturePriority
17 |
18 | x86_64
19 | i386
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/gui/kivy/Readme.rst:
--------------------------------------------------------------------------------
1 | Getting start
2 | ===============
3 | Before compiling, create packages: `contrib/make_packages`
4 |
5 | Commands::
6 |
7 | `make theming` to make a atlas out of a list of pngs
8 |
9 | `make apk` to make a apk
10 |
11 |
12 | If modules included by the project are changed, like kivy or any other modules, rebuilding is needed:
13 |
14 | rm -rf .buildozer/android/platform/python-for-android/dist
15 |
16 |
17 | Notes:
18 |
19 |
20 | To use internal storage, python-for-android must be patched with:
21 |
22 | git pull git@github.com:denys-duchier/python-for-android.git fix-recursive-delete
23 |
--------------------------------------------------------------------------------
/lib/__init__.py:
--------------------------------------------------------------------------------
1 | from version import UWallet_VERSION
2 | from util import format_satoshis, print_msg, print_error, set_verbosity
3 | from wallet import Synchronizer, WalletStorage, Wallet, Imported_Wallet
4 | from coinchooser import COIN_CHOOSERS
5 | from network import Network, DEFAULT_SERVERS, DEFAULT_PORTS, pick_random_server
6 | from interface import Connection, Interface
7 | from simple_config import SimpleConfig, get_config, set_config
8 | import bitcoin
9 | import transaction
10 | from transaction import Transaction
11 | from plugins import BasePlugin
12 | from commands import Commands, known_commands
13 | from serialize import *
14 | from privatekey import BitcoinPrivateKey
--------------------------------------------------------------------------------
/scripts/servers:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 |
3 | from uwallet import SimpleConfig, set_verbosity
4 | from uwallet.network import filter_protocol
5 | import time, Queue
6 | from collections import defaultdict
7 |
8 | import util, json
9 | set_verbosity(False)
10 |
11 | config = SimpleConfig()
12 | servers = filter_protocol(protocol = 't')
13 | results = util.send_request(servers, 'blockchain.headers.subscribe', [])
14 |
15 | d = defaultdict(int)
16 |
17 | for k, r in results.items():
18 | blocks = r.get('block_height')
19 | d[blocks] += 1
20 |
21 |
22 |
23 | for k, v in results.items():
24 | print k, v.get('block_height')
25 |
26 | v = d.values()
27 | numblocks = d.keys()[v.index(max(v))]
28 | print "blocks:",numblocks
29 |
--------------------------------------------------------------------------------
/plugins/keepkey/cmdline.py:
--------------------------------------------------------------------------------
1 | from keepkey import KeepKeyPlugin
2 | from uwallet.util import print_msg
3 |
4 | class KeepKeyCmdLineHandler:
5 |
6 | def get_passphrase(self, msg, confirm):
7 | import getpass
8 | print_msg(msg)
9 | return getpass.getpass('')
10 |
11 | def get_pin(self, msg):
12 | t = { 'a':'7', 'b':'8', 'c':'9', 'd':'4', 'e':'5', 'f':'6', 'g':'1', 'h':'2', 'i':'3'}
13 | print_msg(msg)
14 | print_msg("a b c\nd e f\ng h i\n-----")
15 | o = raw_input()
16 | return ''.join(map(lambda x: t[x], o))
17 |
18 | def stop(self):
19 | pass
20 |
21 | def show_message(self, msg):
22 | print_msg(msg)
23 |
24 | class Plugin(KeepKeyPlugin):
25 | handler = KeepKeyCmdLineHandler()
26 |
--------------------------------------------------------------------------------
/plugins/trezor/cmdline.py:
--------------------------------------------------------------------------------
1 | from trezor import TrezorPlugin
2 | from uwallet.util import print_msg
3 |
4 | class TrezorCmdLineHandler:
5 |
6 | def get_passphrase(self, msg, confirm):
7 | import getpass
8 | print_msg(msg)
9 | return getpass.getpass('')
10 |
11 | def get_pin(self, msg):
12 | t = { 'a':'7', 'b':'8', 'c':'9', 'd':'4', 'e':'5', 'f':'6', 'g':'1', 'h':'2', 'i':'3'}
13 | print_msg(msg)
14 | print_msg("a b c\nd e f\ng h i\n-----")
15 | o = raw_input()
16 | return ''.join(map(lambda x: t[x], o))
17 |
18 | def stop(self):
19 | pass
20 |
21 | def show_message(self, msg):
22 | print_msg(msg)
23 |
24 |
25 | class Plugin(TrezorPlugin):
26 | handler = TrezorCmdLineHandler()
27 |
--------------------------------------------------------------------------------
/uwallet-env:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # This script creates a virtualenv named 'env' and installs all
4 | # python dependencies before activating the env and running Electrum.
5 | # If 'env' already exists, it is activated and Electrum is started
6 | # without any installations. Additionally, the PYTHONPATH environment
7 | # variable is set properly before running Electrum.
8 | #
9 | # python-qt and its dependencies will still need to be installed with
10 | # your package manager.
11 |
12 | if [ -e ./env/bin/activate ]; then
13 | source ./env/bin/activate
14 | else
15 | virtualenv env
16 | source ./env/bin/activate
17 | python setup.py install
18 | fi
19 |
20 | export PYTHONPATH="/usr/local/lib/python2.7/site-packages:$PYTHONPATH"
21 |
22 | ./electrum "$@"
23 |
24 | deactivate
25 |
--------------------------------------------------------------------------------
/scripts/block_headers:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 |
3 | # A simple script that connects to a server and displays block headers
4 |
5 | import time
6 | from uwallet import SimpleConfig, Network
7 | from uwallet.util import print_msg, json_encode
8 |
9 | # start network
10 | c = SimpleConfig()
11 | network = Network(c)
12 | network.start()
13 |
14 | # wait until connected
15 | while network.is_connecting():
16 | time.sleep(0.1)
17 |
18 | if not network.is_connected():
19 | print_msg("daemon is not connected")
20 | sys.exit(1)
21 |
22 | # 2. send the subscription
23 | callback = lambda response: print_msg(json_encode(response.get('result')))
24 | network.send([('blockchain.headers.subscribe',[])], callback)
25 |
26 | # 3. wait for results
27 | while network.is_connected():
28 | time.sleep(1)
29 |
--------------------------------------------------------------------------------
/UpdateAppClient_install.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | # @Author : Shu
3 | # @Email : httpservlet@yeah.net
4 | # @Date : 2017/12/27
5 | # @Description : 打包python项目为exe
6 |
7 | # coding=utf-8
8 |
9 |
10 | # http://www.cnblogs.com/dcb3688/p/4211390.html
11 | if __name__ == '__main__':
12 | from PyInstaller.__main__ import run
13 |
14 | # -w 纯窗口程序, 不带命令窗口
15 | # --icon 可执行文件图标
16 | # --version-file 可执行文件的文件信息
17 | # --upx-dir upx加壳压缩(需要单独下载upx), 放到此文件同目录下会自动找到upx.exe(都不需要专门注明此参数)
18 | # -y 打包生成的文件直接覆盖上一次生成
19 | # --add-data: 添加数据文件. 格式为 源;目标
20 | #params = ['-y', '-n=UlordWallet', 'deterministic.spec']
21 | #run(params)
22 |
23 | #params = ['-y', '-n=uwallet', 'deterministic.spec']
24 | params = ['UpdateAppClient.py','--icon=uwallet.ico','--hidden-import=queue','-w','-y']
25 | run(params)
26 | #qt5.11
--------------------------------------------------------------------------------
/progressbar_pyinstaller.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | # @Author : Shu
3 | # @Email : httpservlet@yeah.net
4 | # @Date : 2017/12/27
5 | # @Description : 打包python项目为exe
6 |
7 | # coding=utf-8
8 |
9 |
10 | # http://www.cnblogs.com/dcb3688/p/4211390.html
11 | if __name__ == '__main__':
12 | from PyInstaller.__main__ import run
13 |
14 | # -w 纯窗口程序, 不带命令窗口
15 | # --icon 可执行文件图标
16 | # --version-file 可执行文件的文件信息
17 | # --upx-dir upx加壳压缩(需要单独下载upx), 放到此文件同目录下会自动找到upx.exe(都不需要专门注明此参数)
18 | # -y 打包生成的文件直接覆盖上一次生成
19 | # --add-data: 添加数据文件. 格式为 源;目标
20 | #params = ['-y', '-n=UlordWallet', 'deterministic.spec']
21 | #run(params)
22 |
23 | #params = ['-y', '-n=uwallet', 'deterministic.spec']
24 | params = ['progressbarWindow.py','--icon=uwallet.ico','--hidden-import=queue','-w','-y']
25 | run(params)
26 | #qt5.11
--------------------------------------------------------------------------------
/app.fil:
--------------------------------------------------------------------------------
1 | gui/qt/__init__.py
2 | gui/qt/main_window.py
3 | gui/qt/history_list.py
4 | gui/qt/contact_list.py
5 | gui/qt/invoice_list.py
6 | gui/qt/request_list.py
7 | gui/qt/installwizard.py
8 | gui/qt/network_dialog.py
9 | gui/qt/password_dialog.py
10 | gui/qt/util.py
11 | gui/qt/seed_dialog.py
12 | gui/qt/transaction_dialog.py
13 | gui/qt/address_dialog.py
14 | gui/qt/qrcodewidget.py
15 | gui/qt/qrtextedit.py
16 | gui/qt/qrwindow.py
17 | gui/kivy/main.kv
18 | gui/kivy/main_window.py
19 | gui/kivy/uix/dialogs/__init__.py
20 | gui/kivy/uix/dialogs/fee_dialog.py
21 | gui/kivy/uix/dialogs/installwizard.py
22 | gui/kivy/uix/dialogs/settings.py
23 | gui/kivy/uix/dialogs/wallets.py
24 | gui/kivy/uix/ui_screens/history.kv
25 | gui/kivy/uix/ui_screens/receive.kv
26 | gui/kivy/uix/ui_screens/send.kv
27 | plugins/labels/qt.py
28 | plugins/trezor/qt.py
29 | plugins/virtualkeyboard/qt.py
30 |
--------------------------------------------------------------------------------
/uwallet_pyinstaller.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | # @Author : Shu
3 | # @Email : httpservlet@yeah.net
4 | # @Date : 2017/12/27
5 | # @Description : 打包python项目为exe
6 |
7 | # coding=utf-8
8 |
9 |
10 | # http://www.cnblogs.com/dcb3688/p/4211390.html
11 | if __name__ == '__main__':
12 | from PyInstaller.__main__ import run
13 |
14 | # -w 纯窗口程序, 不带命令窗口
15 | # --icon 可执行文件图标
16 | # --version-file 可执行文件的文件信息
17 | # --upx-dir upx加壳压缩(需要单独下载upx), 放到此文件同目录下会自动找到upx.exe(都不需要专门注明此参数)
18 | # -y 打包生成的文件直接覆盖上一次生成
19 | # --add-data: 添加数据文件. 格式为 源;目标
20 | #params = ['-y', '-n=UlordWallet', 'deterministic.spec']
21 | #run(params)
22 |
23 | #params = ['-y', '-n=uwallet', 'deterministic.spec']
24 | params = ['uwallet','--icon=uwallet.ico','--hidden-import=queue','-w','--version-file=version','-y']
25 | run(params)
26 | #qt5.11
--------------------------------------------------------------------------------
/scripts/watch_address:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 |
3 | import sys
4 | import time
5 | from uwallet import SimpleConfig, Network
6 | from uwallet.util import print_msg, json_encode
7 |
8 | try:
9 | addr = sys.argv[1]
10 | except Exception:
11 | print "usage: watch_address "
12 | sys.exit(1)
13 |
14 | # start network
15 | c = SimpleConfig()
16 | network = Network(c)
17 | network.start()
18 |
19 | # wait until connected
20 | while network.is_connecting():
21 | time.sleep(0.1)
22 |
23 | if not network.is_connected():
24 | print_msg("daemon is not connected")
25 | sys.exit(1)
26 |
27 | # 2. send the subscription
28 | callback = lambda response: print_msg(json_encode(response.get('result')))
29 | network.send([('blockchain.address.subscribe',[addr])], callback)
30 |
31 | # 3. wait for results
32 | while network.is_connected():
33 | time.sleep(1)
34 |
--------------------------------------------------------------------------------
/contrib/build-wine/README.rst:
--------------------------------------------------------------------------------
1 | Getting start
2 | ===============
3 | These scripts can be used for cross-compilation of Windows Electrum executables from Linux/Wine.
4 |
5 | Usage:
6 |
7 | ::
8 |
9 | 1. Install Wine (tested with wine-1.7.18)
10 |
11 | 2. Run "./prepare-wine.sh", it will download all dependencies. When you'll be asked, always leave default settings and press "Next >".
12 |
13 | 3. Run "./prepare-hw.sh" to build support for hardware wallets (TREZOR)
14 |
15 | 4. Run "./build-electrum-git.sh". Sources will be packed into three separate versions to dist/ directory:
16 | * Standalone compressed executable is "dist/electrum.exe"
17 | * Uncompressed binaries are in "dist/electrum". They're useful for comparsion with other builds.
18 | * NSIS-based installer of Electrum is "electrum-setup.exe"
19 |
20 | 5. Everytime you want to rebuild new version of Electrum just change the path to ZIP file in "build-electrum.sh" and re-run the script.
21 |
--------------------------------------------------------------------------------
/gui/kivy/Makefile:
--------------------------------------------------------------------------------
1 | PYTHON = python
2 |
3 | # needs kivy installed or in PYTHONPATH
4 |
5 | .PHONY: theming apk clean
6 |
7 | theming:
8 | $(PYTHON) -m kivy.atlas theming/light 1024 theming/light/*.png
9 | prepare:
10 | # running pre build setup
11 | @cp tools/buildozer.spec ../../buildozer.spec
12 | # copy electrum to main.py
13 | @cp ../../electrum ../../main.py
14 | @-if [ ! -d "../../.buildozer" ];then \
15 | cd ../..; buildozer android debug;\
16 | cp -f gui/kivy/tools/blacklist.txt .buildozer/android/platform/python-for-android/src/blacklist.txt;\
17 | rm -rf ./.buildozer/android/platform/python-for-android/dist;\
18 | fi
19 | apk:
20 | @make prepare
21 | @-cd ../..; buildozer android_new debug deploy run
22 | @make clean
23 | release:
24 | @make prepare
25 | @-cd ../..; buildozer android_new release
26 | @make clean
27 | clean:
28 | # Cleaning up
29 | # rename main.py to electrum
30 | @-rm ../../main.py
31 | # remove buildozer.spec
32 | @-rm ../../buildozer.spec
33 |
--------------------------------------------------------------------------------
/process.dat:
--------------------------------------------------------------------------------
1 | 1/1
--------------------------------------------------------------------------------
/c.spec:
--------------------------------------------------------------------------------
1 | # -*- mode: python -*-
2 |
3 | block_cipher = None
4 |
5 |
6 | a = Analysis(['c', 'uwallet'],
7 | pathex=['F:\\MyProject\\Ulord\\uwallet-client-pro'],
8 | binaries=[],
9 | datas=[],
10 | hiddenimports=['queue'],
11 | hookspath=[],
12 | runtime_hooks=[],
13 | excludes=[],
14 | win_no_prefer_redirects=False,
15 | win_private_assemblies=False,
16 | cipher=block_cipher)
17 | pyz = PYZ(a.pure, a.zipped_data,
18 | cipher=block_cipher)
19 | exe = EXE(pyz,
20 | a.scripts,
21 | exclude_binaries=True,
22 | name='c',
23 | debug=True,
24 | strip=False,
25 | upx=False,
26 | console=True , icon='Uwallet.ico')
27 | coll = COLLECT(exe,
28 | a.binaries,
29 | a.zipfiles,
30 | a.datas,
31 | strip=False,
32 | upx=False,
33 | name='c')
34 |
--------------------------------------------------------------------------------
/progressbarWindow.spec:
--------------------------------------------------------------------------------
1 | # -*- mode: python -*-
2 |
3 | block_cipher = None
4 |
5 |
6 | a = Analysis(['progressbarWindow.py'],
7 | pathex=['C:\\Work\\uwallet-client-pro'],
8 | binaries=[],
9 | datas=[],
10 | hiddenimports=['queue'],
11 | hookspath=[],
12 | runtime_hooks=[],
13 | excludes=[],
14 | win_no_prefer_redirects=False,
15 | win_private_assemblies=False,
16 | cipher=block_cipher)
17 | pyz = PYZ(a.pure, a.zipped_data,
18 | cipher=block_cipher)
19 | exe = EXE(pyz,
20 | a.scripts,
21 | exclude_binaries=True,
22 | name='progressbarWindow',
23 | debug=False,
24 | strip=False,
25 | upx=True,
26 | console=False , icon='uwallet.ico')
27 | coll = COLLECT(exe,
28 | a.binaries,
29 | a.zipfiles,
30 | a.datas,
31 | strip=False,
32 | upx=True,
33 | name='progressbarWindow')
34 |
--------------------------------------------------------------------------------
/UpdateAppClient.spec:
--------------------------------------------------------------------------------
1 | # -*- mode: python -*-
2 |
3 | block_cipher = None
4 |
5 |
6 | a = Analysis(['UpdateAppClient.py'],
7 | pathex=['F:\\MyProject\\Ulord\\uwallet-client-pro'],
8 | binaries=[],
9 | datas=[],
10 | hiddenimports=['queue'],
11 | hookspath=[],
12 | runtime_hooks=[],
13 | excludes=[],
14 | win_no_prefer_redirects=False,
15 | win_private_assemblies=False,
16 | cipher=block_cipher)
17 | pyz = PYZ(a.pure, a.zipped_data,
18 | cipher=block_cipher)
19 | exe = EXE(pyz,
20 | a.scripts,
21 | exclude_binaries=True,
22 | name='UpdateAppClient',
23 | debug=False,
24 | strip=False,
25 | upx=True,
26 | console=False , icon='uwallet.ico')
27 | coll = COLLECT(exe,
28 | a.binaries,
29 | a.zipfiles,
30 | a.datas,
31 | strip=False,
32 | upx=True,
33 | name='UpdateAppClient')
34 |
--------------------------------------------------------------------------------
/plugins/ledger/qt.py:
--------------------------------------------------------------------------------
1 | import threading
2 |
3 | from PyQt4.Qt import (QDialog, QInputDialog, QLineEdit,
4 | QVBoxLayout, QLabel, SIGNAL)
5 | import PyQt4.QtCore as QtCore
6 |
7 | from uwallet.i18n import _
8 | from .ledger import LedgerPlugin
9 | from ..hw_wallet.qt import QtHandlerBase, QtPluginBase
10 | from uwallet_gui.qt.util import *
11 |
12 |
13 | class Plugin(LedgerPlugin, QtPluginBase):
14 | icon_unpaired = ":icons/ledger_unpaired.png"
15 | icon_paired = ":icons/ledger.png"
16 |
17 | def create_handler(self, window):
18 | return Ledger_Handler(window)
19 |
20 |
21 | class Ledger_Handler(QtHandlerBase):
22 |
23 | def __init__(self, win):
24 | super(Ledger_Handler, self).__init__(win, 'Ledger')
25 |
26 | def word_dialog(self, msg):
27 | response = QInputDialog.getText(self.top_level_window(), "Ledger Wallet Authentication", msg, QLineEdit.Password)
28 | if not response[1]:
29 | self.word = None
30 | else:
31 | self.word = str(response[0])
32 | self.done.set()
33 |
--------------------------------------------------------------------------------
/LICENCE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining
4 | a copy of this software and associated documentation files (the
5 | "Software"), to deal in the Software without restriction, including
6 | without limitation the rights to use, copy, modify, merge, publish,
7 | distribute, sublicense, and/or sell copies of the Software, and to
8 | permit persons to whom the Software is furnished to do so, subject to
9 | the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be
12 | included in all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/uwallet.spec:
--------------------------------------------------------------------------------
1 | # -*- mode: python -*-
2 |
3 | block_cipher = None
4 |
5 |
6 | a = Analysis(['uwallet'],
7 | pathex=['D:\\Work\\uwallet-client-pro'],
8 | binaries=[],
9 | datas=[],
10 | hiddenimports=['queue'],
11 | hookspath=[],
12 | runtime_hooks=[],
13 | excludes=[],
14 | win_no_prefer_redirects=False,
15 | win_private_assemblies=False,
16 | cipher=block_cipher,
17 | noarchive=False)
18 | pyz = PYZ(a.pure, a.zipped_data,
19 | cipher=block_cipher)
20 | exe = EXE(pyz,
21 | a.scripts,
22 | [],
23 | exclude_binaries=True,
24 | name='uwallet',
25 | debug=False,
26 | bootloader_ignore_signals=False,
27 | strip=False,
28 | upx=True,
29 | console=False , version='version', icon='uwallet.ico')
30 | coll = COLLECT(exe,
31 | a.binaries,
32 | a.zipfiles,
33 | a.datas,
34 | strip=False,
35 | upx=True,
36 | name='uwallet')
37 |
--------------------------------------------------------------------------------
/gui/kivy/uix/dialogs/nfc_transaction.py:
--------------------------------------------------------------------------------
1 | class NFCTransactionDialog(AnimatedPopup):
2 |
3 | mode = OptionProperty('send', options=('send','receive'))
4 |
5 | scanner = ObjectProperty(None)
6 |
7 | def __init__(self, **kwargs):
8 | # Delayed Init
9 | global NFCSCanner
10 | if NFCSCanner is None:
11 | from uwallet_gui.kivy.nfc_scanner import NFCScanner
12 | self.scanner = NFCSCanner
13 |
14 | super(NFCTransactionDialog, self).__init__(**kwargs)
15 | self.scanner.nfc_init()
16 | self.scanner.bind()
17 |
18 | def on_parent(self, instance, value):
19 | sctr = self.ids.sctr
20 | if value:
21 | def _cmp(*l):
22 | anim = Animation(rotation=2, scale=1, opacity=1)
23 | anim.start(sctr)
24 | anim.bind(on_complete=_start)
25 |
26 | def _start(*l):
27 | anim = Animation(rotation=350, scale=2, opacity=0)
28 | anim.start(sctr)
29 | anim.bind(on_complete=_cmp)
30 | _start()
31 | return
32 | Animation.cancel_all(sctr)
--------------------------------------------------------------------------------
/gui/kivy/data/fonts/tron/Readme.txt:
--------------------------------------------------------------------------------
1 | TR2N v1.3
2 |
3 | ABOUT THE FONT:
4 | A font based upon the poster text for TRON LEGACY.
5 |
6 | The font is different from the pre-existing TRON font currently on the web. Similar in minor aspects but different in most. Style based upon text from different region posters.
7 |
8 | UPDATE HISTORY:
9 | 3/7/11 - Adjusted the letter B (both lowercase and uppercase), capped off the ends of T, P and R, added a few more punctuation marks, as well as added the TR and TP ligature to allow for the solid bar connect as in the poster art.
10 |
11 | 1/22/11 - Made minor corrections to all previous letters and punctuation. Corrected issue with number 8's top filling in.
12 |
13 | ABOUT THE AUTHOR:
14 | Jeff Bell has produced fonts before, but this is the first one in over 10 years. His original 3 fonts were under the name DJ-JOHNNYRKA and include "CASPER", "BEVERLY HILLS COP", "THE GODFATHER" and "FIDDUMS FAMILY".
15 |
16 | For more information on Jeff Bell and his work can be found online:
17 |
18 | www.randombell.com
19 | www.damovieman.deviantart.com
20 | http://www.imdb.com/name/nm3983081/
21 | http://www.vimeo.com/user4004969/videos
--------------------------------------------------------------------------------
/scripts/bip70:
--------------------------------------------------------------------------------
1 | # create a BIP70 payment request signed with a certificate
2 |
3 | import tlslite
4 | import time
5 | import hashlib
6 |
7 | from uwallet.transaction import Transaction
8 | from uwallet import bitcoin
9 | from uwallet import x509
10 | from uwallet import paymentrequest
11 | from uwallet import paymentrequest_pb2 as pb2
12 |
13 | chain_file = 'mychain.pem'
14 | cert_file = 'mycert.pem'
15 | amount = 1000000
16 | address = "18U5kpCAU4s8weFF8Ps5n8HAfpdUjDVF64"
17 | memo = "blah"
18 | out_file = "payreq"
19 |
20 |
21 | with open(chain_file, 'r') as f:
22 | chain = tlslite.X509CertChain()
23 | chain.parsePemList(f.read())
24 |
25 | certificates = pb2.X509Certificates()
26 | certificates.certificate.extend(map(lambda x: str(x.bytes), chain.x509List))
27 |
28 | with open(cert_file, 'r') as f:
29 | rsakey = tlslite.utils.python_rsakey.Python_RSAKey.parsePEM(f.read())
30 |
31 | script = Transaction.pay_script('address', address).decode('hex')
32 |
33 | pr_string = paymentrequest.make_payment_request(amount, script, memo, rsakey)
34 |
35 | with open(out_file,'wb') as f:
36 | f.write(pr_string)
37 |
38 | print "Payment request was written to file '%s'"%out_file
39 |
--------------------------------------------------------------------------------
/scripts/peers:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 |
3 | import util, json
4 | from collections import defaultdict
5 |
6 |
7 | def analyze(results):
8 | out = {}
9 | dd = {}
10 | for k, v in results.items():
11 | height = v.get('block_height')
12 | merkle = v.get('merkle_root')
13 | utxo = v.get('utxo_root')
14 | d = dd.get(merkle, defaultdict(int))
15 | d[utxo] += 1
16 | dd[merkle] = d
17 | refs = {}
18 | for merkle, d in dd.items():
19 | v = d.values()
20 | m = max(v)
21 | ref = d.keys()[v.index(m)]
22 | refs[merkle] = ref, m
23 | for k, v in results.items():
24 | height = v.get('block_height')
25 | merkle = v.get('merkle_root')
26 | utxo = v.get('utxo_root')
27 | ref_utxo, num = refs.get(merkle)
28 | if ref_utxo != utxo and num > 1:
29 | out[k] = height, merkle, utxo
30 | return out
31 |
32 |
33 | peers = util.get_peers()
34 | results = util.send_request(peers, 'blockchain.headers.subscribe', [])
35 |
36 | errors = analyze(results).keys()
37 |
38 | for n,v in sorted(results.items(), key=lambda x:x[1].get('block_height')):
39 | print "%40s"%n, v.get('block_height'), v.get('utxo_root'), "error" if n in errors else "ok"
40 |
--------------------------------------------------------------------------------
/plugins/__init__.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | #
3 | # Electrum - lightweight Bitcoin client
4 | # Copyright (C) 2015 Thomas Voegtlin
5 | #
6 | # Permission is hereby granted, free of charge, to any person
7 | # obtaining a copy of this software and associated documentation files
8 | # (the "Software"), to deal in the Software without restriction,
9 | # including without limitation the rights to use, copy, modify, merge,
10 | # publish, distribute, sublicense, and/or sell copies of the Software,
11 | # and to permit persons to whom the Software is furnished to do so,
12 | # subject to the following conditions:
13 | #
14 | # The above copyright notice and this permission notice shall be
15 | # included in all copies or substantial portions of the Software.
16 | #
17 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18 | # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 | # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20 | # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
21 | # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22 | # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23 | # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24 | # SOFTWARE.
25 |
26 |
27 |
--------------------------------------------------------------------------------
/plugins/keepkey/keepkey.py:
--------------------------------------------------------------------------------
1 | from ..trezor.plugin import TrezorCompatiblePlugin, TrezorCompatibleKeyStore
2 |
3 |
4 | class KeepKey_KeyStore(TrezorCompatibleKeyStore):
5 | hw_type = 'keepkey'
6 | device = 'KeepKey'
7 |
8 |
9 | class KeepKeyPlugin(TrezorCompatiblePlugin):
10 | firmware_URL = 'https://www.keepkey.com'
11 | libraries_URL = 'https://github.com/keepkey/python-keepkey'
12 | minimum_firmware = (1, 0, 0)
13 | keystore_class = KeepKey_KeyStore
14 |
15 | def __init__(self, *args):
16 | try:
17 | import client
18 | import keepkeylib
19 | import keepkeylib.ckd_public
20 | import keepkeylib.transport_hid
21 | self.client_class = client.KeepKeyClient
22 | self.ckd_public = keepkeylib.ckd_public
23 | self.types = keepkeylib.client.types
24 | self.DEVICE_IDS = keepkeylib.transport_hid.DEVICE_IDS
25 | self.libraries_available = True
26 | except ImportError:
27 | self.libraries_available = False
28 | TrezorCompatiblePlugin.__init__(self, *args)
29 |
30 | def hid_transport(self, pair):
31 | from keepkeylib.transport_hid import HidTransport
32 | return HidTransport(pair)
33 |
34 | def bridge_transport(self, d):
35 | raise NotImplementedError('')
36 |
--------------------------------------------------------------------------------
/gui/kivy/i18n.py:
--------------------------------------------------------------------------------
1 | import gettext
2 |
3 | class _(str):
4 |
5 | observers = set()
6 | lang = None
7 |
8 | def __new__(cls, s, *args, **kwargs):
9 | if _.lang is None:
10 | _.switch_lang('en')
11 | t = _.translate(s, *args, **kwargs)
12 | o = super(_, cls).__new__(cls, t)
13 | o.source_text = s
14 | return o
15 |
16 | @staticmethod
17 | def translate(s, *args, **kwargs):
18 | return _.lang(s).format(args, kwargs)
19 |
20 | @staticmethod
21 | def bind(label):
22 | try:
23 | _.observers.add(label)
24 | except:
25 | pass
26 | # garbage collection
27 | new = set()
28 | for label in _.observers:
29 | try:
30 | new.add(label)
31 | except:
32 | pass
33 | _.observers = new
34 |
35 | @staticmethod
36 | def switch_lang(lang):
37 | # get the right locales directory, and instanciate a gettext
38 | from uwallet.i18n import LOCALE_DIR
39 | locales = gettext.translation('uwallet', LOCALE_DIR, languages=[lang], fallback=True)
40 | _.lang = locales.gettext
41 | for label in _.observers:
42 | try:
43 | label.text = _(label.text.source_text)
44 | except:
45 | pass
46 |
--------------------------------------------------------------------------------
/gui/kivy/uix/dialogs/qr_scanner.py:
--------------------------------------------------------------------------------
1 | from kivy.app import App
2 | from kivy.factory import Factory
3 | from kivy.lang import Builder
4 |
5 | Factory.register('QRScanner', module='uwallet_gui.kivy.qr_scanner')
6 |
7 | class QrScannerDialog(Factory.AnimatedPopup):
8 |
9 | __events__ = ('on_complete', )
10 |
11 | def on_symbols(self, instance, value):
12 | instance.stop()
13 | self.dismiss()
14 | data = value[0].data
15 | self.dispatch('on_complete', data)
16 |
17 | def on_complete(self, x):
18 | ''' Default Handler for on_complete event.
19 | '''
20 | print x
21 |
22 |
23 | Builder.load_string('''
24 |
25 | title:
26 | _(\
27 | '[size=18dp]Hold your QRCode up to the camera[/size][size=7dp]\\n[/size]')
28 | title_size: '24sp'
29 | border: 7, 7, 7, 7
30 | size_hint: None, None
31 | size: '340dp', '290dp'
32 | pos_hint: {'center_y': .53}
33 | #separator_color: .89, .89, .89, 1
34 | #separator_height: '1.2dp'
35 | #title_color: .437, .437, .437, 1
36 | #background: 'atlas://gui/kivy/theming/light/dialog'
37 | on_activate:
38 | qrscr.start()
39 | qrscr.size = self.size
40 | on_deactivate: qrscr.stop()
41 | QRScanner:
42 | id: qrscr
43 | on_symbols: root.on_symbols(*args)
44 | ''')
45 |
--------------------------------------------------------------------------------
/plugins/trezor/trezor.py:
--------------------------------------------------------------------------------
1 | from .plugin import TrezorCompatiblePlugin, TrezorCompatibleKeyStore
2 |
3 |
4 | class TrezorKeyStore(TrezorCompatibleKeyStore):
5 | hw_type = 'trezor'
6 | device = 'TREZOR'
7 |
8 | class TrezorPlugin(TrezorCompatiblePlugin):
9 | firmware_URL = 'https://www.mytrezor.com'
10 | libraries_URL = 'https://github.com/trezor/python-trezor'
11 | minimum_firmware = (1, 3, 3)
12 | keystore_class = TrezorKeyStore
13 |
14 | def __init__(self, *args):
15 | try:
16 | import client
17 | import trezorlib
18 | import trezorlib.ckd_public
19 | import trezorlib.transport_hid
20 | self.client_class = client.TrezorClient
21 | self.ckd_public = trezorlib.ckd_public
22 | self.types = trezorlib.client.types
23 | self.DEVICE_IDS = trezorlib.transport_hid.DEVICE_IDS
24 | self.libraries_available = True
25 | except ImportError:
26 | self.libraries_available = False
27 | TrezorCompatiblePlugin.__init__(self, *args)
28 |
29 | def hid_transport(self, pair):
30 | from trezorlib.transport_hid import HidTransport
31 | return HidTransport(pair)
32 |
33 | def bridge_transport(self, d):
34 | from trezorlib.transport_bridge import BridgeTransport
35 | return BridgeTransport(d)
36 |
--------------------------------------------------------------------------------
/gui/kivy/nfc_scanner/__init__.py:
--------------------------------------------------------------------------------
1 | __all__ = ('NFCBase', 'NFCScanner')
2 |
3 | class NFCBase(Widget):
4 | ''' This is the base Abstract definition class that the actual hardware dependent
5 | implementations would be based on. If you want to define a feature that is
6 | accissible and implemented by every platform implementation then define that
7 | method in this class.
8 | '''
9 |
10 | payload = ObjectProperty(None)
11 | '''This is the data gotten from the tag.
12 | '''
13 |
14 | def nfc_init(self):
15 | ''' Initialize the adapter.
16 | '''
17 | pass
18 |
19 | def nfc_disable(self):
20 | ''' Disable scanning
21 | '''
22 | pass
23 |
24 | def nfc_enable(self):
25 | ''' Enable Scanning
26 | '''
27 | pass
28 |
29 | def nfc_enable_exchange(self, data):
30 | ''' Enable P2P Ndef exchange
31 | '''
32 | pass
33 |
34 | def nfc_disable_exchange(self):
35 | ''' Disable/Stop P2P Ndef exchange
36 | '''
37 | pass
38 |
39 | # load NFCScanner implementation
40 |
41 | NFCScanner = core_select_lib('nfc_manager', (
42 | # keep the dummy implementtation as the last one to make it the fallback provider.NFCScanner = core_select_lib('nfc_scanner', (
43 | ('android', 'scanner_android', 'ScannerAndroid'),
44 | ('dummy', 'scanner_dummy', 'ScannerDummy')), True, 'uwallet_gui.kivy')
45 |
--------------------------------------------------------------------------------
/gui/kivy/uix/dialogs/qr_dialog.py:
--------------------------------------------------------------------------------
1 | from kivy.factory import Factory
2 | from kivy.lang import Builder
3 |
4 | Builder.load_string('''
5 |
6 | id: popup
7 | title: ''
8 | data: ''
9 | shaded: False
10 | show_text: False
11 | AnchorLayout:
12 | anchor_x: 'center'
13 | BoxLayout:
14 | orientation: 'vertical'
15 | size_hint: 1, 1
16 | padding: '10dp'
17 | spacing: '10dp'
18 | QRCodeWidget:
19 | id: qr
20 | TopLabel:
21 | text: root.data if root.show_text else ''
22 | Widget:
23 | size_hint: 1, 0.2
24 | BoxLayout:
25 | size_hint: 1, None
26 | height: '48dp'
27 | Widget:
28 | size_hint: 1, None
29 | height: '48dp'
30 | Button:
31 | size_hint: 1, None
32 | height: '48dp'
33 | text: _('Close')
34 | on_release:
35 | popup.dismiss()
36 | ''')
37 |
38 | class QRDialog(Factory.Popup):
39 | def __init__(self, title, data, show_text):
40 | Factory.Popup.__init__(self)
41 | self.title = title
42 | self.data = data
43 | self.show_text = show_text
44 |
45 | def on_open(self):
46 | self.ids.qr.set_data(self.data)
47 |
--------------------------------------------------------------------------------
/version:
--------------------------------------------------------------------------------
1 | # UTF-8
2 | #
3 | VSVersionInfo(
4 | ffi=FixedFileInfo(
5 | # filevers and prodvers should be always a tuple with four items: (1, 2, 3, 4)
6 | # Set not needed items to zero 0.
7 | filevers=(1, 0, 2,0),
8 | prodvers=(1, 0, 2,0),
9 | # Contains a bitmask that specifies the valid bits 'flags'r
10 | mask=0x3f,
11 | # Contains a bitmask that specifies the Boolean attributes of the file.
12 | flags=0x0,
13 | # The operating system for which this file was designed.
14 | # 0x4 - NT and there is no need to change it.
15 | OS=0x40004,
16 | # The general type of file.
17 | # 0x1 - the file is an application.
18 | fileType=0x1,
19 | # The function of the file.
20 | # 0x0 - the function is not defined for this fileType
21 | subtype=0x0,
22 | # Creation date and time stamp.
23 | date=(0, 0)
24 | ),
25 | kids=[
26 | StringFileInfo(
27 | [
28 | StringTable(
29 | u'040904B0',
30 | [StringStruct(u'CompanyName', u'Ulord Foundation Ltd.'),
31 | StringStruct(u'FileDescription', u'UWalletLite Client'),
32 | StringStruct(u'FileVersion', u'1.0.2'),
33 | StringStruct(u'InternalName', u'uwallet'),
34 | StringStruct(u'LegalCopyright', u'Ulord Foundation Ltd.'),
35 | StringStruct(u'OriginalFilename', u'uwallet.exe'),
36 | StringStruct(u'ProductName', u'UWalletLite'),
37 | StringStruct(u'ProductVersion', u'1.0.2')])
38 | ]),
39 | VarFileInfo([VarStruct(u'Translation', [1033, 1200])])
40 | ]
41 | )
--------------------------------------------------------------------------------
/gui/kivy/uix/dialogs/question.py:
--------------------------------------------------------------------------------
1 | from kivy.app import App
2 | from kivy.factory import Factory
3 | from kivy.properties import ObjectProperty
4 | from kivy.lang import Builder
5 | from kivy.uix.checkbox import CheckBox
6 | from kivy.uix.label import Label
7 | from kivy.uix.widget import Widget
8 |
9 | from uwallet_gui.kivy.i18n import _
10 |
11 | Builder.load_string('''
12 |
13 | id: popup
14 | title: ''
15 | message: ''
16 | size_hint: 0.8, 0.5
17 | pos_hint: {'top':0.9}
18 | BoxLayout:
19 | orientation: 'vertical'
20 | Label:
21 | id: label
22 | text: root.message
23 | text_size: self.width, None
24 | Widget:
25 | size_hint: 1, 0.1
26 | BoxLayout:
27 | orientation: 'horizontal'
28 | size_hint: 1, 0.2
29 | Button:
30 | text: _('No')
31 | size_hint: 0.5, None
32 | height: '48dp'
33 | on_release:
34 | root.callback(False)
35 | popup.dismiss()
36 | Button:
37 | text: _('Yes')
38 | size_hint: 0.5, None
39 | height: '48dp'
40 | on_release:
41 | root.callback(True)
42 | popup.dismiss()
43 | ''')
44 |
45 |
46 |
47 | class Question(Factory.Popup):
48 |
49 | def __init__(self, msg, callback):
50 | Factory.Popup.__init__(self)
51 | self.title = _('Question')
52 | self.message = msg
53 | self.callback = callback
54 |
--------------------------------------------------------------------------------
/gui/kivy/uix/context_menu.py:
--------------------------------------------------------------------------------
1 | #!python
2 | #!/usr/bin/env python
3 | from kivy.app import App
4 | from kivy.uix.bubble import Bubble
5 | from kivy.animation import Animation
6 | from kivy.uix.floatlayout import FloatLayout
7 | from kivy.lang import Builder
8 | from kivy.factory import Factory
9 | from kivy.clock import Clock
10 |
11 | from uwallet_gui.kivy.i18n import _
12 |
13 | Builder.load_string('''
14 |