mockchain

A special Lamden blockchain instance that behaves like the regular network, but is self-hosted and flexible so that it can be used for development and testing.


Keywords
blockchain, cryptocurrency, lamden, smart-contracts, testing
License
CC-BY-NC-2.5
Install
pip install mockchain==0.1

Documentation

Lamden Mockchain

The mockchain is a special instance of the Lamden blockchain that behaves pretty much identically to the main network deployment, but is contained completely locally. It is designed to 'feel' just like the real blockchain from a developer's standpoint, but has some key differences.

The mockchain is for running a local instance of the Lamden blockchain to develop and test smart contracts or web applications against.

Key Differences

Here are the things that make the mockchain different:

Single Instance

The mockchain is a single instance. It does not connect with other computers or perform consensus. All transactions submitted to the mockchain are processed completely locally, without any risk of packet dropping, network latency, or consensus complications that occur on the real blockchain.

One transaction per Block

The mockchain runs on a single computer: your computer. Thus, the need to batch transactions together for efficiency is not required. When you submit a transaction to the mockchain, it is put into its own block and processed immediately. The blockchain component still works, but you'll find that each block just contains a single transaction. The cryptographic nature of the block headers connecting via linked hashes is not affected.

Instant Feedback

On a real blockchain, you have an asynchronous waiting period between submitting a transaction, it being processed, and the block being confirmed. On the mockchain, you get a synchronous response on the outcome of your transaction. This is good for testing purposes to understand if your transactions are properly formatted, if your smart contract is misbehaving, etc. It is also perfect for developing test suites against so that you can automatically test functionality against a system that performs pretty much identically to the actual production system.

How

git clone https://github.com/Lamden/mockchain.git
cd mockchain
python3 -m mockchain
python3 -m mockchain --port <INT> --vk <HEX_STRING>

Usage

Install Lampy and do the following:

In [1]: from lampy import query

In [2]: from lampy import wallet

In [3]: wallet.Wallet()
Out[3]: <lampy.wallet.Wallet at 0x108440828>

In [4]: w = wallet.Wallet()

In [5]: ip = 'http://127.0.0.1:8000'

In [6]: c = query.LamdenClient(ip=ip, wallet=w)

In [7]: c.ping()
Out[7]: {'status': 'online'}

In [8]: c.get_contracts()
Out[8]: ['vkbook', 'currency', 'submission']