/xmcm

Exchange deposit and transaction simulation with Mochimo

Primary LanguageJava

Xmcm - Exchange simulation - Monitoring and transaction with Mochimo

Xmcm is an simple example of usage for the various components of the Mochimo ecosystem.

This project is for educational purpose only and should not be used in production

Documentation is available on the Mochimo wiki

Tools

The majority of the Mochimo tools are developed in Java. This allows for cross-platform support and server side finetuning. We recommend using the latest version of Java.

Mojo Wallet

Mojo CLI features can be explored with the standard help flag:
java -jar mojo.jar -h

Command information is also available via the standard help flag:
java -jar mojo.jar [command] -h

example: java -jar mojo.jar wots -h

Backend API

The backend API features can be explored with the standard help flag:
java -jar api.jar -h

Endpoints:

Endpoint Description
/net/balance/[WOTS] balance of the address from the network
/net/resolve/[tag] resolve the address attached to the tag from the network
/net/nodes all network nodes
/net/chains all chains/subnetworks
/net/chain main chain/subnetwork
/bc/balance/[WOTS] balance of the address from the local blockchain
/bc/resolve/[tag] resolve the address attached to the tag from the blockchain
/bc/block/[block number] details of the block
/bc/raw/[block number] download block
/balance/[WOTS] balance of the address from network and local blockchain
/resolve/[tag] resolve the address attached to the tag from network and local blockchain
/push push a transaction to the network. POST {"transaction": [base64 encoded transaction], "recipients": [number of nodes to send the transaction to (optional)]}
Generate deterministic WOTS addresses

Deterministic WOTS addresses can be generated with the wots command:
java -jar mojo.jar wots --index 0 --count 100 --mnemonic-words "word1 word2 word 3" mywots.json
The above will generate 100 WOTS/secret pairs from index 0 to 99 using the mnemonic-words as a seed and store them in mywots.json

Tag a WOTS address

WOTS addresses are a One-Time Signature. Signing more than one transaction with the same WOTS can compromise the security of the address. Mochimo uses an abstraction layer that simplifies this process by allowing the use of another address called a tag on top of the WOTS. In the Mochimo protocol, a WOTS address is 2208 bytes where the last 12 can be used to carry a tag. Even though the WOTS address must only be used once, the tag can be reused indefinitely. In order to do so, the tag is carried over from the source WOTS to an unused change WOTS every time a transaction occurs. From the user's point of view, the tag is their Mochimo address and it never changes.

Untagged WOTS:
3e3a699ced1eb77b201f32ec43ed02de67125c7eb2de45b12e4d4c624c0d5cc2fcddbc07ab670895e547393186ff8226ed52deb61d93f32da352400ac37ef25f7fcd0ed4fabd73318f2e48973ddb97027eefe154b9fe0f1b6f82e55693b534c6f1cedbfeed9a4bd2bbe61842c622d155f51dae69e372f3a5fa177ac64a69630cfbbeb734ca10d51b2cffb6b886845e8eec3f459620512ca7da54bc80e25c9499fcf4135c5461290c7f58f88ba85516d518a5389fd5a0cdc2353f2d3ac9c1251550da0f9b7f05afa19a87c76c248fa00e60a6b06f6490b28222d9f5ce58fd28eb0904492cb55591bf577c9d1e4d94b1b654dfc36d5c1bd66f86e153c4ed07b883af30da0351532e3c4d39130b29ec70f1ffa3673331f700006daf30df3153ec25380cdf91ff3ebc5c2661b04f37a8aa906e4b272449709dd4c2dc1aeaf4ed00168db0f7d52b9cd422baa2e09bb3eb52ad20fa48e795f7a02020a50d191fede108bc87b8ac5df6423bf17ed77793c2222f1654dcc42dc2cc74c7294a29e4127ff2589710d2fc2fb9b21e146076efd065a89558b55d0f8710d9a7275c56d7973608378c61feb0c4513e795bc5949149167b5c7324a43d76e048b06fc2e9fb8aed99dac017f3400d25da6462114726acf6acfb51d50b57758cb3e7106ae7957bb47d2bc4835ec128a6a0f38f536bc655bb87119d849a8b80a927a91adf75186fdae64a7e76e9a09953beee144a00d0e0b722e907ba7dd5c71b5c2b345d51c93a8252304a5ae5c760ea985c51f67e0feefe086274211a3f28713a3067e9ca30f6e0e4ed656b6b579d0609d537db6b8a4315de32a0f81a68c766e4f436e47c08554b9ffe4e10021f8e08b8694bdf6fcb26eec10141043567ce8cbbd57053bea00a5eaaa32a58dd6ab12ab1322d8fd92741ea14c6acef9a0d921312ff25d44b2956f2d911ef6a69b3e2abba3f07ce25c1ed822fb42b9b6b41da42652c183b1348bde0dacb0a779b501e7fe17b68bcfe32d39dea9e9bfcbfd2873e3cb4f4ee93e3af245f6a0a88a03a546e7788069069508f8668120a72d9886bc5ac579b959c40f06ca4dc885492b478c1ae634636dbac7a7b5a6df84cf35cfee5d5a547f378514fc3f5a05c3bab923a8653c9971eb14fbef622e06648881a88816d2f9770380c11f27886ad8561681b6bded09ba683b3f5b270601fea57d6b0012533ca87181424c1102e9ab41e76497119af2eed979db2728774fca8d8fb46d5f65c068120b2df7096ae64a535950ed35ecd7e25eb56304fefd9ab6e075fc66f1a73b8370b62d40dedd7075695d879fba9e52a9109b34e70d660c14d4ced3ea4489575917aca0c47f739f1daebea3a8d34114f764082ecd44ed88e41f6e65af21667f80d4027a101ac392d0c9f12cfd7960ae4fb8d67d64db6e78b0ad5673bf0c1b0cff74693bb0b9dd2e425ef1dd69c6c1f1bf9e779e6d6d53eb5f068914bdde51734d88ddcd6198867d83cc4439dc4a9f039cd22f10727997e54e1c73e7490f3d3b971d3dad5b618120d97e099a4dd717776eab8ffbcb5f9f97e90bef3ff6ee74cc522a035c2245301ed34defee78ecef2b03e0568be733eaf8003055d99a09f399856bd9b159365db951d9a10218d67cef5a2c63d1025b6904a22bfa4150b27e1186537ab7153c0d867561f5d3b50b5f39b1df791102c2362efbae742560525544ae3ea32a81e9cfe1aaa71b95ddf1787d75cb5bfe064badea0ef570cb9d4d513609bd930c38651a74d6d589d45f9c4422ff21be05e3fdfe75a2c5558b4aaa3a89f511b4555bd136bddcd0f873fa611c57d1c9fa148efbf38342505ff06c1bd564ff6b30dc3cf9de1c8a88e4cc72d1db2b8a488aa06a87b61e21f1cc1464b0797b12eafc9085f4e1484ada76a2f70cdd6933a771749b5fefa1af85a1f82cead8ae69d8e4aa685804a13f28a9eb68a0ee81b1f58ffdbaec322d94e56cba497770da24573074899257b0320de3742bfa6c66d2d89558caad2e076dff8eb66edbf5920f75fc975ce0bac76ee414ad2689cf8c0d304ebe8d5850959b8f4344ef4da676aec6ca0bb6877edf45fee3c7f3c45af6d3ecd690302df0c90aa091a5037ef0b9ed2cff31c684f4657897a27a6ee15bb58794f8e1713f2af9f36fd3523d87bc595149cb42466fdb4ddd178f91bdbcb0624ca081222b3e9ee009472c71161c8cb15dafb49dd9b9cd42133d0c29e4b159a6df2cc9f860339c915cb6a6faf3c4b571cb62fd24fbb479f13c7a1331a66fc195f31baef1e14cf71207b6a0fa72459b2b18f7820742da6053a7389a585b32acf40f654d1b538ac81b99a0b02458e402037fb400023c2ad49e880c96cfef863acf7d460f820108ab96fea3ec25edc6b9a368be4b99ae50f983548b0bf6ab138e19fdf55d9300bc3b803a9bb1b569c351fa296eaf4d2bc2bdbfd084bac840f472a6a12511ecde6bda0207cdc2a19ff7c9aa20e4d72f7065a3e6ffcd6a8cf12af90f138f51460c28f5c2de1b736933ec580e76de2f0bd6d2c59ea81bf105b21165e3d91ec9b70e9dd7ff1d1edeb63a36112728441bf3555acc8fefc166040a2c7ed47a778fe76e54bf55bf391350b220204f43a518fbb0a98a38a4263b2b7c7e11b52074d739c34ad1598e9ac3d939287b8869036ebb689bff8402f9484fa6772c917a9bf83eda0e1feca8f6cded4bf9c99d07eef14679fc0fdbc7b43d5c27c18ac2b9f29f94fb5874859f98907a4f4f33b8929c16f5da49a543d188099a104a53033b0ee2c79ea93829158e5eea18846644dfd37a54fecb63453e05f32d65bde364b839c4ff881b7896af2b84389647279d52dfb43eedff902fa9711d1693415fbc46c149a6eb8cc4350212f5d234dc3b15f76b1009ecb95938b4b4bbd2c82215f429bceaa073beca38262ecd02f1049e61c52153b8409e08b6f235bfe5af53df519545a9719b28f8b743f7e144a822bd6b10ac9fbf9d626514b6c959da6862e16df0b8f0ea2d18eb811a153faa424f3224d2bdc6d8d0b47d2fc467c03a53cf554d341e835ca65c3a53142ca579b409093e8e2d8cfab97049835c260dccc456eae3e5e1e01c91ba84bf6744f420000000e00000001000000

tag 014ac3ae580a105f942d212b WOTS:
3e3a699ced1eb77b201f32ec43ed02de67125c7eb2de45b12e4d4c624c0d5cc2fcddbc07ab670895e547393186ff8226ed52deb61d93f32da352400ac37ef25f7fcd0ed4fabd73318f2e48973ddb97027eefe154b9fe0f1b6f82e55693b534c6f1cedbfeed9a4bd2bbe61842c622d155f51dae69e372f3a5fa177ac64a69630cfbbeb734ca10d51b2cffb6b886845e8eec3f459620512ca7da54bc80e25c9499fcf4135c5461290c7f58f88ba85516d518a5389fd5a0cdc2353f2d3ac9c1251550da0f9b7f05afa19a87c76c248fa00e60a6b06f6490b28222d9f5ce58fd28eb0904492cb55591bf577c9d1e4d94b1b654dfc36d5c1bd66f86e153c4ed07b883af30da0351532e3c4d39130b29ec70f1ffa3673331f700006daf30df3153ec25380cdf91ff3ebc5c2661b04f37a8aa906e4b272449709dd4c2dc1aeaf4ed00168db0f7d52b9cd422baa2e09bb3eb52ad20fa48e795f7a02020a50d191fede108bc87b8ac5df6423bf17ed77793c2222f1654dcc42dc2cc74c7294a29e4127ff2589710d2fc2fb9b21e146076efd065a89558b55d0f8710d9a7275c56d7973608378c61feb0c4513e795bc5949149167b5c7324a43d76e048b06fc2e9fb8aed99dac017f3400d25da6462114726acf6acfb51d50b57758cb3e7106ae7957bb47d2bc4835ec128a6a0f38f536bc655bb87119d849a8b80a927a91adf75186fdae64a7e76e9a09953beee144a00d0e0b722e907ba7dd5c71b5c2b345d51c93a8252304a5ae5c760ea985c51f67e0feefe086274211a3f28713a3067e9ca30f6e0e4ed656b6b579d0609d537db6b8a4315de32a0f81a68c766e4f436e47c08554b9ffe4e10021f8e08b8694bdf6fcb26eec10141043567ce8cbbd57053bea00a5eaaa32a58dd6ab12ab1322d8fd92741ea14c6acef9a0d921312ff25d44b2956f2d911ef6a69b3e2abba3f07ce25c1ed822fb42b9b6b41da42652c183b1348bde0dacb0a779b501e7fe17b68bcfe32d39dea9e9bfcbfd2873e3cb4f4ee93e3af245f6a0a88a03a546e7788069069508f8668120a72d9886bc5ac579b959c40f06ca4dc885492b478c1ae634636dbac7a7b5a6df84cf35cfee5d5a547f378514fc3f5a05c3bab923a8653c9971eb14fbef622e06648881a88816d2f9770380c11f27886ad8561681b6bded09ba683b3f5b270601fea57d6b0012533ca87181424c1102e9ab41e76497119af2eed979db2728774fca8d8fb46d5f65c068120b2df7096ae64a535950ed35ecd7e25eb56304fefd9ab6e075fc66f1a73b8370b62d40dedd7075695d879fba9e52a9109b34e70d660c14d4ced3ea4489575917aca0c47f739f1daebea3a8d34114f764082ecd44ed88e41f6e65af21667f80d4027a101ac392d0c9f12cfd7960ae4fb8d67d64db6e78b0ad5673bf0c1b0cff74693bb0b9dd2e425ef1dd69c6c1f1bf9e779e6d6d53eb5f068914bdde51734d88ddcd6198867d83cc4439dc4a9f039cd22f10727997e54e1c73e7490f3d3b971d3dad5b618120d97e099a4dd717776eab8ffbcb5f9f97e90bef3ff6ee74cc522a035c2245301ed34defee78ecef2b03e0568be733eaf8003055d99a09f399856bd9b159365db951d9a10218d67cef5a2c63d1025b6904a22bfa4150b27e1186537ab7153c0d867561f5d3b50b5f39b1df791102c2362efbae742560525544ae3ea32a81e9cfe1aaa71b95ddf1787d75cb5bfe064badea0ef570cb9d4d513609bd930c38651a74d6d589d45f9c4422ff21be05e3fdfe75a2c5558b4aaa3a89f511b4555bd136bddcd0f873fa611c57d1c9fa148efbf38342505ff06c1bd564ff6b30dc3cf9de1c8a88e4cc72d1db2b8a488aa06a87b61e21f1cc1464b0797b12eafc9085f4e1484ada76a2f70cdd6933a771749b5fefa1af85a1f82cead8ae69d8e4aa685804a13f28a9eb68a0ee81b1f58ffdbaec322d94e56cba497770da24573074899257b0320de3742bfa6c66d2d89558caad2e076dff8eb66edbf5920f75fc975ce0bac76ee414ad2689cf8c0d304ebe8d5850959b8f4344ef4da676aec6ca0bb6877edf45fee3c7f3c45af6d3ecd690302df0c90aa091a5037ef0b9ed2cff31c684f4657897a27a6ee15bb58794f8e1713f2af9f36fd3523d87bc595149cb42466fdb4ddd178f91bdbcb0624ca081222b3e9ee009472c71161c8cb15dafb49dd9b9cd42133d0c29e4b159a6df2cc9f860339c915cb6a6faf3c4b571cb62fd24fbb479f13c7a1331a66fc195f31baef1e14cf71207b6a0fa72459b2b18f7820742da6053a7389a585b32acf40f654d1b538ac81b99a0b02458e402037fb400023c2ad49e880c96cfef863acf7d460f820108ab96fea3ec25edc6b9a368be4b99ae50f983548b0bf6ab138e19fdf55d9300bc3b803a9bb1b569c351fa296eaf4d2bc2bdbfd084bac840f472a6a12511ecde6bda0207cdc2a19ff7c9aa20e4d72f7065a3e6ffcd6a8cf12af90f138f51460c28f5c2de1b736933ec580e76de2f0bd6d2c59ea81bf105b21165e3d91ec9b70e9dd7ff1d1edeb63a36112728441bf3555acc8fefc166040a2c7ed47a778fe76e54bf55bf391350b220204f43a518fbb0a98a38a4263b2b7c7e11b52074d739c34ad1598e9ac3d939287b8869036ebb689bff8402f9484fa6772c917a9bf83eda0e1feca8f6cded4bf9c99d07eef14679fc0fdbc7b43d5c27c18ac2b9f29f94fb5874859f98907a4f4f33b8929c16f5da49a543d188099a104a53033b0ee2c79ea93829158e5eea18846644dfd37a54fecb63453e05f32d65bde364b839c4ff881b7896af2b84389647279d52dfb43eedff902fa9711d1693415fbc46c149a6eb8cc4350212f5d234dc3b15f76b1009ecb95938b4b4bbd2c82215f429bceaa073beca38262ecd02f1049e61c52153b8409e08b6f235bfe5af53df519545a9719b28f8b743f7e144a822bd6b10ac9fbf9d626514b6c959da6862e16df0b8f0ea2d18eb811a153faa424f3224d2bdc6d8d0b47d2fc467c03a53cf554d341e835ca65c3a53142ca579b409093e8e2d8cfab97049835c260dccc456eae3e5e1e01c91ba84bf6744f014ac3ae580a105f942d212b

Note: the last 12 bytes of a non-tagged address are 420000000e00000001000000

A tag needs to be activated through a special transaction. It is recommended to use a fountain service to activate a new tag. Send an HTTP request to the fountain and the tag will be activated after a few blocks. A small amount of MCM will be sent to the tagged address uppon activation.

http://mochimofountain/fund/[tagged WOTS address]

Note: we recommend you run a dedicated fountain if you are planning to activate a large quantity of tags

Monitor addresses

The recommended monitoring method is via the backend API blockchain endpoint (/bc). Alternative methods are the backend API network endpoint or the Mojo CLI.

Request:http://backendapi/bc/balance/[WOTS address (tag or not)]
Response:

{
  "block": {
    "difficulty": 35,
    "height": "79349",
    "hex": "135f5",
    "weight": "64815887825358247574",
    "hash": "4ee73ed97ab1aaa3f258f3f92096812266ec23bf2bb31a78bba7e27f34b37db8",
    "previousHash": "b58b1bd487169ce7a363583958bb2391b3133c491c2daa83a9a8ccd829527e70"
  },
  "balance": "1285999000"
}

The tag can be monitored via the resolve endpoint.

Request:http://backendapi/bc/resolve/c0ffeec0ffeec0ffeec0ffee
Response:

{
  "block": {
    "difficulty": 36,
    "height": "79351",
    "hex": "135f7",
    "weight": "64815887928437462678",
    "hash": "67d8908c7b9f2ea528d8e09c747a144e0ebdff5e623f443022e6810f36477ca5",
    "previousHash": "2580689e04c3af9b5c965d4b322329e7231da02f99e28f9a395e76180f13dcef"
  },
  "address": "afb72fddb3bda620d2e1ddb6e32bc4abcbd456a8a92c6ef03de908a277ace16fbf5ef701544770a19852ce8d5d85c1b402c0eaeb37dd2a8802a9206be82db491b933417d2965f5a898b6707763fac91274ee7473fb34107bd2ae965ef926b3200480ff493d85ac8d281fc189765b739df755bf3ac3007241b43609437ebbce5e9705264cca4ed500d3de514b835f0519255dd3f44e635099d2b5ac565dcae9a1ddbb6b37b2427352dc9489ade92ae5bfc89975eb1d047712905020eeee03c2754c036297c0ce396756b2123a30fdd607cf113f7430bb0462519366a6736bdceae740b8286776f3656bd18e450af154130bd74141d95d861cc44de34630ce39421e6d4940f46392e7d6e64125e52db9408f1e5f8561ce5b5071777ab13d7aec787a79dd136a48b3b5ebf7eab56f70bfc60fde8e6f8c81176e3482e3b1b04073b9ea1969d1e3f6e7c689d516f0afcaa365386b5fbbb01b66e0b8fac60b51fbd1db4e117da06b047348ab17760d1552ad80aa5f44cee7144fff4c177c38ef27debba030e753c99b6f3b87fcf4297824157a70158bfe1b163e6a44228d658c978991de4c7030b58ac90d8cf9ebe089f8c6fdadfc609ae299643ade4e5d21d21ed0c3945e1dd1013403b23a80b4f5237d475fb022f1bdc7ba4e14c3c15cf38fe2e48a7bee4ed6bba3ae201f4f234a918bf3155b4f56fefef1bc85c4d1ffe9ed4d799b7459cc4bd06545fbaa658530a57162dad6417869cb7ab034a81a49dfe2c0d320877fbafd3024b2ab50e79302a8793f7faf7a43c872aeac8ce43d6707da7669030366b4e3ab747b39acd7355f93e733b610cab9598fe8fc20b98b2f8b8d4d286da646fc5ad0451d5d53f68cd3bebb502fe05fd43075c73e09ff8637e3435c553d0f26244e39b086e11bdb278c555f5f55345501865a2ebba07a146cfe5cf771f48af90abd67989b519a39b353be927bf640102e9ba5250178c0752896c7a1007a7524ff9966894967bf67af78816311231304e8a3aaccd79187ce68b215766ee00e4e09e8a6d64af01d1066edb28226ad9d911da73bdebaf393d0479877af3d050bbacd67a7fa69923ac2ab884297f38909929aa46db79db68a320ff4338a5824eab39fd1b0002396f4019b3585f8336c046683c90b462fd51134c4f3c80cc9ee27905e07c2a4474a4b6a852d65e6bf275a3d0926cb939dce42d4f39549f42dd573aaffac9816d8581ce2a956d9f6a5e7dcba065b6892cf39ce2972943849ecc085e62ad53b5bdadfab84516b1cd98ac44e4dd352ba574c2cbdcab52e5de4e53f374f7c1b037d746a3e61a6480043a7bcdf9c48b6930cc2fdf977af3b01d69ae19a69950eb15144d336ca308e3880b45f9861dad7fd705d8c8941698afe9f96bb97bbdae92aedab7ab654990fbffb248fbdcc1b7625613ef886178d8ccc5f37c3774706f4aa7f75070031c59c40e648be9d9e7c874d5ca98dcbfa850acc310948917e2c36b0a68dcac77a8fc9cbfb3069e2d85483633023207870ca62409ff3164c70c5529f24a353327e3a854c6a0a924dbaa40bc626fdbc7ec9758264aa1dd96519c9de7cfe2b7afc48ae6812eb95c649108f0c98bf3014c18e31fec127039220e00c7719c8310656ad4e229aec3ef839aa576ae8c201106ec97ab9aa95d4676d66e01d0065a75a0b8a6ec019b507194174de35af84bf3e18f5bc3e74db33f32224dd8a490dc7c8a726240537c670d3531c7da9e27b0fcf2509da2384c0c3814dd1fb4cbaa6586fcaf4316d7c85cb82cd573d130f8b109741eb138695f85592772cea9c383633418bb9286ef82fa280b4817710ce3a2cbbfb979133067b6888e256f5206eed45d922758d15125b5f5f5aba95aa9aca3e071cebbbf5506023cd93036a4240b554f281f8b075cb976cf5402ce4040e8e8d87ecb02f1099f81986ec3d437afa8221eda849e47ba2980c59b40de9faaef5866675dae8da45587d423270c4cfe7484bad1c76e4f76142fa383de102eb130a4ade2033e423f9451b5371f5dff91b8ee12efaabc72d85fb27300793d60b876e964df6c50217814ae7ecc52ac1aaebde93d948646f9e9464efff8e61865312bda225c1a151a9a2381e5f455aea881ec278706a9e024d64aa08eccad5235ab83e6314a0fae706ee7abbd956f0b56f56553f94a5482a7b22693736f270122b56ed04cb3610c75caa857c390a53681043007a2d426efe70bd14a871e1ad697006c49429b10191bcad51a8ffd9a2836b5f3fb3fe255da74e1f7cde02ecab73d365ebd79dfd0affbb79b3a1f337a7a0a2682f18cb3e07704e7f2f41181f700352d9299a6aa3da44309f248dd14afa41e55a0290b46b1b6bdf139924a442ebef9603ebbba66203d759e5f29eb56ddd32c2250302af4b4d3247864f7484c70aa5d225c7ba65df78751328f8cca23bdf3d5778d87adc5d23b538c6ea9945f4b7ee5f0e3aeb777bffdf12d9b1100f7634ad464f68891f070ba2e7013552ac6c354861c31ba8d0a4462d31f7646ec2f5cd354e23abb6ffa798c3e5e28f9b9929f3f6231745397b6d6290d582d1df7427190dd08ee51ebea022d9d2e084794f8b93618c8937d533d7b9a2bc7ae2b491b741876d67e20e95963c76d6b3d5fe87546e90052d8c8fb16a8da01e54e5025164de256e93c24ecd7906c2a0be7fbf860f2cf38f996257258e9cb7b0f5c402833d74497c3717dfdd55ecf8c328176fb5ed2606584b894f400c01a0fc90323f356da040e2a3013bdd078303dea27c179373448d60f89878e98fb3073b95914d3ff631565217c9ada8ac3f7591c53fa304a1b9e773a330f4b194541f80870680dbab397e52b73f02e4d8b94d3bc08b9b2630ac0287a3559804bb8f94901702fd2b67e4e360848edd1ed70409278a5aae07e6d06682c5d1d518c3777ac53bb4c5158318a92a1fe398dff214255713a9c6202996d2bd25dbe673e309255beb9733dd27b21f12880e2bc90db94287702177c4acccbe5d5f0a25b560dc63251701be51b14876e30e4da55817ab7f3ed0cbfe18f082f3d157ea1c43d0440586a014a1f85e74c25a9458795bdb4c982814c95a785abf9deac0ffeec0ffeec0ffeec0ffee",
  "balance": "50891969349501"
}
Sign transaction

