OmniCore staging tree
C++ C Python M4 Shell Makefile Other
Pull request Compare This branch is 1571 commits ahead, 5451 commits behind bitcoin:master.
Latest commit 651c1cc Jan 24, 2017 @dexX7 dexX7 Merge pull request #449
48ac1cb Test for fee distribution when number of tokens (and thus threshold) changes (Zathras)
2bc7ea2 Pass block into NotifyTotalTokensChanged() (Zathras)
dae6a2d Protect against fee distribution when the cache is empty (Zathras)
8600316 Protect against zero valued fee distribution thresholds (Zathras)
e1887e8 Clean up following @dexX7's feedback (thanks!) (zathras-crypto)
1a404df Fix incorrect value from getTotalTokens when fees are cached (zathras-crypto)
88d9690 Narrow scope of UpdateDistributionThresholds() (zathras-crypto)
aedf526 Add back in zero check dropped while prepping commits (zathras-crypto)
c655dd2 Check whether a property ID is valid by inferring from next available ID, instead of fetching the SP (zathras-crypto)
ebe318a Only generate the SHA256 obfuscation hashes we need instead of 255 every time (zathras-crypto)
c268e83 Drop non-Omni transactions quicker by looking for marker/Exodus bytes directly in scriptPubKey hex (zathras-crypto)
ba9ac74 Skip calling HandleExodusPurchase() on mainnet after Exodus crowdsale closed (zathras-crypto)
8732e15 Add consensus hash for block 440,000 (zathras-crypto)
a50c30d Add seed blocks for 430,000 to 440,000 (zathras-crypto)
fc78462 Update MAX_SEED_BLOCKS to include seed blocks above 390,000 (zathras-crypto)
d411286 Return immediately from VerifyCheckpoint if block isn't a multiple of 10K (zathras-crypto)

Omni Core (beta) integration/staging tree

Build Status

What is the Omni Layer

The Omni Layer is a communications protocol that uses the Bitcoin block chain to enable features such as smart contracts, user currencies and decentralized peer-to-peer exchanges. A common analogy that is used to describe the relation of the Omni Layer to Bitcoin is that of HTTP to TCP/IP: HTTP, like the Omni Layer, is the application layer to the more fundamental transport and internet layer of TCP/IP, like Bitcoin.

What is Omni Core

Omni Core is a fast, portable Omni Layer implementation that is based off the Bitcoin Core codebase (currently 0.10.4). This implementation requires no external dependencies extraneous to Bitcoin Core, and is native to the Bitcoin network just like other Bitcoin nodes. It currently supports a wallet mode and is seamlessly available on three platforms: Windows, Linux and Mac OS. Omni Layer extensions are exposed via the UI and the JSON-RPC interface. Development has been consolidated on the Omni Core product, and it is the reference client for the Omni Layer.

Disclaimer, warning


By default this software will use your existing Bitcoin wallet, including spending bitcoins contained therein (for example for transaction fees or trading). The protocol and transaction processing rules for the Omni Layer are still under active development and are subject to change in future. Omni Core should be considered an alpha-level product, and you use it at your own risk. Neither the Omni Foundation nor the Omni Core developers assumes any responsibility for funds misplaced, mishandled, lost, or misallocated.

Further, please note that this installation of Omni Core should be viewed as EXPERIMENTAL. Your wallet data, bitcoins and Omni Layer tokens may be lost, deleted, or corrupted, with or without warning due to bugs or glitches. Please take caution.

This software is provided open-source at no cost. You are responsible for knowing the law in your country and determining if your use of this software contravenes any local laws.

PLEASE DO NOT use wallet(s) with significant amounts of bitcoins or Omni Layer tokens while testing!


Testnet mode allows Omni Core to be run on the Bitcoin testnet blockchain for safe testing.

  1. To run Omni Core in testnet mode, run Omni Core with the following option in place: -testnet.

  2. To receive OMNI (and TOMNI) on testnet please send TBTC to moneyqMan7uh8FqdCA2BV5yZ8qVrc9ikLP. For each 1 TBTC you will receive 100 OMNI and 100 TOMNI.


Boost >= 1.53


You will need appropriate libraries to run Omni Core on Unix, please see doc/ for the full listing.

You will need to install git & pkg-config:

sudo apt-get install git
sudo apt-get install pkg-config

Clone the Omni Core repository:

git clone
cd omnicore/

Then, run:


Once complete:

cd src/

And start Omni Core using ./omnicored (or ./qt/omnicore-qt if built with UI). The inital parse step for a first time run will take up to 60 minutes or more, during this time your client will scan the blockchain for Omni Layer transactions. You can view the output of the parsing at any time by viewing the log located in your datadir, by default: ~/.bitcoin/omnicore.log.

Omni Core requires the transaction index to be enabled. Add an entry to your bitcoin.conf file for txindex=1 to enable it or Omni Core will refuse to start.

If a message is returned asking you to reindex, pass the -reindex flag as startup option. The reindexing process can take serveral hours.

To issue RPC commands to Omni Core you may add the -server=1 CLI flag or add an entry to the bitcoin.conf file (located in ~/.bitcoin/ by default).

In bitcoin.conf:


After this step completes, check that the installation went smoothly by issuing the following command ./omnicore-cli omni_getinfo which should return the mastercoreversion as well as some additional information related to the client.

The documentation for the RPC interface and command-line is located in src/omnicore/doc/

Current feature set:

  • Broadcasting of simple send (tx 0) doc, and send to owners (tx 3) doc

  • Obtaining a Omni Layer balance doc

  • Obtaining all balances (including smart property) for an address doc

  • Obtaining all balances associated with a specific smart property doc

  • Retrieving information about any Omni Layer transaction doc

  • Listing historical transactions of addresses in the wallet doc

  • Retreiving detailed information about a smart property doc

  • Retreiving active and expired crowdsale information doc

  • Sending a specific BTC amount to a receiver with referenceamount in omni_send

  • Creating and broadcasting transactions based on raw Omni Layer transactions with omni_sendrawtx

  • Functional UI for balances, sending and historical transactions

  • Creating any supported transaction type via RPC interface

  • Meta-DEx integration

  • Support for class B (multisig) and class C (op-return) encoded transactions

  • Support of unconfirmed transactions

  • Creation of raw transactions with non-wallet inputs

Related projects: