Precondition
You need an account and a did. You can use "mvs-cli getnewaccount accountname password"
and "mvs-cli issuedid accountname password address did"
to generate a new account and a new did.
For convenience, I’ll uniformly use Alice
as account name, passwd1
as password, Alice
as did, and use testing addresses
in the following examples. When you refer to the following examples, please change to your account name, password and did, and pay attention to the correct addresses.
With an account, if you want to issue
or send
an asset, you have to make sure that there is enough ETP in the account to pay fees. You can use "mvs-cli getbalance account_name password"
to get the total balance of the account. You can also use "mvs-cli listbalances account_name password"
to list the balance of each address in the account.
You can use help
to get the help information of each command. For eaxmple, use "mvs-cli help createasset"
or "mvs-cli createasset -h"
to get the help information of createasset
command.
What is MST Certificate?
The asset certificate is a certificate of an asset’s interest. It is unique and can be transferred between DIDs. Secondary issue certificate, domain certificate and naming certificate are supported now. Assets or certificate can only be issued if user has the appropriate certificate.
Type of certificate
Secondary issue certificate, domain certificate and naming certificate are supported now:
issue: Secondary issue certificate. Asset can only be secondary issued if user has a secondary issue certificate with the same name as the asset. This certificate is automatically issued to the issuer when issuing assets that can be secondary issued. Related commands:
createasset
,issue
,secondaryissue
.
domain: Domain certificate. The domain certificate is automatically provided at the asset creation stage and is available on the first-issue first-served basis. For example, if you own the domainMVS
, only you can create an asset whose name starts withMVS.
. Related commands:createasset
,issue
.
naming: Naming certificate. The owner of domain certificate can create the naming certificate that can be transferred to others, for them to issue the asset with the same name as the naming certificate. Related commands:issuecert
,transfercert
.
Notes: Issuing a asset whose name starts with a dot .
would not generate any certificate.
Obtain certificate
Secondary issue certificate and domain certificate are provided after asset is issued. Naming certificate is provided by command issuecert
. For issuing asset, please refer to MST issue.
Obtain secondary issue certificate and domain certificate
Create asset that can be secondary issued by command
createasset
If the value of option--rate
of commandcreateasset
is -1 or between [1, 100], then asset that can be secondary issued is created.Command:
$ ./mvs-cli createasset Alice passwd1 --symbol MVS.ALICE --volume 1000000000000 --description "Asset of Alice." --issuer Alice --decimalnumber 8 --rate -1
Output:
{
"asset" :
{
"address" : "",
"decimal_number" : 8,
"description" : "Asset of Alice.",
"is_secondaryissue" : false,
"issuer" : "Alice",
"maximum_supply" : 1000000000000,
"secondaryissue_threshold" : 127,
"status" : "unissued",
"symbol" : "MVS.ALICE"
}
}Issue asset by command
issue
No domain certificate namedMVS
exists on Metavase network beforeAlice
issues an asset namedMVS.ALICE
. SoAlice
got a domain certificate namedMVS
after she issued an asset namedMVS.ALICE
. She also got a secondary issue certificate namedMVS.ALICE
because the assetMVS.ALICE
can be secondary issued. We can find thecert
fileds value of which areissue
ordomain
from the output bellow.Command:
$ ./mvs-cli issue Alice passwd1 MVS.ALICE
Output:
{
"transaction" :
{
"hash" : "c88bd3914577df14063f8df7b9365d0061ee902a9ab90bf80df541ec41536321",
"inputs" :
[
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"previous_output" :
{
"hash" : "6ff77f00f50b18f108e6f185c99bf226a0803a0a6e58844d4043c86003de8ef3",
"index" : 1
},
"script" : "[ 3044022021d7739ba53653920b02bced24f1d9e0aed5d702188f6a28c2c7371883fc9b0b02204fe7bc03309331b0355cf79600691a63b5ee8f1c64cd8db01321db041614851b01 ] [ 038d7048a4e640a0e0a27ef85d2a7e5b339834cd565ada0d6ea042127732fa105e ]",
"sequence" : 4294967295
},
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"previous_output" :
{
"hash" : "19dad273d07090648279817e8dcbce8dc06c9815ee94fa798d8e779cf66a9076",
"index" : 0
},
"script" : "[ 304402205e6cb2bd7e9746bc9181ec66043a3244d9f502f03174a384d53853da44f2d2eb022056e19b54d01ae8ad164ca6e856ab7ed12c8c42081c0451cc66c990c08a783be101 ] [ 038d7048a4e640a0e0a27ef85d2a7e5b339834cd565ada0d6ea042127732fa105e ]",
"sequence" : 4294967295
},
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"previous_output" :
{
"hash" : "c42114b2626d9a6e82888deade68c82500e1e55494318c2c3eed7f0a065895e9",
"index" : 0
},
"script" : "[ 304502210091b393ed73b59d89a37a7d8c2d0145f5f010a3ca29897b9ed0283782cebba7690220489e6564f17f62a9ec5b1f642be030395318f405ffeb4023c08282360070301b01 ] [ 038d7048a4e640a0e0a27ef85d2a7e5b339834cd565ada0d6ea042127732fa105e ]",
"sequence" : 4294967295
},
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"previous_output" :
{
"hash" : "cb62c51992f141490ba8934e422a47f5e8d11cf92cbfedbd99bf4247865d6579",
"index" : 0
},
"script" : "[ 304402200a152c449de59abbd53bd54cd8164b2b2ede152e8350358b4aa1014f733b75a902200bc64b0edfd4c5cd3667d9b416f4361ea6cf24649aebe06e6d3e93b2fa0b2ce301 ] [ 038d7048a4e640a0e0a27ef85d2a7e5b339834cd565ada0d6ea042127732fa105e ]",
"sequence" : 4294967295
}
],
"lock_time" : "0",
"outputs" :
[
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"attachment" :
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"decimal_number" : 8,
"description" : "Asset of Alice.",
"from_did" : "",
"is_secondaryissue" : false,
"issuer" : "Alice",
"quantity" : 1000000000000,
"secondaryissue_threshold" : 127,
"symbol" : "MVS.ALICE",
"to_did" : "Alice",
"type" : "asset-issue"
},
"index" : 0,
"locked_height_range" : 0,
"script" : "dup hash160 [ 95c9a5e647870bbc535d83a3c394ef40d298aa46 ] equalverify checksig",
"value" : 0
},
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"attachment" :
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"cert" : "issue",
"from_did" : "",
"owner" : "Alice",
"symbol" : "MVS.ALICE",
"to_did" : "Alice",
"type" : "asset-cert"
},
"index" : 1,
"locked_height_range" : 0,
"script" : "dup hash160 [ 95c9a5e647870bbc535d83a3c394ef40d298aa46 ] equalverify checksig",
"value" : 0
},
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"attachment" :
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"cert" : "domain",
"from_did" : "",
"owner" : "Alice",
"symbol" : "MVS",
"to_did" : "Alice",
"type" : "asset-cert"
},
"index" : 2,
"locked_height_range" : 0,
"script" : "dup hash160 [ 95c9a5e647870bbc535d83a3c394ef40d298aa46 ] equalverify checksig",
"value" : 0
},
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"attachment" :
{
"type" : "etp"
},
"index" : 3,
"locked_height_range" : 0,
"script" : "dup hash160 [ 95c9a5e647870bbc535d83a3c394ef40d298aa46 ] equalverify checksig",
"value" : 100000000
}
],
"version" : "4"
}
}
Obtain naming certificate
The owner of domain certificate can issue the naming certificate whose domain name is the name of domain certificate by command issuecert
.
issuecert
needs the following paramenters: account_name, account_passwd, to_did, cert_symbol, cert_type. Only naming
certificate can be issued now.
For example, Alice
owns a domain certificate named MVS
then she can issue a naming certificate named MVS.BOB
to did Alice
which belongs to she too.Command:
$ ./mvs-cli issuecert Alice passwd1 Alice MVS.BOB naming
Output:
{
"transaction" :
{
"hash" : "578c23781ab4251c02f2987f5ad0cbeb8ed526546877364efe853e5a345549d9",
"inputs" :
[
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"previous_output" :
{
"hash" : "c88bd3914577df14063f8df7b9365d0061ee902a9ab90bf80df541ec41536321",
"index" : 3
},
"script" : "[ 3045022100fef8cf721e972b256241aa983c5ce123be4ce0d50bfaf5c8696e5c17486e133f02203147741b4868e34e4f8a3b32e8b7ef1605582950e80c0cd04eee584989507cff01 ] [ 038d7048a4e640a0e0a27ef85d2a7e5b339834cd565ada0d6ea042127732fa105e ]",
"sequence" : 4294967295
},
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"previous_output" :
{
"hash" : "c88bd3914577df14063f8df7b9365d0061ee902a9ab90bf80df541ec41536321",
"index" : 2
},
"script" : "[ 3045022100959f7b4e694610c1078b310dbf5ea1cf710175e1349b469239fb79e81ca974f502202bf495d589a5b9ef0341689a8c88bb739762b538cf472422216e0dfc33f51f8101 ] [ 038d7048a4e640a0e0a27ef85d2a7e5b339834cd565ada0d6ea042127732fa105e ]",
"sequence" : 4294967295
}
],
"lock_time" : "0",
"outputs" :
[
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"attachment" :
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"cert" : "naming",
"from_did" : "",
"owner" : "Alice",
"symbol" : "MVS.BOB",
"to_did" : "Alice",
"type" : "asset-cert"
},
"index" : 0,
"locked_height_range" : 0,
"script" : "dup hash160 [ 95c9a5e647870bbc535d83a3c394ef40d298aa46 ] equalverify checksig",
"value" : 0
},
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"attachment" :
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"cert" : "domain",
"from_did" : "",
"owner" : "Alice",
"symbol" : "MVS",
"to_did" : "Alice",
"type" : "asset-cert"
},
"index" : 1,
"locked_height_range" : 0,
"script" : "dup hash160 [ 95c9a5e647870bbc535d83a3c394ef40d298aa46 ] equalverify checksig",
"value" : 0
},
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"attachment" :
{
"type" : "etp"
},
"index" : 2,
"locked_height_range" : 0,
"script" : "dup hash160 [ 95c9a5e647870bbc535d83a3c394ef40d298aa46 ] equalverify checksig",
"value" : 99990000
}
],
"version" : "4"
}
}
Transfer cert
Certificates can be transfered to other DIDs which can be owned by other account by command transfercert
.
transfercert
needs the following paramenters: account_name, account_passwd, to_did, cert_symbol, cert_type. This command suports multi-sign, that means certificates can be transferd from or to DIDs which is multi-signed.
In the previous example, Alice
issued a naming certificate named MVS.BOB
. Now Alice
can transfer it to DID Bob
which belongs to account Bob
.Command:
$ ./mvs-cli transfercert Alice passwd1 Bob MVS.BOB naming
Output:
{
"transaction" :
{
"hash" : "0a985f55345cd5ca81df08c263033c34b8895bf18db6435e8b2509ebbe9f4b0f",
"inputs" :
[
{
"address" : "MNz5WH5CH1T44hTpanbG1v1NBjcZXf4je4",
"previous_output" :
{
"hash" : "98f70aba9c690700dd66ec0c8fce2c56c22043d1c20ff76f164170cc10050c70",
"index" : 0
},
"script" : "[ 3045022100a0527a44333aa92ed469b34431eff09d31a7eaaf20a7b86b09cd395d69f74c0e02203b28dc32d9db29ee1d398021a0652be0a2b4486b8137471efb29b77a215aa11701 ] [ 02eee915ccdb35cc35583a3ad58be24fe914d754d00cd75641f56cc90fc305e307 ]",
"sequence" : 4294967295
},
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"previous_output" :
{
"hash" : "578c23781ab4251c02f2987f5ad0cbeb8ed526546877364efe853e5a345549d9",
"index" : 0
},
"script" : "[ 3045022100bada970681995f64fdd8716075f3b4ee7116d63376a5811ed1d897c99283eea3022027cd6761027155b7f892ad4d4944019fdb75ee3b15761e7e9f58738ed0010c0e01 ] [ 038d7048a4e640a0e0a27ef85d2a7e5b339834cd565ada0d6ea042127732fa105e ]",
"sequence" : 4294967295
}
],
"lock_time" : "0",
"outputs" :
[
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"attachment" :
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"cert" : "naming",
"from_did" : "",
"owner" : "Bob",
"symbol" : "MVS.BOB",
"to_did" : "Bob",
"type" : "asset-cert"
},
"index" : 0,
"locked_height_range" : 0,
"script" : "dup hash160 [ ee51cd6e869195dca48ede01f40a18c275322fbd ] equalverify checksig",
"value" : 0
},
{
"address" : "MNz5WH5CH1T44hTpanbG1v1NBjcZXf4je4",
"attachment" :
{
"type" : "etp"
},
"index" : 1,
"locked_height_range" : 0,
"script" : "dup hash160 [ a57805573daf3760779ff5dfc820ba5728e462d2 ] equalverify checksig",
"value" : 299990000
}
],
"version" : "4"
}
}
Use Certificate
Certificates are usually used implicitly. For example, domain certificate or naming certificate may be used while issuing asset by command issue
; secondary issue certificate is used while secondary issuing asset by command secondaryissue
; domain certificate is used while issuing naming certificate by command issuecert
. Certificates can be used explicitly by command transfercert
too.
Using naming certificate to create asset
In the previous example, Bob
got a naming certificate named MVS.BOB
from Alice
. Now Bob
can issue an asset named MVS.BOB
.
Create asset
$ ./mvs-cli createasset Bob passwd1 --symbol MVS.BOB --volume 1000000000000 --description "Asset of BOB." --issuer Bob --decimalnumber 8 --rate -1
{
"asset" :
{
"address" : "",
"decimal_number" : 8,
"description" : "Asset of BOB.",
"is_secondaryissue" : false,
"issuer" : "Bob",
"maximum_supply" : 1000000000000,
"secondaryissue_threshold" : 127,
"status" : "unissued",
"symbol" : "MVS.BOB"
}
}Issue asset
$ ./mvs-cli issue Bob passwd1 MVS.BOB
{
"transaction" :
{
"hash" : "3e6084732f35dac309f2243ef890e9455ccf930f1f54be386666e52356961234",
"inputs" :
[
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"previous_output" :
{
"hash" : "0a985f55345cd5ca81df08c263033c34b8895bf18db6435e8b2509ebbe9f4b0f",
"index" : 0
},
"script" : "[ 3045022100b79b10adf94b3cf7dfe33d45e6b65598c3008b348d87363cee429d24f9a0bd74022077ab16d574b0d3c118058316b950c27f1660c7ef2ece3e4bdbdd6b6bf2b7004701 ] [ 0218feb8b4eb5d83d5ca93116a09c1b16f9587db78af950a06c15c1c82e81866df ]",
"sequence" : 4294967295
},
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"previous_output" :
{
"hash" : "a0b321d1ce636644fa51f78f3a4a2ea66aa52b623a4759ae5b61b9f57ea4b647",
"index" : 1
},
"script" : "[ 3045022100ec6ff9fb6cdd7fb11883d05c43bbbb767111b4efbad2b96b5bfb456e470df54f0220531100981698ff204b76ffc53399de1bf33fbaf4dbd0ca666f57ceaf75bcfbf001 ] [ 0218feb8b4eb5d83d5ca93116a09c1b16f9587db78af950a06c15c1c82e81866df ]",
"sequence" : 4294967295
},
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"previous_output" :
{
"hash" : "5be8df2c2e3d2a7ecd6f1963cba046a78a4c959b6eb4d94a8396602d23c2a44a",
"index" : 0
},
"script" : "[ 3045022100e2d0c79673293c971b146fb3974ee5d36aa1c1fd8a24a785fe1577d634676df602203f048e25dd9c2920a29ecf2ea60774a8a1f6429b6c0ba1bc712d54757b9e994801 ] [ 0218feb8b4eb5d83d5ca93116a09c1b16f9587db78af950a06c15c1c82e81866df ]",
"sequence" : 4294967295
},
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"previous_output" :
{
"hash" : "91290adcfae5b490e0077ea6f2ba4484b4195f187a823023cc0bf829cae66147",
"index" : 0
},
"script" : "[ 30440220790e9ac92450ae4bd18420d5d3bb94cdd85f50c30ec54dace549169deb500a7b0220384038a8fe308a1330af337d3f3e3404e62d147b1b00f30a4c4a304a205f2e7901 ] [ 0218feb8b4eb5d83d5ca93116a09c1b16f9587db78af950a06c15c1c82e81866df ]",
"sequence" : 4294967295
},
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"previous_output" :
{
"hash" : "e4df769a43a7fb28aa29c2c9809014c04335afd690ab48f5359bcf4f70f94e9a",
"index" : 0
},
"script" : "[ 3045022100f1eb735631261c4e7b1e7591f09d999dbcda13efec29f8e350c5ceb3772f7769022077168d79740e4ee1f0af9b5f733855cd70091b9564562d57e571ddcace1f139101 ] [ 0218feb8b4eb5d83d5ca93116a09c1b16f9587db78af950a06c15c1c82e81866df ]",
"sequence" : 4294967295
}
],
"lock_time" : "0",
"outputs" :
[
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"attachment" :
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"decimal_number" : 8,
"description" : "Asset of BOB.",
"from_did" : "",
"is_secondaryissue" : false,
"issuer" : "Bob",
"quantity" : 1000000000000,
"secondaryissue_threshold" : 127,
"symbol" : "MVS.BOB",
"to_did" : "Bob",
"type" : "asset-issue"
},
"index" : 0,
"locked_height_range" : 0,
"script" : "dup hash160 [ ee51cd6e869195dca48ede01f40a18c275322fbd ] equalverify checksig",
"value" : 0
},
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"attachment" :
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"cert" : "issue",
"from_did" : "",
"owner" : "Bob",
"symbol" : "MVS.BOB",
"to_did" : "Bob",
"type" : "asset-cert"
},
"index" : 1,
"locked_height_range" : 0,
"script" : "dup hash160 [ ee51cd6e869195dca48ede01f40a18c275322fbd ] equalverify checksig",
"value" : 0
},
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"attachment" :
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"cert" : "naming",
"from_did" : "",
"owner" : "Bob",
"symbol" : "MVS.BOB",
"to_did" : "Bob",
"type" : "asset-cert"
},
"index" : 2,
"locked_height_range" : 0,
"script" : "dup hash160 [ ee51cd6e869195dca48ede01f40a18c275322fbd ] equalverify checksig",
"value" : 0
},
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"attachment" :
{
"type" : "etp"
},
"index" : 3,
"locked_height_range" : 0,
"script" : "dup hash160 [ ee51cd6e869195dca48ede01f40a18c275322fbd ] equalverify checksig",
"value" : 100000000
}
],
"version" : "4"
}
}
Query certificates
Follow commands: listassets
, getasset
, getaccountasset
and getaddressasset
, have an option --cert
to query information of certificates。
The information of certificate have four field:
address: address of certificate.
cert: type name of certificate. “domain”, “issue”, “naming” are supported.
owner: DID who owned the certificate.
symbol: name of certificate.
getasset
Query the names of certificates on Metaverse network or display the information of specified certificate.$ ./mvs-cli getasset
{
"assets" :
[
"MVS",
"MVS.ALICE",
"MVS.BOB",
]
}
$ ./mvs-cli getasset --cert MVS.BOB
{
"assetcerts" :
[
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"cert" : "naming",
"owner" : "Bob",
"symbol" : "MVS.BOB"
}
]
}
listassets
Query the information of certificates on Metaverse network or the information of certificates owned by the specified account.$ ./mvs-cli listassets --cert
{
"assetcerts" :
[
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"cert" : "domain",
"owner" : "Alice",
"symbol" : "MVS"
},
{
"address" : "MMZAUmJke7f1FEY67dAHUYfmfh2wWC4vFL",
"cert" : "issue",
"owner" : "Alice",
"symbol" : "MVS.Alice"
},
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"cert" : "issue",
"owner" : "Bob",
"symbol" : "MVS.BOB"
},
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"cert" : "naming",
"owner" : "Bob",
"symbol" : "MVS.BOB"
},
]
}
./mvs-cli listassets --cert Bob passwd1
{
"assetcerts" :
[
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"cert" : "naming",
"owner" : "Bob",
"symbol" : "MVS.BOB"
}
]
}
getaccountasset
Query the information of certificates owned by the specified account.$ ./mvs-cli getaccountasset Bob passwd1 --cert
{
"assetcerts" :
[
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"cert" : "naming",
"owner" : "Bob",
"symbol" : "MVS.BOB"
}
]
}
$ ./mvs-cli getaccountasset Bob passwd1 MVS.BOB --cert
{
"assetcerts" :
[
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"cert" : "naming",
"owner" : "Bob",
"symbol" : "MVS.BOB"
}
]
}
getaddressasset
Query the information of certificates at the specified address.$ ./mvs-cli getaddressasset MD9i7CXfRssTXr3DTtsn22KFyWwaxRLu4f --cert
{
"assetcerts" :
[
{
"address" : "MVdH3pZrjPqgvg51pYfr7ct1hEqL4R25fz",
"cert" : "naming",
"owner" : "Bob",
"symbol" : "MVS.BOB"
}
]
}