# Dilithium

# Introduction

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.

# Dilithium Module Flow

  • Register a handle using the keypair and register methods
  • To transfer funds from a t address into a q address, use the send method
  • To transfer funds from a q address to another q address, use the qsend method

# Tutorial Availability

The Dilithium Antara Module has an associated tutorial. This tutorial provides instructions on installation and usage.

Link to Dilithium Module Tutorial

# handleinfo

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.

# Arguments

Name Type Description
handle (string) the handle the user desires to inspect

# Response

# When a handle is available
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
# When a handle is already registered by the node executing the command
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

# 📌 Examples

# When a handle is available
# Command
./komodo-cli -ac_name=MUSIG cclib handleinfo 19 '["KomodoHaxor"]'
# Response

# When a handle is already registered by the node executing the command

# Command
./komodo-cli -ac_name=MUSIG cclib handleinfo 19 '["AtomicWarrior"]'
# Response

# keypair

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.

# Arguments

Name Type Description
hexseed (string) a random hex to provide entropy for calculating the key pair

# Response

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

# 📌 Examples

# Command
./komodo-cli -ac_name=MUSIG cclib keypair 19 '["rand"]'
# Response

# Qsend

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.

# Arguments

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

# Response

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

# 📌 Examples

# Command
./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]"
# Response
# Broadcast the hex
./komodo-cli -ac_name=MUSIG sendrawtransaction 0400008085202f89016c21f44da4afe05aad8b271659c6cf8cfccb6b6e33fdb9f5f0935a0d6e8ef616010000007b4c79a276a072a26ba067a56580210377ffe2b64443ac5e746f29b021e22411c7731d675f169d32423f8f3d6fc9ea3b8140ccb5db05dc45a4ec747705d76f2e71f3ab43830693f093536d23e6ab31c18b0c04c2906a8e600629b9264043d4534da3c22c1fe1dbe2192ebce23b8a99cf35eaa100af03800113a10001ffffffff0600e1f50500000000302ea22c802008b4a3a211fa1ecb9d245b3267827a56924653fe9bb4697510cf5d65e4bbfea98103120c008203000401cc80778e0600000000302ea22c802008b4a3a211fa1ecb9d245b3267827a56924653fe9bb4697510cf5d65e4bbfea98103120c008203000401cc000e2707000000001976a914b738b1730cfb58960b1dd1765c6d3276993959e188ac80a4bf070000000017a9144d5e24fcd799f3a3fa15f98a6c69a5829596f56087a0244c1200000000302ea22c80200c0396b7e2db09ab239f0b337fbc7df888273e60323a63d0caa862116bcf51a48103120c008203000401cc0000000000000000fd100e6a4d0c0e13514009234f4b9e071de316eb740134544ad8d72ea75c4c060705a455784d220dd6fd460de9fbac397128243cdfe192f73c9eb327fcc75338e694a94f4df8bcf7d668868731be4f2b886f5d1292e3542f31f01a390fcd7491d730b57ce1fcd6abd792efbeb4047f2cc24b98d07577f3121a74a141d1a7ce94b1e03fa69031e91baa38ef209866fb9db448445fc4794331f5efaaadd1ee58c58deac4b26012ed65f876fb056711d3902500d2d45c0e4e082d8a058a7a671a2fd2a855bd882ee5a06962ab72d93783c7f1fcfead9f712dd3af0424572ce58a36b4e558bc9c95650351794134f1d74f8f275500f19bc967a64ee0baef222bf34c50f0bb771759afee0b202a542d4a349e2224820a2fc29259192e1dc1c2648b161a31454d9a6489fb26b280ad6dd3f1916cae118150d49c52401665c8b299608760c83659f88783120974f85f22d9af9b5ea1dd4a145b29aca2929ffa0449dc821cbe0dd8f86017a37573ad8ca33901e10664822a0ff0825f957bda6148a41d8bd48ae42a7fd10e73e4f28198e767abd1b2c1297055729ddbb613d3d4476b8cf228be84248bef116546ec8d773d271b2a850711f2a8cafd3502575c94a5c258c322f1a0123f439d796239dc7a40e996ff282eb605b7bea9336fa2d6443924a3487f3275095a8fbe136918cb6a69afa2881d793d0d70433c0e16ac5218da88ce76194d86ae8c283184249cd4fc3824614f95af655556e3c3c90765358a63c411cf5df4075546c9555feb2fa1057f540a79a30ddf997248e47076418b31514607236ee23f56b8bd7ee03e09dd063199c45b0b120af1e44920b535aae890d51d0134ee24872a995b991efa31bd4bf9e551727a877d29ef269b83efc0368d042086535b6bd956c2f7bbc3b686dbd765d092a98e825911a13ea92ad2cd7604288c0e7595ee3763849a4d61c90ed7686a3902417eb90d59e40350b12353fd5fcffc53c52759ee393e68227018c924ac9c0390d3029fd26dcd93609d57f19868abfce563dbb93921837f85b092b8539447e2696a9d60345fe390200ce741eae671561b54ee0f58c32e944a954143dd274e41179907a99394c9c1c978a964555d91d0acdda655064a824c7673dc84d1d5a94f06ca6b19078dcd657acb9d84518b94c2f56e4aed02c50a1861d536fe19c29cfede262d8cdf1fba7848f017ce53bb99eb9b40d0b2e5951b47099d8d975bf3054baa8019a9299794e9c4e1f7117974d15dcd4bf1f75b732ac65cbbcd9d2c232e8445d93f422a9315d7c7627d5e4d424094d04c6e419e9805b7bb7849214d35e02139463e73989d019cd1ea3a9084f353f3145df38f88ad0baafee1f0e95477cacc7b0246db8b4ed485db10c999c508506d0bbff6185c53903f8565edd90fc16e3f6be972463e3246a73cb1e2cb294209c71838ae86732cab6f648d10459123d30a59c1bf63a2232d32c8cfe0d06c4797c883d0ad452643496dbec37f87a1a90b525a938cf3367c9917e57c506d0fa422e530753589bd9317a775af64de696857705c5efed3037ad7ad7e1a4789ef238c6473cb433eda187484592e48e5d237d73f558cfe24f68bad4ee85b77c01b9924e262534c9a2486432a5be199aea85a935f6b2424a4fbf3a5dc7afc1866692404de45f41393aecc7ca5761c25fa5922ccebeb8b0580633c75a944d473d18318fe0fb999dd61259813bd0f5c62ff50df1148c6d12757b2de3be3098e7c283eaa3acea5049f4a7e1393235dfeda7b0fdcca6cdeee5410f023bc4c1a157cda0044edacb30b4f00d3c647e83aec5b966ed4e1829eb1f9ab7da7715f34e07e17ed59e45922500f493d74ab8f8f645f3e9002d202f9c2ed14ec698548b7d0ea182c8ea9de1b9146b3a77df43e80a2d085636eb5a80f9d643682d211ae13bb6569ce3411aaca39727850155274aa842baef36ade2173aec3d6c3f4039038d55ff69a7a35ef2d08b5478106b9f0364a8c0e95cd4751bd905c4c38dca63bbcdce24538bd08fb0cc7d9cd1f5dfc1853d502e1f38adaad6c468d9e50ff81d2a6b8dd3db7602bc272675d2efb70382dc19b9039a0b32d876787f2d0e0671b11adde48aafef6d684c517e77217be631366bf99f1109e55a389436e915d847f212b07a5c6fb94db999662ba20e92e642e88bce288cdce3dbffc0d52607af784f802eb18e810d49766ca752a6534d7459a97a2bf07787c63cd836862eb05347cebd3882df760b37b873b79d935cc4fa6f444a6f4d2bae51dab832432a258c1d741d7c133e55302920527e02f1ec8b0ab2703df6fb4c3d357efa75a53c91666b59ed6135907edee5b7ce73c3730c90e235cde4e384dd51f7d7e1b82e3c7cedff649fd6a5f247e829ea9e00d58c37ffd545cd311ad369928ac396cb5dbdfad2c6de10d0a0b1047df15f26c51b225ee148d95dd9c5aea4a4da592cd59b3fcdd8478ee264ed68e61aee55585c32b6dee251f593e8a9f492b9003208af4e04d0e5ee00afee4d0d074ae9aeaa8fda26e89fdf4825da2f0211b5c9a8eae9f1070f401cd6583d0296057c9707a481983aa45b76b290aa249cc5a545fe8956000fc2d48c4803dbc642e1ef9ac3904652ddfa3b6a29e405984a2188b31eb358ea04462ac751937ef5a153d865e6b5951392dd6b4c6ee16224705486de08d380827554419ab24b37b58bd351d157194640d9eba45c13dee0bb73429b497e3885568161f286a6b6f67d8054674a717c6d26defc68c734622dacb8a2fef4dfbd425ea78575402d15eeb9d8cc6f99b0ebf33738b34e14f34b4b990deba45abe2d3c81038d4fa3352a4e904d9d6b244585ba1b0f450c9da0fe84e711255846bf56fc483755dc006f74f816bd27c408c1d4102e2882702b7afb187096a1046cd47f1be2a10400040d310b862232ec7b8419764d05ffe3833bc8462c90ea3f4b65af3fb07b885c9403434b6e0326b05188f8c05d157e0e721a9514fc189dd7c6455d261482fc46c4c206d94ba737a1e456cd22a11e3daf0f2c5716af6ba28419cc17ffa7303ee25d52675a1612ec1cc3bb708c1f0a720d9f4e4c5b47d4bca46f393eced4e6de925262ef229adb4405c44c7ba73646ded1bad4879f8024e84eec05c8bd635bcc6372e1f420be1b7e7f764d966b8715b21b73efb19c4c2d612210cd13fe06bf45d79b0886bb67c9d8f7308cdabde24127d7d3181b3283582b27ad46e0076e03c3269c11b613a6e0375992cac30acbdfb42eb99d6b3cdd845a978845dc7acf67882eaa532641b56ab5626581fca7481e4d1f54f1fb6e1accaff130a66cbb61fde59bc2052c48325a45219818648791ac33046832b02cc9e6aa587aaedb6e7f5d2e18f9b2e6727763f9511b715a43d7a4f608cb3cd037f4e26a455f8b4f9706ec408d4d435be1e6482c2db2aa2f08f23a31900128d57f210e34cb61f73dea2614cb51c220789a40cbfa35c9d565e1f9b809c81f9e3bcdfd5fd814b619b9c7a579daac86c60abcb7293de50b0a3702e3b877f828777235a49920c9dbf5ed9ce3a3f885c2bf985c620b7d0dafd7366a22554b6601af7866b5ccef7e8d67a29345598d98f946a204c128487fb672acbc68097d722d9e12f625b62e8b9affbf05539e44b62e72f6e2d917f1660033dd2a171d37387002cc04cf857d6100409a47d2ce9926c781758d0b7405d9d40086f5835685cde5648495864ac138bf81dac0f6d972096e993b49973c7dfa9a942edc9fe8fffccceb312a0e25b3a335e3b4f06c34cfbe4828597aeccf738a8164fefd1e88b62b12d76d13a5cef333bf8f16135dcbb84fa257b24eaa1e2b7d9c9e9fef6bf5d908e57a05c75d950dbd9ed6ab6f72a45f29e8fa80987406cad82c8d57c744928e3c5b5dbb054df82952b6d995d8b981b532170b311d701b1c0613787b3dbba56c254ffd8ff11270888029d9b342f08c891d185f2ec769afbc8d2b5e232c2ff3365c038102e09094d7dba19552a773f5d2fd153b24ebf7950f7d8c9b857413461cd68c464eaacdfa050b05e4b67a842727ae83a560e692fd7c473552e0b4d6c33544bb3498e4f77061bd8b06a279e68e813ba1571744328f27ad2f9d92cd0e33897c649c6cf33f235604e092d002c1f7e5fbe5cbff16b92540e33e4b3afd99e7df80bc23eca979125c0f271eb1f3e309c9a4dc48e82873b918c1b75ef029f3fa80a65d0ba9a3d7739a0763bbeee1920cc953d46921dcecb65a57f608b9092221209f5dcdddd66998f295f043114fb4c263634381cd381fd75e6c9d21620d13a4544a1ff4a9b789ca115d8108f8ee063c4ee9fd4e21886d74c3a54fefae364fc924d9a7d0994796f6753f92b7fb77be7ceae095e8de8b064aa3ac04138fc9c92a5b63714644ca35c9a12559a0b406df0dade4bc2018c029e0f5e87326ba85360788188cfb03873255c2adaa347fe8265f1fc32d0a8b90ea49dfb8aacf01c69744cf0096298559670d515540cc929480b7fe97608111f17b6a39e3e4b9c127e027d4ce00a761c3e3336b91e4bedacaf3a84b44e3f69180d8da4c7ddaed25841351096d7e822ed97c87250f901365c656671b5b80b0c182126333945516f8f9294bdc6c7cef8fd1a1e5c686e8081949a9da4aab4bde0eb0a28292f373e4c51545cf9ff11425c6b6f7a7e7f848ca1a8c2cbdcedf0fbff03192527353e3f55878fb2ccd7fc0000000000000000000000000000000000000000000000000000000000000000081b2b374a588124700005070e14a0805080a84a430004891a4412051202000440190140c06261da92a73502f904c0eab1b16b2d2b60ec32c1863d95069848bfe717ae65f8d8b718f7dc2f5b9c0605b6c4e4f03aeb278b308f22d52a00a99ec34cbc031840ee5645b5aed60f0c71afa26465694d923ee4d490ddd090c0aa7002b6e6a7dcf0550a940ccb6480e325b6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004009234f4b9e071de316eb740134544ad8d72ea75c4c060705a455784d220dd600000000fa6c00000000000000000000000000
# Response

