Skip to content
This repository has been archived by the owner on Apr 17, 2019. It is now read-only.

Releases: hyperledger-archives/iroha

Hyperledger Iroha v1.0 Release Candidate 5

21 Mar 12:44
ed579f8
Compare
Choose a tag to compare

HL Iroha team is happy to present the new Release Candidate.
Here are some changes that we implemented in this release:

Pluggable Consensus: hyperledger/iroha#2125

iroha::consensus::yac::SupermajorityChecker interface now has two implementations: a BFT and a CFT checker. Besides that all the signature-related logic was put away from that interface, and it now operates solely on numbers.
Set to BFT by default.

New logger! hyperledger/iroha#2126

Read more here: https://iroha.readthedocs.io/en/latest/guides/configuration.html#logging

Markdown to RST docs configuration: hyperledger/iroha#2146

Now Markdown files from the repository can be referenced in the ReadTheDocs documentation!
We also improved build documentation: hyperledger/iroha#2162

Updated ed25519 cryptography to 2.0.1: hyperledger/iroha#2157

YAC storage cleanup: hyperledger/iroha#1947

Old rounds are now cleaned up and that improves stability
StorageImpl: faster cleanup: hyperledger/iroha#2174

Added installation security tips to documentation

So you could make sure you use Iroha securely: hyperledger/iroha#2129

Updated configuration template for docker deployment: hyperledger/iroha#2158

and added documentation for new parameters: hyperledger/iroha#2173

Storage now only notifies subscribers of newly committed blocks after they have been actually applied to the ledger: hyperledger/iroha#2179

Before, notification could be sent prior to actual commit which is not considered as correct behaviour.

Synchroniser subscription update: hyperledger/iroha#2160

Now if the synchroniser is waiting for the block for too long, it will break the connection. Also, if the block is failed to be checked, further blocks will not be received from that peer.

Debug deb packages support: hyperledger/iroha#2144

Decrease quantity of allocated proto query objects: hyperledger/iroha#2148

Another improvement reducing memory consumption

Now Iroha version is available through --version argument and in log pattern: hyperledger/iroha#2127

Added different Cmake sanitizers: hyperledger/iroha#2131

Added a fix for direct propagation in YAC. If a peer sends a vote for the old round, Iroha will share last finalized state: https://github.com/hyperledger/iroha/pull/2139

Refactored ordering service queues: hyperledger/iroha#2150

Got rid of consensus race by changing round queue management: hyperledger/iroha#2151

Fixed race bug in command service: hyperledger/iroha#2167

Made YAC accept votes only from peers that it knows: hyperledger/iroha#2134

Created block storage dependency for mutable storage: hyperledger/iroha#1994

Added fix for status stream initialization: hyperledger/iroha#2169

If runtime cache doesn't contain any value we are going to check the persistent cache for the value.

Fixed hash set usage in OS. Fixed block leaks in YacGate and Simulator: hyperledger/iroha#2170

Made most block manipulation functions of storage take constant blocks by shared pointer: hyperledger/iroha#2178

Added implementation of BlockStorage interface based on FlatFile: hyperledger/iroha#2180

Hyperledger Iroha v1.0 Release Candidate 4 Hotfix 1 version

05 Mar 06:29
Compare
Choose a tag to compare
  • Add rollback before TemporaryWsv creation to prevent a deadlock in reject case, if a block was prepared before voting
  • Add hash index for transaction status table to prevent sequential scan on each query

Benefits

Improved performance

Possible Drawbacks

One more query in the pipeline, hash index is not WAL logged

Hyperledger Iroha v1.0 Release Candidate 4

01 Mar 13:20
4e9fac8
Compare
Choose a tag to compare

For this release we focused on performance, memory consumption so now Iroha is faster and more efficient. There are also some new features added.
Here are new improvements that are being released with RC 4!

Fixes and updates reducing memory consumption and improving performance:

Fixed nested object copy in shared_model proto backend: hyperledger/iroha#2096
Prevented CommandValidatorVisitor objects from copying: hyperledger/iroha#2107
Unsubscribe fix: hyperledger/iroha#2121
Reworked proposal sharing: hyperledger/iroha#2085
Fixed busy waiting in transaction status stream loop: hyperledger/iroha#2104
Removed block memory leak: hyperledger/iroha#2103
Fixed command service infinite replay: hyperledger/iroha#2102
YAC storage cleanup: hyperledger/iroha#1947

