Open-source, airgapped bitcoin hardware signer for the M5StickV.

Overview

Krux

Krux is an open-source DIY hardware signer for Bitcoin that can sign for multisignature and single-key wallets. It is a low-cost airgapped device built from off-the-shelf parts that communicates with wallet software via QR codes and wipes its memory after every session.


Disclaimer

WARNING: This is currently beta-quality software and has not yet been audited by a third party. Use at your own risk!


Getting Started

Instructions for building and running Krux can now be found on our GitHub Pages site:

https://jreesun.github.io/krux/

Inspired by these similar projects:

Contributing

Issues and pull requests welcome! Let's make this as good as it can be.

Support the Project

If you would like to support the project, BTC is kindly accepted!

19f8HVt8LZKzBv8CuBYnxCqn5sd75V658J

Issues
  • Release 22.08.0

    Release 22.08.0

    In no particular order, this release:

    • Adds support for the Maix Amigo, Maix Bit, and Maix Dock devices
      • This includes an all new UI when using a touchscreen device
    • Updates the simulator to add support for Amigo and PC directly
    • Tons of font work
      • Change font format from dense to custom sparse format, krux font format
      • Add bdftohex.py for converting from a source bdf font format to the new krux font format
      • Add hextokff.py script to convert only used unicode characters (derived from looking in i18n/translations) to new format
      • Add bdftokff.sh shell script to simplify font conversion
      • Update ter*.bdf fonts to include vietnamese and bitcoin glyphs in one source font
      • Fix vietnamese glyphs by accounting for bbox values in bdf when converting to hex
    • Build translations into firmware with new i18n.py bake command and use crc32 hash as slug lookup
    • Adds a new Brazilian Portuguese translation
    • Adds a new i18n framework for adding translations of the website documentation
    • Adds BIP39 passphrase support, asking a user if they want to "add passphrase" after entering a mnemonic
    • Mnemonic generation from dice rolls has been changed:
      • Rolls can be entered much faster and the last N rolls will always be displayed along the top in exactly the way they will ultimately be hashed
      • Now when rolling a D6, no separator is used between rolls prior to hashing to match ColdCard and SeedSigner results
        • We continue to use a - separator for D20 rolls to avoid accidentally reducing state space due to collisions (e.g., rolling 1-17 and 11-7 would result in the same 117 string without a separator
    • Unlocks the ability for a M5StickV to navigate backwards in all input prompts by pressing the power button. Long-pressing the power button will still shutdown the device, but one-press resets have now been disabled.
    • Adds support for rotary encoder input in lieu of prev/next buttons
    • Adds a lot of UX improvements including the ability to escape out of mnemonic loading or creation
    • Updates the docs site to be device agnostic and include screenshots in all supported languages
    • Adds the ability to load or save a .psbt file to an SD card, which should hopefully alleviate the pain with using the M5StickV when you don't have a phone-quality webcam to be able to read its QR codes.
    opened by jreesun 24
  • Maix Amigo IPS and Maix Bit Compatibility

    Maix Amigo IPS and Maix Bit Compatibility

    • Changed boot order to display splash while loading modules.
    • Added several configurations and conditional codes to deal with different displays, cameras, buttons and touchscreen.
    • Menus and keypads draw methods were modified to be compatible with touchscreen mapping.
    • Selected items are now outlined.
    • Changed font and alignment logic to use font width and height instead of font_size.
    • Added a touchscreen.py file with driver and API to access Amigos touchscreen.
    • QR animations are now time based to avoid different periods for different devices.
    opened by odudex 15
  •  Tests adapted to new code, touch improved

    Tests adapted to new code, touch improved

    Tests and main code adjustments. Did more tests on touch/I2C, saw some rare exceptions and "gagging" were yet occurring, so I studied IC specs and improved the driver by setting appropriated registers and methods. Added a script that joins .bdf to .dkz font conversion in a single step

    opened by odudex 11
  • Proposal for simplifying repetitive tasks of the development, test, lint, format, build and flash processes

    Proposal for simplifying repetitive tasks of the development, test, lint, format, build and flash processes

    When reading the official documentation over and over again (initially, with the intention of translation), I noticed that some tasks (development, build, lint, update, test, etc) require, on an extended time scale, a considerable amount of repetition of the commands.

    I think this could be simplified, through a Makefile.

    I didn't open a PR to not affect some improvements being made by @jreesun and @odudex , but I share a gist that, apparently, simplified the tasks.

    Some of the simplified tasks:

    • make update: replacing git pull origin main && git submodule update --init --recursive
    • make install: replacing poetry install and some optional dependencies (in this sense, a proposal to modify pyproject.toml to)
    • make test: replacing poetry run pytest --cache-clear --cov src/krux --cov-report html ./tests
    • make test/verbose: replacing poetry run pytest --cache-clear --cov src/krux --cov-report html --show-capture all --capture tee-sys -r A ./tests
    • make build/sign: replace some tasks to installing from the source:
      • vagrant up
      • vagrant ssh -c 'cd /vagrant; ./krux generate-keypair'
      • vagrant ssh -c 'cd /vagrant; ./krux pem-to-pubkey pubkey.pem'
      • copy the hex pubkey
      • replace in src/krux/metada.py file
    • make build/maixpy_m5stickV: replace vagrant ssh -c 'cd /vagrant; ./krux build maixpy_m5stickv'
    • make build/maixpy_amigo_ips: replace vagrant ssh -c 'cd /vagrant; ./krux build maixpy_amigo_ips'
    • make simulator: run and logs simulation process

    To see all options, type make help

    I also prupose a change on simulator/run-all-sequences.sh, with the characteristic of reducing the console output and allowing the writing of log files during simulation.

    opened by qlrd 8
  • xpubs, legacy addreses and BlueWallet

    xpubs, legacy addreses and BlueWallet

    After a few code tweaks I succeeded in making Krux export singlesig wallets to Blue and Sparrow wallets as well sign and export PSBTs back to them. Video However, there still an issue with Blue: If I use a zpub everything works fine, but if I import the xpub in it, it will automatically create a weird legacy wallet with m/84'/0'/0' (native segwit) derivation. Since xpub are commonly used for legacy, and if I understood the Krux code, it is incompatible with legacy addresses, Krux shouldn't offer xpus, only zpubs. What do you think? (I'm new to all of this)

    opened by odudex 7
  • CMake Error when building the firmware

    CMake Error when building the firmware

    Thanks for this great project.

    I am trying to build the firmware on a freshly installed Ubuntu system. But CMake throws an error in Step 15/15 after vagrant ssh -c 'cd /vagrant; ./krux build-firmware':

    -- builtin py dir: /src/MaixPy/projects/maixpy_m5stickv/builtin_py
    -- [register component: micropython ], path:/src/MaixPy/components/micropython
    CMake Error at /src/MaixPy/tools/cmake/compile.cmake:82 (message):
      Can not find port/src/speech/maix_asr/libmaix_asr.a or
      /src/MaixPy/components/micropython/port/src/speech/maix_asr/libmaix_asr.a
    Call Stack (most recent call first):
      /src/MaixPy/components/micropython/CMakeLists.txt:564 (register_component)
    

    Any idea what I'm missing here?

    opened by bavarianledger 6
  • Add SYS_EXC_INFO for micropython to handle exceptions

    Add SYS_EXC_INFO for micropython to handle exceptions

    logging.py uses sys.exc_info() in exception handling, for that MICROPY_PY_SYS_EXC_INFO needs to be enabled on micropython port, otherwise system may crash.

    opened by odudex 5
  • MaixPy should be a submodule

    MaixPy should be a submodule

    Copying code in makes code review hard as now the reviewer also has check where that copied code came from and if it was modified. #39 sounds like this issue might be resolved by removal of the code but anyway, for a Bitcoin wallet code auditability is key.

    opened by Giszmo 5
  • Maix Amigo support

    Maix Amigo support

    Hi! Great project! Do you think it might be possible to make krux compatible with Maix Amigo? It is a pretty cheap devboard that has a large screen with touch, camera and SD card slot. MCU is the same as in M5StickV - K210. https://www.seeedstudio.com/Sipeed-Maix-Amigo-p-4689.html

    opened by stepansnigirev 5
  • Error on flashing binaries from Macs

    Error on flashing binaries from Macs

    MacBook:krux-v22.03.0 xxx$ ./ktool-mac -B goE -b 1500000 maixpy_m5stickv/kboot.kfpkg [10684] Error loading Python lib '/var/folders/pv/58vvqdhn26q3fvsnbqq6pjb00000gn/T/_MEIGLO3yx/libpython3.9.dylib': dlopen: dlopen(/var/folders/pv/58vvqdhn26q3fvsnbqq6pjb00000gn/T/_MEIGLO3yx/libpython3.9.dylib, 10): Symbol not found: ____chkstk_darwin Referenced from: /var/folders/pv/58vvqdhn26q3fvsnbqq6pjb00000gn/T/_MEIGLO3yx/libintl.8.dylib (which was built for Mac OS X 11.0) Expected in: /usr/lib/libSystem.B.dylib in /var/folders/pv/58vvqdhn26q3fvsnbqq6pjb00000gn/T/_MEIGLO3yx/libintl.8.dylib

    As a workaround I suggested to use kflashGUI instead

    opened by odudex 4
  • QR code compatibilty

    QR code compatibilty

    Are the QR codes supposed to be compatible with SeedSigner? I did a couple of tests and I was not able to scan any SeedSigner generated QR code, this error message came up: Invalid mnemonic length

    opened by bavarianledger 4
  • Move away from board configs in favor of module-specific settings

    Move away from board configs in favor of module-specific settings

    Building on top of #159 and #160, it would be better to remove the board.config["krux"] pattern and instead have the modules themselves define settings that they reference to make decisions, where the default value of a setting could be based on the board.config["type"].

    This would:

    1. Let us clean up board configs in MaixPy so we can remove the krux key and once again match upstream MaixPy's versions
    2. Keep board-specific logic very close to where it matters, in the module that uses it
    3. Allow users to override particular settings as they see fit and have them persist on microSD

    This would also resolve https://github.com/selfcustody/krux/issues/147 nicely.

    Using that as an example, if display.py had a DisplaySettings class with an inverted_coordinates property, the default value could be initially set based on if board.config["type"] == 'amigo_tft'. The calling code could then say if settings.display.inverted_coordinates: <do stuff>, and users could go into their Settings to override this if they wanted.

    enhancement good first issue 
    opened by jreesun 0
  • Colocate settings with the module that uses them

    Colocate settings with the module that uses them

    All settings are currently defined in the settings.py file, but a better pattern would be to have modules that need settings register their own namespace. For example, the I18n settings class here could easily be moved into i18n.py, and the locales value could be derived from the locales in translation_table instead: https://github.com/selfcustody/krux/blob/main/src/krux/settings.py#L94

    To do this, a register classmethod on Settings could be added that each module would invoke to register its namespace, and then Settings could iterate over the namespaces to instantiate them in __init__.

    enhancement good first issue 
    opened by jreesun 0
  • Refactor Settings page to be generated from settings object

    Refactor Settings page to be generated from settings object

    Currently, the settings you can change under Settings are hard-coded. However, we should be able to generate the UI by looking at the settings object itself. This would clean up some code in login.py and make future settings instantly accessible within the UI.

    enhancement good first issue 
    opened by jreesun 0
  • Support hot-plugging microSD cards for better UX

    Support hot-plugging microSD cards for better UX

    Krux can only detect a microSD card at boot which makes the PSBT signing flow awkward and cumbersome if you're reading and writing the files to the card. It would be better if you could remove and insert a card at any point during runtime.

    bug help wanted 
    opened by jreesun 0
  • Add support for more microSD cards

    Add support for more microSD cards

    The number of microSD cards supported by the MaixPy firmware is limited. To remedy this, we should first try updating selfcustody/MaixPy with the latest code from Sipeed and if no improvements on this front have been made, consider adding better support of our own.

    enhancement help wanted 
    opened by jreesun 0
  • Clean up tests to make it easier to modify them

    Clean up tests to make it easier to modify them

    In my push to get 100% code coverage, I introduced some unwieldy tests, especially in the pages folder.

    There are a lot of table-driven tests in here where the tables are made up of large (many column) tuples with no naming or documentation to know what each column represents. You have to look at the test and try to infer it which is error-prone.

    A better way to do this would be to use namedtuples, and update the references in the tests from their index to their column name instead.

    opened by jreesun 0
Releases(v22.08.0)
  • v22.08.0(Aug 10, 2022)

    This latest version of Krux is brought to you by @odudex, who tirelessly worked for months to get Krux working on three new devices: the Maix Amigo, Maix Bit, and Maix Dock. Thank you for all your hard work!

    Many other improvements to Krux were made along the way which will be listed below.

    Enjoy!

    Installing

    For instructions on how to install this release, please follow the Getting Started guide on https://selfcustody.github.io/krux/.

    To perform an airgapped upgrade (with a microSD card) from a previous signed release, please follow the directions here: https://selfcustody.github.io/krux/getting-started/installing/#upgrade-via-microsd-card

    Changes

    ¡Three Amigos!

    Krux now supports three new devices: Maix Amigo, Maix Bit, and Maix Dock. The Amigo is an all-in-one device with a touchscreen display, while the Dock and Bit are more DIY-focused kits where some assembly is required.

    New touchscreen UI + UX enhancements

    Along with being usable on multiple devices now, Krux also has native touchscreen support and many refinements to its UI to make better use of the screen space it has. More work has gone into improving UX including the ability to escape out of the mnemonic loading or creation screens at any point.

    Built-in translations + Portuguese

    Krux now includes translations in the firmware due to using a more space-efficient font format. With this change, the rendering issues with Vietnamese characters have also been fixed. A new Portuguese translation has been added.

    Amigo support added to Krux Simulator

    The Krux Simulator, which lets you simulate on your PC what it would be like to run Krux on a device, was updated to support the Amigo. There is also now a PC option if you want to run Krux "natively" on your PC (NOTE: This is a toy for fun and is not recommended for real usage).

    CompactSeedQR support

    Support for scanning SeedSigner’s newer "CompactSeedQR" QR codes

    BIP39 passphrases

    Support has been added for BIP39 passphrases. After loading a mnemonic, you will be asked if you want to "Add a passphrase?" to it.

    Export signed PSBTs to microSD

    You can now save a signed PSBT to microSD which should help users having trouble getting their webcams to read the tiny QR codes on the M5StickV. Furthermore, Krux supports loading a PSBT from microSD as well if you want to forgo QR codes entirely.

    Better mnemonic generation

    The flow for entering rolls has been streamlined to allow more rapid input, with your string of rolls now being visible along the top of the screen as you go. We also introduced a change to how the D6 roll string is built, no longer including "-" between rolls prior to hashing to have consistency with ColdCard and SeedSigner.

    Note: We continue to use a "-" separator between D20 rolls to avoid reducing state space due to collisions (e.g., rolling 1-17 and 11-7 would result in the same 117 string without a separator, and would thus have the same hash)

    Back button and rotary encoders

    All devices, even the M5StickV, support moving backward in the UI now. The left-side power button on the M5StickV no longer does one-press resets and instead acts as a third input button. Note: You can still shutdown the device by holding it down for 5 seconds.

    Support for using a rotary encoder as the previous and next buttons has also been added. Check out @odudex’s open source case design with instructions on how to use one with the Dock: https://github.com/odudex/DockEncoderCase

    Just to note, he also has a case design for the Bit:

    https://github.com/odudex/MaixBitCase

    Updated website + i18n future

    The Github Pages site has been updated with new documentation and screenshots for the Amigo.

    A new internationalization (i18n) framework has been added by @qlrd that will allow the website to be easily translated to other languages so we can eventually have documentation for every language that Krux supports!

    @qlrd is also working on a graphical installer we hope to start making use of in the future when it’s ready. Keep tabs on it here: https://github.com/qlrd/krux-installer

    Source code(tar.gz)
    Source code(zip)
    krux-v22.08.0.zip(44.02 MB)
    krux-v22.08.0.zip.sha256.txt(65 bytes)
    krux-v22.08.0.zip.sig(70 bytes)
  • v22.03.0(Mar 31, 2022)

    Finally, after much TODO, the first official release of Krux is out!

    Krux will be following a calendar version release schedule similar to Ubuntu, hence the first release is version (20)22.03.0. If any glaring security issues or important bugfixes come up, they will make their way into point releases such as 22.03.1, 22.03.2, etc. All new work will go toward major releases which will get a new year and month combo.

    Thank you to everyone who contributed their time and effort toward this release. It's been very cool to see people take an interest in the project! Also, a special thank you is due to @stepansnigirev for creating the embit library that Krux leans so heavily on.

    Installing

    For instructions on how to install this release, please follow the Getting Started guide on https://selfcustody.github.io/krux/.

    Changelog

    • add weak link to uio by @stepansnigirev in https://github.com/selfcustody/krux/pull/13
    • Support UR types and arbitrary wallet vendors by @jreesun in https://github.com/selfcustody/krux/pull/14
    • Add support for Sparrow + Electrum, bitstring mnemonics, various fixes by @jreesun in https://github.com/selfcustody/krux/pull/16
    • Added note regarding VirtualBox / group vboxusers by @bavarianledger in https://github.com/selfcustody/krux/pull/20
    • Add I18n support by @jreesun in https://github.com/selfcustody/krux/pull/23
    • Add support for single-key wallets (#22) by @jreesun in https://github.com/selfcustody/krux/pull/30
    • Add pylint and refactor code to pass it by @jreesun in https://github.com/selfcustody/krux/pull/35
    • Update de-DE.json by @SatFrog in https://github.com/selfcustody/krux/pull/36
    • Add unicode support and satcomma notation (#32, #37) by @jreesun in https://github.com/selfcustody/krux/pull/40
    • Create fr-FR.json by @johngtrs in https://github.com/selfcustody/krux/pull/41
    • Display and print QR of found receive address (#42) by @jreesun in https://github.com/selfcustody/krux/pull/45
    • spanish translation for Krux by @bluejayws in https://github.com/selfcustody/krux/pull/53
    • Settings submenu by @jreesun in https://github.com/selfcustody/krux/pull/54
    • Add word_wrap to text drawing functions by @jreesun in https://github.com/selfcustody/krux/pull/55
    • Change Check Address to Scan Address (#56) by @jreesun in https://github.com/selfcustody/krux/pull/58
    • Add vendor dir and move submodules into it by @jreesun in https://github.com/selfcustody/krux/pull/59
    • Add more unicode coverage to default font by @jreesun in https://github.com/selfcustody/krux/pull/63
    • Vietnamese translation by @annb-ctu in https://github.com/selfcustody/krux/pull/64
    • Bake software into firmware; allow airgapped OTA upgrades via microSD by @jreesun in https://github.com/selfcustody/krux/pull/65
    • Add workflows for testing, building, and deploying gh-pages by @jreesun in https://github.com/selfcustody/krux/pull/67
    • Build the kendryte toolchain from source by @jreesun in https://github.com/selfcustody/krux/pull/71
    • Add 'New Mnemonic' option to create from D6 or D20 rolls by @jreesun in https://github.com/selfcustody/krux/pull/68
    • fixed function declaration mismatch by @odudex in https://github.com/selfcustody/krux/pull/72
    • Update README.md by @jreesun in https://github.com/selfcustody/krux/pull/84
    • Tests by @jreesun in https://github.com/selfcustody/krux/pull/74
    • New splash by @jreesun in https://github.com/selfcustody/krux/pull/89
    • Perform translations at runtime; add persistent settings by @jreesun in https://github.com/selfcustody/krux/pull/90
    • Format all python code with black by @jreesun in https://github.com/selfcustody/krux/pull/91
    • Smart typing and word search speed-up by @jreesun in https://github.com/selfcustody/krux/pull/95
    • Switch to codecov by @jreesun in https://github.com/selfcustody/krux/pull/97
    • Add SYS_EXC_INFO for micropython to handle exceptions by @odudex in https://github.com/selfcustody/krux/pull/96
    • Separate xpub text from QR and simplify key expression logic by @jreesun in https://github.com/selfcustody/krux/pull/98
    • Add MaixPy as submodule by @jreesun in https://github.com/selfcustody/krux/pull/102
    • Add dev instructions to README, update dependencies by @jreesun in https://github.com/selfcustody/krux/pull/105
    • Add message signing feature and tweak firmware sig verification by @jreesun in https://github.com/selfcustody/krux/pull/106
    • Adjust font scripts to account for >8px width fonts by @jreesun in https://github.com/selfcustody/krux/pull/110
    • New documentation for v1 by @jreesun in https://github.com/selfcustody/krux/pull/112
    • Add simulator by @jreesun in https://github.com/selfcustody/krux/pull/113
    • Release 22.03.0 by @jreesun in https://github.com/selfcustody/krux/pull/115
    • Hotfixes for release 22.03.0 by @jreesun in https://github.com/selfcustody/krux/pull/116

    New Contributors

    • @stepansnigirev made their first contribution in https://github.com/selfcustody/krux/pull/13
    • @bavarianledger made their first contribution in https://github.com/selfcustody/krux/pull/20
    • @SatFrog made their first contribution in https://github.com/selfcustody/krux/pull/36
    • @johngtrs made their first contribution in https://github.com/selfcustody/krux/pull/41
    • @bluejayws made their first contribution in https://github.com/selfcustody/krux/pull/53
    • @annb-ctu made their first contribution in https://github.com/selfcustody/krux/pull/64
    • @odudex made their first contribution in https://github.com/selfcustody/krux/pull/72

    Full Changelog: https://github.com/selfcustody/krux/commits/v22.03.0

    Source code(tar.gz)
    Source code(zip)
    krux-v22.03.0.zip(31.36 MB)
    krux-v22.03.0.zip.sha256.txt(65 bytes)
    krux-v22.03.0.zip.sig(70 bytes)
Owner
Jeff
19f8HVt8LZKzBv8CuBYnxCqn5sd75V658J
Jeff
Bitcoin Core integration/staging tree

Bitcoin is an experimental digital currency that enables instant payments to anyone, anywhere in the world. Bitcoin uses peer-to-peer technology to operate with no central authority: managing transactions and issuing money are carried out collectively by the network. Bitcoin Core is the name of open source software which enables the use of this currency.

Bitcoin 65.6k Aug 9, 2022
A high-performance distributed Bitcoin mining pool server.

Viabtc Mining Server ViaBTC Mining Server is a high-performance distributed Bitcoin mining pool server. We have made a lot of optimizations for Bitcoi

ViaBTC 91 Jul 11, 2022
Dogecoin is a cryptocurrency like Bitcoin

Dogecoin is a cryptocurrency like Bitcoin, although it does not use SHA256 as its proof of work (POW). Taking development cues from Tenebrix and Litecoin, Dogecoin currently employs a simplified variant of scrypt.

Dogecoin 14.2k Aug 6, 2022
Bitcoin Point of Sale

LNPoS Hardware https://shop.pimoroni.com/products/m5stack-faces-kit-pocket-computer-with-keyboard-game-calculator Installation Install Arduino IDE: ht

Arc 115 Aug 5, 2022
Bitcoin and Altcoins Publickey subtracter

keysubtracter Bitcoin and Altcoins Publickey subtracter Generate multiple but different "copies" of a publickey, Actually Added and substracted public

Luis Alberto 18 Jun 17, 2022
Bitcoin Core integration/staging tree

Bitcoin Core integration/staging tree https://bitcoincore.org For an immediately usable, binary version of the Bitcoin Core software, see https://bitc

Bitcoin Core 36 Jul 6, 2022
Brute Force Bitcoin Private keys, Public keys

Rotor-Cuda This is a modified version of KeyHunt v1.7 by kanhavishva. A lot of gratitude to all the developers whose codes has been used here. Feature

LostCoins 74 Jul 23, 2022
Onix is a decentralized blockchain project built on Bitcoin's UTXO model

What is Onix? Onix is a decentralized blockchain project built on Bitcoin's UTXO model, with support for Ethereum Virtual Machine based smart contract

Onix CryptoCurrency Development 4 Dec 16, 2021
mako - full bitcoin implementation in C

mako - full bitcoin implementation in C

Christopher Jeffrey (JJ) 528 Jul 30, 2022
Small collection of tools written in C for ECC and bitcoin

ecctools Small collection of tools written in C for ECC and bitcoin Why this programs are written in C language? Well i like C language because compil

Luis Alberto 19 Jul 27, 2022
An open source, portable, easy to use, readable and flexible SSL library

README for Mbed TLS Mbed TLS is a C library that implements cryptographic primitives, X.509 certificate manipulation and the SSL/TLS and DTLS protocol

Arm Mbed 3.7k Aug 10, 2022
Tink is a multi-language, cross-platform, open source library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse.

Tink A multi-language, cross-platform library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse. Ubuntu

Google 12.5k Aug 5, 2022
MIRACL Cryptographic SDK: Multiprecision Integer and Rational Arithmetic Cryptographic Library is a C software library that is widely regarded by developers as the gold standard open source SDK for elliptic curve cryptography (ECC).

MIRACL What is MIRACL? Multiprecision Integer and Rational Arithmetic Cryptographic Library – the MIRACL Crypto SDK – is a C software library that is

MIRACL 491 Aug 5, 2022
XMRig is a high performance, open source, cross platform RandomX, KawPow, CryptoNight and AstroBWT unified CPU/GPU miner

XMRig is a high performance, open source, cross platform RandomX, KawPow, CryptoNight and AstroBWT unified CPU/GPU miner and RandomX benchmark. Official binaries are available for Windows, Linux, macOS and FreeBSD.

null 7.1k Aug 4, 2022
OSS-Sydr-Fuzz - OSS-Fuzz fork for hybrid fuzzing (fuzzer+DSE) open source software.

OSS-Sydr-Fuzz: Hybrid Fuzzing for Open Source Software This repository is a fork of OSS-Fuzz project. OSS-Sydr-Fuzz contains open source software targ

Ivannikov Institute for System Programming of the Russian Academy of Sciences 23 Jul 25, 2022
Passbolt - Open source password manager for teams

Passbolt - Open source password manager for teams

Passbolt 8 Jan 14, 2022
Upbit(업비트) Cryptocurrency Exchange Open API Client of Multi-Programming Language Support

Upbit Client Documents Support Upbit Client Upbit(업비트) Cryptocurrency Exchange API Client Description Upbit(업비트) Cryptocurrency Exchange Open API Clie

Yu Jhin 38 Jun 2, 2022
LibreSSL Portable itself. This includes the build scaffold and compatibility layer that builds portable LibreSSL from the OpenBSD source code.

LibreSSL Portable itself. This includes the build scaffold and compatibility layer that builds portable LibreSSL from the OpenBSD source code.

OpenBSD LibreSSL Portable 1.1k Jul 29, 2022
✔️The smallest header-only GUI library(4 KLOC) for all platforms

Welcome to GUI-lite The smallest header-only GUI library (4 KLOC) for all platforms. 中文 Lightweight ✂️ Small: 4,000+ lines of C++ code, zero dependenc

null 6.4k Aug 10, 2022
Open-source and open-hardware scientific RPN calculator

OpenRPNCalc Open-source and open-hardware scientific RPN calculator Introduction OpenRPNCalc is a scientific calculator based on STM32 microcontroller

Anton Poluektov 139 Jul 20, 2022
A fully-functional open source and open hardware mechanical USB computer keyboard with only three keys!

threeboard threeboard is a fully-functional open source and open hardware mechanical USB computer keyboard with only three keys. It supports multiple

Conor Taylor 97 May 23, 2022
RetroWave is a hardware sound board series that uses vintage sound chips and works with modern hardware.

RetroWave Authentic sounds from vintage sound chips, on modern hardware! Introduction RetroWave is a hardware sound board series that uses vintage sou

SudoMaker 45 Aug 8, 2022
Open source modules to interface Metavision Intelligence Suite with event-based vision hardware equipment

Metavision: installation from source This page describes how to compile and install the OpenEB codebase. For more information, refer to our online doc

PROPHESEE 77 Aug 4, 2022
Open source hardware design and software for OpenPodcar.

OpenPodcar Open Source Hardware Design and Software for OpenPodcar. OpenPodcar_obstacle_avoidance_INB_Atrium.mov Table of Contents I. General Info II.

null 10 Jul 8, 2022
MySQL Server, the world's most popular open source database, and MySQL Cluster, a real-time, open source transactional database.

Copyright (c) 2000, 2021, Oracle and/or its affiliates. This is a release of MySQL, an SQL database server. License information can be found in the

MySQL 8.1k Aug 6, 2022
This is a list of different open-source video games and commercial video games open-source remakes.

This is a list of different open-source video games and commercial video games open-source remakes.

Ivan Bobev 95 Aug 8, 2022
BTCU Wallet is the original Bitcoin Ultimatum client and it builds the backbone of the network.

The concept of BTCU is similar to the concept of the second cryptocurrency by capitalization - Ethereum.

Bitcoin Ultimatum (BTCU) 31 Jul 1, 2022
Bitcoin Core integration/staging tree

Bitcoin is an experimental digital currency that enables instant payments to anyone, anywhere in the world. Bitcoin uses peer-to-peer technology to operate with no central authority: managing transactions and issuing money are carried out collectively by the network. Bitcoin Core is the name of open source software which enables the use of this currency.

Bitcoin 65.6k Aug 9, 2022
The Game Boy ROM of the Game Boy bitcoin miner!

game-boy-bitcoin-miner The Game Boy ROM of the Game Boy bitcoin miner! To build this, currently this patch needs to be applied to GBDK: https://gist.g

Ghidra Ninja 79 Jul 17, 2022