# register

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.

# Arguments

Name Type Description
handle (string) the desired handle
hexseed (string) the seed used to create the Dilithium keypair

# Response

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

# 📌 Examples

# Command
./komodo-cli -ac_name=MUSIG cclib register 19 '["AtomicWarrior","a70a8e7d2281beaf0762a11590fb566d7af32325ae4252609149de37658e2eb5"]'
# Response
# Broadcast the hex
./komodo-cli -ac_name=MUSIG sendrawtransaction 0400008085202f890c3ac9dfb08a10d3e47274ad9c1f3de2e59b4dc34b433ec7a171cc15880b67fed5000000007b4c79a276a072a26ba067a565802102f1c7993a9bf3863c77853315af7e37c12008ea1c5c3d8722c91bc3b5a019652681408acebab227b096d42a78dddf98b4e834a164e5627e63d1223cceac25e6f8e41617c30ee7463ab48b1229b9ead2aed29b2472f265d5d347f4ab17b3c93f47d5c1a100af03800113a10001ffffffff05ddc1a108a5313bb185ded05ace4d8e29a2f4608f0c7ff7251d11595f3a445f000000004847304402200b10d4b69c39a3fbb15060908c82703e2bf5e573eb01c852fbc2ef531ebafd81022036e4faa9a8ed04ca8502da4c0c20ce6d3b25f82716d1c694557b56e98a26b95e01ffffffff07cd294b67f76a3745a00fb2ab20f6c329eb9f69bd5ef924773bec9caf95821a000000004847304402204a18f2084fd6ce364267bdc708d610028ba41c3155dc895db578c7739abb33950220656b8184a333f806923a29a24f9aca24a122e482d1c66cbab5d811790edb69e201ffffffff076950481295bc4ed92a1967107684288f9702951c302cbd1dcd769e51b42114000000004847304402206c294c39d279f44f7d36d72706a25b296d9fe4a5f8f675dd607cbdc5ba9b93b402201660a9d6d935355fe979b33c50b25b267125a9fc463abc5346355cb953e6e7c801ffffffff07386ff4ac0a46d343afc36786709ca93f08bcf1feb3562ea7baf3bd58cd7a2f000000004847304402207e66ea8cf31bcbbc156cc2d8b020a95440183ea3034dea20607b6a7ef28b9efc02206577bf339d49ecbf698cf434e6ad63f3ca41f83be446a3998d397f097b9d0e3f01ffffffff071395c451379d66ee21321e376721d67fe510287393499ebcf1a67683f3d611000000004847304402203ed2d7ebbe1165bfc02efec4f95905473d2fe4f0fafbe7d0fccac39d379958eb022008c385d3fe93f3a6e10ec4ce78b67f5a93f3df43c08be7534ca55036aef291d701ffffffff0682a878de10392b1807abf35589c9a3aea4137b12d61716be974934a9b116cd0000000049483045022100f6dd23ae75da9f0ba01927f32bbe03e90e16f0f216227400c58f331b3526619002202c522e7b622409ee1974f03022940daf7b0046523b1c69c03fc16b3a55c21f1d01ffffffff066f21010b80faee30bca88603439389aa2274e52ca8f4d288d6881997a1f06f000000004847304402201d98276f505fc969ecc1f5f4df2d71e371b9537f94e466ab6b35594b13afbf1d02202dca6c57312019400809d9bcc7fedccda65d02ca0fb492a72f98128ca4b95d1001ffffffff066e38c8bf4aa889d9dcc53aeec1a95d548400211280fe24d4c0e73de69309bb0000000049483045022100e8255e4b42d3084a66afd9984c7345cec47a15b509f49c4b04d4fafce5bfb77c02206152baa639a6393a4f86db5fd6739cfd096701a1617210aa7138dd8c752bd46701ffffffff06507713eb6ba1246886e7c8364b5c7aeece7251f85d0ba50190365651e161c7000000004847304402203a19e60986b7f45ba8dedaaefae62ab3d9052787c650d6bb5b1168a5afdeafb002201e9691b6093383af569463158d6dcfb6dd6649054c6a3aeaafa435d36b74dc0201ffffffff06195fcbe6c657da6cbfc69892ffb67470fbae568fa826169201aabdc2f2ad82000000004948304502210080952f9f65195b4f2122bba7e14c049a4253b5c356d548c550bb38f1317a31f002205b7c3743bfbab00ff100174edf1367aee599c6df02afde5c62680b68d1ecd64901ffffffff0612f70038d70cfff5a1bf02d39357d567aa0b02e98c97fd877399fbd0763dff0000000048473044022056104b269b860662025808532cc594a11de207be0b0121a247aa1c3abfa834cc02204486e95cb0d1b27a41e4b3af458c6181c0e6d2a97eb8fb32df313ce423e8f81601ffffffff06204e000000000000302ea22c8020979f9b424db4e028cdba433622c6cd17b9193763e68b4572cd7f3727dcd335978103120c008203000401cc1027000000000000302ea22c8020749dd6534e79a31aeba03df3b0ea58632a0beffc3411b54b7cc0e714ae2dd61f8103120c008203000401cc00e1f50500000000302ea22c8020e029c511da55523565835887e412e5a0c9b920801b007000df45e545f25028248103120c008203000401cc1027000000000000302ea22c8020979f9b424db4e028cdba433622c6cd17b9193763e68b4572cd7f3727dcd335978103120c008203000401cc502198000000000023210225f1cbbda1a0c406bb8f6dc7a589d88b2f9e28cd4fdb3f59139f8aff1f5d270aac0000000000000000fd19076a4d150713520d41746f6d696357617272696f72210225f1cbbda1a0c406bb8f6dc7a589d88b2f9e28cd4fdb3f59139f8aff1f5d270afde006e4f25d02a6aebaa196ef1ba40f9c8156ff691b5505c72c304f9bcb4c0506167447056dc7341b1431132d0099e8e0a7c134fdad28e6ef8a290c24652260502f43876c043b5bc48f8624c2c396ce1a10e2da59fb73d5523bbe830eabfa6271f33981c54b519c25cd6a76f8298d4f380c96c8dda1a95b45c672bce7c67afa1620cafb5650c1b48758256548b6513f4b8862aa2ca959d244a3955fe095cbf07458e6dec3f73d1afa9f4cf40213d3e7355499cc23f9cec63437a352751d2b95a0353e5ccf70eb2ec5b6d00bba3f12d8e5af3ee752612361e0eb474a3f7221175462e9c171bc6cf709aa5ab53a7683c24decd759f97503a2118f798da1eac081ab7c9e61fe8697746dbe1e798690c9ee600ee53eb336b714130404ed9c5f0d1407a007641b723e59c9bd5178cd42953d10b97d367fd75fa0cccdbe7daaee7b11698e667f1fec2a78d5b94a013efc2d9fce26ef7bcb44371e04854a0f039256fbbe0d472f89b572f5a252528d426a6642fb92d243092b35976b54ece95e0ac246491f6dd024a7ba6cc164fd5172e50c893ef974abe1929f286036cdaf7a5c0395bee9d8feab5b80c07cf4d0b88e4df10a08bd4187bcf82e34a5631a32fae96ec25f992e20b7987df6d0d70535dc247640c00a3b4baeca3a579fa91dad116f3fac11223be5848bd9f34edd0fa3528adde06896f1e363ded56ad6feee9b9bda41f32d4d1279d005e6eb7997bb73dd085154738d11ab800a3d0964c441cb2117d6859ce6908b0525161bec38ccfa3ad71f6005b5891facfc54a2a25b758f8067f754abe41fc769ecea5b83c0a91f4edf549760954276d4f3703c7c563c5a9003501ceed81f382903d581fcb1fd823a0a9caea81250005cee48e98676df2f0cea71fc2ef0decf3d3bdd7b0d5c8ef7f64a8b6fe160290b57c2724bbbb264ed2b6f48a585174c30afd51cd5bb43138d7f88853cb9919a697816c9d0ccdee186858eb48d76853abfdf1629a3a3d781786b55ca1d19413304341b3db4e2a390b410d8da35597d53be07149a1da27c1e0c439565f404259cfbf9a90511bca1f3bc2c7d9592c95eb83da99f848f551a402004e7a7af1896d05899da19e2a133ee50dce1eba96ffb626340cdf713cedf8579fd76d65f144f47065b4517b6be66cdf112029300ccdfda9158be86845195f5e7a50c90a7360e4470ec7b28700393d0d8685cc32c5f352de03f38efc2b6a379def182aae527ee18dd69c0e4cf1398b220e26dd052371a83db082f55318c0e0fc27568f5a6122484f889cb73d29c8da6f91a65035543088a87e68c2b8ce2f7c87a0613f89a04d372e19a1aaaa5309a032d01c20b8d56c819a85fa19f2ae1dbdf36c83b65fbdf76026cc91925ca06254759c0b6613e11a9cda6413e52695fb20cd61145d477d779a389e63eaeeefe6bcd1588e7b149cdb234616764f13b8e61e045d2ce9e53668aab202d7d941fb5d314fbb2c12d9baf71ccd2a43ae8745973626ac4d3c15b4d4df8a756bafaa6c56f3cddf78e3cc008c909ab31bf9716283d1c91688efba7ecc048218a5becee52cbb22fdd57f6907563106aae0ba8daded1050a3617d5962d108aece6b25309fbb63f739beba4dd5117c7d36ce5ea324c2fe98b27e9094acd8e9038e41ae5e7f5e7db705f1b297a341f3ba10f3a86942581d97825e97e0e43b0308cb3b283d303b5115c539cf4b51e0e963aff3270b696159fce3e3e7e5887a15e2c40c0fc308d037adcbde18e765915bd990039df9e78c5af9e5a7ab96bfc79680e2c6e937599893a737a8fb0910309cd75dac3b699a048274a987fa1b3d70d80a21eb23ba8191b508440ba5264998d46ba951df5a022226efcf8526e765cb88048675ab5bf3158bde9776f670b3e914c44c1ce5dfbb806a27b7155e8b3a12e728899b61781ddd1e7000ae120afd025675d50c491ffd7e97698feddfb1cff0b0d1cc428d2f0be466e58a081985d444777c4add2475fc80dfb4bba5e191b4bc6b631fad2d96a910254366b94fe45c116d08c8c01c0158073f9f5af721f08d772f95ac5a6d55b69c9adc3abc4e9d816cf4bdb86fec744fcf0817142079fb97c74335eda37b2bb4124c6ed91ef1b1c7285195a197d82dd755697c9136e49b652bfdbf7682558d8f70fa9adb9c4c5c0b32545fdf7313f6d68fe0a77c38c49b18ae79dc57aaba711e8ae3f8be3a007f84bf26b3f8967b95f4696d3a37598f69deab9e3d1e251d6a095280e1e3d1f873aa53942182dac1bf768a4c3bd8df15fa58589ca7e979dc5f6707729f064d1cc24bedbe3ad9404a1767918278677362a253a723223da676331c4cabe11afc441a365abdeb119fa5f6b66107efdd2546ada80014b382a62e90f360127279ffb54835b34ce886d2918160b05d9b4e91996467aacc6dcfffd56c13138c04e50b63693a3a6e3843b649ed2e18986aea35d35634343a7c50de1aeb8730f6276080549bf43a1ba00000000f55700000000000000000000000000
# Response

# send

cclib send 19 '["handle", "pubtxid", amount]'

The send method sends the specified amount of coins to a handle associated with the pubtxid

# Arguments

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

# Response

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

# 📌 Examples

# Command
./komodo-cli -ac_name=MUSIG cclib send 19 '["AtomicWarrior","ea448ff66aa925239cff7ca748d3aea62474187fefbd1c15fcaaa14c4529b82a",1]'
# Response
# Broadcast the hex
./komodo-cli -ac_name=MUSIG sendrawtransaction 0400008085202f890b07d7463ac5b5ff1212587b75c8415a92a628e4dc211561b90ea5ac7b37af2935000000004847304402205055d1e1babbd1216613d6e57e23b7de86ebc6a4df935db181a10ad9b1e6d23302202d69603b098a0565df5ddf1cafe96cd0fd591fe47c4fa2701e77135ed3c797af01ffffffff0ac7f5fbcfa6fe533bb619d98cca38406b6b97e69d91090c2a1b9fc210163890000000004847304402201b4cf6a262534b5e1ddeca3e1289cb0d32e4a9f1349b557a998ea455c02a890d022008eed182ee47bff2d14af9d130704c4a38bc7bd683c38c9cee81142c208e112e01ffffffff0a43b879094d181d1d3746320f50edd11b931a32fb666ffac69b3fabf52e78e40000000048473044022067c0ca1d5166566b82c73217369ab19acbb53a01a8d7ff1636c5f77d735e5f7202201d542b4dbe7ea47a102f460f7930c183d9022fcfe35437b5f7898c154267e56a01ffffffff0a33490539d3829b5a7c2f6de716003a50ecd5228c79104517c718aa8de2ce8c0000000049483045022100c683d67b101ecc094c84607a3e10d9387aa47520a48e3f60d446fc9e8d85624b02203d520bb85d860858c947d7e138b7228ad810da47a6ce37cbb530f8811d24c0d301ffffffff0a3292a70b1a9fe7a3617abc9ba62da3d01bd0388b18dce657b795ee83a0b1390000000049483045022100f2cb8a23e21256dccfc778be883bd0a2961c5df5295cf66ec0ba6bfb8b4bc046022035c25c9b477946fe89c3ca5e26a045c441d13ec17e34864e16155ff9146be98e01ffffffff09be749efbfc980b15412a17871be7dbf521e13670bf1c8361c5a25e63daf69a000000004847304402200c5aa79cf8cb57c2907996b12671137ae8703e95b446ff16bcc719f64405a6ec02201e01bf4cf19899de0de7f171511e726618d9ea85534537d15b2ebfd74e2876c501ffffffff09970f055331edf5f93031a82fb909bb1aa6002eb557b4a6edbd858eb966febf0000000049483045022100a2fb27660fbdb3d5781e57a81cc3984cdf180855c6ef7335dd01d2ec35c709b5022069059395a6fa1bbb43ab2235f7f80c73bd3c8d29bc7fd50892c70cf15508a17001ffffffff093930519de533d4330040a695cc8646f61fa748542101b8d3d8345d4d35af700000000047463043021f3046d7bc0279e1c8fe114ccbdee8f15056371c66f0cef0beab44f6f522732f0220686b590b057847912c3e80eae4de68dc6a28c331917fd3671d1ee4aad31c785601ffffffff087d867b365921b9f063a2e58575b86fb52a6ad8d119edcc8714eba24e770a0100000000484730440220020d29a6f465428fd481b1ed11b4b9e2f086e2b6a19aa67c1002f5db65a92fa502205befab5889abb22d4e774633d6073f46827424325317d2813f3b64058fb544b001ffffffff08172d2236ac25430e3bdb64593fd2a440ceb32b007779f6f792f319d187a6570000000048473044022056060b04e790137ae7891d050063c2dda3be5ffbc7f1be30be8d9312949d47a702205634bca2147819b6b9a497783075d78636cd73d1fd263b380317ae1015c9b63601ffffffff0807d4a2de4712a21cf48b89f8667765506bd8a525265c836adbcc43c3fdb3b70000000049483045022100e45854defca9139c4f12ed2d4a8123758978ec9e8c685e580484dbfa72179858022019a354068e28c4807cecb95d85dc6a6b67b83657d8636108f28ba1eddf30037b01ffffffff0300e1f50500000000302ea22c8020749dd6534e79a31aeba03df3b0ea58632a0beffc3411b54b7cc0e714ae2dd61f8103120c008203000401cc706f98000000000023210225f1cbbda1a0c406bb8f6dc7a589d88b2f9e28cd4fdb3f59139f8aff1f5d270aac0000000000000000246a2213782ab829454ca1aafc151cbdef7f187424a6aed348a77cff9c2325a96af68f44ea00000000f55700000000000000000000000000
# Response

# sign

cclib sign 19 '["msg", "hexseed"]'

The sign method signs a given 32 byte msg (message) in hex format using the supplied Dilithium hexseed.

# Arguments

Name Type Description
msg (string) the 32 byte hexmessage to sign
hexseed (string) the seed to sign the message

# Response

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

# 📌 Examples

# Command
./komodo-cli -ac_name=MUSIG cclib sign 19 '["5175616e74756d20526573697374616e636520697320617765736f6d65212121","a70a8e7d2281beaf0762a11590fb566
d7af32325ae4252609149de37658e2eb5"]'
# Response

# spend

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.

# Arguments

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

# Response

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

# 📌 Examples

# Command
./komodo-cli -ac_name=MUSIG cclib spend 19 '["18e3a7c746e8eb7a7e1835e54e46ef6f227fb41c7142bf0304b453c0034b31fb","21029b086d4e3e0358f668ccc3da07df6343fb29970b742f0bc128f180994c5222c1ac","a70a8e7d2281beaf0762a11590fb566d7af32325ae4252609149de37658e2eb5"]'
# Response
# Broadcast the hex
./komodo-cli -ac_name=MUSIG sendrawtransaction 0400008085202f8901fb314b03c053b40403bf42711cb47f226fef464ee535187e7aebe846c7a7e318000000007b4c79a276a072a26ba067a56580210225f1cbbda1a0c406bb8f6dc7a589d88b2f9e28cd4fdb3f59139f8aff1f5d270a81409082aa1e061a82c0fd261b98af3a394cea7d269ac4656882335356cd315e426a128eccbbea03b6cfafe2349a193ccc587c08f6e2cdec8d71ce5ad8dbdd60f0bba100af03800113a10001ffffffff02f0b9f505000000002321029b086d4e3e0358f668ccc3da07df6343fb29970b742f0bc128f180994c5222c1ac0000000000000000fd6f0d6a4d6b0d13792ab829454ca1aafc151cbdef7f187424a6aed348a77cff9c2325a96af68f44eafd460d7e7405e78304eb2eb0e65a6e5cea9c82009db2977b7796f053d1ae5751ce9a12df055271025697ab447b5aacec5cd324f1b603407f71e711d7f88bc96915b91b5a8177d683f9b035c6a44aa2ae0a1b4be468c7875b4953139c8480ec5e6e5681e86edb715fd351cc2e4074f1d2905bb181d0072bf3effe370e891303485eb998c642e2b4182d527a06e18e1dc3d695f3278b571964ec59371fb17e6cbdf51c73983d8ea17c567c000b9229416a15dd4a812498840c77df30a0b68560afe1d97ba9b11610f0653f367c62245221d038d68eba0b4d9ed76f05b54e5a628c1ed79b29efe42e19f1956d1d660f45d53a3a9fe2a28692a212298a474ed94429c4760a2cc7db794632cb088de11082c1b6dc3db667329dc6988f1a74104bdf8db9805c98fbac074c187e62903305a4be8aa56ee5642123938493e0592ef288088e3124d0c6f621fa2bbc75812bd462fb5ba083d7e945cbf873c00e2b27b97493af56b83430dbaa5ca91be559ab062b7eccca238dbd756a5b8d4782800cd8ae6d511d2cf83234fa47af57fcd198a95c0ab120cbf448ba80ff2b517d28813e97019a055f62bea952c28d6f0f4f413af1bc34bdb07b01c4ed56447f45a89ef6d8c241926f9a35458ada85037455bced29d22e5e4ca0794155f291fcf96462ff3511df5887c2930134698d3bf8eba86640a07515078c543ae0e2c27e4c39d51da85c3d0bf27989100e112b36ab27c92a0c747c72a5ecad465c2084bc0f84d9782a6bbc07c28e0758d343e5f9f58bf21fc7b9c0c4e4eedeca95418a3d08df03b45505e6926df5742051f5aed11dce0932971e61e219e099438ae07cbb74b9d4372430473661eb2740d6198e7c1dcdc2adcbffb10e7a0320a5c41914201a350bdc69faf68f3ccc81904313672497c2d73aa80d2b0cece6d7687f482aee558d4e1b8f10875c419ad9b43711163c5de99598b9f214f29b0e413dd7dad0082aeae8526339b76bc051bc487c6872bc48f92108a053aad48101352439845c0207914ce503ad8f3bb34ee741ce89283f87e3b63fe1bfccd3ed0fde43224169b852877d6600cbb8d5abbc0c97bb0661439f42f2b35aaa88490aeabff7f783412f192fdb7d8857e20ec773a852dbeca61b9a94af50499e2159ca57caf68d87abd2519a8271187e8ed4cb47dc836a96fc230e99238e4839516f19e132356b31c35a14be7e4a05e3c4965bbe06dc0478768370b755816f727fc567141c53a704377f8f819574c114394665e7864a2fe2287f06bac869548a8a074435df870d9b5b903184efa7b27d57cbaa173efdd687317d0efbc9d33807f2f30ad0169b23a6e7624785ffd036db3abebff5fb9e83c6bcb126f59e8afcc3ece4f394051317e5886209270a591a49ce5a9eee6d57fd71e8ddacb3217cd8e9516c5087a58a2aac9b3244ccede7f8de1ed036d54721e0ed1d4c64173856bb7b9cb29885d94b251e0b81b9c7402dabebd18aac425df134dde8caa698267b293deff4df5d57081ef4a05985af681a0b92e3711157e4e9b39657c76098d6ff7723c7798dfb3ab717e301305aa224beac01a4108848d930f7d745cf985598832141b23ed65c27944e6b1a0a6af68696d31df5e14be28c0da6eef05170fc57c8ca54ac3bf6d0485ed8c56c3d50bfde244ab41bf6567a0da6375d3ccb2e9084e73be94f38afda17e843d8c23e703a7f8b14b52b7e7ff7c793b9ac6ee263265025813b1d0a69b762bddce2fbae197c3e2888abe307418b57b5ac0f2f62b1ae9dca2ff58e11440abf3bb952d1c40556dea5e4cae13982a8f79fe0664aff78328141f1e5ae3eb38b76c8906c540cf02d78ff411df6d433689f7ab3f76cddf0479c201dddb80681d9d0df66a33f9f110d71d93198b9e344a4661d48ae106e7372c578d408559f088a921956be384ce6aaa7e83ca90d6343b099fbc19fa8a7219018bca05cebb38c774cc24e0ac37f736ba1ccdf7b4f6d789cd2a945270bffdce7ddbb0e55512cb08853bd91244569662919d4973601fb21f37c3fc097e14679bb6cdeab7e81745993e630d9bbf75a871e45fb122543991447cd460b95c04fdf8aadf88bd4a1de392391a80fc8984090ba64e9f567fe471099fa887d5ec72f2fd192d88e2c12f3ee51b5e7ad7c06cfbd1becc5c94513a37c863e0c8678073777bd88bba225f4aed3b63cceab77e137c947b87573c29f925f1cb29ddb8bb478111d01b245c950a67637920187c1e2fff3b3ecec1444d9c8311d45e481e0093d54518285f9245c9f55a268e0249181a7986c4c48920a805cffe53ae9df7b894c9fc354c18f5e5cc2630129fd2a761cc93318cea211e934b3e5e74517210569a99578720b35746f25e7a7b8577afc93b5090624d8c337b9013a5050c15fb797a160ed00afc7367999170f6d81ffff30bb7487089a0323dc6702d94c023f2c0154b9308edfa61aca8df3df665f1f39e17c4ec109a68113487e70fac8701207656709bb154cb50301690d9521d06a49f5bff9e8f6e3789640bfd40bbbbec24d4d6842b31a5af7622e827b40e541959f034d491065b2c918d0852c5bd147cce268fb6368a2a08b993344a9bc6d9b74241a3d0cd49a350b6ab7b11d8bb81cfd8a2b51dd3847328b07086f4acb28fc8c04dce254882bb3aa538defd288510d4ae5bdc21f24a6e5efc34da8306bc2c44249930433fc80b0087c23d1f0d0978d2af4a53210ef652588b8400c79098b9eb0d72a0a0e48691037fa84cc2d168a4f964041cf5c41500a0841c988bf5448025c5603ae71fa0e6ce30015c7cc6b5a2d68a38b5e6b94d2b51c2c59c3f4a5718419a0964b42f50ef7e87646a4277bf7d74722a46baa01e24fa2d5fef6cf88df6754615cddb7c360f3adaa1f0652d0164e71c2579ba98e41c99e09d752c086db28b35bb5a5969863cce2011b66cf2f9dd90767d4fb75b9a41e8a71f00b296e99e70f77b718e18b16f2abf9f80da69f6e8bf976c8dc853ce71b38794f5aea7177fcd92dec08613070c29bc25bfb2e7b0759627b57df705e19e1d9c913ce29283078e50beea2f13b4647890e1e9efb2b4464fec741ee582c1f3ddaac2a80cea1bd1445505da5e47ca3791cd28221cf95fe0157d8639a35fdf6bde533220c86087d4a3d2ae07565901cc3334cb553ce1c46cb265ba8d96a43ac0899d73caa1ac336179ee4a4de37e098d5172bcddea4711549817ea9a03fcc59072692493ca9e8bff63be80bcb7866fe0e30716e2993b556850e5584fc2a31ae6df849f287015804c4d77411f26d6027f6217f490690d42c63fe593320fb1bf42d9a6fc5c43b686241f321b14eb7712f67be9adb0fcb494c0a595886c6a5bd53cdc40dd2fe457b7f2b2d08e24a610bd77912a90eaf3556728c88c6fc5096d6f990ee76ecf25d7c2057233256aca0a87558e6c8c9177cd3c72cb79f00c9114dddd8387509a3d42c2d9432b36a4f194ec6de793e0ff0d298a819a9c49c2f2dd18ad6bc2ebd307da5c8accc1fadc7fb5af63ddaa9ddd87141b2dc48999adc9dd2de3f3fc03b64c5e411716d6d7777405e844897f5e004602521824e01f20b55cd22a0efea4e6527a4a83e3bfe51d2f9f9955856d1dc1f9ba908d395cdfa09c913d6af648e7b003c2ae7fdd8ca071bd3178d4125b127e30c397916ddc26253cf99b1f92d416df36eef8a6a3390ef1dfae0094472eebe902e83548b3632688f069bf9df56a3487aa8f40c0fd977d1d5f9a8e5b7c5d9d622a511b1729648921a940f47ba5624018f0c2d2ffd432be4a35fda337ff1c07988585b00bb2d0c4777e8592ee4cb13824e0df605b3a133e3f2b3aa7cfb80caff54abfd960d75815d7b168ab546135041f6216790536cd3622877c7145f71a37e3b4f545c8e2b7a7511c926f922d277b1d79b964d9ded9251f2d4ed331b553a775e03986b7913693d226e4d3103132ff373459703f579def3fabb5ba75db75a46e6daecd1929448aa8c8754146f917ceabf1544edb8e6591d52deb5a76fe70a97fcdaa40f6cb1f5b3909b7722d6c5c80be5246398a7b7fea634676cd566b7902cc41ff420972db2e5b3ec32fdb7c5e3bbed55528dcd8dd95b5776fef3cdb0f47f891f7b845b39fb17d5a36ab486e76a15546869ffb91e7fa8b1524597751ef6dcd1a10d2be2c46a7116d5c77dd7a70116299aa0814a7094f9f998f47ac913ea33c3b0b8cb4daf28a056ee46ec2d5c70ee2ae28f0435d929dcd8351b06e0a977eca513d36de77428cff3ac5caeb2a8a1d839821fb15f8b5ecc3d8264030a3f1d83abd82eaa4d1166c6f898b756e5219e49f45ef1a6568357cac25d01cbddeb7d7657ec026d7de1c2110533f8a71d188e2f69b7845edc83b5c06532514c15dad6d93f682420ab48307413f3d620a97812a79b6cfdf570062c4707c9c5ccdaf38d638ffcbbdae3beb134fa621db08a58e90835496015f3fb0cf703987926a6e11a720d6d8e007942db9832053c6c99277ef30b5ed2e5283dae6856585cae24f4f9d7dd5d12161c38565d63898ccacde4044352577b828797a3a4a5b3b8d3d4dcdfeef0ff083544838babb6ced70d10151d2451616785a0b9dbe6eefc13204c4f7a848e9ca5cfd0d7dbe736393f619cc0cacde400000000000000000000000000000000000000000000000000000000000000000000000000000000000c202938464f24a12050276312810a8b40180800084828a083a202408000121311408308420055225fa43850a109000000000000000000000000000000000000000000000000000000000000000000000000f55700000000000000000000000000
# Response