Test improvements:

Added performance test based on locust.io
Now Iroha’s performance can be tested. Read more here: hyperledger/iroha#2087
Test for new RX operator combine_latest_until_first_completed: hyperledger/iroha#2122

Documentation improvements:

Added important details about AddPeer command (public key validation): hyperledger/iroha#2098
Updated Iroha README: hyperledger/iroha#2114

Among other important updates:

We finally removed SWIG dependency from the project: hyperledger/iroha#2113
Added two more Ordering Gate configuration parameters: hyperledger/iroha#2094
Added test@test keypair into samples close to the example genesis block: hyperledger/iroha#2128
Fixed Ansible deployment scripts: hyperledger/iroha#2099

Known issues

Synchronization in networks, where more than f peers might shutdown, will fail after a node restarts since hyperledger/iroha#1947 PR was merged. This happens because synchronization between rounds relies on commit synchronization event. The issue will be fixed in further RC with the propagation of the last commit for the unsynchronized node.

You can also check the full list of updates below.
よろしくね!

Hyperledger Iroha v1.0 Release Candidate 3

11 Feb 19:00
731d2c7
Compare
Choose a tag to compare

Critical bugs fixed and stability improved:

Transaction status streaming fixed: hyperledger/iroha#2033

Fix saving rejected tx hashes for failed atomic batches: hyperledger/iroha#2043
When an atomic batch arrived with one stateful valid and one stateful invalid transaction, only one tx hash was saved to block as rejected (stateful invalid).
The second tx (stateful valid) was not saved as rejected too.

Fixed proposal validation and prevented resending of incomplete batches: hyperledger/iroha#2044

Fixed segfault in StatusStream: hyperledger/iroha#2053

Clients that expect immediate stream end after a final tx status receiving would not suffer from redundant delay now: hyperledger/iroha#2073

Fixed memory leaks in Irohad: hyperledger/iroha#2082, hyperledger/iroha#2086

Fixed locking in OnDemandOrderingGate. Iroha does not become unresponsive after some period of time with constant load: hyperledger/iroha#2088

Rejected status is emitted for rejected transactions in transaction processor: hyperledger/iroha#2083

Important! Configurable MST expiration time:

This is a great tool for multisig, but it is important to update your config for new Iroha version (if you are ok with default 24 hours, please enter 1440):
hyperledger/iroha#2046

Selective block streaming

Previously, clients had one way to retrieve a stream of blocks: FetchCommits RPC call, which starts emitting blocks from the next committed one.
This PR introduces a new method to retrieve only one block using its height as an identifier:
hyperledger/iroha#2031

We are in the process of implementing a new logger!

It supports a tree configuration structure and hides spdlog library:
hyperledger/iroha#2010,
hyperledger/iroha#2037,
hyperledger/iroha#2040
hyperledger/iroha#2050
hyperledger/iroha#2051
hyperledger/iroha#2052

Updated client libraries!

Old ones are deleted:
hyperledger/iroha#2028, hyperledger/iroha#2025
You can find new libraries here:
https://github.com/hyperledger/iroha-javascript
https://github.com/hyperledger/iroha-ios
https://github.com/hyperledger/iroha-java
https://github.com/hyperledger/iroha-python 

Improved signatories check

We moved signatory check for query and blocks query from query processor to Postgres query executor:
hyperledger/iroha#1874

There are new deployment scripts

They are not described in docs yet, so please see README for now): hyperledger/iroha#1986

Some news about tests

Tests for Iroha on Windows are here! You can now natively run Iroha on Windows with tests:
hyperledger/iroha#2022

ITF: Fake peer for Ordering Service tests: hyperledger/iroha#1976, hyperledger/iroha#1975, and hyperledger/iroha#1974

No need to create a true server for command client tests: hyperledger/iroha#2014

Better docs

New transaction statuses and JSONB field info: hyperledger/iroha#1978
Fixed branches in the documentation: hyperledger/iroha#2009
Stateful Validation Errors are now described in Documentation: hyperledger/iroha#2020

And many other improvements included in this release.

Please check out the full list below.

Hyperledger Iroha v1.0 Release Candidate 2

10 Jan 08:55
393729c
Compare
Choose a tag to compare

