This article shows how to revoke a user in a fabric network such that the user cannot access fabric network and chaincode any more. We first give a high-level walk-through of the process, and later use Test Network to demonstrate the revocation. The script provided in Test Network makes bringing Fabric CA servers much easier and we can use the material to perform the demonstration.

Revisit: Bring Up Test Network with Fabric CA Server

Here we first revisit what happens when we bring up the Test Network with Fabric CA Server. Script network.sh gives us everything by this simple command.

./network.sh up createChannel -ca

The details of this process can be summarized in the following steps. …


BSN (Blockchain-based Service Network) was first announced last year. Since then, they keep deploying nodes in China and across the world, and launched international portal for services on a variety of blockchain frameworks. Here is my first experience on their permissioned services on Hyperledger Fabric through their Testnet. In this article I first provided a very brief introduction about BSN, and made a quick demonstration on how to deploy a standard smart contract package (chaincode) on the Hyperledger Fabric framework integrated into the BSN.

Quick Overview of BSN

To understand more about BSN, the best source of information is from BSN. Here you can find the official information. …


Chaincode in Hyperledger Fabric comes with an API InvokeChaincode() to allow a chaincode invoking a function in another chaincode. Here is the description about this API in the documentation. (link)

For chaincode to chaincode interactions using the invokeChaincode() API, both chaincodes must be installed on the same peer.

For interactions that only require the called chaincode’s world state to be queried, the invocation can be in a different channel to the caller’s chaincode.

For interactions that require the called chaincode’s world state to be updated, the invocation must be in the same channel as the caller’s chaincode.

In this article we try to create some test cases to observe the behaviour of this cross chaincode function invoking. …


This is my second attempt on Algorand. In my previous work I was using the CLI tool goal to access a private network setup. In this one I write scripts in JavaScript, send transactions to the Algorand TestNet. We will walk through all the steps, from preparing the environment, account creation, funding accounts with faucet, and Algos transfer between accounts.

Note that this demonstration is done with Algod v2 API, released in June this year.

It is assumed that you have basic knowledge of and skill in Node JS. We will provide all the scripts with explanation.


Reference is made from some articles. …


Those having experience in developing chaincode in Fabric know well how a chaincode looks like. In a nutshell, we define the data structure (state) for some assets, and functions which one can query the state, or invoke if change of state is needed. Since v2.1, Fabric team also introduces Contract API (link) which simplifies the way chaincode is written. This still follows the same pattern.

Recently I see another attempt to change the way we develop smart contracts with classes and objects, which is a favourite model for many developers. Prasaga introduces Extensible Blockchain Object Model, XBOM, in which assets are defined as objects and owned by accounts. XBOM provides a coding environment and methodology, which is currently implemented in Hyperledger Fabric for a permissioned chain offering and will be available on DataGrid Blockchain (DGB), an open permissionless chain in the future. …


In my previous work several important concepts like template, contract and transaction about DAML were introduced, with a very simple IOU demonstrating the relationship between them. We have seen how a new contract instance of the same template is created through choices. Here we make it more interesting and realistic: how two contracts are interacting with each other in DAML through choices.

DAML tutorial 6 gives us a good example, which is good for extending our previous IOU example. As it is needed to make owner as signatory (in addition to issuer), the transfer of IOU now is implemented as proposal-acceptance model, which means that one party proposes a transfer, and the other party can accept or reject it. …


Early this July my article System Channel and Application Channel was about a tutorial “Adding an Org to a Channel” (link), driven by a question from my readers. I received another question this week which again led me to revisit this topic. The question was about modifying a batch timeout (amount of time to wait before creating a block) in Hyperledger Fabric. While it is quite clear that we can update configuration through the standard (and tedious) process, what puzzled me at the beginning is which channel I should work on: system channel or application channel.

My very first guess is that, as blocks are created in an orderer, the configuration update should be made on the system (orderer) channel, and then the orderer will honour this new timeout for all channels. After some experiments my guess is wrong! (Always learn new things in each hands-on practice.) …


This is another rework on my recent article. The source is a tutorial of Fabric CA in Hyperledger Fabric documentation. The tutorial was done with version 1.4, and my first work done early this July was also made on the same version. Since then I keep receiving queries to make it running in v2.0, as there are many changes from v1.4 to v2.0 and the commands are not used directly in v2.0. As a result I rewrite this companion guide to make it workable in v2.2.

We follow the same network design and setup. Unlike the previous work, we consolidate the four scripts in our previous work into one, bringing up all the CA and registering all the entities. No CLI containers are needed as we are using binary peer directly in the localhost. …


DAML is first positioned as a language modeling digital asset in a ledger, and recently evolved into a platform ready for building full stack applications, and working with many distributed ledger technologies (DLTs) and databases.

If you are like me, beginning the blockchain journey with platforms like Hyperledger Fabric and Ethereum, you may get confused by some overlapping terms and preexisted concepts when you first read DAML. In order to get a better picture, I begin my learning with hands-on on DAML. …


My previous work on implementation of API Server was done on Fabric v1.4 one year ago. Certain changes have been seen since v2.0. Here is a rework on the implementation. I will skip most of the explanation as the overall implementation logic is the same as the previous one. Only the difference is highlighted in this article.

You can always refer to this previous article for more detailed explanation.

Implementation Setup

Here is the setup of our implementation. The overall design remains the same. The only difference in this setup is the use of Test Network instead of First Network. Many sample applications and scripts are rewritten to use Test Network, and so is fabcar. …


KC Tam

Happy to share what I learn on blockchain. Visit http://www.ledgertech.biz/kcarticles.html for my works. or reach me on https://www.linkedin.com/in/ktam1/.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store