# verify

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.

# Arguments

Name Type Description
pubtxid (string) the id of the handle-registration transaction
msg (string) the signed message
sig (string) the signature generated

# Response

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

# 📌 Examples

# Command
./komodo-cli -ac_name=MUSIG cclib verify 19 '["ea448ff66aa925239cff7ca748d3aea62474187fefbd1c15fcaaa14c4529b82a","5175616e74756d20526573697374616e636520697320617765736f6d65212121","d89f666a168c6c704a80c63165a93edb1c8c4a23f1e47feb160122669fc081735a66f5c95d1ac524e6bc2e719114e13be356e8e890ba16358464c5498181e2cc6d9f49066588c11f89f89c5f09a3ca122990cbe576c85c81a283a1ef9d69e162dfb6547f5fc09265cac4cca94a30850ee5f6fd638e4d3a9f59576fa1ef6bf621a04f506aa7cbe76bfad672f107131948de8fdc2925e90268bf240de4aa1859a20b529432dedb5253490f0b45295e81e1541e9ffb2c8774b6822c45a038dee590fc9f2ab1826015d37c678d2b9a91349b7f2c78c43379af0ec5dc85206d192142ed14be09acb304d1b8531a3885a2bf48022600b911420ff99340899fe4f7e4c921f10a65948c145ac5f7c685e72bbb23a1ac4557b1a91b3191a5ec7f229254c740a03a4c296fc1249cf953bb9a17f0a1fe6a63b351b3ff8a2bfb0bb0c047564e01dcfa87c5616e1cf09578672c64269b5277cb82b8f054a058b8fed76159bfa82fdcd9b65662f63a1cad4ce74941ebf342760ce1511b435b9d4b77a3aa9c48964543e711a32a8d76de338647ba6f9d0c7582a517fe4f6bc2a25b976ba7214cf88b09857e365780d2c8d5fe158b53c02ffc5083eb83effbf41cc33051214d8b97d510ae4cf76cbc8c2e03c3f17ffed1cc2143d6f6154b9ed8bc7db97a06843ca1de096e4050a81e4bec673bd333380bc824bc80e9a1e6a4dae1846cd5738bca677365e6166ee87ba34b86ac74bcd322be3434fda5ef802a7714248f4854ce39f9c6f9a1249353dbef610b2616f6a083c3699bc7c8e5ca6865cc15fde196b2faa88e3e1126c818185bca2275762d9ec8ec440d0489c0725908c8fd104f99c8bf730bda01e31c202e43f186d09f11c0de4825c49f88ece9ffa23d462c502332210afa9af5110134c35b68718b0f117df6b45b9aa0466c95e95f81ed19794a2dc33cfd58ee4fcb4f824ffdc8e238a32317f2584db98e7bda9b2f661842b3924edaa441dea32b4e5357c3f8d424d48acf3d3f0964e69e64130b2d3c5ebc806135cc53fa8f1e1a04444ac5116177dd08e17c2c29cfa49971ec083cf8ebe424f3e84c4e5630c7b5053f9607a9b4df56195d8a07c3eee4bb265cd6fea253fb7af45855c712b83a0f5c01732fbf73ac8931edaccae71367956c5374f4d7c96c1ffcde9fc2d0d8fbc5eb4fc8d3829be53f1b2e537ac1ee659111438c2a6d11acb4f502594ae617685b1176aba19a79dc9d754b48db84cb6a83c9dbcc4ce0ed6b640d31bfed99df78f8a34521e0fde9bd14e168eeaf6cb4da6a29b48df655fba872312f9f876fcc8125b7b3768046e8f9d28f0c5526b9dc2b26887fe79e0b1e0b065055698ff27c68bb0dbdda057d0b5616cdcc89a8538ee1d030ca6ca6f6db71d0b1cd0f03cdc96c9cb3bb45689e923820d17f36d675a764402bf6b08fe7b3356f75fe51644ee577dc209760c6195afe71c7d8e32fdedd2a035ddf29561252ea92e4f7e674eb0c6a679f1fe4d1a63e3423f3e36e60ce93ec12a4e88bd2546b25d8c702990a55fdc37d1d5bfc1fdb029851464ebecadef443f03eb126bf48a06f43afac89278e9e8b100295137139b7d37706c36d0a3687181cf10ede3a4e2cbcc478831dbbd99eee03f9bcff02a2f1887a9ee85f932d3e22eb43d4541ef48528a921814e1d203086507df78f84bc119afc2febf445660c73e88739d53be3762ae3c6800413cb2d963239b4ce1b0a2634e938df33d20f8e056d56047adca62876c5db389a71a9f11376c39295c69ebf09dd0a30d4d5d91971b6ff60e5a0d755863ba813a0fd8f8a7baab677a455f930308499bbc86c36ceadf1b9c37e6118fae9ce015d5851db272799bf75da81545d57b6a2d36358e1f4f5fdc00e9121a9d531ce52c89a64b24705daa0a8dad8707dc5e11ac6565fd763758b530f7a890cfb1dd7561d94c6df9681bf528252f4c99beb5fdcb2cca134b50ffe69d2160df4bd3c7ec51da9c189c8743f19624c9ec69dfd52bce1a8da90fef8d5294c2f477489bbfc23be3a65d0a797485d0235c40b56fc2aab90fcff1da0a3b065a439cde62d895b1111f33c7ecbb96991908757ff47b053bdb8afca97e5f2acabbc8c37f35185b25ac2c43b8c30aafca78c371ee0c1e0dd7132e603309b702b8de2f185f527fd6b74855599f70353cc3befc3654b557761027cc867dfa1632bb3ad94a5458296588333991d2e16a296450de5e4a0599af4f79a011b02c657ff045a8a95572ce069f3362f82fe7558ad76e1272f45badb32900c1cc47643f5476f9dafbf0f6d5a50da8d2405cea4777e1e1b293a766f448ef6ef94fd185ceeb341e369ff2ec9dfe37a18978557ea22336eee6e57a21614e457a46ef2711f112f925ad111d08c88bb05b0bd9d9f8fe9a53250c562b5f18a2534118a2221b91b1420b801d48115c99f91285483cf5d7a7bd23af0bea1dfc034b6941b9b2dc6181614cfb7328c3f4894485c1dd59b11e646498e3957911d87e3a0e1d602046527b7de329acf1ea0f5a8e9b5112d174004454a11b1e594c1f7f14bc1bb51047042b5d99b8b4e9bd0aa47502dd00557585dd36d19a93c48a935434f59b8aacdef2fadbddd5bba5c55f864e01c7648a16f6c7f35b9d1c08aaaa53e42c2200be756dbeb2ebfb8222f0dffad6683f640c7dab52d1c3d501b7c72628aba1bfd4ee089325e4972e62f8313487864737ad29714417af7357c8ac967a4dc0e8fb3ed55d94dd9094529f6f71a4f6afbc65556e556251b988e751deb1a4a898fa4af1ce50db0173709bf8265259862676ae3ba2a399994b36474ef3b44b18321bdadbbede76bf7e5313e0e197587f7e674edf402a01136fb0d366d5c9e9d6ab804fa73b630585346e6d271cf012b2891ebd85f308c5f97b179c18ee6f4ad6b10e33e9a7e2142b21a06afd5b65b773b1d0a5dc9f879d40ab264069689db4644c3d631bd8efab0c9721525e31d25dcd1af9c71dfa9a5da7cbc84811ec97e63f1f3b3c3f443bb6e59f6c1a115bd336cf2d485b53fafc84f8018c4a2ee1b9319a9b2d7a1e06b8862bc4ba82313d74a9fceabe2eab540fdb1434edb0339df7217b2125ab2bb9079fd1859877ef11e16fdcf7bbb9654be4f829760f51f439e05baa0c283b7576adfd43329cc044416b45cb3078646bcbc69bcb5dd23f3e0ae5a695fe3ac96b0a934696445bc395fb12c5b8d1e4d256c1a61aa79397a6453dc4adf11d79320f0294ad2e95e3ace72f616be3b02b40953b24e3d724baca91d2dc435c22e527df93cd48d65fa3e63f4cf355d97a4ddf2ee87ce09f919846df7a16c13584ad0dd10002e6f166121392eb7c8f081edefa703b73882f61b0f77946e16b4625b6f814df9e7392274387406a05d8fe7c58e664745813a65ce16133e55d49ebfdac252da5682f1a41d51ac38ae579e643098a4ae5172be6fbf9f6c51c124eabb90a28978825f3ed67f53bcdd4f81247121369c5974343ac939c4384088a35ba2473d8e81ad6834f7bdb949b92a21ba258f7b246966d4343e7ea44e4b6f9909cf112a1f25362fe8c684b010f875e994fb87b65aef8ff59b2df4703261a57cbaba9962915d50ae7405c89163a093a21c782a62fa524d4921078f896d61aecca2128a9ce0c3f481cc0cdb16b3666239383e7e180890819297c60a93b2f5841cf665eb5266394a10e6d0afc4f600938826fd13858e88e19b319876168de379162c578b25c4c87f46b47c005ebc79073e4770a46e9ccc5009b19d4a84d68bd68a7bac9fe0bd6a51ebae9ee6e6a7cd082802f0a53c7cdb4a4f3b2d7b15a9fc23bfdc10c88c185938916c0f70ba40dc26e80d86602051de0faa3503841b3ff12ec2cd0ac1bd9d86e2f098ad1246a93d63619d482634bea69a1c883a7b9e35b91fe67b35a02837750f363616a4ed572e8d6dd8595abe0bf1571ad6ebd5b16df8bad53b1d6bdb1e391702c91abf0e8feb3499fddd040e06c46647cecfbef85505b0670f1184878e3ee15bd3d93546a028917ef445a8fc1c26319b00c0b0e41e74e00447a6c5cfd63bfa09d3d68c3ecae03d2335662ee2e79dc907a4f5f91b5650d29020c99b3be715d225a9d8a21cf5394235bf035209052b76f815cebc0afa5993f8eb6ff944a3ce56ec14bd3e3ad84f1bfe05073c3d970082a852efd037537ba299fea304cc6e6c61cfa08e013df36501937f6cbd84cc7057ec8a471ea2e4931287db6c62d923f4c902382cc7ee4f9d49ae9857f59d67bfc58c277e44b1ea3f9582864733d1b898ba98108478dc003012b4010bca9e8ece18e3180b11cb8a31e293951e07ebfba7e770faea8b2f674eb535375f2254a3e20f1e2da32631a4752295ece3b072d21c1fba4d33a3415c9578c1c2052e34d5fabbf957ef2352e0c4e8885461841a3d47436738cc5c53e2c043a424f30458d1ed9d6b6b30cf6a7eda861b540ac25164e00f220496c46f93b3fa7fb7ea8a843ef3b3cde50882422bd9414f858f603c108f2c3c157c0c9eb41c185a27fcdb149e210a1e252a4647496e7477acb5b6c0dbe4fafbff1a26576162a0cef1f502071b1d333650666a91939aa8b0d9eef2fb08101319246d7e9ca8b4b9bac5d0d7f1fa0f25283540516169778385abbfd4e2ff0d141a566a7f8688969ed5d8ef00000000000000000000000000000000000000000000000000000000131c2e3f4f5c0526a000cc00420628b002b0002ced051021a0029004103b8840111402048000ae8f26f33c9de7075175616e74756d20526573697374616e636520697320617765736f6d65212121"]'
# Response