Bmip002 protocol introduction


Bmip002 protocol introduction

Compared with the original bmip002 agreement


Compared with the original chain technology community, a set of Asset Specification proposals has been proposed recently, which allows the implementation of standard asset token in issue type transactions. This standard defines the basic functions of assets in the chain, and the specification for issuers to manage assets through smart contracts.


Asset is a kind of value that can be issued on the blockchain. All units of a given asset are replaceable.

Each asset has a globally unique asset ID, which comes from the publisher and asset definition. The publisher usually defines a set of signatures with a possible number of signature keys and thresholds. These signatures must be provided to authorize the release of new units of the asset.

The asset definition consists of any key value data submitted to the blockchain, which can be viewed by all participants.

This standard provides a simple way for users to issue assets. It allows any token that meets the Bytom standard to be easily supported by other applications: wallets, blockchain browsers, to exchanges.

One example is that businesses can list tokens in their business applications in a very short time.


Asset definition

The following specifications use the syntax of the standard JSON pattern

grammar introduce
name Defined asset token name
symbol Defined assets
decimals Define the number of decimal places used by token
quorum Defines the threshold number of possible signing keys that must be signed for transactions to issue this token unit.
reissue Define whether the flag can publish assets multiple times
description Include an asset description consisting of any key value data

Issuance Program

When you create an asset, Bytom automatically creates a publisher with a smart contract. The issuer may publish any number of units as many times as necessary. Custom release plans may impose further restrictions on when and by whom new units will be released.

Tip: the following code snippet was not written in equity 0.1.1 (or later). We recommend unrestricted distribution of asset programs and at least 2 signature keys

    contract  IssueAsset(publicKey1: PublicKey,
                     publicKey2: PublicKey,
                     publicKey3: PublicKey) locks valueAmount of valueAsset 
    clause spend(sig1: Signature, sig2: Signature) {
        verify checkTxMultiSig([publicKey1, publicKey2, publicKey3], [sig1, sig2])
        unlock valueAmount of valueAsset
    Issuance Program will be inactive after certain block height by adding the limitHeight parameter.
    contract IssueAssetWithLimit(publicKey1: PublicKey,
                             publicKey2: PublicKey,
                             publicKey3: PublicKey,
                             limitHeight: Integer) locks valueAmount of valueAsset 
    clause spend(sig1: Signature, sig2: Signature, limitHeight: Integer) {
        verify below(limitHeight)
        verify checkTxMultiSig([publicKey1, publicKey2, publicKey3], [sig1, sig2])
        unlock valueAmount of valueAsset

The demonstration of bmip002 protocol in blockmeta

Through the above introduction of the bmip002 protocol, we know that the essence of the bmip002 protocol is a specification for the assets issued in the original chain. Next, we will introduce the specific display of this set of specifications in blockmeta.

Blockmeta official website:

In blockmeta, it is mainly displayed in three places. First, we open the asset details page of our release, such as the circled logo in the figure. If the asset meets the bmip002 protocol, yes will be displayed. The assets in the figure below do not support the bmip002 protocol, so no is displayed.

Bmip002 protocol introduction

Second, open the asset list page. If the issued asset supports the bmip002 protocol, the logo will be displayed in the lower corner of the asset name. In the whole asset list, the asset sorting that supports the bmip002 protocol is the top.

Bmip002 protocol introduction

Finally, we open the details of a transaction, find the address of a transaction, and open the address details page to see the assets belonging to that address. The following picture:

Bmip002 protocol introduction

The above is the specific demonstration of bmip002 protocol in blockmeta.