Release Candidate 2 has the same awesome features as the first one but with some very important fixes and improvements. Please make sure to check them out:

Hex format for client API

Now all keys and hashes, and basically all API messages will use HEX format. It will be consistent from now and will make Iroha faster and more stable.
That is a breaking change, so please make sure your Iroha is compliant: #1998

MST pending storage fixed

Previously, if batch was pending, and the same batch with all signatures comes, it went straight to the PCS. Because of that, the pending one was not removed and in theory could be replayed. Now, the system checks, if the arrived batch does already exist in MST storage, even if it has all signatures: #1959

You can now run irohad natively on windows!

There are no tests at the moment though: #1988

Memory leaks on iroha shutdown - fixed

Fixes couple of memory leaks on irohad shutdown by calling unsubscribe() in destructors: #1968

Fixed subscription to transaction status updates

In Iroha you subscribe to receive status updates of the transaction. Previously, that was based on time factor - the status stream was breaking off after some time.
New round-based approach is fixing this issue - it will break off if there are no updates on the transaction in some rounds: #1980
Also fixed the case in which many transactions updates could crash clients: #1991

New style licence comments are here

Simply check out how neat looking they are :) Now it is easier to contribute new files: #1944

Lots of improvements in fuzzing tests

Removed OrderingGate (internal) fuzzing: #1981
Updated RequestProposal endpoint fuzzing: #1983
Updated query Find fuzzing target: #1982
Fixed send_batches_fuzz and mst_fuzz: #1984
Fixed fuzzing status: #1979
Updated Torii fuzzing: #1951

Improved and made delay functionality pluggable to ordering gate init

Iroha will not wait more than 5 seconds between rounds in case of too many successive rejects: #1997

Improved create account command validation

Transaction creator should have all the permissions of default role of a domain where new account will be created: #1966

Improved synchronisation outcome logging

=^._.^= #1965

New compiler for tests and builds

Added libc++ to docker build image: #1970

Some documentation improvements

Checked and fixed commands and queries documentation: #1971, #1938
Fixed deployment instructions: #1972

Hyperledger Iroha v1.0 Release Candidate 1

12 Dec 15:47
8677175
Compare
Choose a tag to compare

We are happy to introduce the first release candidate for Hyperledger Iroha!
There were several major features implemented for the first production version of Iroha:

Multi-signature Transaction (MST) is ready for use!