Signing is done through Mojo CLI sign:

java -jar mojo.jar sign \
--source-wots 3e3a699ced1eb77b201f32ec43ed02de67125c7eb2de45b12e4d4c624c0d5cc2fcddbc07ab670895e547393186ff8226ed52deb61d93f32da352400ac37ef25f7fcd0ed4fabd73318f2e48973ddb97027eefe154b9fe0f1b6f82e55693b534c6f1cedbfeed9a4bd2bbe61842c622d155f51dae69e372f3a5fa177ac64a69630cfbbeb734ca10d51b2cffb6b886845e8eec3f459620512ca7da54bc80e25c9499fcf4135c5461290c7f58f88ba85516d518a5389fd5a0cdc2353f2d3ac9c1251550da0f9b7f05afa19a87c76c248fa00e60a6b06f6490b28222d9f5ce58fd28eb0904492cb55591bf577c9d1e4d94b1b654dfc36d5c1bd66f86e153c4ed07b883af30da0351532e3c4d39130b29ec70f1ffa3673331f700006daf30df3153ec25380cdf91ff3ebc5c2661b04f37a8aa906e4b272449709dd4c2dc1aeaf4ed00168db0f7d52b9cd422baa2e09bb3eb52ad20fa48e795f7a02020a50d191fede108bc87b8ac5df6423bf17ed77793c2222f1654dcc42dc2cc74c7294a29e4127ff2589710d2fc2fb9b21e146076efd065a89558b55d0f8710d9a7275c56d7973608378c61feb0c4513e795bc5949149167b5c7324a43d76e048b06fc2e9fb8aed99dac017f3400d25da6462114726acf6acfb51d50b57758cb3e7106ae7957bb47d2bc4835ec128a6a0f38f536bc655bb87119d849a8b80a927a91adf75186fdae64a7e76e9a09953beee144a00d0e0b722e907ba7dd5c71b5c2b345d51c93a8252304a5ae5c760ea985c51f67e0feefe086274211a3f28713a3067e9ca30f6e0e4ed656b6b579d0609d537db6b8a4315de32a0f81a68c766e4f436e47c08554b9ffe4e10021f8e08b8694bdf6fcb26eec10141043567ce8cbbd57053bea00a5eaaa32a58dd6ab12ab1322d8fd92741ea14c6acef9a0d921312ff25d44b2956f2d911ef6a69b3e2abba3f07ce25c1ed822fb42b9b6b41da42652c183b1348bde0dacb0a779b501e7fe17b68bcfe32d39dea9e9bfcbfd2873e3cb4f4ee93e3af245f6a0a88a03a546e7788069069508f8668120a72d9886bc5ac579b959c40f06ca4dc885492b478c1ae634636dbac7a7b5a6df84cf35cfee5d5a547f378514fc3f5a05c3bab923a8653c9971eb14fbef622e06648881a88816d2f9770380c11f27886ad8561681b6bded09ba683b3f5b270601fea57d6b0012533ca87181424c1102e9ab41e76497119af2eed979db2728774fca8d8fb46d5f65c068120b2df7096ae64a535950ed35ecd7e25eb56304fefd9ab6e075fc66f1a73b8370b62d40dedd7075695d879fba9e52a9109b34e70d660c14d4ced3ea4489575917aca0c47f739f1daebea3a8d34114f764082ecd44ed88e41f6e65af21667f80d4027a101ac392d0c9f12cfd7960ae4fb8d67d64db6e78b0ad5673bf0c1b0cff74693bb0b9dd2e425ef1dd69c6c1f1bf9e779e6d6d53eb5f068914bdde51734d88ddcd6198867d83cc4439dc4a9f039cd22f10727997e54e1c73e7490f3d3b971d3dad5b618120d97e099a4dd717776eab8ffbcb5f9f97e90bef3ff6ee74cc522a035c2245301ed34defee78ecef2b03e0568be733eaf8003055d99a09f399856bd9b159365db951d9a10218d67cef5a2c63d1025b6904a22bfa4150b27e1186537ab7153c0d867561f5d3b50b5f39b1df791102c2362efbae742560525544ae3ea32a81e9cfe1aaa71b95ddf1787d75cb5bfe064badea0ef570cb9d4d513609bd930c38651a74d6d589d45f9c4422ff21be05e3fdfe75a2c5558b4aaa3a89f511b4555bd136bddcd0f873fa611c57d1c9fa148efbf38342505ff06c1bd564ff6b30dc3cf9de1c8a88e4cc72d1db2b8a488aa06a87b61e21f1cc1464b0797b12eafc9085f4e1484ada76a2f70cdd6933a771749b5fefa1af85a1f82cead8ae69d8e4aa685804a13f28a9eb68a0ee81b1f58ffdbaec322d94e56cba497770da24573074899257b0320de3742bfa6c66d2d89558caad2e076dff8eb66edbf5920f75fc975ce0bac76ee414ad2689cf8c0d304ebe8d5850959b8f4344ef4da676aec6ca0bb6877edf45fee3c7f3c45af6d3ecd690302df0c90aa091a5037ef0b9ed2cff31c684f4657897a27a6ee15bb58794f8e1713f2af9f36fd3523d87bc595149cb42466fdb4ddd178f91bdbcb0624ca081222b3e9ee009472c71161c8cb15dafb49dd9b9cd42133d0c29e4b159a6df2cc9f860339c915cb6a6faf3c4b571cb62fd24fbb479f13c7a1331a66fc195f31baef1e14cf71207b6a0fa72459b2b18f7820742da6053a7389a585b32acf40f654d1b538ac81b99a0b02458e402037fb400023c2ad49e880c96cfef863acf7d460f820108ab96fea3ec25edc6b9a368be4b99ae50f983548b0bf6ab138e19fdf55d9300bc3b803a9bb1b569c351fa296eaf4d2bc2bdbfd084bac840f472a6a12511ecde6bda0207cdc2a19ff7c9aa20e4d72f7065a3e6ffcd6a8cf12af90f138f51460c28f5c2de1b736933ec580e76de2f0bd6d2c59ea81bf105b21165e3d91ec9b70e9dd7ff1d1edeb63a36112728441bf3555acc8fefc166040a2c7ed47a778fe76e54bf55bf391350b220204f43a518fbb0a98a38a4263b2b7c7e11b52074d739c34ad1598e9ac3d939287b8869036ebb689bff8402f9484fa6772c917a9bf83eda0e1feca8f6cded4bf9c99d07eef14679fc0fdbc7b43d5c27c18ac2b9f29f94fb5874859f98907a4f4f33b8929c16f5da49a543d188099a104a53033b0ee2c79ea93829158e5eea18846644dfd37a54fecb63453e05f32d65bde364b839c4ff881b7896af2b84389647279d52dfb43eedff902fa9711d1693415fbc46c149a6eb8cc4350212f5d234dc3b15f76b1009ecb95938b4b4bbd2c82215f429bceaa073beca38262ecd02f1049e61c52153b8409e08b6f235bfe5af53df519545a9719b28f8b743f7e144a822bd6b10ac9fbf9d626514b6c959da6862e16df0b8f0ea2d18eb811a153faa424f3224d2bdc6d8d0b47d2fc467c03a53cf554d341e835ca65c3a53142ca579b409093e8e2d8cfab97049835c260dccc456eae3e5e1e01c91ba84bf6744f014ac3ae580a105f942d212b \
--source-secret 60d451db33b3d7bc58038593e58648d4cb706eb069ede41bc92c2f078288b0e2 \
--change-wots fe19242b77d4a9ea1310df343565e6ed47aa61d56605d1c86642141067f5fc8a47702a080fd0cb205463a2681d16e4de6f31167b47730b09a0c2c8b972d8f4fa66699f8b5716567965d048e45b9e899c526f000957cf2ee1167b0e4dd99c404f3a93b440e8a8e340adc1ad503b7fd34f0e5254d5f6fc9a4f7abff6383c1da7a2d847c91c323eeeda12cda3ba19ee828cf68e44e1532481fa6b5533081dd3807f96e260ebe05bc43f2f769b545f0a98231d55f0b6381016431d250da3d78ca2e4a382142266c64b3da8e4d58e0dc5aa9471588d286249e05be15dca1e845840a48dc917f9911de258873ba1307c574ea31e933b97ab7249c4f7c312a8a2ad0fa59f0ccebc3e6577fe866af38d6573e722b28d7557af464ac4e5f5519ba6b69cf3120c4c880248b61d936e3df4295e9c6200c465577279262d5896f016f3e6b77fc1c837282d93e9cb3e59d2809e36ca21a8ce8d951595901dd6b8014856e6bd0c6c36d0dfdc15188ab97ba12335037dbf60a539ad5b9ded7ec446269ea74efc003f00ab2e1bd8fbf521b31f4da89eccd4c181058a44643f87bdc0d5b499b3af16d6f171301bdfd434101bed33926401bf9e3ab66d5c31e73250ac5dd87bc37e53ec134247bb089564c1853f2fd287cc5f33ab27783f297c73692f7b32cd3436153222119e7b488228aa8b7f658387cbaeda7f8ca14c844e85429faac2f03b6d60abdc5e6fb8faa32f0e59ce702f5d27049971e43985ab6bfe7489795064cf7a9b575a2f1b8b07d5ed4675c40a534cc4a17a8982be91e1244770af31a8a797dbb0f6e38cc2609a76723e49f42f46d30fefb0565afb10ebd77d52c60fcb59e8b608e9ff15332b004d9f3ba0cbb9c089f302da50a0c7f72c2777cfeb9a9e45caa17f36b84fa82934f0da943aa78f7140cd5eb3c08018ada808d7bf7d56e649bc32e5d17014b7c493181dc2d3fdced97a2a1892b99d387bdf35ae5e1ef81303c0195f2d137bafce249a0b43ed3ce1ac74e465a8518cc4b72573e88656c4e50c6ec47c330cc7ab96ea9ed14b7e13433f462928f44d6231e2a45de79ee754b5dfd6bf9338ecc028085628f0ae12e68a10734cd70850313460034a326489fc095363022d52c36cf82a1ff733aef02f7f191d3f745ef40641a3c884765515c0de2c5f0fdec2301ad4f5c5eeee67565e9fd9087bf0840171013ff0cb9127a193e4afed1027bc30e0fc226390078235e852f7614a83b0a1a6ca4e8b7186e4490fa90ebe27231659de5ea180e3cad26eb072cc39524a90caf88883c2061ac41c2314e0b6548857a947b0d26d5ce92be44549ab6282548b8f369d600f1f36a3ac380b9071a6e7d73706bafd0229ed8a9ea174baa52034d9f273c2bc456cb67d181246836bd24cbac185ccd580bc6cf41398ec2d6555c0208645fe1241b6a414472c83dccf9762bd31af3fe2981dbab2c13bebc1a4c78f8587336d0d4dc161ebebf9ccf92ea9711825bd71663ca3c6132553ea7649b2b1f8f3b135999c1a3466ec09dd0fc944418cfc6d54d67b711f8824bb9eacb8f93dbca9f42c6499c6a442465a6716d8e6d3a133a46443d31ffa4ffce5cd734a6d7f65c9d5d2d9f1755777606220e1cd0a1d49404696eed5d6843695dd95fec9feb39e9edfe275db44f3bd9b6672705252eeb34cd2eead4118fb942186ae722cf2ea7537b44937744ffb86e7f17511c66a4daaf298ae1cf1d462678f66e363bd029749a8a251e15e4b0e3971892401484964d9505c6d1c68c30b6863645aadf1303be8245c1ce5f0e9c241cb87b8231dca3e3086363821883d8e1a140b11fd7d0c747ca3ecb7b3ee90456fa2e71ebe8ec269913b91aed5a0da02493a5a6b374295ba24cbc087c7b9fc70145901e2b82c453363e34863c209887baca9c8144f581576ffe298cc56daa18f156d7ec45020f3cccfc3b1b5d83989bbd5f70645d34af49c68dc0fe99e51b252ba08f50d559d0853242284653876048db464124e870b670dc323973eeb77a7fc31ae31f5d57b563cd03ffb329030623dbb79c6247f689d5da7b80d56473cec464ffe8d3a54ebd98d9e7c7daae1e5407e957505cba9c306e77c41f6bb110d148c43f57487047a5954649b963803aa35750a3686edede459441ed382c70d85b7c81b27c1557165109039148996b4a78e47a3c1a187fbc1aae5ec7ff6346e21078a636dde7fe0a6a01fdb8163a829919452d7e1383cd2353853b8789761439ec6d62de2f88cdb92f268dffc353481aca68943221758c2132a966fce086c0f5c9922c129e398f301a2df487920b687a5b75a47caba786e4b4573a80700ee27b5397d605e88f36fdce543c033a9b7fdce7ebde2e23ca69954ec36c528e6c369e34337ebf6445050bcad0296179b853118cd8219cb26d850c35c1fb2964c3becac3a7e20b223e787c9612a8216d8cb5931c4f0de0b8cb9e701f664f42e58c13b26ac84694aab758508ea35c554017ac44d7ea6db8c5026d64ab42ff5a2821a35f2db8f9b65f8f741cea8c2c19611d07cdf853789b8f56c97272aaa1ec2d6c05c199025bcf9c3a79cc869dd8df06bc3d949a6f8c47dcc194b65ff5aa09272a4098412979eb1fa4d23d3c51f48f28a918b58e95609110c756721255b79d526c6ddb74b9356c35df0c5d6e342c91fb7b51d7a290449a142840a26019effa021df33f56141c48e5e28b50bde6ae66c91541498bdd0077ac47616082a3c0549ea36785a3548ba261a7ff899863f1eaa86b9e55e59a1d0521442ef1770a5a0100cf49c441233143175210256df22840221e75bf46d9feddb732a72e41921b22bb267ae8c526852a71356f40838f74efece9ea636695bfa999d407fbb75ab7070261d5f7f5c99e9bded57f5221cefd6ee92b5184993d49745d591f8343b2ab1ed51b0fc95b59681b2be39fd93cf561196372e54fabec53517b9252a33b7438fafe42561b1d02c1c52b77b282dbb2ecdb65f13986520880f8f9129d177ba15ab5ddb5668e64b2473a63226e99d8f67439168b9819ff50458c5cc79eeaf16bc16980d4966bb21af151b78a356c00e1e67fe48e6542bafd02472e02620fd2b415a9264f0014ac3ae580a105f942d212b \
--destination-wots afb72fddb3bda620d2e1ddb6e32bc4abcbd456a8a92c6ef03de908a277ace16fbf5ef701544770a19852ce8d5d85c1b402c0eaeb37dd2a8802a9206be82db491b933417d2965f5a898b6707763fac91274ee7473fb34107bd2ae965ef926b3200480ff493d85ac8d281fc189765b739df755bf3ac3007241b43609437ebbce5e9705264cca4ed500d3de514b835f0519255dd3f44e635099d2b5ac565dcae9a1ddbb6b37b2427352dc9489ade92ae5bfc89975eb1d047712905020eeee03c2754c036297c0ce396756b2123a30fdd607cf113f7430bb0462519366a6736bdceae740b8286776f3656bd18e450af154130bd74141d95d861cc44de34630ce39421e6d4940f46392e7d6e64125e52db9408f1e5f8561ce5b5071777ab13d7aec787a79dd136a48b3b5ebf7eab56f70bfc60fde8e6f8c81176e3482e3b1b04073b9ea1969d1e3f6e7c689d516f0afcaa365386b5fbbb01b66e0b8fac60b51fbd1db4e117da06b047348ab17760d1552ad80aa5f44cee7144fff4c177c38ef27debba030e753c99b6f3b87fcf4297824157a70158bfe1b163e6a44228d658c978991de4c7030b58ac90d8cf9ebe089f8c6fdadfc609ae299643ade4e5d21d21ed0c3945e1dd1013403b23a80b4f5237d475fb022f1bdc7ba4e14c3c15cf38fe2e48a7bee4ed6bba3ae201f4f234a918bf3155b4f56fefef1bc85c4d1ffe9ed4d799b7459cc4bd06545fbaa658530a57162dad6417869cb7ab034a81a49dfe2c0d320877fbafd3024b2ab50e79302a8793f7faf7a43c872aeac8ce43d6707da7669030366b4e3ab747b39acd7355f93e733b610cab9598fe8fc20b98b2f8b8d4d286da646fc5ad0451d5d53f68cd3bebb502fe05fd43075c73e09ff8637e3435c553d0f26244e39b086e11bdb278c555f5f55345501865a2ebba07a146cfe5cf771f48af90abd67989b519a39b353be927bf640102e9ba5250178c0752896c7a1007a7524ff9966894967bf67af78816311231304e8a3aaccd79187ce68b215766ee00e4e09e8a6d64af01d1066edb28226ad9d911da73bdebaf393d0479877af3d050bbacd67a7fa69923ac2ab884297f38909929aa46db79db68a320ff4338a5824eab39fd1b0002396f4019b3585f8336c046683c90b462fd51134c4f3c80cc9ee27905e07c2a4474a4b6a852d65e6bf275a3d0926cb939dce42d4f39549f42dd573aaffac9816d8581ce2a956d9f6a5e7dcba065b6892cf39ce2972943849ecc085e62ad53b5bdadfab84516b1cd98ac44e4dd352ba574c2cbdcab52e5de4e53f374f7c1b037d746a3e61a6480043a7bcdf9c48b6930cc2fdf977af3b01d69ae19a69950eb15144d336ca308e3880b45f9861dad7fd705d8c8941698afe9f96bb97bbdae92aedab7ab654990fbffb248fbdcc1b7625613ef886178d8ccc5f37c3774706f4aa7f75070031c59c40e648be9d9e7c874d5ca98dcbfa850acc310948917e2c36b0a68dcac77a8fc9cbfb3069e2d85483633023207870ca62409ff3164c70c5529f24a353327e3a854c6a0a924dbaa40bc626fdbc7ec9758264aa1dd96519c9de7cfe2b7afc48ae6812eb95c649108f0c98bf3014c18e31fec127039220e00c7719c8310656ad4e229aec3ef839aa576ae8c201106ec97ab9aa95d4676d66e01d0065a75a0b8a6ec019b507194174de35af84bf3e18f5bc3e74db33f32224dd8a490dc7c8a726240537c670d3531c7da9e27b0fcf2509da2384c0c3814dd1fb4cbaa6586fcaf4316d7c85cb82cd573d130f8b109741eb138695f85592772cea9c383633418bb9286ef82fa280b4817710ce3a2cbbfb979133067b6888e256f5206eed45d922758d15125b5f5f5aba95aa9aca3e071cebbbf5506023cd93036a4240b554f281f8b075cb976cf5402ce4040e8e8d87ecb02f1099f81986ec3d437afa8221eda849e47ba2980c59b40de9faaef5866675dae8da45587d423270c4cfe7484bad1c76e4f76142fa383de102eb130a4ade2033e423f9451b5371f5dff91b8ee12efaabc72d85fb27300793d60b876e964df6c50217814ae7ecc52ac1aaebde93d948646f9e9464efff8e61865312bda225c1a151a9a2381e5f455aea881ec278706a9e024d64aa08eccad5235ab83e6314a0fae706ee7abbd956f0b56f56553f94a5482a7b22693736f270122b56ed04cb3610c75caa857c390a53681043007a2d426efe70bd14a871e1ad697006c49429b10191bcad51a8ffd9a2836b5f3fb3fe255da74e1f7cde02ecab73d365ebd79dfd0affbb79b3a1f337a7a0a2682f18cb3e07704e7f2f41181f700352d9299a6aa3da44309f248dd14afa41e55a0290b46b1b6bdf139924a442ebef9603ebbba66203d759e5f29eb56ddd32c2250302af4b4d3247864f7484c70aa5d225c7ba65df78751328f8cca23bdf3d5778d87adc5d23b538c6ea9945f4b7ee5f0e3aeb777bffdf12d9b1100f7634ad464f68891f070ba2e7013552ac6c354861c31ba8d0a4462d31f7646ec2f5cd354e23abb6ffa798c3e5e28f9b9929f3f6231745397b6d6290d582d1df7427190dd08ee51ebea022d9d2e084794f8b93618c8937d533d7b9a2bc7ae2b491b741876d67e20e95963c76d6b3d5fe87546e90052d8c8fb16a8da01e54e5025164de256e93c24ecd7906c2a0be7fbf860f2cf38f996257258e9cb7b0f5c402833d74497c3717dfdd55ecf8c328176fb5ed2606584b894f400c01a0fc90323f356da040e2a3013bdd078303dea27c179373448d60f89878e98fb3073b95914d3ff631565217c9ada8ac3f7591c53fa304a1b9e773a330f4b194541f80870680dbab397e52b73f02e4d8b94d3bc08b9b2630ac0287a3559804bb8f94901702fd2b67e4e360848edd1ed70409278a5aae07e6d06682c5d1d518c3777ac53bb4c5158318a92a1fe398dff214255713a9c6202996d2bd25dbe673e309255beb9733dd27b21f12880e2bc90db94287702177c4acccbe5d5f0a25b560dc63251701be51b14876e30e4da55817ab7f3ed0cbfe18f082f3d157ea1c43d0440586a014a1f85e74c25a9458795bdb4c982814c95a785abf9deac0ffeec0ffeec0ffeec0ffee \
--offline \
--source-balance 1000000000 \
1000 \
mytransaction.tx

Note: source and change WOTS both carry the same tag 014ac3ae580a105f942d212b

Push transaction

Pushing transactions to the network can be done via the backend API or Mojo CLI

API

POST http://backendapi/push:

{
    "transaction": [base64 encoded bytes transaction],
    "recipients": 5
}

POST http://backendapi/pushes:

[   
    {
        "transaction": [base64 encoded bytes transaction],
        "recipients": 5
    },
    {
        "transaction": [base64 encoded bytes transaction],
        "recipients": 5
    },
    {
        "transaction": [base64 encoded bytes transaction],
        "recipients": 5
    },
]

where recipient is the number of nodes to send the transaction to (optional).

Mojo CLI

java -jar mojo.jar push --network-nodes "34.94.69.50;35.246.31.140;34.87.39.69" mytransaction.tx