Dilithium
The Dilithium Antara Module facilitates quantum-resistant transactions on a Komodo Smart Chain. The module also allows users to create unique, human-readable handles. These handles can be thought of as an address.
For example, a normal blockchain address may appear as follows.
RD6GgnrMpPaTSMn8vai6yiGA7mN4QGPVMY
A Dilithium-based address, however, may appear much simpler, as follows.
KomodoHaxor
The handle acts much like an address, allowing only the owner of the associated private key to release funds.
Users who are familiar with a Smart Chain's method of facilitating privacy transactions can associate the same underlying concepts with Dilithium. A Komodo Smart Chain's privacy transactions are facilitated by the pre-installed Zcash parameters.
These parameters allow for more than one protocol to influence the outcome of a transaction. In the case of a Zcash-related privacy transaction, the transaction has both the underlying Bitcoin-based utxo protocol influencing the transaction, and the Zcash parameters. The latter is what grants the transaction privacy.
Similarly, a Dilithium-related transaction on a Smart Chain is influenced by both the Bitcoin-based utxo protocol, and the Dilithium protocol. Dilithium's added functionality is quantum resistance, whereas Zcash's added functionality is privacy.
Dilithium has "q addresses" (handles) and "q transactions."
Once again, this can be compared to the familiar "z addresses" and "z transactions" of a Zcash-related transaction on a Komodo Smart Chain.
- Register a handle using the keypair and register methods
- To transfer funds from a
t
address into aq
address, use the send method - To transfer funds from a
q
address to anotherq
address, use the qsend method
The Dilithium Antara Module has an associated tutorial. This tutorial provides instructions on installation and usage.
Link to Dilithium Module Tutorial
cclib handleinfo 19 '["handle"]'
The handleinfo
method displays information associated with the supplied handle
.
Use this method to determine if any given handle
is available for the user to claim.
Name | Type | Description |
---|---|---|
handle | (string) | the handle the user desires to inspect |
Name | Type | Description |
---|---|---|
result | (string) | whether the call executed successfully |
handle | (string) | the handle the user desires to inspect |
status | (string) | whether the handle is available |
Name | Type | Description |
---|---|---|
result | (string) | whether the call executed successfully |
handle | (string) | the handle |
destpubtxid | (string) | the transaction id generated when the handle was registered |
pkaddr | (string) | the hashed representation of the Dilithium pubkey |
pubkey | (string) | the pubkey of the node that registered the handle |
./komodo-cli -ac_name=MUSIG cclib handleinfo 19 '["KomodoHaxor"]'
./komodo-cli -ac_name=MUSIG cclib handleinfo 19 '["AtomicWarrior"]'
cclib keypair 19 '["hexseed"]'
The keypair
method generates a Dilithium pubkey
and privkey
. This method requires a 256 bit seed in hex format (64 characters).
If no hexseed
is provided, the module uses the user's pubkey seed for entropy and generates a new seed. From this new seed the module produces a Dilithium pubkey
and privkey
.
Name | Type | Description |
---|---|---|
hexseed | (string) | a random hex to provide entropy for calculating the key pair |
Name | Type | Description |
---|---|---|
status | (string) | the quality of the seed used |
seed | (string) | either the seed provided by the user or (if no seed was provided of the provided seed does not satisfy the requirements) this value is a randomly generated seed |
pubkey | (string) | the Dilithium pubkey generated |
privkey | (string) | the Dilithium private key generated |
pkaddr | (string) | the hashed representation of the Dilithium pubkey |
skaddr | (string) | the hashed representation of the Dilithium privkey |
result | (string) | whether the call executed successfully |
./komodo-cli -ac_name=MUSIG cclib keypair 19 '["rand"]'
cclib Qsend 19 '["mypubtxid", "hexseed/'mypriv'", "destpubtxid1", amount1, "destpubtxid2", amount2, ... ]
The Qsend
method sends coins from the handle
on the node to any number of other handles
, as refered by their pubtxids
. This transaction uses Dilithium signing and is quantum resistant.
Multiple pairs of "destpubtxid",amount
can be appended to the array to specify multiple recipients.
Name | Type | Description |
---|---|---|
mypubtxid | (string) | the id of the handle-registration transaction of the sender |
hexseed/'mypriv' | (string) | the seed used to register the handle |
destpubtxid | (string) | the the id of the handle-registration transaction of the recepient |
amount | (number) | the amount of coins to send to the referred handle |
Name | Type | Description |
---|---|---|
hex | (string) | the hex to broadcast; use the sendrawtransaction method |
txid | (string) | the transaction id generated when the hex is broadcast |
result | (string) | whether the call executed successfully |
./komodo-cli -ac_name=MUSIG cclib Qsend 19 "[%22d60d224d7855a40507064c5ca72ed7d84a54340174eb16e31d079e4b4f230940%22,%22e580f34e9bdfd23108409e76475c7df3f924d149d494d5cdbc24aeb280237d4a%22,%22af710c0fd6aeb54556ee401803bc4cc39ea9002ad5228f308b27eb3af0e4c4b6%22,1,%22b625e38064cb0c940a55f0dca7e6b60270aac090d0dd90d4e43e924d696564a2%22,1.1,%2276a914b738b1730cfb58960b1dd1765c6d3276993959e188ac%22,1.2,%22a9144d5e24fcd799f3a3fa15f98a6c69a5829596f56087%22,1.3]"
./komodo-cli -ac_name=MUSIG sendrawtransaction 0400008085202f89016c21f44da4afe05aad8b271659c6cf8cfccb6b6e33fdb9f5f0935a0d6e8ef616010000007b4c79a276a072a26ba067a56580210377ffe2b64443ac5e746f29b021e22411c7731d675f169d32423f8f3d6fc9ea3b8140ccb5db05dc45a4ec747705d76f2e71f3ab43830693f093536d23e6ab31c18b0c04c2906a8e600629b9264043d4534da3c22c1fe1dbe2192ebce23b8a99cf35eaa100af03800113a10001ffffffff0600e1f50500000000302ea22c802008b4a3a211fa1ecb9d245b3267827a56924653fe9bb4697510cf5d65e4bbfea98103120c008203000401cc80778e0600000000302ea22c802008b4a3a211fa1ecb9d245b3267827a56924653fe9bb4697510cf5d65e4bbfea98103120c008203000401cc000e2707000000001976a914b738b1730cfb58960b1dd1765c6d3276993959e188ac80a4bf070000000017a9144d5e24fcd799f3a3fa15f98a6c69a5829596f56087a0244c1200000000302ea22c80200c0396b7e2db09ab239f0b337fbc7df888273e60323a63d0caa862116bcf51a48103120c008203000401cc0000000000000000fd100e6a4d0c0e13514009234f4b9e071de316eb740134544ad8d72ea75c4c060705a455784d220dd6fd460de9fbac397128243cdfe192f73c9eb327fcc75338e694a94f4df8bcf7d668868731be4f2b886f5d1292e3542f31f01a390fcd7491d730b57ce1fcd6abd792efbeb4047f2cc24b98d07577f3121a74a141d1a7ce94b1e03fa69031e91baa38ef209866fb9db448445fc4794331f5efaaadd1ee58c58deac4b26012ed65f876fb056711d3902500d2d45c0e4e082d8a058a7a671a2fd2a855bd882ee5a06962ab72d93783c7f1fcfead9f712dd3af0424572ce58a36b4e558bc9c95650351794134f1d74f8f275500f19bc967a64ee0baef222bf34c50f0bb771759afee0b202a542d4a349e2224820a2fc29259192e1dc1c2648b161a31454d9a6489fb26b280ad6dd3f1916cae118150d49c52401665c8b299608760c83659f88783120974f85f22d9af9b5ea1dd4a145b29aca2929ffa0449dc821cbe0dd8f86017a37573ad8ca33901e10664822a0ff0825f957bda6148a41d8bd48ae42a7fd10e73e4f28198e767abd1b2c1297055729ddbb613d3d4476b8cf228be84248bef116546ec8d773d271b2a850711f2a8cafd3502575c94a5c258c322f1a0123f439d796239dc7a40e996ff282eb605b7bea9336fa2d6443924a3487f3275095a8fbe136918cb6a69afa2881d793d0d70433c0e16ac5218da88ce76194d86ae8c283184249cd4fc3824614f95af655556e3c3c90765358a63c411cf5df4075546c9555feb2fa1057f540a79a30ddf997248e47076418b31514607236ee23f56b8bd7ee03e09dd063199c45b0b120af1e44920b535aae890d51d0134ee24872a995b991efa31bd4bf9e551727a877d29ef269b83efc0368d042086535b6bd956c2f7bbc3b686dbd765d092a98e825911a13ea92ad2cd7604288c0e7595ee3763849a4d61c90ed7686a3902417eb90d59e40350b12353fd5fcffc53c52759ee393e68227018c924ac9c0390d3029fd26dcd93609d57f19868abfce563dbb93921837f85b092b8539447e2696a9d60345fe390200ce741eae671561b54ee0f58c32e944a954143dd274e41179907a99394c9c1c978a964555d91d0acdda655064a824c7673dc84d1d5a94f06ca6b19078dcd657acb9d84518b94c2f56e4aed02c50a1861d536fe19c29cfede262d8cdf1fba7848f017ce53bb99eb9b40d0b2e5951b47099d8d975bf3054baa8019a9299794e9c4e1f7117974d15dcd4bf1f75b732ac65cbbcd9d2c232e8445d93f422a9315d7c7627d5e4d424094d04c6e419e9805b7bb7849214d35e02139463e73989d019cd1ea3a9084f353f3145df38f88ad0baafee1f0e95477cacc7b0246db8b4ed485db10c999c508506d0bbff6185c53903f8565edd90fc16e3f6be972463e3246a73cb1e2cb294209c71838ae86732cab6f648d10459123d30a59c1bf63a2232d32c8cfe0d06c4797c883d0ad452643496dbec37f87a1a90b525a938cf3367c9917e57c506d0fa422e530753589bd9317a775af64de696857705c5efed3037ad7ad7e1a4789ef238c6473cb433eda187484592e48e5d237d73f558cfe24f68bad4ee85b77c01b9924e262534c9a2486432a5be199aea85a935f6b2424a4fbf3a5dc7afc1866692404de45f41393aecc7ca5761c25fa5922ccebeb8b0580633c75a944d473d18318fe0fb999dd61259813bd0f5c62ff50df1148c6d12757b2de3be3098e7c283eaa3acea5049f4a7e1393235dfeda7b0fdcca6cdeee5410f023bc4c1a157cda0044edacb30b4f00d3c647e83aec5b966ed4e1829eb1f9ab7da7715f34e07e17ed59e45922500f493d74ab8f8f645f3e9002d202f9c2ed14ec698548b7d0ea182c8ea9de1b9146b3a77df43e80a2d085636eb5a80f9d643682d211ae13bb6569ce3411aaca39727850155274aa842baef36ade2173aec3d6c3f4039038d55ff69a7a35ef2d08b5478106b9f0364a8c0e95cd4751bd905c4c38dca63bbcdce24538bd08fb0cc7d9cd1f5dfc1853d502e1f38adaad6c468d9e50ff81d2a6b8dd3db7602bc272675d2efb70382dc19b9039a0b32d876787f2d0e0671b11adde48aafef6d684c517e77217be631366bf99f1109e55a389436e915d847f212b07a5c6fb94db999662ba20e92e642e88bce288cdce3dbffc0d52607af784f802eb18e810d49766ca752a6534d7459a97a2bf07787c63cd836862eb05347cebd3882df760b37b873b79d935cc4fa6f444a6f4d2bae51dab832432a258c1d741d7c133e55302920527e02f1ec8b0ab2703df6fb4c3d357efa75a53c91666b59ed6135907edee5b7ce73c3730c90e235cde4e384dd51f7d7e1b82e3c7cedff649fd6a5f247e829ea9e00d58c37ffd545cd311ad369928ac396cb5dbdfad2c6de10d0a0b1047df15f26c51b225ee148d95dd9c5aea4a4da592cd59b3fcdd8478ee264ed68e61aee55585c32b6dee251f593e8a9f492b9003208af4e04d0e5ee00afee4d0d074ae9aeaa8fda26e89fdf4825da2f0211b5c9a8eae9f1070f401cd6583d0296057c9707a481983aa45b76b290aa249cc5a545fe8956000fc2d48c4803dbc642e1ef9ac3904652ddfa3b6a29e405984a2188b31eb358ea04462ac751937ef5a153d865e6b5951392dd6b4c6ee16224705486de08d380827554419ab24b37b58bd351d157194640d9eba45c13dee0bb73429b497e3885568161f286a6b6f67d8054674a717c6d26defc68c734622dacb8a2fef4dfbd425ea78575402d15eeb9d8cc6f99b0ebf33738b34e14f34b4b990deba45abe2d3c81038d4fa3352a4e904d9d6b244585ba1b0f450c9da0fe84e711255846bf56fc483755dc006f74f816bd27c408c1d4102e2882702b7afb187096a1046cd47f1be2a10400040d310b862232ec7b8419764d05ffe3833bc8462c90ea3f4b65af3fb07b885c9403434b6e0326b05188f8c05d157e0e721a9514fc189dd7c6455d261482fc46c4c206d94ba737a1e456cd22a11e3daf0f2c5716af6ba28419cc17ffa7303ee25d52675a1612ec1cc3bb708c1f0a720d9f4e4c5b47d4bca46f393eced4e6de925262ef229adb4405c44c7ba73646ded1bad4879f8024e84eec05c8bd635bcc6372e1f420be1b7e7f764d966b8715b21b73efb19c4c2d612210cd13fe06bf45d79b0886bb67c9d8f7308cdabde24127d7d3181b3283582b27ad46e0076e03c3269c11b613a6e0375992cac30acbdfb42eb99d6b3cdd845a978845dc7acf67882eaa532641b56ab5626581fca7481e4d1f54f1fb6e1accaff130a66cbb61fde59bc2052c48325a45219818648791ac33046832b02cc9e6aa587aaedb6e7f5d2e18f9b2e6727763f9511b715a43d7a4f608cb3cd037f4e26a455f8b4f9706ec408d4d435be1e6482c2db2aa2f08f23a31900128d57f210e34cb61f73dea2614cb51c220789a40cbfa35c9d565e1f9b809c81f9e3bcdfd5fd814b619b9c7a579daac86c60abcb7293de50b0a3702e3b877f828777235a49920c9dbf5ed9ce3a3f885c2bf985c620b7d0dafd7366a22554b6601af7866b5ccef7e8d67a29345598d98f946a204c128487fb672acbc68097d722d9e12f625b62e8b9affbf05539e44b62e72f6e2d917f1660033dd2a171d37387002cc04cf857d6100409a47d2ce9926c781758d0b7405d9d40086f5835685cde5648495864ac138bf81dac0f6d972096e993b49973c7dfa9a942edc9fe8fffccceb312a0e25b3a335e3b4f06c34cfbe4828597aeccf738a8164fefd1e88b62b12d76d13a5cef333bf8f16135dcbb84fa257b24eaa1e2b7d9c9e9fef6bf5d908e57a05c75d950dbd9ed6ab6f72a45f29e8fa80987406cad82c8d57c744928e3c5b5dbb054df82952b6d995d8b981b532170b311d701b1c0613787b3dbba56c254ffd8ff11270888029d9b342f08c891d185f2ec769afbc8d2b5e232c2ff3365c038102e09094d7dba19552a773f5d2fd153b24ebf7950f7d8c9b857413461cd68c464eaacdfa050b05e4b67a842727ae83a560e692fd7c473552e0b4d6c33544bb3498e4f77061bd8b06a279e68e813ba1571744328f27ad2f9d92cd0e33897c649c6cf33f235604e092d002c1f7e5fbe5cbff16b92540e33e4b3afd99e7df80bc23eca979125c0f271eb1f3e309c9a4dc48e82873b918c1b75ef029f3fa80a65d0ba9a3d7739a0763bbeee1920cc953d46921dcecb65a57f608b9092221209f5dcdddd66998f295f043114fb4c263634381cd381fd75e6c9d21620d13a4544a1ff4a9b789ca115d8108f8ee063c4ee9fd4e21886d74c3a54fefae364fc924d9a7d0994796f6753f92b7fb77be7ceae095e8de8b064aa3ac04138fc9c92a5b63714644ca35c9a12559a0b406df0dade4bc2018c029e0f5e87326ba85360788188cfb03873255c2adaa347fe8265f1fc32d0a8b90ea49dfb8aacf01c69744cf0096298559670d515540cc929480b7fe97608111f17b6a39e3e4b9c127e027d4ce00a761c3e3336b91e4bedacaf3a84b44e3f69180d8da4c7ddaed25841351096d7e822ed97c87250f901365c656671b5b80b0c182126333945516f8f9294bdc6c7cef8fd1a1e5c686e8081949a9da4aab4bde0eb0a28292f373e4c51545cf9ff11425c6b6f7a7e7f848ca1a8c2cbdcedf0fbff03192527353e3f55878fb2ccd7fc0000000000000000000000000000000000000000000000000000000000000000081b2b374a588124700005070e14a0805080a84a430004891a4412051202000440190140c06261da92a73502f904c0eab1b16b2d2b60ec32c1863d95069848bfe717ae65f8d8b718f7dc2f5b9c0605b6c4e4f03aeb278b308f22d52a00a99ec34cbc031840ee5645b5aed60f0c71afa26465694d923ee4d490ddd090c0aa7002b6e6a7dcf0550a940ccb6480e325b6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004009234f4b9e071de316eb740134544ad8d72ea75c4c060705a455784d220dd600000000fa6c00000000000000000000000000
cclib register 19 '["handle", "hexseed"]'
The register
method allows a user to register an arbitrary handle
(such as an online anonymous username) to the pubkey
the user used to launch the Smart Chain.
This method requires a valid seed
, as provided from the keypair method.
Name | Type | Description |
---|---|---|
handle | (string) | the desired handle |
hexseed | (string) | the seed used to create the Dilithium keypair |
Name | Type | Description |
---|---|---|
handle | (string) | the handle registered |
pkaddr | (string) | the hashed representation of the Dilithium pubkey |
skaddr | (string) | the hashed representation of the Dilithium privkey |
hex | (string) | the hex that should be broadcast to register the handle |
txid | (string) | the transaction id generated when the hex is broadcasted |
result | (string) | whether the call executed successfully |
./komodo-cli -ac_name=MUSIG cclib register 19 '["AtomicWarrior","a70a8e7d2281beaf0762a11590fb566d7af32325ae4252609149de37658e2eb5"]'
./komodo-cli -ac_name=MUSIG sendrawtransaction 0400008085202f890c3ac9dfb08a10d3e47274ad9c1f3de2e59b4dc34b433ec7a171cc15880b67fed5000000007b4c79a276a072a26ba067a565802102f1c7993a9bf3863c77853315af7e37c12008ea1c5c3d8722c91bc3b5a019652681408acebab227b096d42a78dddf98b4e834a164e5627e63d1223cceac25e6f8e41617c30ee7463ab48b1229b9ead2aed29b2472f265d5d347f4ab17b3c93f47d5c1a100af03800113a10001ffffffff05ddc1a108a5313bb185ded05ace4d8e29a2f4608f0c7ff7251d11595f3a445f000000004847304402200b10d4b69c39a3fbb15060908c82703e2bf5e573eb01c852fbc2ef531ebafd81022036e4faa9a8ed04ca8502da4c0c20ce6d3b25f82716d1c694557b56e98a26b95e01ffffffff07cd294b67f76a3745a00fb2ab20f6c329eb9f69bd5ef924773bec9caf95821a000000004847304402204a18f2084fd6ce364267bdc708d610028ba41c3155dc895db578c7739abb33950220656b8184a333f806923a29a24f9aca24a122e482d1c66cbab5d811790edb69e201ffffffff076950481295bc4ed92a1967107684288f9702951c302cbd1dcd769e51b42114000000004847304402206c294c39d279f44f7d36d72706a25b296d9fe4a5f8f675dd607cbdc5ba9b93b402201660a9d6d935355fe979b33c50b25b267125a9fc463abc5346355cb953e6e7c801ffffffff07386ff4ac0a46d343afc36786709ca93f08bcf1feb3562ea7baf3bd58cd7a2f000000004847304402207e66ea8cf31bcbbc156cc2d8b020a95440183ea3034dea20607b6a7ef28b9efc02206577bf339d49ecbf698cf434e6ad63f3ca41f83be446a3998d397f097b9d0e3f01ffffffff071395c451379d66ee21321e376721d67fe510287393499ebcf1a67683f3d611000000004847304402203ed2d7ebbe1165bfc02efec4f95905473d2fe4f0fafbe7d0fccac39d379958eb022008c385d3fe93f3a6e10ec4ce78b67f5a93f3df43c08be7534ca55036aef291d701ffffffff0682a878de10392b1807abf35589c9a3aea4137b12d61716be974934a9b116cd0000000049483045022100f6dd23ae75da9f0ba01927f32bbe03e90e16f0f216227400c58f331b3526619002202c522e7b622409ee1974f03022940daf7b0046523b1c69c03fc16b3a55c21f1d01ffffffff066f21010b80faee30bca88603439389aa2274e52ca8f4d288d6881997a1f06f000000004847304402201d98276f505fc969ecc1f5f4df2d71e371b9537f94e466ab6b35594b13afbf1d02202dca6c57312019400809d9bcc7fedccda65d02ca0fb492a72f98128ca4b95d1001ffffffff066e38c8bf4aa889d9dcc53aeec1a95d548400211280fe24d4c0e73de69309bb0000000049483045022100e8255e4b42d3084a66afd9984c7345cec47a15b509f49c4b04d4fafce5bfb77c02206152baa639a6393a4f86db5fd6739cfd096701a1617210aa7138dd8c752bd46701ffffffff06507713eb6ba1246886e7c8364b5c7aeece7251f85d0ba50190365651e161c7000000004847304402203a19e60986b7f45ba8dedaaefae62ab3d9052787c650d6bb5b1168a5afdeafb002201e9691b6093383af569463158d6dcfb6dd6649054c6a3aeaafa435d36b74dc0201ffffffff06195fcbe6c657da6cbfc69892ffb67470fbae568fa826169201aabdc2f2ad82000000004948304502210080952f9f65195b4f2122bba7e14c049a4253b5c356d548c550bb38f1317a31f002205b7c3743bfbab00ff100174edf1367aee599c6df02afde5c62680b68d1ecd64901ffffffff0612f70038d70cfff5a1bf02d39357d567aa0b02e98c97fd877399fbd0763dff0000000048473044022056104b269b860662025808532cc594a11de207be0b0121a247aa1c3abfa834cc02204486e95cb0d1b27a41e4b3af458c6181c0e6d2a97eb8fb32df313ce423e8f81601ffffffff06204e000000000000302ea22c8020979f9b424db4e028cdba433622c6cd17b9193763e68b4572cd7f3727dcd335978103120c008203000401cc1027000000000000302ea22c8020749dd6534e79a31aeba03df3b0ea58632a0beffc3411b54b7cc0e714ae2dd61f8103120c008203000401cc00e1f50500000000302ea22c8020e029c511da55523565835887e412e5a0c9b920801b007000df45e545f25028248103120c008203000401cc1027000000000000302ea22c8020979f9b424db4e028cdba433622c6cd17b9193763e68b4572cd7f3727dcd335978103120c008203000401cc502198000000000023210225f1cbbda1a0c406bb8f6dc7a589d88b2f9e28cd4fdb3f59139f8aff1f5d270aac0000000000000000fd19076a4d150713520d41746f6d696357617272696f72210225f1cbbda1a0c406bb8f6dc7a589d88b2f9e28cd4fdb3f59139f8aff1f5d270afde006e4f25d02a6aebaa196ef1ba40f9c8156ff691b5505c72c304f9bcb4c0506167447056dc7341b1431132d0099e8e0a7c134fdad28e6ef8a290c24652260502f43876c043b5bc48f8624c2c396ce1a10e2da59fb73d5523bbe830eabfa6271f33981c54b519c25cd6a76f8298d4f380c96c8dda1a95b45c672bce7c67afa1620cafb5650c1b48758256548b6513f4b8862aa2ca959d244a3955fe095cbf07458e6dec3f73d1afa9f4cf40213d3e7355499cc23f9cec63437a352751d2b95a0353e5ccf70eb2ec5b6d00bba3f12d8e5af3ee752612361e0eb474a3f7221175462e9c171bc6cf709aa5ab53a7683c24decd759f97503a2118f798da1eac081ab7c9e61fe8697746dbe1e798690c9ee600ee53eb336b714130404ed9c5f0d1407a007641b723e59c9bd5178cd42953d10b97d367fd75fa0cccdbe7daaee7b11698e667f1fec2a78d5b94a013efc2d9fce26ef7bcb44371e04854a0f039256fbbe0d472f89b572f5a252528d426a6642fb92d243092b35976b54ece95e0ac246491f6dd024a7ba6cc164fd5172e50c893ef974abe1929f286036cdaf7a5c0395bee9d8feab5b80c07cf4d0b88e4df10a08bd4187bcf82e34a5631a32fae96ec25f992e20b7987df6d0d70535dc247640c00a3b4baeca3a579fa91dad116f3fac11223be5848bd9f34edd0fa3528adde06896f1e363ded56ad6feee9b9bda41f32d4d1279d005e6eb7997bb73dd085154738d11ab800a3d0964c441cb2117d6859ce6908b0525161bec38ccfa3ad71f6005b5891facfc54a2a25b758f8067f754abe41fc769ecea5b83c0a91f4edf549760954276d4f3703c7c563c5a9003501ceed81f382903d581fcb1fd823a0a9caea81250005cee48e98676df2f0cea71fc2ef0decf3d3bdd7b0d5c8ef7f64a8b6fe160290b57c2724bbbb264ed2b6f48a585174c30afd51cd5bb43138d7f88853cb9919a697816c9d0ccdee186858eb48d76853abfdf1629a3a3d781786b55ca1d19413304341b3db4e2a390b410d8da35597d53be07149a1da27c1e0c439565f404259cfbf9a90511bca1f3bc2c7d9592c95eb83da99f848f551a402004e7a7af1896d05899da19e2a133ee50dce1eba96ffb626340cdf713cedf8579fd76d65f144f47065b4517b6be66cdf112029300ccdfda9158be86845195f5e7a50c90a7360e4470ec7b28700393d0d8685cc32c5f352de03f38efc2b6a379def182aae527ee18dd69c0e4cf1398b220e26dd052371a83db082f55318c0e0fc27568f5a6122484f889cb73d29c8da6f91a65035543088a87e68c2b8ce2f7c87a0613f89a04d372e19a1aaaa5309a032d01c20b8d56c819a85fa19f2ae1dbdf36c83b65fbdf76026cc91925ca06254759c0b6613e11a9cda6413e52695fb20cd61145d477d779a389e63eaeeefe6bcd1588e7b149cdb234616764f13b8e61e045d2ce9e53668aab202d7d941fb5d314fbb2c12d9baf71ccd2a43ae8745973626ac4d3c15b4d4df8a756bafaa6c56f3cddf78e3cc008c909ab31bf9716283d1c91688efba7ecc048218a5becee52cbb22fdd57f6907563106aae0ba8daded1050a3617d5962d108aece6b25309fbb63f739beba4dd5117c7d36ce5ea324c2fe98b27e9094acd8e9038e41ae5e7f5e7db705f1b297a341f3ba10f3a86942581d97825e97e0e43b0308cb3b283d303b5115c539cf4b51e0e963aff3270b696159fce3e3e7e5887a15e2c40c0fc308d037adcbde18e765915bd990039df9e78c5af9e5a7ab96bfc79680e2c6e937599893a737a8fb0910309cd75dac3b699a048274a987fa1b3d70d80a21eb23ba8191b508440ba5264998d46ba951df5a022226efcf8526e765cb88048675ab5bf3158bde9776f670b3e914c44c1ce5dfbb806a27b7155e8b3a12e728899b61781ddd1e7000ae120afd025675d50c491ffd7e97698feddfb1cff0b0d1cc428d2f0be466e58a081985d444777c4add2475fc80dfb4bba5e191b4bc6b631fad2d96a910254366b94fe45c116d08c8c01c0158073f9f5af721f08d772f95ac5a6d55b69c9adc3abc4e9d816cf4bdb86fec744fcf0817142079fb97c74335eda37b2bb4124c6ed91ef1b1c7285195a197d82dd755697c9136e49b652bfdbf7682558d8f70fa9adb9c4c5c0b32545fdf7313f6d68fe0a77c38c49b18ae79dc57aaba711e8ae3f8be3a007f84bf26b3f8967b95f4696d3a37598f69deab9e3d1e251d6a095280e1e3d1f873aa53942182dac1bf768a4c3bd8df15fa58589ca7e979dc5f6707729f064d1cc24bedbe3ad9404a1767918278677362a253a723223da676331c4cabe11afc441a365abdeb119fa5f6b66107efdd2546ada80014b382a62e90f360127279ffb54835b34ce886d2918160b05d9b4e91996467aacc6dcfffd56c13138c04e50b63693a3a6e3843b649ed2e18986aea35d35634343a7c50de1aeb8730f6276080549bf43a1ba00000000f55700000000000000000000000000
cclib send 19 '["handle", "pubtxid", amount]'
The send
method sends the specified amount of coins to a handle
associated with the pubtxid
Name | Type | Description |
---|---|---|
handle | (string) | the recipient's handle |
pubtxid | (string) | the id of the handle-registration transaction |
amount | (number) | the amount of coins to send |
Name | Type | Description |
---|---|---|
handle | (string) | the recipient's handle |
hex | (string) | the transaction hex; broadcast this using the sendrawtransaction method |
txid | (string) | the transaction id generated when the hex is broadcast |
result | (string) | whether the call executed successfully |
./komodo-cli -ac_name=MUSIG cclib send 19 '["AtomicWarrior","ea448ff66aa925239cff7ca748d3aea62474187fefbd1c15fcaaa14c4529b82a",1]'
./komodo-cli -ac_name=MUSIG sendrawtransaction 0400008085202f890b07d7463ac5b5ff1212587b75c8415a92a628e4dc211561b90ea5ac7b37af2935000000004847304402205055d1e1babbd1216613d6e57e23b7de86ebc6a4df935db181a10ad9b1e6d23302202d69603b098a0565df5ddf1cafe96cd0fd591fe47c4fa2701e77135ed3c797af01ffffffff0ac7f5fbcfa6fe533bb619d98cca38406b6b97e69d91090c2a1b9fc210163890000000004847304402201b4cf6a262534b5e1ddeca3e1289cb0d32e4a9f1349b557a998ea455c02a890d022008eed182ee47bff2d14af9d130704c4a38bc7bd683c38c9cee81142c208e112e01ffffffff0a43b879094d181d1d3746320f50edd11b931a32fb666ffac69b3fabf52e78e40000000048473044022067c0ca1d5166566b82c73217369ab19acbb53a01a8d7ff1636c5f77d735e5f7202201d542b4dbe7ea47a102f460f7930c183d9022fcfe35437b5f7898c154267e56a01ffffffff0a33490539d3829b5a7c2f6de716003a50ecd5228c79104517c718aa8de2ce8c0000000049483045022100c683d67b101ecc094c84607a3e10d9387aa47520a48e3f60d446fc9e8d85624b02203d520bb85d860858c947d7e138b7228ad810da47a6ce37cbb530f8811d24c0d301ffffffff0a3292a70b1a9fe7a3617abc9ba62da3d01bd0388b18dce657b795ee83a0b1390000000049483045022100f2cb8a23e21256dccfc778be883bd0a2961c5df5295cf66ec0ba6bfb8b4bc046022035c25c9b477946fe89c3ca5e26a045c441d13ec17e34864e16155ff9146be98e01ffffffff09be749efbfc980b15412a17871be7dbf521e13670bf1c8361c5a25e63daf69a000000004847304402200c5aa79cf8cb57c2907996b12671137ae8703e95b446ff16bcc719f64405a6ec02201e01bf4cf19899de0de7f171511e726618d9ea85534537d15b2ebfd74e2876c501ffffffff09970f055331edf5f93031a82fb909bb1aa6002eb557b4a6edbd858eb966febf0000000049483045022100a2fb27660fbdb3d5781e57a81cc3984cdf180855c6ef7335dd01d2ec35c709b5022069059395a6fa1bbb43ab2235f7f80c73bd3c8d29bc7fd50892c70cf15508a17001ffffffff093930519de533d4330040a695cc8646f61fa748542101b8d3d8345d4d35af700000000047463043021f3046d7bc0279e1c8fe114ccbdee8f15056371c66f0cef0beab44f6f522732f0220686b590b057847912c3e80eae4de68dc6a28c331917fd3671d1ee4aad31c785601ffffffff087d867b365921b9f063a2e58575b86fb52a6ad8d119edcc8714eba24e770a0100000000484730440220020d29a6f465428fd481b1ed11b4b9e2f086e2b6a19aa67c1002f5db65a92fa502205befab5889abb22d4e774633d6073f46827424325317d2813f3b64058fb544b001ffffffff08172d2236ac25430e3bdb64593fd2a440ceb32b007779f6f792f319d187a6570000000048473044022056060b04e790137ae7891d050063c2dda3be5ffbc7f1be30be8d9312949d47a702205634bca2147819b6b9a498762075d78636cd73d1fd263b380317ae1015c9b63601ffffffff0807d4a2de4712a21cf48b89f8667765506bd8a525265c836adbcc43c3fdb3b70000000049483045022100e45854defca9139c4f12ed2d4a8123758978ec9e8c685e580484dbfa72179858022019a354068e28c4807cecb95d85dc6a6b67b83657d8636108f28ba1eddf30037b01ffffffff0300e1f50500000000302ea22c8020749dd6534e79a31aeba03df3b0ea58632a0beffc3411b54b7cc0e714ae2dd61f8103120c008203000401cc706f98000000000023210225f1cbbda1a0c406bb8f6dc7a589d88b2f9e28cd4fdb3f59139f8aff1f5d270aac0000000000000000246a2213782ab829454ca1aafc151cbdef7f187424a6aed348a77cff9c2325a96af68f44ea00000000f55700000000000000000000000000
cclib sign 19 '["msg", "hexseed"]'
The sign
method signs a given 32 byte msg
(message) in hex format using the supplied Dilithium hexseed
.
Name | Type | Description |
---|---|---|
msg | (string) | the 32 byte hexmessage to sign |
hexseed | (string) | the seed to sign the message |
Name | Type | Description |
---|---|---|
msg32 | (string) | the signed message |
pkaddr | (string) | the hashed representation of the Dilithium pubkey |
skaddr | (string) | the hashed representation of the Dilithium privkey |
signature | (string) | the signature generated |
sighash | (string) | the hash of the signature |
./komodo-cli -ac_name=MUSIG cclib sign 19 '["5175616e74756d20526573697374616e636520697320617765736f6d65212121","a70a8e7d2281beaf0762a11590fb566
d7af32325ae4252609149de37658e2eb5"]'
cclib spend 19 '["sendtxid", "scriptPubKey", "hexseed"]'
The spend
method spends the coins recieved in the transaction of id sendtxid
to a scriptPubkey using the supplied seed.
Name | Type | Description |
---|---|---|
sendtxid | (string) | the id of the transaction that sent coins to the handle associated with the seed supplied |
scriptPubKey | (string) | the scriptPubkey to which the coins are to be spent |
hexseed | (string) | the seed used to register the handle which holds the funds |
Name | Type | Description |
---|---|---|
hex | (string) | the hex to broadcast; use the sendrawtransaction method |
txid | (string) | the transaction id generated when the hex is broadcast |
result | (string) | whether the call executed successfully |
./komodo-cli -ac_name=MUSIG cclib spend 19 '["18e3a7c746e8eb7a7e1835e54e46ef6f227fb41c7142bf0304b453c0034b31fb","21029b086d4e3e0358f668ccc3da07df6343fb29970b742f0bc128f180994c5222c1ac","a70a8e7d2281beaf0762a11590fb566d7af32325ae4252609149de37658e2eb5"]'
./komodo-cli -ac_name=MUSIG sendrawtransaction 0400008085202f8901fb314b03c053b40403bf42711cb47f226fef464ee535187e7aebe846c7a7e318000000007b4c79a276a072a26ba067a56580210225f1cbbda1a0c406bb8f6dc7a589d88b2f9e28cd4fdb3f59139f8aff1f5d270a81409082aa1e061a82c0fd261b98af3a394cea7d269ac4656882335356cd315e426a128eccbbea03b6cfafe2349a193ccc587c08f6e2cdec8d71ce5ad8dbdd60f0bba100af03800113a10001ffffffff02f0b9f505000000002321029b086d4e3e0358f668ccc3da07df6343fb29970b742f0bc128f180994c5222c1ac0000000000000000fd6f0d6a4d6b0d13792ab829454ca1aafc151cbdef7f187424a6aed348a77cff9c2325a96af68f44eafd460d7e7405e78304eb2eb0e65a6e5cea9c82009db2977b7796f053d1ae5751ce9a12df055271025697ab447b5aacec5cd324f1b603407f71e711d7f88bc96915b91b5a8177d683f9b035c6a44aa2ae0a1b4be468c7875b4953139c8480ec5e6e5681e86edb715fd351cc2e4074f1d2905bb181d0072bf3effe370e891303485eb998c642e2b4182d527a06e18e1dc3d695f3278b571964ec59371fb17e6cbdf51c73983d8ea17c567c000b9229416a15dd4a812498840c77df30a0b68560afe1d97ba9b11610f0653f367c62245221d038d68eba0b4d9ed76f05b54e5a628c1ed79b29efe42e19f1956d1d660f45d53a3a9fe2a28692a212298a474ed94429c4760a2cc7db794632cb088de11082c1b6dc3db667329dc6988f1a74104bdf8db9805c98fbac074c187e62903305a4be8aa56ee5642123938493e0592ef288088e3124d0c6f621fa2bbc75812bd462fb5ba083d7e945cbf873c00e2b27b97493af56b83430dbaa5ca91be559ab062b7eccca238dbd756a5b8d4782800cd8ae6d511d2cf83234fa47af57fcd198a95c0ab120cbf448ba80ff2b517d28813e97019a055f62bea952c28d6f0f4f413af1bc34bdb07b01c4ed56447f45a89ef6d8c241926f9a35458ada85037455bced29d22e5e4ca0794155f291fcf96462ff3511df5887c2930134698d3bf8eba86640a07515078c543ae0e2c27e4c39d51da85c3d0bf27989100e112b36ab27c92a0c747c72a5ecad465c2084bc0f84d9782a6bbc07c28e0758d343e5f9f58bf21fc7b9c0c4e4eedeca95418a3d08df03b45505e6926df5742051f5aed11dce0932971e61e219e099438ae07cbb74b9d4372430473661eb2740d6198e7c1dcdc2adcbffb10e7a0320a5c41914201a350bdc69faf68f3ccc81904313672497c2d73aa80d2b0cece6d7687f482aee558d4e1b8f10875c419ad9b43711163c5de99598b9f214f29b0e413dd7dad0082aeae8526339b76bc051bc487c6872bc48f92108a053aad48101352439845c0207914ce503ad8f3bb34ee741ce89283f87e3b63fe1bfccd3ed0fde43224169b852877d6600cbb8d5abbc0c97bb0661439f42f2b35aaa88490aeabff7f783412f192fdb7d8857e20ec773a852dbeca61b9a94af50499e2159ca57caf68d87abd2519a8271187e8ed4cb47dc836a96fc230e99238e4839516f19e132356b31c35a14be7e4a05e3c4965bbe06dc0478768370b755816f727fc567141c53a704377f8f819574c114394665e7864a2fe2287f06bac869548a8a074435df870d9b5b903184efa7b27d57cbaa173efdd687317d0efbc9d33807f2f30ad0169b23a6e7624785ffd036db3abebff5fb9e83c6bcb126f59e8afcc3ece4f394051317e5886209270a591a49ce5a9eee6d57fd71e8ddacb3217cd8e9516c5087a58a2aac9b3244ccede7f8de1ed036d54721e0ed1d4c64173856bb7b9cb29885d94b251e0b81b9c7402dabebd18aac425df134dde8caa698267b293deff4df5d57081ef4a05985af681a0b92e3711157e4e9b39657c76098d6ff7723c7798dfb3ab717e301305aa224beac01a4108848d930f7d745cf985598832141b23ed65c27944e6b1a0a6af68696d31df5e14be28c0da6eef05170fc57c8ca54ac3bf6d0485ed8c56c3d50bfde244ab41bf6567a0da6375d3ccb2e9084e73be94f38afda17e843d8c23e703a7f8b14b52b7e7ff7c793b9ac6ee263265025813b1d0a69b762bddce2fbae197c3e2888abe307418b57b5ac0f2f62b1ae9dca2ff58e11440abf3bb952d1c40556dea5e4cae13982a8f79fe0664aff78328141f1e5ae3eb38b76c8906c540cf02d78ff411df6d433689f7ab3f76cddf0479c201dddb80681d9d0df66a33f9f110d71d93198b9e344a4661d48ae106e7372c578d408559f088a921956be384ce6aaa7e83ca90d6343b099fbc19fa8a7219018bca05cebb38c774cc24e0ac37f736ba1ccdf7b4f6d789cd2a945270bffdce7ddbb0e55512cb08853bd91244569662919d4973601fb21f37c3fc097e14679bb6cdeab7e81745993e630d9bbf75a871e45fb122543991447cd460b95c04fdf8aadf88bd4a1de392391a80fc8984090ba64e9f567fe471099fa887d5ec72f2fd192d88e2c12f3ee51b5e7ad7c06cfbd1becc5c94513a37c863e0c8678073777bd88bba225f4aed3b63cceab77e137c947b87573c29f925f1cb29ddb8bb478111d01b245c950a67637920187c1e2fff3b3ecec1444d9c8311d45e481e0093d54518285f9245c9f55a268e0249181a7986c4c48920a805cffe53ae9df7b894c9fc354c18f5e5cc2630129fd2a761cc93318cea211e934b3e5e74517210569a99578720b35746f25e7a7b8577afc93b5090624d8c337b9013a5050c15fb797a160ed00afc7367999170f6d81ffff30bb7487089a0323dc6702d94c023f2c0154b9308edfa61aca8df3df665f1f39e17c4ec109a68113487e70fac8701207656709bb154cb50301690d9521d06a49f5bff9e8f6e3789640bfd40bbbbec24d4d6842b31a5af7622e827b40e541959f034d491065b2c918d0852c5bd147cce268fb6368a2a08b993344a9bc6d9b74241a3d0cd49a350b6ab7b11d8bb81cfd8a2b51dd3847328b07086f4acb28fc8c04dce254882bb3aa538defd288510d4ae5bdc21f24a6e5efc34da8306bc2c44249930433fc80b0087c23d1f0d0978d2af4a53210ef652588b8400c79098b9eb0d72a0a0e48691037fa84cc2d168a4f964041cf5c41500a0841c988bf5448025c5603ae71fa0e6ce30015c7cc6b5a2d68a38b5e6b94d2b51c2c59c3f4a5718419a0964b42f50ef7e87646a4277bf7d74722a46baa01e24fa2d5fef6cf88df6754615cddb7c360f3adaa1f0652d0164e71c2579ba98e41c99e09d752c086db28b35bb5a5969863cce2011b66cf2f9dd90767d4fb75b9a41e8a71f00b296e99e70f77b718e18b16f2abf9f80da69f6e8bf976c8dc853ce71b38794f5aea7177fcd92dec08613070c29bc25bfb2e7b0759627b57df705e19e1d9c913ce29283078e50beea2f13b4647890e1e9efb2b4464fec741ee582c1f3ddaac2a80cea1bd1445505da5e47ca3791cd28221cf95fe0157d8639a35fdf6bde533220c86087d4a3d2ae07565901cc3334cb553ce1c46cb265ba8d96a43ac0899d73caa1ac336179ee4a4de37e098d5172bcddea4711549817ea9a03fcc59072692493ca9e8bff63be80bcb7866fe0e30716e2993b556850e5584fc2a31ae6df849f287015804c4d77411f26d6027f6217f490690d42c63fe593320fb1bf42d9a6fc5c43b686241f321b14eb7712f67be9adb0fcb494c0a595886c6a5bd53cdc40dd2fe457b7f2b2d08e24a610bd77912a90eaf3556728c88c6fc5096d6f990ee76ecf25d7c2057233256aca0a87558e6c8c9177cd3c72cb79f00c9114dddd8387509a3d42c2d9432b36a4f194ec6de793e0ff0d298a819a9c49c2f2dd18ad6bc2ebd307da5c8accc1fadc7fb5af63ddaa9ddd87141b2dc48999adc9dd2de3f3fc03b64c5e411716d6d7777405e844897f5e004602521824e01f20b55cd22a0efea4e6527a4a83e3bfe51d2f9f9955856d1dc1f9ba908d395cdfa09c913d6af648e7b003c2ae7fdd8ca071bd3178d4125b127e30c397916ddc26253cf99b1f92d416df36eef8a6a3390ef1dfae0094472eebe902e83548b3632688f069bf9df56a3487aa8f40c0fd977d1d5f9a8e5b7c5d9d622a511b1729648921a940f47ba5624018f0c2d2ffd432be4a35fda337ff1c07988585b00bb2d0c4777e8592ee4cb13824e0df605b3a133e3f2b3aa7cfb80caff54abfd960d75815d7b168ab546135041f6216790536cd3622877c7145f71a37e3b4f545c8e2b7a7511c926f922d277b1d79b964d9ded9251f2d4ed331b553a775e03986b7913693d226e4d3103132ff373459703f579def3fabb5ba75db75a46e6daecd1929448aa8c8754146f917ceabf1544edb8e6591d52deb5a76fe70a97fcdaa40f6cb1f5b3909b7722d6c5c80be5246398a7b7fea634676cd566b7902cc41ff420972db2e5b3ec32fdb7c5e3bbed55528dcd8dd95b5776fef3cdb0f47f891f7b845b39fb17d5a36ab486e76a15546869ffb91e7fa8b1524597751ef6dcd1a10d2be2c46a7116d5c77dd7a70116299aa0814a7094f9f998f47ac913ea33c3b0b8cb4daf28a056ee46ec2d5c70ee2ae28f0435d929dcd8351b06e0a977eca513d36de77428cff3ac5caeb2a8a1d839821fb15f8b5ecc3d8264030a3f1d83abd82eaa4d1166c6f898b756e5219e49f45ef1a6568357cac25d01cbddeb7d7657ec026d7de1c2110533f8a71d188e2f69b7845edc83b5c06532514c15dad6d93f682420ab48307413f3d620a97812a79b6cfdf570062c4707c9c5ccdaf38d638ffcbbdae3beb134fa621db08a58e90835496015f3fb0cf703987926a6e11a720d6d8e007942db9832053c6c99277ef30b5ed2e5283dae6856585cae24f4f9d7dd5d12161c38565d63898ccacde4044352577b828797a3a4a5b3b8d3d4dcdfeef0ff083544838babb6ced70d10151d2451616785a0b9dbe6eefc13204c4f7a848e9ca5cfd0d7dbe736393f619cc0cacde400000000000000000000000000000000000000000000000000000000000000000000000000000000000c202938464f24a12050276312810a8b40180800084828a083a202408000121311408308420055225fa43850a109000000000000000000000000000000000000000000000000000000000000000000000000f55700000000000000000000000000
cclib verify 19 '["pubtxid", "msg", "sig"]'
The verify
method verifies whether the supplied signature was generated for the msg
(message) by the seed corresponding to the pubtxid
.
The returned handle
is directly associated with the same pubtxid
.
Name | Type | Description |
---|---|---|
pubtxid | (string) | the id of the handle-registration transaction |
msg | (string) | the signed message |
sig | (string) | the signature generated |
Name | Type | Description |
---|---|---|
sighash | (string) | the hash of the signature |
msg32 | (string) | the signed message |
handle | (string) | the handle that was registered with the seed used to sign the message |
pkaddr | (string) | the hashed representation of the Dilithium pubkey corresponding to the seed |
result | (string) | whether the call executed successfully |
./komodo-cli -ac_name=MUSIG cclib verify 19 '["ea448ff66aa925239cff7ca748d3aea62474187fefbd1c15fcaaa14c4529b82a","5175616e74756d20526573697374616e636520697320617765736f6d65212121","d89f666a168c6c704a80c63165a93edb1c8c4a23f1e47feb160122669fc081735a66f5c95d1ac524e6bc2e719114e13be356e8e890ba16358464c5498181e2cc6d9f49066588c11f89f89c5f09a3ca122990cbe576c85c81a283a1ef9d69e162dfb6547f5fc09265cac4cca94a30850ee5f6fd638e4d3a9f59576fa1ef6bf621a04f506aa7cbe76bfad672f107131948de8fdc2925e90268bf240de4aa1859a20b529432dedb5253490f0b45295e81e1541e9ffb2c8774b6822c45a038dee590fc9f2ab1826015d37c678d2b9a91349b7f2c78c43379af0ec5dc85206d192142ed14be09acb304d1b8531a3885a2bf48022600b911420ff99340899fe4f7e4c921f10a65948c145ac5f7c685e72bbb23a1ac4557b1a91b3191a5ec7f229254c740a03a4c296fc1249cf953bb9a17f0a1fe6a63b351b3ff8a2bfb0bb0c047564e01dcfa87c5616e1cf09578672c64269b5277cb82b8f054a058b8fed76159bfa82fdcd9b65662f63a1cad4ce74941ebf342760ce1511b435b9d4b77a3aa9c48964543e711a32a8d76de338647ba6f9d0c7582a517fe4f6bc2a25b976ba7214cf88b09857e365780d2c8d5fe158b53c02ffc5083eb83effbf41cc33051214d8b97d510ae4cf76cbc8c2e03c3f17ffed1cc2143d6f6154b9ed8bc7db97a06843ca1de096e4050a81e4bec673bd333380bc824bc80e9a1e6a4dae1846cd5738bca677365e6166ee87ba34b86ac74bcd322be3434fda5ef802a7714248f4854ce39f9c6f9a1249353dbef610b2616f6a083c3699bc7c8e5ca6865cc15fde196b2faa88e3e1126c818185bca2275762d9ec8ec440d0489c0725908c8fd104f99c8bf730bda01e31c202e43f186d09f11c0de4825c49f88ece9ffa23d462c502332210afa9af5110134c35b68718b0f117df6b45b9aa0466c95e95f81ed19794a2dc33cfd58ee4fcb4f824ffdc8e238a32317f2584db98e7bda9b2f661842b3924edaa441dea32b4e5357c3f8d424d48acf3d3f0964e69e64130b2d3c5ebc806135cc53fa8f1e1a04444ac5116177dd08e17c2c29cfa49971ec083cf8ebe424f3e84c4e5630c7b5053f9607a9b4df56195d8a07c3eee4bb265cd6fea253fb7af45855c712b83a0f5c01732fbf73ac8931edaccae71367956c5374f4d7c96c1ffcde9fc2d0d8fbc5eb4fc8d3829be53f1b2e537ac1ee659111438c2a6d11acb4f502594ae617685b1176aba19a79dc9d754b48db84cb6a83c9dbcc4ce0ed6b640d31bfed99df78f8a34521e0fde9bd14e168eeaf6cb4da6a29b48df655fba872312f9f876fcc8125b7b3768046e8f9d28f0c5526b9dc2b26887fe79e0b1e0b065055698ff27c68bb0dbdda057d0b5616cdcc89a8538ee1d030ca6ca6f6db71d0b1cd0f03cdc96c9cb3bb45689e923820d17f36d675a764402bf6b08fe7b3356f75fe51644ee577dc209760c6195afe71c7d8e32fdedd2a035ddf29561252ea92e4f7e674eb0c6a679f1fe4d1a63e3423f3e36e60ce93ec12a4e88bd2546b25d8c702990a55fdc37d1d5bfc1fdb029851464ebecadef443f03eb126bf48a06f43afac89278e9e8b100295137139b7d37706c36d0a3687181cf10ede3a4e2cbcc478831dbbd99eee03f9bcff02a2f1887a9ee85f932d3e22eb43d4541ef48528a921814e1d203086507df78f84bc119afc2febf445660c73e88739d53be3762ae3c6800413cb2d963239b4ce1b0a2634e938df33d20f8e056d56047adca62876c5db389a71a9f11376c39295c69ebf09dd0a30d4d5d91971b6ff60e5a0d755863ba813a0fd8f8a7baab677a455f930308499bbc86c36ceadf1b9c37e6118fae9ce015d5851db272799bf75da81545d57b6a2d36358e1f4f5fdc00e9121a9d531ce52c89a64b24705daa0a8dad8707dc5e11ac6565fd763758b530f7a890cfb1dd7561d94c6df9681bf528252f4c99beb5fdcb2cca134b50ffe69d2160df4bd3c7ec51da9c189c8743f19624c9ec69dfd52bce1a8da90fef8d5294c2f477489bbfc23be3a65d0a797485d0235c40b56fc2aab90fcff1da0a3b065a439cde62d895b1111f33c7ecbb96991908757ff47b053bdb8afca97e5f2acabbc8c37f35185b25ac2c43b8c30aafca78c371ee0c1e0dd7132e603309b702b8de2f185f527fd6b74855599f70353cc3befc3654b557761027cc867dfa1632bb3ad94a5458296588333991d2e16a296450de5e4a0599af4f79a011b02c657ff045a8a95572ce069f3362f82fe7558ad76e1272f45badb32900c1cc47643f5476f9dafbf0f6d5a50da8d2405cea4777e1e1b293a766f448ef6ef94fd185ceeb341e369ff2ec9dfe37a18978557ea22336eee6e57a21614e457a46ef2711f112f925ad111d08c88bb05b0bd9d9f8fe9a53250c562b5f18a2534118a2221b91b1420b801d48115c99f91285483cf5d7a7bd23af0bea1dfc034b6941b9b2dc6181614cfb7328c3f4894485c1dd59b11e646498e3957911d87e3a0e1d602046527b7de329acf1ea0f5a8e9b5112d174004454a11b1e594c1f7f14bc1bb51047042b5d99b8b4e9bd0aa47502dd00557585dd36d19a93c48a935434f59b8aacdef2fadbddd5bba5c55f864e01c7648a16f6c7f35b9d1c08aaaa53e42c2200be756dbeb2ebfb8222f0dffad6683f640c7dab52d1c3d501b7c72628aba1bfd4ee089325e4972e62f8313487864737ad29714417af7357c8ac967a4dc0e8fb3ed55d94dd9094529f6f71a4f6afbc65556e556251b988e751deb1a4a898fa4af1ce50db0173709bf8265259862676ae3ba2a399994b36474ef3b44b18321bdadbbede76bf7e5313e0e197587f7e674edf402a01136fb0d366d5c9e9d6ab804fa73b630585346e6d271cf012b2891ebd85f308c5f97b179c18ee6f4ad6b10e33e9a7e2142b21a06afd5b65b773b1d0a5dc9f879d40ab264069689db4644c3d631bd8efab0c9721525e31d25dcd1af9c71dfa9a5da7cbc84811ec97e63f1f3b3c3f443bb6e59f6c1a115bd336cf2d485b53fafc84f8018c4a2ee1b9319a9b2d7a1e06b8862bc4ba82313d74a9fceabe2eab540fdb1434edb0339df7217b2125ab2bb9079fd1859877ef11e16fdcf7bbb9654be4f829760f51f439e05baa0c283b7576adfd43329cc044416b45cb3078646bcbc69bcb5dd23f3e0ae5a695fe3ac96b0a934696445bc395fb12c5b8d1e4d256c1a61aa79397a6453dc4adf11d79320f0294ad2e95e3ace72f616be3b02b40953b24e3d724baca91d2dc435c22e527df93cd48d65fa3e63f4cf355d97a4ddf2ee87ce09f919846df7a16c13584ad0dd10002e6f166121392eb7c8f081edefa703b73882f61b0f77946e16b4625b6f814df9e7392274387406a05d8fe7c58e664745813a65ce16133e55d49ebfdac252da5682f1a41d51ac38ae579e643098a4ae5172be6fbf9f6c51c124eabb90a28978825f3ed67f53bcdd4f81247121369c5974343ac939c4384088a35ba2473d8e81ad6834f7bdb949b92a21ba258f7b246966d4343e7ea44e4b6f9909cf112a1f25362fe8c684b010f875e994fb87b65aef8ff59b2df4703261a57cbaba9962915d50ae7405c89163a093a21c782a62fa524d4921078f896d61aecca2128a9ce0c3f481cc0cdb16b3666239383e7e180890819297c60a93b2f5841cf665eb5266394a10e6d0afc4f600938826fd13858e88e19b319876168de379162c578b25c4c87f46b47c005ebc79073e4770a46e9ccc5009b19d4a84d68bd68a7bac9fe0bd6a51ebae9ee6e6a7cd082802f0a53c7cdb4a4f3b2d7b15a9fc23bfdc10c88c185938916c0f70ba40dc26e80d86602051de0faa3503841b3ff12ec2cd0ac1bd9d86e2f098ad1246a93d63619d482634bea69a1c883a7b9e35b91fe67b35a02837750f363616a4ed572e8d6dd8595abe0bf1571ad6ebd5b16df8bad53b1d6bdb1e391702c91abf0e8feb3499fddd040e06c46647cecfbef85505b0670f1184878e3ee15bd3d93546a028917ef445a8fc1c26319b00c0b0e41e74e00447a6c5cfd63bfa09d3d68c3ecae03d2335662ee2e79dc907a4f5f91b5650d29020c99b3be715d225a9d8a21cf5394235bf035209052b76f815cebc0afa5993f8eb6ff944a3ce56ec14bd3e3ad84f1bfe05073c3d970082a852efd037537ba299fea304cc6e6c61cfa08e013df36501937f6cbd84cc7057ec8a471ea2e4931287db6c62d923f4c902382cc7ee4f9d49ae9857f59d67bfc58c277e44b1ea3f9582864733d1b898ba98108478dc003012b4010bca9e8ece18e3180b11cb8a31e293951e07ebfba7e770faea8b2f674eb535375f2254a3e20f1e2da32631a4752295ece3b072d21c1fba4d33a3415c9578c1c2052e34d5fabbf957ef2352e0c4e8885461841a3d47436738cc5c53e2c043a424f30458d1ed9d6b6b30cf6a7eda861b540ac25164e00f220496c46f93b3fa7fb7ea8a843ef3b3cde50882422bd9414f858f603c108f2c3c157c0c9eb41c185a27fcdb149e210a1e252a4647496e7477acb5b6c0dbe4fafbff1a26576162a0cef1f502071b1d333650666a91939aa8b0d9eef2fb08101319246d7e9ca8b4b9bac5d0d7f1fa0f25283540516169876285abbfd4e2ff0d141a566a7f8688969ed5d8ef00000000000000000000000000000000000000000000000000000000131c2e3f4f5c0526a000cc00420628b002b0002ced051021a0029004103b8840111402048000ae8f26f33c9de7075175616e74756d20526573697374616e636520697320617765736f6d65212121"]'