Now you can request several signatures to verify the transaction. And transactions can receive 2 more statuses: MST_PENDING for transactions waiting for more signatures and ENOUGH_SIGNATURES_COLLECTED for transactions that have already received the number of signatures requested ( #1649).

We have made MST possible with the following changes:


  • adding Storage for Pending Transactions: #1598
  • fixed sending batches to the Storage and retrieving them:  #1661
  • fixed retrieval of pending MST transactions: #1661
  • MST, reworked with batches: #1642 and client tests for MST: #1652
 and other improvements.

Here is the example of MST use case: Alice and Bob are performing exchange between bitcoin and dogecoin using MST to perform exchange only when both participants agreed on the transfer #1761

Important note: MST is functional. However, there is a known issue: when user sends a completed MST transaction it's version without all signatures is not removed from MST storage, so when one asks for his pending transactions he will still see it. As a temporary workaround, you can remove all signatures after getting pending transactions and then sign them with your signature and send to Iroha.

New fully BFT On-Demand Ordering Service is here!

Impressive preparations were made for the assembly of fully BFT (Byzantine-fault tolerant) Ordering service:

  • BFT OS algorithm and interfaces: #1670
  • on-demand ordering gate: #1675
  • the transport: #1635 and on-demand connection manager: #1645
  • the synchroniser: #1647
  • BFT OS components: #1703
  • Consensus Round as Key in YacStorages: #1729
  • BFT YacGate: #1731
  • BFT YaC: #1831

And, finally, we merged the new BFT Ordering Service: #1923

There were some serious API changes, so please make sure that your code is compatible with:

  • Iroha versions in the block: #1893
  • GetAccountTransactions query pagination: #1903
  • Renamed client services: #1881
  • Storing rejected transactions' hashes in the block: #1815

Replaced builders with factories

Now the code runs faster with changed design of its components.
Here are our new factories within the code:

  • factory for a block: #1622
  • factory for transaction status creation: #1717
  • factory for query responses and tests: #1724
  • abstract factory for creating batches from transactions: #1743
  • transport factory: #1750

Error Responses

Real error reasons for real people using Iroha - introducing Query Error Responses so you could know why the query failed: #1770
Stateful Error Codes in Postgres Command Executor, Endpoint and to SFV: #1813, #1817, #1821
Stateful Response Error Codes: #1837

Replay prevention:

In different Iroha components: #1857, #1868, #1865, #1868
Feature of storing rejected transactions' hashes in blockchain: #1815
Rejected txs index: #1846

Preparations for backward compatibility:

Added Iroha version into the block: #1893. Then we updated proto block validator for the new structure of the block: #1905.

And some of the smaller though very important ones…

Optimised command and query SQL

A complex work was done to optimise the work of SQL for both commands and queries: #1605

Consensus Cache in Block Loader and YAC Gate

We constantly move towards faster Iroha.

Now there is no need for a node to wait time to ask another node for synchronisation thanks to the consensus cache. So let us say good-bye to load_delay: #1627

SWIG-free Iroha library for Python

Platform independent. Lighter.
Better solution if you want to use Python with Iroha: #1761

SubtractAssetQuantity command

Was not previously implemented in Iroha-cli but now works correctly with AddAssetQuantity: #1713

Domain asset permissions

Now it is possible to restrict ability to add or subtract assets within domain: #1924

Benchmarks to measure performance

We are introducing a benchmark that executes GetAccount query and a benchmark that executes AddAssetQuantity command to have more information on the performance: #1651  and #1648

Empty Roles

The purpose of append role command is to promote an account to some created role in the system, where a role is a set of permissions account has to perform an action (command or query). It was impossible to add a role without permissions to account. Now it is possible: #1654

reducedHash

reducedHash wrapper is now visible to libraries and can be called by clients: #1659

TransactionBatchParser

Splits a list of transactions by possible adjacent batches: #1750

Genesis Parser

It will generate a nice md file with tables of accounts, permissions and other parameters of the genesis block: #1775

Query pagination:

Now you can get transaction query results using pagination: #1903, #1927
Introduce queries pagination by @nickaleks · Pull Request #1927 ·...

Improved tests

Here are some of the most influential results:

  • the ability to send transaction sequences to the ITF and check stateless valid/invalid status: #1660
ITF feature of checking all the specified statuses: #1720
  • Fuzzing targets for ordering service endpoints, consensus, MST and for BlockLoader endpoints: #1829, #1839, #1845, #1840

Fixes

Please also make sure to check out some important fixes and see if your Iroha is not affected by them:

  • freeConnections method, which disposes all currently used connections was fixed: #1727
  • send tx sequence method: #1685
  • Consensus VoteOther case: #1834
  • ITF bugs related to BFT OS: #1826
  • tx-example.py and blocks-query.py: #1844
  • verbosit flag is now working: #1942

DevOps news

  • CMake version
Minimum CMake version requirement is now 3.11.2 to use cool new features of it in Iroha: #1667
  • Iroha on Kubernetes cluster

  • Now Iroha can be run on Kubernetes: #1697

Please provide us with your feedback so we could have a great stable version for Hyperledger Iroha 1.0
Contact us via mailing list: iroha@lists.hyperledger.org
Or in chat: https://chat.hyperledger.org/channel/iroha (for general discussions), https://chat.hyperledger.org/channel/iroha-contributors (for contributors).

Hyperledger Iroha interim release (based on beta-4)

27 Nov 16:15
Compare
Choose a tag to compare

Snapshot release

In this interim release there are no breaking changes for client libraries related to backward compatibility. Users are encouraged to use this version rather than the latest development version until all breaking changes are introduced and released.

Hyperledger Iroha v1.0 beta-4 version

02 Aug 13:45
38dd0a1
Compare
Choose a tag to compare

In this release following changes were made:

Faster throughput, pluggable state storage

There is less abstraction on state storage level, and validation is done with means of SQL queries. It has significantly improved the performance of Iroha peer and made it less error-prone (#1557).

State storage is plugged over ORM library titled as SOCI, which bundles a nice thread pool for faster interconnection with PostgreSQL; and makes it possible to switch to other supported SQL storage (how about using in-memory SQLite database for even faster throughput? #1505)

Stateful validation errors

All the stateful validation errors are printed in peer logs and response is sent to a client along with transaction status. Now it is a lot easier to check what went wrong with a rejected transaction (#1508)

Important note: this version of Iroha can disclose some personal data like account balance (if a transaction was statefully invalid —account can now get the reason). In the future version we will implement error codes (check them there)

Binary Testing Framework

This is a test framework that helps testing client libraries (now particularly in Python) if they produce valid transactions and queries (if permissions and other business rules were met #1485)

Transaction status streaming over RxCpp

Reactive extensions library in C++ is actively used in our architecture and now is in charge of transaction status processing (#1541)

Fixed critical bug with query signatures

Previously, in beta-3 there was an issue with invalid queries passing stateful validation. Signatures, attached to a query were not checked properly, and this was fixed in current release

Input fuzzing

Libfuzz checks the input in our client component (called Torii) and protobuf messages are mutated as well (#1531)

Blocks and proposals are not copied now (and their creation process is benchmarked)

A proposal is a candidate for becoming the next block in Iroha chain. The lifetime of these objects is important, this is why their creation and copying has to be minimized by means of C++ (#1542, #1567)
Creation is benchmarked by means of Google Benchmark library (#1539)

Check the size of signatures set

One of the bugs, that was revealed with help of fuzzing, was a possibly valid empty signature set attached to a transaction. This behavior was fixed in #1536.

Doxygen documentation

Code docs generation is added to the pipeline (for master and develop branches) and docs are uploaded to https://docs.iroha.tech on each commit

API changes

Transaction batch support

Transaction batch is a set of transactions, which are to be applied together. There are two kinds of batches:

  • Ordered batch
    • transactions will be applied strictly in the order they were received
  • Atomic batch
    • the order is still guaranteed
    • failure of any transaction inside it leads to failure of the whole batch

Important note: this feature was not implemented completely in this release, however, interfaces and SDKs have already been changed for easier integration in the future. This does not affect backward compatibility.

Check the status of development here

Amount is passed as a string. Everywhere

Code became much simpler and it is easier to create transactions without SDKs now (#1555)

Proto files were split

Client API proto files now are stored in a shared model folder, whereas as Iroha peer messages are stored in schema folder (#1550)

GetAccountDetail is a bit more powerful now

Check our documentation page

GetPendingTransactions

In order to make scenarios related to transaction batches and multisignature transactions easier Iroha has API endpoint to get transactions of transactions batches which require signing by participating accounts (#1532)

Important note: this feature was not implemented completely in this release, however, interfaces and SDKs have already been changed for easier integration in the future. This does not affect backward compatibility.

Deleted account_id from Add/SubtractAssetQuantity commands

Finally, we have deleted account_id from a previously confusing API in #1511

Roles can have an empty set of permissions

Now users can create empty roles for use cases where such a role can serve a purpose of a tag or the least powerful role in the system (#1510)

Other

  • Transaction status bus (#1575)
  • Databases are purged and dropped after tests (#1406, #1584)
  • Query execution can be mocked now (and tests are going to be much cleaner and easy to read) (#1579)
  • Common objects factory (#1556)
  • Builders are replaced with mocked Shared Model interfaces (#1563)
  • WSV Query factories (instead of builders) (#1573)
  • Refactor QueryProcessor interface (#1572)
  • Block and proposal creation benchmarks (#1539)
  • Proposal and block transactions validation (#1506)
  • Add test cases for empty protobuf payload (#1502)
  • Jenkins build status badge link (#1551)
  • Shared Model build status is fixed (#1576)
  • Java binding fix (#1507, #1569)
  • Color diagnostics in Jenkins CI (#1515)
  • Reuse Peer proto (#1522)
  • Fix tests for createRole with the empty set of permissions (#1520)
  • Improve Findgrpc.cmake (#1518)
  • WSV (blockchain state) in PostgreSQL stores permissions as bit strings (#1499)
  • CLI values now are cached for convenience purposes (#1496) by contributor uditha-atukorala
  • Removed grantable permissions in queries (#1500)
  • Refactored TransferAsset test (#1482)
  • Fix indentation in a code of error message in IP validator (#1514, #1513)
  • Fix type incompatibility on 32-bit platforms in keys manager (#1503)
  • Python example fix (#1529)
  • Bind operator in TemporaryWsv files (#1544)

Known issues

Windows build does not work at the moment, as well as JS bindings, due to their rough transition to new client libraries

Hyperledger Iroha v1.0 beta-3 version

22 Jun 16:31
60075d0
Compare
Choose a tag to compare

In this release following changes were made:

Experimental multi-signature transactions support

This is one of the most important features so far, since it allows integrators of Iroha to customise validation logic and may help people who want to have smart-contracts support. Let me tell you more:

As per definition of multi signature account on wikipedia, it is a type of account, which has a special condition, associated with the account: it is related to a number of cryptographic signatures required to issue valid transactions from the account, or "quorum". Quorum is a requirement to have M of N signatures, attached to transaction, where N is a total number of public keys associated with the account.

It helps to build following logic:

  • in order to form a valid transaction a user of Iroha has to apply several keys distributed across several people or devices to her transactions
  • in order to form a valid transaction a user of a service with Iroha may send her transactions to a service, which validates some custom logic (amount of transferred assets, special fields, whatever) and this service can add a signature to transaction if it passed custom validation

What is different in Iroha, compared to other services, is that a user is able to send transactions to peer network which don't have all required signatures, "half-baked". Iroha puts them in a temporary storage and distributes across the network. In the end, when Iroha peer network has received enough "half-baked" transactions (quorum condition is valid) such transaction is sent to Iroha validation and is written in the ledger in case of successful validation.

If you are curious — check code in hyperledger/iroha#1260. Docs are going to be available gradually in our documentation website.

Block streaming

This would allow people to create services around Iroha that can listen to events happening on the chain — like specific transactions. In the future, it would allow us to implement block explorer functionality as well.

Python and Java Bindings for Windows platform

Check it in hyperledger/iroha#1335 and at artifact.soramitsu.co.jp website

Other features

Fixes

Docs

CI Improvements

Hyperledger Iroha v1.0 beta-2 version

18 May 20:05
af16446
Compare
Choose a tag to compare

In this release following changes were made:

Uploading of Iroha build artifacts

Artifacts are now available on https://artifact.soramitsu.co.jp for downloading:

  • macOS Iroha binary
  • linux Iroha binaries
  • Android, Java, Python bindings

In the following releases, more bindings are coming!

Fix of critical vulnerabilities discovered during the security audit

Previously, several problems existed:

  • Blocks can be signed more than once by the same peer (fixed in #1193)
  • Transactions can be signed more than once by the same signatory (fixed in #1302)

If ed25519 library was modified to use a non-deterministic nonce, these vulnerabilities were likely to be used. Thanks to @dhuseby who helped us to unveil this tricky part of ed25519.

Message size

Previously, gRPC message was limited to 4MB. Regarding our release stage, we decided to get rid of this limitation. Right now anyone can send huge messages over the peer network. It is a potential attack vector, so we will fix it in following releases.

Docker naming

Our docker containers now are described here: https://hub.docker.com/r/hyperledger/iroha/
Please use only them (our docs were also updated in #1337)

Integration test framework

We fixed the indeterministic outcome of tricky tests, optimized their overall runtime by 15 times on macOS hosts and by 3 times on linux hosts (#1338)

MSVC

Now our client library (shared model) can be built with Microsoft compiler, and respective tests can be built and ran in this environment.

Hyperledger Iroha codebase MSVC support is coming in next releases.

Genesis block generation from a transaction

iroha-cli --genesis_block --genesis_transaction transaction.json #1168

Error message to response, if stateless validation has failed

ToriiResponse has field error_message with the error description of a transaction
ErrorResponse has field message with the error description of a query
QueryResponse has hex-encoded query hash instead of binary hash

Client libraries & shared model

Finished transition to shared model.
Transaction counter is no longer used in the transaction structure. Replay attacks are going to be prevented with transaction hash on peer side.

Stability

A regular queue is replaced with a priority queue in ordering gate so that proposals are propagated in order to the system if they are received in random order from the network. That causes fewer issues with simulator warnings about last block height being inconsistent with proposal height.

Bugfixes

  • Fixed: streaming
  • Fixed: boost linking
  • Fixed: numerous synchronization issues
  • Fixed: inconsistent genesis block generation
  • Fixed: possible fork attacks
  • Fixed: numerous permission issues
  • Fixed: segfaults when the ledger doesn't contain blocks
  • Fixed: numerous memory management issues
  • Fixed: copyright and licensing issues (mostly)
  • Other minor fixes

Known issues