Horizen Sidechain Tutorial: My First Sidechain
This article is the translation of the article Horizen Sidechains: My First Sidechain by Xavier Gerreau for his website: https://mescryptos.fr/les-sidechains-horizen-ma-premiere-sidechain/. This is the second article of this three-part series. Read the first article here.
Translated by Manon Boudoux
We resume the presentation of the Horizen sidechains. In this episode, we are creating our first sidechain, thanks to the Horizen Sidechain SDK.
Java8 Installation, Maven & Scala
I start by reconnecting to the environment set up in the first episode. As a reminder, you have to log in as a Zendoo user.
First of all, there are a few requirements to install.
$ sudo apt-get update
$ sudo apt-get install -y software-properties-common
$ wget -qO – https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add –
$ sudo add-apt-repository –yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/
$ sudo apt-get update
$ sudo apt-get install adoptopenjdk-8-hotspot
$ sudo apt-get install maven
I check that everything went well and that I have Java8 and Maven:
$ java -version
openjdk version “1.8.0_252”
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.252-b09, mixed mode)
$ mvn –version
Apache Maven 3.6.0
Maven home: /usr/share/maven
Java version: 1.8.0_252, vendor: AdoptOpenJDK, runtime: /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: “linux”, version: “4.19.0-8-cloud-amd64”, arch: “amd64”, family: “unix”
I install Scala-sbt as a complement:
$ echo “deb https://dl.bintray.com/sbt/debian /” | sudo tee -a /etc/apt/sources.list.d/sbt.list
$ curl -sL “https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823” | sudo apt-key add
$ sudo apt-get update
$ sudo apt-get install sbt
And test it in a temporary directory:
$ mkdir sbttest
$ cd sbttest
$ sbt
Once in sbt (the first launch can be quite long), I check the version (about). Then I exit:
sbt:sbttest> about
[info] This is sbt 1.3.13
[info] The current project is ProjectRef(uri(“file:/home/zendoo/sbttest/”), “sbttest”) 0.1.0-SNAPSHOT
[info] The current project is built against Scala 2.12.10
[info] Available Plugins
[info] – sbt.ScriptedPlugin
[info] – sbt.plugins.CorePlugin
[info] – sbt.plugins.Giter8TemplatePlugin
[info] – sbt.plugins.IvyPlugin
[info] – sbt.plugins.JUnitXmlReportPlugin
[info] – sbt.plugins.JvmPlugin
[info] – sbt.plugins.SbtPlugin
[info] – sbt.plugins.SemanticdbPlugin
[info] sbt, sbt plugins, and build definitions are using Scala 2.12.10
sbt:sbttest> exit
[info] shutting down sbt server
I can then quit and delete the sbttest directory:
$ cd ..
$ rm -rf sbttest/
Compilation of Sidechain SDK Elements
I begin by recovering the Sidechain SDK. I enter the directory created and launch the compilation.
$ git clone https://github.com/ZencashOfficial/Sidechains-SDK.git
$ cd Sidechains-SDK
$ mvn package
If Maven reports an error saying that it can’t find /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/jre/bin/javac, it’s because it’s not looking in the right place (in the jre subdirectory instead of the JDK directory which is one floor up). It is necessary to correct that by forcing the environment variable JAVA_HOME and restart:
$ export JAVA_HOME=/usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/
$ mvn package
This command will build the four elements of the SDK:
- The core of the SDK itself
- The bootstrapping tools – tools that facilitate the creation of a sidechain configuration.
- SimpleApp – an executable allowing to run a node of a sidechain by default.
- QA – The sidechain test framework
In theory, everything should go well, it’s much faster than compiling Zend_oo and we end with a summary:
INFO] ————————————————————————
[INFO] Reactor Summary for Sidechains 0.2.1:
[INFO]
[INFO] Sidechains-SDK ………………………………. SUCCESS [06:15 min]
[INFO] Sidechains-SDK-simpleapp ……………………… SUCCESS [ 9.294 s]
[INFO] Sidechains-SDK-ScBootstrappingTools ……………. SUCCESS [ 18.948 s]
[INFO] Sidechains ………………………………….. SUCCESS [ 0.011 s]
[INFO] ————————————————————————
[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 06:44 min
[INFO] Finished at: 2020-07-15T22:49:29Z
[INFO] ————————————————————————
Get the Preliminary Data!
Now I’ll be able to tackle the configuration and launch my sidechain!
I’m going to use the bootstrapping tool for that, always in the Sidechains-SDK directory:
$ java -jar tools/sctool/target/Sidechains-SDK-ScBootstrappingTools-0.2.1.jar
Tool successfully started…
Please, enter the command:
This tool allows you to enter commands and their arguments in JSON format. Responses are also in JSON format.
I need 2 pairs of keys to initialize my sidechain and random chains to initialize the random number generator itself at each call.
Generating a random number generator initialization value can be challenging. For this example we will use 32 character strings created with a password generator:
- “ijsj3J00NyPzcOjnkoNYDsgzuHAfiIrI” for the first pair
- “47w0u4exA70266o80w54zv537gps5O4F” for the second pair
- “72S8h385u0327kuO7h0392LL1i0Geo2v” for the last pair
Be sure to save all tool responses in a text file for the rest of the operations.
I start with these two key pairs (ed25519 then Vrf):
generatekey {“seed”:”ijsj3J00NyPzcOjnkoNYDsgzuHAfiIrI”}
The answer is obtained (once back in shape).
Note: The public key will be the first address of my wallet on the sidechain:
{
“secret”:”00531e40d4036d808d2101756debc7fd2365cd76da1176f5bf2ed09603d01f711ca03bee9112b03f060a26469b0ba23d87c38dda964cf9a1bb3c7f1edbf8a2d6f8″,
“publicKey”:”a03bee9112b03f060a26469b0ba23d87c38dda964cf9a1bb3c7f1edbf8a2d6f8″
}
I proceed in the same way for the Vrf key (be careful, the command is not the same).
generateVrfKey {“seed”:”47w0u4exA70266o80w54zv537gps5O4F”}
Answer obtained (it must be longer than the previous pair):
{
“vrfSecret”:”0300000060b218f4c543504110af4dd02a72a764d5c1c59beb1e6dc3ea0dd85f86685eade90f567f9937b3a4fc36bb5adfe480ac381ccdbb91f11c269e2a41d71d829fc312cdef48bf75818447405bb86202a1d39f0503491207eab329bb77047805f800000ed74aa4afda5ffb358ba4906d0a5429f9840805e1fcc9ea71fca62afb5e97d779d0d2d3dd1bd9a3563166eff9d12b9ab9b6f11baf5639606689c72e16e2577ee338229e015697c8d174782b4caa04af9902eca2f3c384c6f558cf685b11010084a8436bbb18f7ccd039c249afa69f868c79939923ee3fc3ec437b998246db5b4907881702641ec6b41fdc6de644087713115fa2548121280fe8ac85fe31387aee6465767d8ba2189fab2ee8bf702beda6af018b4d68f890176bf2ab599e000000″,
“vrfPublicKey”:”0ed74aa4afda5ffb358ba4906d0a5429f9840805e1fcc9ea71fca62afb5e97d779d0d2d3dd1bd9a3563166eff9d12b9ab9b6f11baf5639606689c72e16e2577ee338229e015697c8d174782b4caa04af9902eca2f3c384c6f558cf685b11010084a8436bbb18f7ccd039c249afa69f868c79939923ee3fc3ec437b998246db5b4907881702641ec6b41fdc6de644087713115fa2548121280fe8ac85fe31387aee6465767d8ba2189fab2ee8bf702beda6af018b4d68f890176bf2ab599e000000″
}
Finally, I have to generate data for the validation of the transactions between the sidechain and the mainchain. I get them with the generateProofInfo call. The value of the keyCount parameter is set to 7 for now.
As for the threshold, it must be less than or equal to 7. The SimpleApp documentation uses 5. So I did the same. Finally, I use the last of the three previously generated seed initialization values.
generateProofInfo {“seed”:”72S8h385u0327kuO7h0392LL1i0Geo2v”, “keyCount”:7, “threshold”:5}
The obtained answer:
{
“threshold”:5,
“genSysConstant”:”b1acb36cdc03885d0f8ebeff5f1b7c21e3719f875a733ed58170621852d45dcd51b96d38e2dbb2002b43c44742d02d1c348280112fa2fe282f01a6a2615d0d33d19b03a0f5337c8ef41c2d84e2db25f56eb88bcf2ed76a094801d2fc83160100″,
“verificationKey”:”5e7b462cc84ae0faaa5884bd5c4a5a5edf13db210599aeeb4d273c0f5f32967b7071ce2b4d490b9f08f6ce66a8405735c79197cd6773d1c5aeb2a38da1c102df07b05879c77198e5aafa7feed25d4137e86b3d98d9edd9547a460f1615b10000ee9570fbffedd44170477b37500a0a1cb3f94b6361f10f8a68c4075fbc17542d7174b3d95e12ddb8aea5d6b6c53c1df6c8f60010cd2e69902ba5e89e86747569463a23254730fc8d2aabf39648a505df9dcce461443b181ef3eda46074070000550836db2c97820971db6b1421e348d946ed4d3f255295abea46556615e3123de33ec56f784f70302901a4bc10c79c6a8b1e32477aeff9fba75876592981b678fc5a2703ac0b3055e567a6cb1ebab578fc4f9121fd968680250696cb85790000078fcfb60bdfc79aa1e377cb120480538e0236156f23129a88824ca5a1d77e371e5e98a16e6f32087c91aa02a4f5e00e412e515c3b678f6535141203c6886c637b626a2ada4062d037503359a680979091c68941a307db6e4ed8bc49d21b00002f0e6f88fb69309873fdefb015569e5511fb5399295204876543d065d177bf36ab79183a7c5e504b50691bc5b4ed0293324cfe2555d3fc8e39485822a90a91afcd4ef79ec3aefbd4cbe25cbccd802d8334ce1dce238c3f7505330a14615500001f89fbe1922ab3aa31a28fd29e19673714a7e48050dee59859d68345bb7bee7d5e888d8b798a58d7c650f9138304c05a92b668294c6114185ccb2c67ce0bbbb7e1dcbb6d76f5cacd7c9732a33b21d69bd7a28c9cca68b5735d50413862bc0100308bb0dd0bd53f3d1134966702dd3c7cc8b58b270a6996a646493250b0d5f3978d0c971f8fa7a0c958f3efe2fa5269244973fafb701c2eb66dd25901f93d677ab6c538c1ed11f115e52d3f2c7087ea40c3e8cd089376baa38842e9429b5f0000d19a8d874d791f952f13d3c8ecd92e44009c09815e5ae6a8e5def7ea52fe3de4accfb5ba2aa401fbcec14b069cd0dc0f66ab025b45ef9831a26acf58673db7487043654e7980fcb2b6c1bd7593a4dfff810436f653e309121c7ccf2df70b010000732254ec6df184be360cd9ed383ed7c8c236d7761cfc0ce4e7f0cac5a06f4edab9cfc75a7dc1449c0e18ed9564c974c2e1b6847c637f74e5d391cbc80fc6e672ffd66b5ce4fb73bda8359ab8a0ea1e855df1e07d82f93c935c7e1a9a55c5000065efdbb7c3e82291a482b2f24cbd46f4dd02c370cf6dcfe8fb3c00b8b004b5ad51369b1f1b134a824d1f16d72ca6a27ba2d6190150329139cf2c6d9e5a14722f8d39b96b882c1f60a7b230e929819e2abe1cd9d7f3e8c726b1a94d20c8010100732c396eca6ffa1bf851cef449f2f087edd93e4f641b4bd93a482d9f129e675aedb688993d4e2cee824d2803301364ba10fbb66895927adb53bad8aefe8a1caab6f4ccb45883e414a1223ac7f90a89087cd752dfa0c7b3e19bbae000edd5000028d1d23c627d1252d2a2a20a246af2280f50e3fde667873aadd9893ba6833118358398e7428e717128f764714a8d52b090c1f554f58e25ea815338d7bc7326c949567e74f2f2ab3c88f5075fea75594608b8937c9059a42d712ffbd1bd980100000000000250c1a474689e375a309446e5cdd3a0c26cecdcff5c7b8cdc0728868983f1a35a49e3a1bae6f969c3d47356c08d3d169d2c0a2be908d82cd35f41a23d8c2924a9f790ab3a00d53061d440a176670d6a32de2ecd19cf8a9774729c09a6ea4d0100d8838bf55d95521291da12294b302c66042eda0dc2acc79360a1fdd8c9a366fa790c52bf926c2d96b5ba88a3a443487c5235f7c476f350c2101cfbe3bd0361dd291ebc5e42c097a158704b71006886a3662ca6db7d816b4ad12444835d89000000795ce2b34aef921ccb3d9b9695f5d3fe0a03743c955cfcf01f8a1815a7c8b03de85fe15201d4b4b6f401cb334a6988ea5bde8986a468c47c3c6a5ae96a3160ff15e06699ea82bd40c0d5547fe1be77af7817861bbfcca3f4232f05a9cec800006c216565cee4d57b32d2d70bb3cb8d4a967c0eb5d7137b2ec58466f3d4d3b5375e4baa823bcc29c6ad877d9708cd5dc1c31fa3883a80710431110c4aa22e97b67fa639f54e86cfab87187011270139df7873bed12f6fb8cd9ab48f389338010000″,
“schnorrKeys”:[
{
“schnorrSecret”:”04000000600bbacac1017bb3a249a07409a83829df212bc3774069f9f3d758496bf8048d356799c7bd9fdf76369616ffc405c5844ee464ad628345a753a35bc6dfd3839ea7519896e45b2f1b610cc34aea072b5d523fd0e1a95f357d90261783c073f40000328f42588d9df851c2c2a2b11336a5737ba913c0f92177c9d0a854c7564b48da761e53205d30d7f60e21ac382b452cabb7f9274e199a59976b0bd6aaf8f59ac171f6444b9bc594473a20c5a3c89e0d1335ffc8d0ee821c60ebcb1239601d0100dae9144ae4bd8d56638befec496d97eadc590acc2a04b9a210ec475b2505cd6774b1be10353b060c31ae1142b90f436fb5e4e1905814eec8a3e86e0cc5fcff36b686bb92d2f6200ebfc714cfd48db5c1ab3fa77b4747fb60a4f7ae6bd56e000000″,
“schnorrPublicKey”:”328f42588d9df851c2c2a2b11336a5737ba913c0f92177c9d0a854c7564b48da761e53205d30d7f60e21ac382b452cabb7f9274e199a59976b0bd6aaf8f59ac171f6444b9bc594473a20c5a3c89e0d1335ffc8d0ee821c60ebcb1239601d0100dae9144ae4bd8d56638befec496d97eadc590acc2a04b9a210ec475b2505cd6774b1be10353b060c31ae1142b90f436fb5e4e1905814eec8a3e86e0cc5fcff36b686bb92d2f6200ebfc714cfd48db5c1ab3fa77b4747fb60a4f7ae6bd56e000000″
},
{
“schnorrSecret”:”0400000060798dd23ca90d7ea6d85353c2a7d094cf75146ffa099a5c6b6de9a8bdcc0e4fd4edb271f6000a26cfb80b9cffe990d1dd6193e1031fe1b419e47653596aa7289a005eb19d0407783b0d70a3035c3de537c95be19b7d4b5b6b63cdd2b369d90000a3c8f596cec2583278fcb7b460d0ae3b99283d26a22b599b1bfc41a5bc1a1328540eb64362f688437c553c114291853b2ab752fb6baf172f9a7cbdf7fbdb382445cd4672f313426fa92b071ce840103c6ee1463ff0c94a467bec754829a30000815e97336edbccb9523e80699f5c9ef893b5d51e41a50e757f86fc8aa13751b0f13041814140a98a4768f31917d59dd6af87e66a92a57beb25109bed3a12a6b4a9286746d778da486bec3e5bde2381187f243005011b6ccf05fd7568bf94000000″,
“schnorrPublicKey”:”a3c8f596cec2583278fcb7b460d0ae3b99283d26a22b599b1bfc41a5bc1a1328540eb64362f688437c553c114291853b2ab752fb6baf172f9a7cbdf7fbdb382445cd4672f313426fa92b071ce840103c6ee1463ff0c94a467bec754829a30000815e97336edbccb9523e80699f5c9ef893b5d51e41a50e757f86fc8aa13751b0f13041814140a98a4768f31917d59dd6af87e66a92a57beb25109bed3a12a6b4a9286746d778da486bec3e5bde2381187f243005011b6ccf05fd7568bf94000000″
},
{
“schnorrSecret”:”04000000602d2b8008350f48fa073f4ac9129b8f4a7a7036b30f482cc5b3681cef02dfd3b713c2b08b0d989a5bd48656fe6995439cc6fdf99235b092343b13e1a7f43b937a9d488cfefe4d8f68afda8ebedec5a78cd5e7d77816223a7e88ac575d5c900100c76abd8288ec3b05e947adcf66a4fd91b8bbeae23d07cfe0196abffdc5d187f7c7cda485c00789f10d8c1650569a6fd4485cfa36e6247268e2aba1563beb3e2c8be87eae0df4a85f5057fddfd1f0bceef7998d20a9efcabc9e0a06e2fd7e010042c0738a904595ed5e3d7f29fb46b1e3918a597361824c7f7c2e9adb6c6ad947db05a36828aa3bb4355942fee130e2f3d5ed3eb35b7093c1cd31c8b8784e7f39c95c9a9b821b7eb867dcd4aa1dbf11410054e3ea1bd2759c479558604cb2000000″,
“schnorrPublicKey”:”c76abd8288ec3b05e947adcf66a4fd91b8bbeae23d07cfe0196abffdc5d187f7c7cda485c00789f10d8c1650569a6fd4485cfa36e6247268e2aba1563beb3e2c8be87eae0df4a85f5057fddfd1f0bceef7998d20a9efcabc9e0a06e2fd7e010042c0738a904595ed5e3d7f29fb46b1e3918a597361824c7f7c2e9adb6c6ad947db05a36828aa3bb4355942fee130e2f3d5ed3eb35b7093c1cd31c8b8784e7f39c95c9a9b821b7eb867dcd4aa1dbf11410054e3ea1bd2759c479558604cb2000000″
},
{
“schnorrSecret”:”0400000060e6d06e813f23b4229a1a9723e511ca08bf65219149b7adfa0ba97e3104a40a41a21a40916de846788f596d08b90005db6124b1d872b0a3dc472142046a8e7f4b7784917b4029b85a16c41bf964283d6b92743d240140460c0037783e396c010049e31139f382f266ecca749f54fcdf6bb4c48c2ccab895cb3971d9281ce7b3e3b5993728200867308547b6bc70fa04184e3b2d92732e463f763c0b91d3cc982272c875500d2a6c88b180ee59fad260853e37cbddf1ab9f268c31df00f73f01004a175a663b9a32586f36666b025bc8fa52c275cb8aadcf746825c834c4a5968ec5e083d55a6832bebee8c16adbb564ca3211bdc007e9c0be82b05230f3340525b2459f0acf24ad05eb9c5ab8c20432c289e735db90dcec3ef4b323dc4ef4000000″,
“schnorrPublicKey”:”49e31139f382f266ecca749f54fcdf6bb4c48c2ccab895cb3971d9281ce7b3e3b5993728200867308547b6bc70fa04184e3b2d92732e463f763c0b91d3cc982272c875500d2a6c88b180ee59fad260853e37cbddf1ab9f268c31df00f73f01004a175a663b9a32586f36666b025bc8fa52c275cb8aadcf746825c834c4a5968ec5e083d55a6832bebee8c16adbb564ca3211bdc007e9c0be82b05230f3340525b2459f0acf24ad05eb9c5ab8c20432c289e735db90dcec3ef4b323dc4ef4000000″
},
{
“schnorrSecret”:”0400000060d563c1a1cec8e162db0df8d2c0f24adf292431e29fef77fe68977e106216d398f036fc605797583b5f0bcc427230188f32ebc9427b73468cda9385b380b7351bf3434afcda85725beb178efa40718b16ddadfa6bff47ee3edc17455456bd0000bb30f74e03b1448cc555d296849be13095e4ff7752ae5441fc68c61f2488cd36837abb8f95657e55ebbf20d8fccdc32673fd5f7c9db7355285f0d01ed707b273c78e85056e564dc613b7c7980611ec0b17fbe608e5c8135a233ed7e425540100bef6f0bb5e21dc446202a63a4892868ae5ef382d84dee1e2f46f6e33cf9c4bb7bdae5aeeec4e58e32ef113a70ff545dcfbaf80eb39907b11d76571dc1c913d07937297e20da6042e1d95b5e8642f10ab8dddc484c48722d140cd237392a5000000″,
“schnorrPublicKey”:”bb30f74e03b1448cc555d296849be13095e4ff7752ae5441fc68c61f2488cd36837abb8f95657e55ebbf20d8fccdc32673fd5f7c9db7355285f0d01ed707b273c78e85056e564dc613b7c7980611ec0b17fbe608e5c8135a233ed7e425540100bef6f0bb5e21dc446202a63a4892868ae5ef382d84dee1e2f46f6e33cf9c4bb7bdae5aeeec4e58e32ef113a70ff545dcfbaf80eb39907b11d76571dc1c913d07937297e20da6042e1d95b5e8642f10ab8dddc484c48722d140cd237392a5000000″
},
{
“schnorrSecret”:”0400000060d4616f5ccab62713ff2ffb02353e14f13fc34a9ce0b3608a3d3833e8ca7abc54ebe6e981f5c80a2c758f5107d254b14fbff37cb51ad69fcfb5dcfa5bda71d048fe4e439b42a360894736f295681526800ce753800d778e733a20766270a100004f85443c89b5550569451310b320ce03d6ea117aebe492aac4510945f67e20ffdd308e52415f8b89508144fa1d66997d82090fcc55e1969e055ac8ca26e6fefcdd0c8930e76f94df70b0701769e6664adda248298002068c4188357f952001001ceb9119562ff4904eb01a807439a4cd5f8e226f10ade178ce081d6345f12576d988a6e80f0bf54ec9ca8548c264485deb522f8e57cf8f7184d9fb01f805f430df7150595a75e6553c1ff868ff992584f3a52327b3d822236c9214ed53c9000000″,
“schnorrPublicKey”:”4f85443c89b5550569451310b320ce03d6ea117aebe492aac4510945f67e20ffdd308e52415f8b89508144fa1d66997d82090fcc55e1969e055ac8ca26e6fefcdd0c8930e76f94df70b0701769e6664adda248298002068c4188357f952001001ceb9119562ff4904eb01a807439a4cd5f8e226f10ade178ce081d6345f12576d988a6e80f0bf54ec9ca8548c264485deb522f8e57cf8f7184d9fb01f805f430df7150595a75e6553c1ff868ff992584f3a52327b3d822236c9214ed53c9000000″
},
{
“schnorrSecret”:”04000000603bdb5bb43e1adffb93265eccb0526f5ad1f7e671f30721da46abef1a3322ab5ab1a06b9bc89a2a7b9afd19295ad55fd9c2d775997883f51dc14b23e6a42721a710e3f7bdc7fce07ad74fd3fcb403c2eb61169bf8299eb8b43d726800492d010030949730d160baec1bf4fcc743f2a533dbd9f6e853960bad9adf1390294f58387c0af553117368aa8c5d7769a0b39279b0fc92001d36323878c9e7ed2bfa1048496049f1d6d147ab949f1f76b0719bd4fc542a8840469291069116e06f0701000c227ab8d2b235d5eab4866451ad850ab2634d20bafd3da8c0b697d919fab2937e9bec3d39e41c7bf028575bcf4acb5c9f9977cd97b190e110f7cd0deae72adeae2e33974e56a0929a36db8245d9784ba44f0f071aa3937ad0257c4c5248010000″,
“schnorrPublicKey”:”30949730d160baec1bf4fcc743f2a533dbd9f6e853960bad9adf1390294f58387c0af553117368aa8c5d7769a0b39279b0fc92001d36323878c9e7ed2bfa1048496049f1d6d147ab949f1f76b0719bd4fc542a8840469291069116e06f0701000c227ab8d2b235d5eab4866451ad850ab2634d20bafd3da8c0b697d919fab2937e9bec3d39e41c7bf028575bcf4acb5c9f9977cd97b190e110f7cd0deae72adeae2e33974e56a0929a36db8245d9784ba44f0f071aa3937ad0257c4c5248010000″
}
]
}
Okay, I got everything I need. I can exit the bootstrapping tool with the exit command (which doesn’t need a seed. Phew!).
Declaration of the Sidechain
For the tests, I’m going to use my own Horizen mainchain. You need to run zend_oo with 2 additional arguments: regtest to enable sidechains support (they were not yet on the testnet when I wrote this article) and -websocket to enable the websockets used for communication between mainchain and sidechains.
WARNING: To use -regtest, the testnet must be disabled in the Zen configuration file. So, replace testnet=1 by testnet=0 in ~/.zen/zen.conf before launching zend.
Once zend is launched, I check that I am on the empty mainchain. Note that you have to use the regtest parameter for zen-cli as well! You can do without it by specifying regtest=1 in the configuration file but I find it clearer to type it explicitly.
$ zend -regtest -websocket
Zen server starting
$ zen-cli -regtest getblockcount
0
According to the SDK doc, I have to generate 220 blocks to activate the sidechain. The command returns an array of hashes of the created blocks. Just to be safe, I confirm the presence of 220 blocks afterward.
$ zen-cli -regtest generate 220
[
“0ddfa91171f9f839e4db40c802e428bfda341382e1d65d9ea6b327830a33fcbb”,
…
“0a6b29f68598275b8aad9f8c56c82141aca7a0ff563786220938873500fd1baf”
]
$ zen-cli -regtest getblockcount
220
I can finally declare my sidechain in the mainchain once populated with these few blocks. To do so, I have to use the sc_create call which requires the following parameters:
- The frequency (expressed in blocks) between two possible transfers from the sidechain to the mainchain (Backward Transfer). We’ll choose 10 to have round counts
- The publicKey obtained in response to the generateKey call during the bootstrap (my address on the sidechain)
- The number of initial tokens to send to this address. I chose 400, empirically
- The transfer verification key. This is the verificationKey part of the response to the generateProofInfo call during the bootstrap
- The publicKey obtained in response to the generateVrfKey call during the bootstrap
- The genSysConstant part of the response to the generateProofInfo call during the previous bootstrap
Once the data is compiled, I get the following undigestible command. If the execution goes smoothly, I must get the transaction of creation of the sidechain (txid for transaction id), as well as the identifier of the created sidechain (scid for sidechain ID).
$ zen-cli -regtest sc_create 10 “a03bee9112b03f060a26469b0ba23d87c38dda964cf9a1bb3c7f1edbf8a2d6f8” 400 “5e7b462cc84ae0faaa5884bd5c4a5a5edf13db210599aeeb4d273c0f5f32967b7071ce2b4d490b9f08f6ce66a8405735c79197cd6773d1c5aeb2a38da1c102df07b05879c77198e5aafa7feed25d4137e86b3d98d9edd9547a460f1615b10000ee9570fbffedd44170477b37500a0a1cb3f94b6361f10f8a68c4075fbc17542d7174b3d95e12ddb8aea5d6b6c53c1df6c8f60010cd2e69902ba5e89e86747569463a23254730fc8d2aabf39648a505df9dcce461443b181ef3eda46074070000550836db2c97820971db6b1421e348d946ed4d3f255295abea46556615e3123de33ec56f784f70302901a4bc10c79c6a8b1e32477aeff9fba75876592981b678fc5a2703ac0b3055e567a6cb1ebab578fc4f9121fd968680250696cb85790000078fcfb60bdfc79aa1e377cb120480538e0236156f23129a88824ca5a1d77e371e5e98a16e6f32087c91aa02a4f5e00e412e515c3b678f6535141203c6886c637b626a2ada4062d037503359a680979091c68941a307db6e4ed8bc49d21b00002f0e6f88fb69309873fdefb015569e5511fb5399295204876543d065d177bf36ab79183a7c5e504b50691bc5b4ed0293324cfe2555d3fc8e39485822a90a91afcd4ef79ec3aefbd4cbe25cbccd802d8334ce1dce238c3f7505330a14615500001f89fbe1922ab3aa31a28fd29e19673714a7e48050dee59859d68345bb7bee7d5e888d8b798a58d7c650f9138304c05a92b668294c6114185ccb2c67ce0bbbb7e1dcbb6d76f5cacd7c9732a33b21d69bd7a28c9cca68b5735d50413862bc0100308bb0dd0bd53f3d1134966702dd3c7cc8b58b270a6996a646493250b0d5f3978d0c971f8fa7a0c958f3efe2fa5269244973fafb701c2eb66dd25901f93d677ab6c538c1ed11f115e52d3f2c7087ea40c3e8cd089376baa38842e9429b5f0000d19a8d874d791f952f13d3c8ecd92e44009c09815e5ae6a8e5def7ea52fe3de4accfb5ba2aa401fbcec14b069cd0dc0f66ab025b45ef9831a26acf58673db7487043654e7980fcb2b6c1bd7593a4dfff810436f653e309121c7ccf2df70b010000732254ec6df184be360cd9ed383ed7c8c236d7761cfc0ce4e7f0cac5a06f4edab9cfc75a7dc1449c0e18ed9564c974c2e1b6847c637f74e5d391cbc80fc6e672ffd66b5ce4fb73bda8359ab8a0ea1e855df1e07d82f93c935c7e1a9a55c5000065efdbb7c3e82291a482b2f24cbd46f4dd02c370cf6dcfe8fb3c00b8b004b5ad51369b1f1b134a824d1f16d72ca6a27ba2d6190150329139cf2c6d9e5a14722f8d39b96b882c1f60a7b230e929819e2abe1cd9d7f3e8c726b1a94d20c8010100732c396eca6ffa1bf851cef449f2f087edd93e4f641b4bd93a482d9f129e675aedb688993d4e2cee824d2803301364ba10fbb66895927adb53bad8aefe8a1caab6f4ccb45883e414a1223ac7f90a89087cd752dfa0c7b3e19bbae000edd5000028d1d23c627d1252d2a2a20a246af2280f50e3fde667873aadd9893ba6833118358398e7428e717128f764714a8d52b090c1f554f58e25ea815338d7bc7326c949567e74f2f2ab3c88f5075fea75594608b8937c9059a42d712ffbd1bd980100000000000250c1a474689e375a309446e5cdd3a0c26cecdcff5c7b8cdc0728868983f1a35a49e3a1bae6f969c3d47356c08d3d169d2c0a2be908d82cd35f41a23d8c2924a9f790ab3a00d53061d440a176670d6a32de2ecd19cf8a9774729c09a6ea4d0100d8838bf55d95521291da12294b302c66042eda0dc2acc79360a1fdd8c9a366fa790c52bf926c2d96b5ba88a3a443487c5235f7c476f350c2101cfbe3bd0361dd291ebc5e42c097a158704b71006886a3662ca6db7d816b4ad12444835d89000000795ce2b34aef921ccb3d9b9695f5d3fe0a03743c955cfcf01f8a1815a7c8b03de85fe15201d4b4b6f401cb334a6988ea5bde8986a468c47c3c6a5ae96a3160ff15e06699ea82bd40c0d5547fe1be77af7817861bbfcca3f4232f05a9cec800006c216565cee4d57b32d2d70bb3cb8d4a967c0eb5d7137b2ec58466f3d4d3b5375e4baa823bcc29c6ad877d9708cd5dc1c31fa3883a80710431110c4aa22e97b67fa639f54e86cfab87187011270139df7873bed12f6fb8cd9ab48f389338010000” “0ed74aa4afda5ffb358ba4906d0a5429f9840805e1fcc9ea71fca62afb5e97d779d0d2d3dd1bd9a3563166eff9d12b9ab9b6f11baf5639606689c72e16e2577ee338229e015697c8d174782b4caa04af9902eca2f3c384c6f558cf685b11010084a8436bbb18f7ccd039c249afa69f868c79939923ee3fc3ec437b998246db5b4907881702641ec6b41fdc6de644087713115fa2548121280fe8ac85fe31387aee6465767d8ba2189fab2ee8bf702beda6af018b4d68f890176bf2ab599e000000” “b1acb36cdc03885d0f8ebeff5f1b7c21e3719f875a733ed58170621852d45dcd51b96d38e2dbb2002b43c44742d02d1c348280112fa2fe282f01a6a2615d0d33d19b03a0f5337c8ef41c2d84e2db25f56eb88bcf2ed76a094801d2fc83160100”
{
“txid”: “8ae0b7db6c1ff877ce8f89482f70e64851a04fccb1312eee94fbba8140e29a82”,
“scid”: “d40188abb42d6ba6302464a847ace23e52b0c7edcf433cd17c10ca008b5e8783”
}
In my case, the sidechain was created in transaction 8ae0b7db6c1ff877ce8f89482f70e64851a04fccb1312eee94fbba8140e29a82. Its identifier is d40188abb42d6ba6302464a847ace23e52b0c7edcf433cd17c10ca008b5e8783.
I can view the transaction details, as well as the creation data and the initial amount sent (400) and the public address on the sidechain (“sc address”: “a03bee9112b03f060a26469b0ba23d87c38dda964cf9a1bb3c7f1edbf8a2d6f8”).
$ zen-cli -regtest gettransaction “8ae0b7db6c1ff877ce8f89482f70e612eee94fbba8140e29a82”
{
“amount”: -400.00000000,
“fee”: -0.00007127,
“confirmations”: 0,
“txid”: “8ae0b7db6c1ff877ce8f89482f70e64851a04fccb1312eee94fbba8140e29a82”,
“walletconflicts”: [
],
“time”: 1595456982,
“timereceived”: 1595456982,
“vsc_ccout”: [
{
“scid”: “d40188abb42d6ba6302464a847ace23e52b0c7edcf433cd17c10ca008b5e8783”
“n”: 0,
“withdrawal epoch length”: 10,
“value”: 400.00000000,
“address”: “a03bee9112b03f060a26469b0ba23d87c38dda964cf9a1bb3c7f1edbf8a2d6
“wCertVk”: “5e7b462cc84ae0faaa5884bd5c4a5a5edf13db210599aeeb4d273c0f5f329690b9f08f6ce66a8405735c79197cd6773d1c5aeb2a38da1c102df07b05879c77198e5aafa7feed25d9edd9547a460f1615b10000ee9570fbffedd44170477b37500a0a1cb3f94b6361f10f8a68c4075f3d95e12ddb8aea5d6b6c53c1df6c8f60010cd2e69902ba5e89e86747569463a23254730fc8d2aabfcce461443b181ef3eda46074070000550836db2c97820971db6b1421e348d946ed4d3f255295abeade33ec56f784f70302901a4bc10c79c6a8b1e32477aeff9fba75876592981b678fc5a2703ac0b305b578fc4f9121fd968680250696cb85790000078fcfb60bdfc79aa1e377cb120480538e0236156f231d77e371e5e98a16e6f32087c91aa02a4f5e00e412e515c3b678f6535141203c6886c637b626a2ad59a680979091c68941a307db6e4ed8bc49d21b00002f0e6f88fb69309873fdefb015569e5511fb533d065d177bf36ab79183a7c5e504b50691bc5b4ed0293324cfe2555d3fc8e39485822a90a91afcd4cbe25cbccd802d8334ce1dce238c3f7505330a14615500001f89fbe1922ab3aa31a28fd29e19673759859d68345bb7bee7d5e888d8b798a58d7c650f9138304c05a92b668294c6114185ccb2c67ce0bbf5cacd7c9732a33b21d69bd7a28c9cca68b5735d50413862bc0100308bb0dd0bd53f3d113496670270a6996a646493250b0d5f3978d0c971f8fa7a0c958f3efe2fa5269244973fafb701c2eb66dd259038c1ed11f115e52d3f2c7087ea40c3e8cd089376baa38842e9429b5f0000d19a8d874d791f952f1309c09815e5ae6a8e5def7ea52fe3de4accfb5ba2aa401fbcec14b069cd0dc0f66ab025b45ef9831a487043654e7980fcb2b6c1bd7593a4dfff810436f653e309121c7ccf2df70b010000732254ec6df183ed7c8c236d7761cfc0ce4e7f0cac5a06f4edab9cfc75a7dc1449c0e18ed9564c974c2e1b6847c6c80fc6e672ffd66b5ce4fb73bda8359ab8a0ea1e855df1e07d82f93c935c7e1a9a55c5000065efdb2b2f24cbd46f4dd02c370cf6dcfe8fb3c00b8b004b5ad51369b1f1b134a824d1f16d72ca6a27ba2dcf2c6d9e5a14722f8d39b96b882c1f60a7b230e929819e2abe1cd9d7f3e8c726b1a94d20c8010100a1bf851cef449f2f087edd93e4f641b4bd93a482d9f129e675aedb688993d4e2cee824d280330136927adb53bad8aefe8a1caab6f4ccb45883e414a1223ac7f90a89087cd752dfa0c7b3e19bbae000edc627d1252d2a2a20a246af2280f50e3fde667873aadd9893ba6833118358398e7428e717128f7647f554f58e25ea815338d7bc7326c949567e74f2f2ab3c88f5075fea75594608b8937c9059a42d712f00000000250c1a474689e375a309446e5cdd3a0c26cecdcff5c7b8cdc0728868983f1a35a49e3a1b56c08d3d169d2c0a2be908d82cd35f41a23d8c2924a9f790ab3a00d53061d440a176670d6a32de2e29c09a6ea4d0100d8838bf55d95521291da12294b302c66042eda0dc2acc79360a1fdd8c9a366fa796b5ba88a3a443487c5235f7c476f350c2101cfbe3bd0361dd291ebc5e42c097a158704b7100688616b4ad12444835d89000000795ce2b34aef921ccb3d9b9695f5d3fe0a03743c955cfcf01f8a1815a5201d4b4b6f401cb334a6988ea5bde8986a468c47c3c6a5ae96a3160ff15e06699ea82bd40c0d5547861bbfcca3f4232f05a9cec800006c216565cee4d57b32d2d70bb3cb8d4a967c0eb5d7137b2ec585e4baa823bcc29c6ad877d9708cd5dc1c31fa3883a80710431110c4aa22e97b67fa639f54e86cfab9df7873bed12f6fb8cd9ab48f389338010000”,
“customData”: “0ed74aa4afda5ffb358ba4906d0a5429f9840805e1fcc9ea71fca62afb5dd1bd9a3563166eff9d12b9ab9b6f11baf5639606689c72e16e2577ee338229e015697c8d174782bca2f3c384c6f558cf685b11010084a8436bbb18f7ccd039c249afa69f868c79939923ee3fc3ec43707881702641ec6b41fdc6de644087713115fa2548121280fe8ac85fe31387aee6465767d8ba2189fda6af018b4d68f890176bf2ab599e000000”,
“constant”: “b1acb36cdc03885d0f8ebeff5f1b7c21e3719f875a733ed58170621852d45dbb2002b43c44742d02d1c348280112fa2fe282f01a6a2615d0d33d19b03a0f5337c8ef41c2d84e2f2ed76a094801d2fc83160100”
}
],
“vft_ccout”: [
],
“vjoinsplit”: [
],
“details”: [
{
“sc address”: “a03bee9112b03f060a26469b0ba23d87c38dda964cf9a1bb3c7f1edbf8a
“category”: “crosschain”,
“amount”: -400.00000000,
“fee”: -0.00007127,
“size”: 7119
}
],
“hex”: “fcffffff23e4b505e44c9e165b19f24ba0bea2b45223bb12a1bebd0ea26fe14537e488b48304502210087323da18cca896766523e2ea81df3431cf0f64cb1cb8587643e073bfdfaccb8022d64e98b9293f060f140495fa01d79a7a6646bfc7143cf2a4be3d012103cbe54819c6acf93d0fe91700529aa132edef81a51a1322e3e7ffeffffff2c91d0d2bc668f1152b9ecc2fc959bb3c0606ee60a506c06c1f000000006a47304402205cfca6dd09911465c83b9830a5bab662ae6257b4fa1273accc4822036c5e07f94551d38a21040eb7353a9eb64630843a8ac95179bdba4c89de24146012103cbe54811719b1b510922a000529aa132edef81a51a1322e3e7ffeffffffad0381e205ee62bb7e0629d0cb1469c3df9b52cd0ae4081af34000000006a473044022012d97bc5f20fa86b1eaae3337d9dba989a44fec00f331571017022030051cc662dac5d9f5db80957a9e34351b3d6729db0514ef6714e21d74d945819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff7b2525c7f6f9bd66e8b9a4526e8028da33e3187e43c05ad5167000000006a473044022031a9aedaba61580a23ead3280440a65eb9d14be11a79c3fbf0b022000a6fdcb628eddecf23a874784dfd87d606af78d21fb2e5df7b012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffefffff1cbfaff7dac504747c703971576e3113abaeb02b2cb407fab5fe000000006b483045022100943af86f94be243415d7ae7b66a4ae29736dd233e1e5ed4e36d0220578dc1bdeabaf2e3e739dfe0c189366f9eabee606ace407c0a4012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a5ffffff584f7a61c0c934e0bceb113eae1542435315d321d9f84765c6b05f0cec265ba2000000006aa44d80d6987a92ee25079cc307a19392f12b479ac7e4ce76539b112b687c702203de745c7fa3d4eb5ee921c9bd578a3ca5d1387f50e583f99008012103cbe54819c6acf93d0fe91719b1b510922a0005a51a1322e3e7ffefffffffb0277bfedf3fc59301862ba85577ff37eb81383be0b2ac7e8613deb3066a473044022003074e8767e92745925a3a69a3380862b53691c57369c0f6e6578d8e7bfc1e5902201fb4772356880486f3384f8a2e3c55aeb6b748f38f948d617ac012103cbe54819c6acf93d0fe91710529aa132edef81a51a1322e3e7ffeffffff484bf9b606d7495790b68ae1ac5434362160dfb9c1b0d2a7e0a000000006b483045022100e2ca3664593ff35fe18bf69754a67a8889c8c0cec7362735a160220072e2dedc53bfbf7c670eb5ed26233c8dc3304e90d160b3203aff6e9148a9dfc012103cbe54891719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff5ee08e20a49f5aff8fbb52767ba7154b1bf8c5cd87fea4586f3000000006a473044022058478766245fc41efb02a683026c94d6a1989d7e85977d2299d02200383c0223718dca0a65957b1eeb3639307b1891aef0a45f9736b33c7d062c4819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff6d9d5ca8afe4f0e10d66665738172b9c5330c2a6d7236ed627f000000006b483045022100f4b1fb23a149772a818be63ca77265a739efe00e9df6d3b3ec8022033d512392d2aade591730d60e82707fe34886da1159efd595a1012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffefb1919efbdb36bbad2a99764a02960fca9b7dc294ee132dd7005a56ec000000006a47304402205c64e8976e47a1762d0701a3ff8e85c35e4f191eee5b06b4d9b022011a54d504e3f219dfdf73f1de7b91b73a667d97fb81c9477824012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81aeffffff0a59dff0484d5ba8aae87d0f86c6e96f58d6457d0d8f7ac7c6b5b72021dc9841000000006a7a50f069ac6563fd94c570d9b89e6e1d0bef4aef6e6a74a4c2d831940b42544022032576272576e1b0dcf3e0b64916cab3c87870539087305d7302012103cbe54819c6acf93d0fe91719b1b510922a0f81a51a1322e3e7ffeffffffea8ebbc93abbce09c2b4df4bda9545b4ea63f9d43168534b859017d50006b4830450221009cc1cd6fbd39854c1ce14c6d8f1e49ee404f0ffe9e5ff19580ddd454ca3b92b04ba369823c42606d5c2cfcf478eae1eb3b85812f88c8144f69f6309012103cbe54819c6acf93d0f22a000529aa132edef81a51a1322e3e7ffeffffffb6c346a10dc78ec468744019947793b16f9dc0af646171db728000000006b483045022100fd18a9c2c4b829cf507918c0ffdffaf62e488d3657d342e7d2b02206d69470f063dd3dda1ee28327326ee9cd94044542b3663f711db300c87962f5c012103c3d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffffbc98761352464c9d74f6302702ffe3ccf24324a2a08042123e9000000006a473044022035ae8a975df97dca58fe157d613a277677f776889b347448b7a02205d32b2d6ef40c34a6ae8033dbea91512834a3c9b9fa03de88ce1d0703cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffffdf63ecb0ae062790b543c913b7e4b72c81d0e00332e5110996b000000006a47304402202062b0b941c5039eddc888ef17fcf09e691aa6eae03ef7b9aff0220027e045a53ff81a411ee7647d014995cb3d04f52693d42d68a1012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7f4e190a3d65ad63b2de0aa3cfd81c164fa7510fd76d539ce8e191ed36481000000006a473044022056a9411044bab081e1286833f2145e5d6ce4dbeb7830646af00022024e1e7e049fea1aba8d2bb56006b72ee8f8d032cb13fb7dcc3d012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef7ffeffffffdd22086ed25014be004fe0b4156c4d30df3e9be3a3297fd524a9b194b8307f9e000000100ee95a6c13dfb77260c176fa9f67e52cc039a5858f33de334fac0afa3cacda5c0022021edbb5fde20cf7386f821ce74e412b9298ff71c936389690f7012103cbe54819c6acf93d0fe91719b1b51092edef81a51a1322e3e7ffeffffff950e17966063ad4db305b0d24e2a1f5057448d7f98ce9d1a210e10000006a473044022040a4976a61e6887201a3d0e760a4ff5dcbe29fe5e6ac12e09c2e12046bd092470aee6999cadb8d83c1496fe30e5fa636eda04b302e439f6f291fbad012103cbe54819c6acf93d0922a000529aa132edef81a51a1322e3e7ffeffffff4eb88bf49334ff8a7fa86cbdad77a58cc7904e91da78edbb963000000006a473044022018929f0bb75922b9d28ded2db9a8210092e6bdf3624b4199bfd022055816afbe3a31710fd829e1faa3892a5c9d30688cd6fe58ea52a8be0bd088e97012103cbd0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff0a51f14d33b0d62a7a0d6f1e1e08dbc7f29a3d7479c8b9de2b1000000006a473044022055b1245435e7d6f971947b1d881c51d678c4664393ca0de24460220048c7532da898a38c4bdb054abfee0065c26460192d7eb21c78801504cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffefffffffd6d7d8c3a3e8f3da22cf673842425c3ea64d365503805ec0e0000000006a473044022020d47c6070b3ccb55a7dba48bdf118ba146001abbab773152090220447b0443fb08939cb528dbf5d336407c8b5153673359ac7c9fa012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffb286b3fd831cd289ef8617d8ce30e1405321164f08ffc2fd828cd5231c000000006b483045022100d557288fbe6d6e6def9fc414cb6beedb1155fc5611d2a2c15d602206836a3de3696a4aa5ff5657aa78aea2f6a860a9ea9a77e5ddbf012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edee7ffeffffff8a02b85b964ed9559fa66c85a7a57304f3dc8bd1c068017ac2f33d5e408f4fca00000200eba15d43c29ce35c1844b919516ef60967c2e55d32561249ddcb5a0c7393e4c02206ed051275b6e52f7e96ed8a195d0c3999825c98db8e029618b1012103cbe54819c6acf93d0fe91719b1b510922def81a51a1322e3e7ffeffffffbba90f2a4dc7a56c943958aaaea20dcbbaef0466ec8ea43958114e000006a47304402206670717c4fc41e76f294ed101a1aa21e623e9f019ee5a88a509f12289a6aa76ac3373fe88b7321d2a18813478bbadae934f6b4132da15d907d56d67012103cbe54819c6acf93d0f22a000529aa132edef81a51a1322e3e7ffeffffffadb7d71bd4e1c603212086492ce504063d45fa67edeefd4526b000000006a473044022011a753521a0ebd65879eb15f011043bfd47afd9b3c944c4b16202203da397e749a71917e0d8150ad424c593783bd1a58fafa8570de3885ca75f1e66012103cbe0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffffd40224ee0e1d08618350d5d05bfe261137f5b7b25e6f567f395000000006b483045022100b156d95f064e51fc62e475230cce54670c1904c37c0681fd7200220765fac6554ec2e8c27c04c1769fbd762bf1be966fa3b95cb9daca0d33cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff35d57f8a43998b1f93fc841f3b5b667bfc1740df804c393d4b2000000006a473044022059855a3f0da72db44e4a020ad93ec7abcefc1f0592c1c87b5d3022052b31b3dca159c4866a9d7050d520721ba722c2b90927fa9720012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7fbbd618b93e537860d1147ebeafbfcb6dda64f439767f54cc4ae3ea62002000000006b48304502210599b1ef52199e76f935a65f0c13acfdfd4854c1f755a44d3bd8f02200c229cd700ffa83ef4a2e6dab05076795a19669f22e6a3228bf012103cbe54819c6acf93d0fe91719b1b510922a000529aa132ed3e7ffeffffffec1f7379dfb659bd88d30b4ec38689f80ec96958cee3739fb6cc8698c8bfb3a10000220519f2809b45139d9dd352f2cfc162eed77ad82fc1eb32737acf8fc683bbf642602204b7b065e7d72679ee9a7df9531d29f53ebcc7921cb2aacbf2c3012103cbe54819c6acf93d0fe91719b1b51092edef81a51a1322e3e7ffeffffff773eb88ef08c444da4cad09eebb067ac1cbaeb58d409daed582780000006b483045022100934ea1c94e4c4d828671eeacea35f7ff1777df312797b5f3628dfb6cd53ae4ae193dd7d356fb3ce109a5d11cfce3ec551d585e3adcaf74fe29ae7e3012103cbe54819c6acf9310922a000529aa132edef81a51a1322e3e7ffefffffffbb3cb9aa0d3ccf8459b7ed52541a2b79b683135643e9c5e17c000000006b483045022100adbb54a8d02e6460a97da087ba7edd93668ed386eaeedf6176702202c69cfbb8243ce308aba359b061fd76d359632c4d08d90b76a9a490ef1c18a6a0121cf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff22f0cd121f8311a6cd4a153c43b4ca0ec776d2806f9f621d9cc000000006b483045022100d53b234828f9923ce03bdc6abb3fd54e533a9490567ca888f1d022076e3e3d854a7105c53bb3a51ccbf3fbcbd8abdf76b80a15060b012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffffcf746cae66b4b90dbbd4f1c3ed87607706df4d6f2bb3868bee3000000006a473044022051cc2c63862630204696106727d3343bd3ac505dd6649bfa9ed0220417d8f46c2dec0b6f90a79348f3b4fe290785ad5addc3f29a4c012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322599e4a03a6f6425c23afb5a31f530c9ea13d654dab45783a92bef04a707e6ba9000000006a4730446fde81f08b24749799ebb2c87f7d9cf3aa58f257d38212e6df4fbbb02203423866b582404c66afcaa9143940f55459d7bfe3e35fdb18e4012103cbe54819c6acf93d0fe91719b1b510922a000529aa1322e3e7ffeffffff0179badc01000000003c76a9148290fad678a7ee43e7b7782eae23c4c8ebc64b12c1fc1228967a611c7db30632098f0c641855180b5fe23793b72eea50d00b4010a00000000902f502f8db1e7f3cbba1f94c96da8dc3873da20b9b46260a063fb01291ee3ba0c10ed74aa4afda5ffb358f9840805e1fcc9ea71fca62afb5e97d779d0d2d3dd1bd9a3563166eff9d12b9ab9b6f11baf56396077ee338229e015697c8d174782b4caa04af9902eca2f3c384c6f558cf685b11010084a8436bbb18fa69f868c79939923ee3fc3ec437b998246db5b4907881702641ec6b41fdc6de644087713115fa2545fe31387aee6465767d8ba2189fab2ee8bf702beda6af018b4d68f890176bf2ab599e00000060b1a0f8ebeff5f1b7c21e3719f875a733ed58170621852d45dcd51b96d38e2dbb2002b43c44742d02d1ce282f01a6a2615d0d33d19b03a0f5337c8ef41c2d84e2db25f56eb88bcf2ed76a094801d2fc831604ae0faaa5884bd5c4a5a5edf13db210599aeeb4d273c0f5f32967b7071ce2b4d490b9f08f6ce66a8d6773d1c5aeb2a38da1c102df07b05879c77198e5aafa7feed25d4137e86b3d98d9edd9547a460f170fbffedd44170477b37500a0a1cb3f94b6361f10f8a68c4075fbc17542d7174b3d95e12ddb8aea58f60010cd2e69902ba5e89e86747569463a23254730fc8d2aabf39648a505df9dcce461443b181ef00550836db2c97820971db6b1421e348d946ed4d3f255295abea46556615e3123de33ec56f784f7079c6a8b1e32477aeff9fba75876592981b678fc5a2703ac0b3055e567a6cb1ebab578fc4f9121fd985790000078fcfb60bdfc79aa1e377cb120480538e0236156f23129a88824ca5a1d77e371e5e98a1a02a4f5e00e412e515c3b678f6535141203c6886c637b626a2ada4062d037503359a680979091c68d8bc49d21b00002f0e6f88fb69309873fdefb015569e5511fb5399295204876543d065d177bf36abb50691bc5b4ed0293324cfe2555d3fc8e39485822a90a91afcd4ef79ec3aefbd4cbe25cbccd802d83f7505330a14615500001f89fbe1922ab3aa31a28fd29e19673714a7e48050dee59859d68345bb7b98a58d7c650f9138304c05a92b668294c6114185ccb2c67ce0bbbb7e1dcbb6d76f5cacd7c9732a339cca68b5735d50413862bc0100308bb0dd0bd53f3d1134966702dd3c7cc8b58b270a6996a6464932c971f8fa7a0c958f3efe2fa5269244973fafb701c2eb66dd25901f93d677ab6c538c1ed11f115e52c3e8cd089376baa38842e9429b5f0000d19a8d874d791f952f13d3c8ecd92e44009c09815e5ae6a8de4accfb5ba2aa401fbcec14b069cd0dc0f66ab025b45ef9831a26acf58673db7487043654e7980fa4dfff810436f653e309121c7ccf2df70b010000732254ec6df184be360cd9ed383ed7c8c236d776ac5a06f4edab9cfc75a7dc1449c0e18ed9564c974c2e1b6847c637f74e5d391cbc80fc6e672ffd66359ab8a0ea1e855df1e07d82f93c935c7e1a9a55c5000065efdbb7c3e82291a482b2f24cbd46f4dd8fb3c00b8b004b5ad51369b1f1b134a824d1f16d72ca6a27ba2d6190150329139cf2c6d9e5a147221f60a7b230e929819e2abe1cd9d7f3e8c726b1a94d20c8010100732c396eca6ffa1bf851cef449f241b4bd93a482d9f129e675aedb688993d4e2cee824d2803301364ba10fbb66895927adb53bad8aefb45883e414a1223ac7f90a89087cd752dfa0c7b3e19bbae000edd5000028d1d23c627d1252d2a2a20e3fde667873aadd9893ba6833118358398e7428e717128f764714a8d52b090c1f554f58e25ea81549567e74f2f2ab3c88f5075fea75594608b8937c9059a42d712ffbd1bd980100000000000250c1a4446e5cdd3a0c26cecdcff5c7b8cdc0728868983f1a35a49e3a1bae6f969c3d47356c08d3d169d2c05f41a23d8c2924a9f790ab3a00d53061d440a176670d6a32de2ecd19cf8a9774729c09a6ea4d010021291da12294b302c66042eda0dc2acc79360a1fdd8c9a366fa790c52bf926c2d96b5ba88a3a4434f350c2101cfbe3bd0361dd291ebc5e42c097a158704b71006886a3662ca6db7d816b4ad12444835d2b34aef921ccb3d9b9695f5d3fe0a03743c955cfcf01f8a1815a7c8b03de85fe15201d4b4b6f401cde8986a468c47c3c6a5ae96a3160ff15e06699ea82bd40c0d5547fe1be77af7817861bbfcca3f42306c216565cee4d57b32d2d70bb3cb8d4a967c0eb5d7137b2ec58466f3d4d3b5375e4baa823bcc29c5dc1c31fa3883a80710431110c4aa22e97b67fa639f54e86cfab87187011270139df7873bed12f6f33801000000d2000000”
}
The sidechain creation transaction is created. It is currently in the transaction pool. It will be confirmed and added in the next block.
So let’s “mine it”!
$ zen-cli -regtest generate 1
[
“04852dabaace286308c2ff9a8ba4968d2e3cf17b7079594b8dff756eb0e0f7f6”
]
$ zen-cli -regtest getblockcount
221
In return, I get the id of the block that has just been added to the mainchain (there were 220 blocks, I added 1).
Here it is “04852dabaace286308c2ff9a8ba4968d2e3cf17b7079594b8dff756eb0e0f7f6”.
This block must contain my sidechain creation transaction:
$ zen-cli -regtest getblock “04852dabaace286308c2ff9a8ba4968d2e3cf17b7079594b8dff756eb0e0f7f6”
{
“hash”: “04852dabaace286308c2ff9a8ba4968d2e3cf17b7079594b8dff756eb0e0f7f6”,
“confirmations”: 1,
“size”: 7484,
“height”: 221,
“version”: 3,
“merkleroot”: “744840339e167a453ab519a447d775e9ba6720c8289aff48b08448e02e662eab”,
“scTxsCommitment”: “15d76826004b8d64607d1559d01c7b7efdd5c5e9872f6a39ec32f17cdd1162b2”,
“tx”: [
“f218efd6527e2defbdfccbcb0903713ec62c0addeebf538a2a9c8341b2a20d0b”,
“8ae0b7db6c1ff877ce8f89482f70e64851a04fccb1312eee94fbba8140e29a82”
],
“cert”: [
],
“time”: 1595457527,
“nonce”: “00004800fb7dc576c526fad14549e7dc074015424f1ab426840ffe84b4610043”,
“solution”: “0896e4f621d95725df0e2057d007ac4b49d60b24bcdee4c7bf3db910ebaebb22b1852318”,
“bits”: “200f0f03”,
“difficulty”: 1.00001215949611,
“chainwork”: “0000000000000000000000000000000000000000000000000000000000000ebe”,
“anchor”: “59d2cde5e65c1414c32ba54f0fe4bdb3d67618125286e6a191317917c812c6d7”,
“valuePools”: [
{
“id”: “sprout”,
“monitored”: true,
“chainValue”: 0.00000000,
“chainValueZat”: 0,
“valueDelta”: 0.00000000,
“valueDeltaZat”: 0
}
],
“previousblockhash”: “05cca9315c93542fc809fd9e2a22d22f744151406c5cf01a5c97c4b2a10a7579”
}
Everything is in place. I can find my transaction “8ae0b7db6c1ff877ce8f89482f70e64851a04fccb1312eee94fbba8140e29a82” in the tx transactions table of the mined block.
I can verify that the transaction has won a confirmation. The creation seems ok.
$ zen-cli -regtest gettransaction “8ae0b7db6c1ff877ce8f89482f70e64851a04fccb1312eee94fbba8140e29a82” | grep confirmations
“confirmations”: 1,
Generally speaking, sidechain information can be obtained using the zen-cli command -regtest getscinfo, to which a sidechain identifier can optionally be passed as a parameter. In the absence of this parameter, I will receive information on all the sidechains:
$ zen-cli -regtest getscinfo “d40188abb42d6ba6302464a847ace23e52b0c7edcf433cd17c10ca008b5e8783”
{
“scid”: “d40188abb42d6ba6302464a847ace23e52b0c7edcf433cd17c10ca008b5e8783”,
“balance”: 0.00000000,
“epoch”: 0,
“end epoch height”: 230,
“state”: “ALIVE”,
“ceasing height”: 233,
“creating tx hash”: “8ae0b7db6c1ff877ce8f89482f70e64851a04fccb1312eee94fbba8140e29a82”,
“created in block”: “04852dabaace286308c2ff9a8ba4968d2e3cf17b7079594b8dff756eb0e0f7f6”,
“created at block height”: 221,
“last certificate epoch”: -1,
“last certificate hash”: “0000000000000000000000000000000000000000000000000000000000000000”,
“withdrawalEpochLength”: 10,
“wCertVk”: “5e7b462cc84ae0faaa5884bd5c4a5a5edf13db210599aeeb4d273c0f5f32967b7071ce2b4d490b9f08f6ce66a8405735c79197cd6773d1c5aeb2a38da1c102df07b05879c77198e5aafa7feed25d4137e86b3d98d9edd9547a460f1615b10000ee9570fbffedd44170477b37500a0a1cb3f94b6361f10f8a68c4075fbc17542d7174b3d95e12ddb8aea5d6b6c53c1df6c8f60010cd2e69902ba5e89e86747569463a23254730fc8d2aabf39648a505df9dcce461443b181ef3eda46074070000550836db2c97820971db6b1421e348d946ed4d3f255295abea46556615e3123de33ec56f784f70302901a4bc10c79c6a8b1e32477aeff9fba75876592981b678fc5a2703ac0b3055e567a6cb1ebab578fc4f9121fd968680250696cb85790000078fcfb60bdfc79aa1e377cb120480538e0236156f23129a88824ca5a1d77e371e5e98a16e6f32087c91aa02a4f5e00e412e515c3b678f6535141203c6886c637b626a2ada4062d037503359a680979091c68941a307db6e4ed8bc49d21b00002f0e6f88fb69309873fdefb015569e5511fb5399295204876543d065d177bf36ab79183a7c5e504b50691bc5b4ed0293324cfe2555d3fc8e39485822a90a91afcd4ef79ec3aefbd4cbe25cbccd802d8334ce1dce238c3f7505330a14615500001f89fbe1922ab3aa31a28fd29e19673714a7e48050dee59859d68345bb7bee7d5e888d8b798a58d7c650f9138304c05a92b668294c6114185ccb2c67ce0bbbb7e1dcbb6d76f5cacd7c9732a33b21d69bd7a28c9cca68b5735d50413862bc0100308bb0dd0bd53f3d1134966702dd3c7cc8b58b270a6996a646493250b0d5f3978d0c971f8fa7a0c958f3efe2fa5269244973fafb701c2eb66dd25901f93d677ab6c538c1ed11f115e52d3f2c7087ea40c3e8cd089376baa38842e9429b5f0000d19a8d874d791f952f13d3c8ecd92e44009c09815e5ae6a8e5def7ea52fe3de4accfb5ba2aa401fbcec14b069cd0dc0f66ab025b45ef9831a26acf58673db7487043654e7980fcb2b6c1bd7593a4dfff810436f653e309121c7ccf2df70b010000732254ec6df184be360cd9ed383ed7c8c236d7761cfc0ce4e7f0cac5a06f4edab9cfc75a7dc1449c0e18ed9564c974c2e1b6847c637f74e5d391cbc80fc6e672ffd66b5ce4fb73bda8359ab8a0ea1e855df1e07d82f93c935c7e1a9a55c5000065efdbb7c3e82291a482b2f24cbd46f4dd02c370cf6dcfe8fb3c00b8b004b5ad51369b1f1b134a824d1f16d72ca6a27ba2d6190150329139cf2c6d9e5a14722f8d39b96b882c1f60a7b230e929819e2abe1cd9d7f3e8c726b1a94d20c8010100732c396eca6ffa1bf851cef449f2f087edd93e4f641b4bd93a482d9f129e675aedb688993d4e2cee824d2803301364ba10fbb66895927adb53bad8aefe8a1caab6f4ccb45883e414a1223ac7f90a89087cd752dfa0c7b3e19bbae000edd5000028d1d23c627d1252d2a2a20a246af2280f50e3fde667873aadd9893ba6833118358398e7428e717128f764714a8d52b090c1f554f58e25ea815338d7bc7326c949567e74f2f2ab3c88f5075fea75594608b8937c9059a42d712ffbd1bd980100000000000250c1a474689e375a309446e5cdd3a0c26cecdcff5c7b8cdc0728868983f1a35a49e3a1bae6f969c3d47356c08d3d169d2c0a2be908d82cd35f41a23d8c2924a9f790ab3a00d53061d440a176670d6a32de2ecd19cf8a9774729c09a6ea4d0100d8838bf55d95521291da12294b302c66042eda0dc2acc79360a1fdd8c9a366fa790c52bf926c2d96b5ba88a3a443487c5235f7c476f350c2101cfbe3bd0361dd291ebc5e42c097a158704b71006886a3662ca6db7d816b4ad12444835d89000000795ce2b34aef921ccb3d9b9695f5d3fe0a03743c955cfcf01f8a1815a7c8b03de85fe15201d4b4b6f401cb334a6988ea5bde8986a468c47c3c6a5ae96a3160ff15e06699ea82bd40c0d5547fe1be77af7817861bbfcca3f4232f05a9cec800006c216565cee4d57b32d2d70bb3cb8d4a967c0eb5d7137b2ec58466f3d4d3b5375e4baa823bcc29c6ad877d9708cd5dc1c31fa3883a80710431110c4aa22e97b67fa639f54e86cfab87187011270139df7873bed12f6fb8cd9ab48f389338010000”,
“customData”: “0ed74aa4afda5ffb358ba4906d0a5429f9840805e1fcc9ea71fca62afb5e97d779d0d2d3dd1bd9a3563166eff9d12b9ab9b6f11baf5639606689c72e16e2577ee338229e015697c8d174782b4caa04af9902eca2f3c384c6f558cf685b11010084a8436bbb18f7ccd039c249afa69f868c79939923ee3fc3ec437b998246db5b4907881702641ec6b41fdc6de644087713115fa2548121280fe8ac85fe31387aee6465767d8ba2189fab2ee8bf702beda6af018b4d68f890176bf2ab599e000000”,
“constant”: “b1acb36cdc03885d0f8ebeff5f1b7c21e3719f875a733ed58170621852d45dcd51b96d38e2dbb2002b43c44742d02d1c348280112fa2fe282f01a6a2615d0d33d19b03a0f5337c8ef41c2d84e2db25f56eb88bcf2ed76a094801d2fc83160100”,
“immature amounts”: [
{
“maturityHeight”: 224,
“amount”: 400.00000000
}
]
}
Genesis
At this point, the mainchain contains the sidechain statement.
I now have to bring it to life with SimpleApp, which will be a node of this sidechain.
I will generate a configuration file with the necessary data for SimpleApp to know how to run the sidechain.
To configure my sidechain node, I need to collect and compile several pieces of information:
- The sidechain genesis Info
- Obtained with zen-cli getscgenesisinfo command bypassing as parameter the scid (sidechain ID) retrieved when creating the sidechain with sc_create
$ zen-cli -regtest getscgenesisinfo “d40188abb42d6ba6302464a847ace23e52b0c7edcf433cd17c10ca008b5e8783”
- The secret part obtained in response to the generateKey call during the bootstrap
- The vrfSecret part obtained in response to the generateVrfKey call during the bootstrap. We are going to use the bootstrap tool again, which provides the genesisinfo command, which, in turn, will give us the necessary information to configure the sidechain
The use is as follows:
genesisinfo {“info”: “Données 1”, “secret”: “Données 2”, “vrfSecret”: “Données 3”}
For some unknown reason, the bootstrap tool did not want to execute the genesisinfo command. So I used the other form of the tool call, non-interactive, typing everything on one line.
Warning!: In this case, you have to protect the quotes with backslashes.
After being placed in the directory, the command to type directly in Bash is:
$ java -jar tools/sctool/target/Sidechains-SDK-ScBootstrappingTools-0.2.1.jar genesisinfo {“info”: “Données 1”, “secret”: “Données 2”, “vrfSecret”: “Données 3”}
Once the data has been replaced, be careful not to make a mistake:
$ java -jar tools/sctool/target/Sidechains-SDK-ScBootstrappingTools-0.2.1.jar genesisinfo {“info”:”0283875e8b00ca107cd13c43cfedc7b0523ee2ac47a8642430a66b2db4ab8801d41cd3bd185f030f0f20d3bd185f030f0f20d3bd185f030f0f20d2bd185f030f0f20d2bd185f030f0f20d2bd185f030f0f20d2bd185f030f0f20d2bd185f030f0f20d2bd185f030f0f20d1bd185f030f0f20d1bd185f030f0f20d1bd185f030f0f20d1bd185f030f0f20d1bd185f030f0f20d1bd185f030f0f20d0bd185f030f0f20d0bd185f040f0f20d0bd185f040f0f20d0bd185f040f0f20d0bd185f040f0f20d0bd185f040f0f20cfbd185f040f0f20cfbd185f040f0f20cfbd185f040f0f20cfbd185f040f0f20cfbd185f040f0f20cfbd185f040f0f20cebd185f040f0f20dd0000000300000079750aa1b2c4975c1af05c6c405141742fd2222a9efd09c82f54935c31a9cc05ab2e662ee04884b048ff9a28c82067bae975d747a419b53a457a169e33404874b26211dd7cf132ec396a2f87e9c5d5fd7e7b1cd059157d60648d4b002668d715f7bf185f030f0f20430061b484fe0f8426b41a4f42154007dce74945d1fa26c576c57dfb00480000240896e4f621d95725df0e2057d007ac4b49d60b24bcdee4c7bf3db910ebaebb22b18523180201000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0502dd000101ffffffff045733b42c000000001976a9142954edbc7caadad684590bebfe6045ff2b39c8fd88ac80b2e60e0000000017a914b6863b182a52745bf6d5fb190139a2aa876c08f587405973070000000017a914b6863b182a52745bf6d5fb190139a2aa876c08f587405973070000000017a914b6863b182a52745bf6d5fb190139a2aa876c08f58700000000fcffffff23e4b505e44c9e165b19f24ba0bea2b45223bb12a1bebd0ea26fe14537e4880054000000006b48304502210087323da18cca896766523e2ea81df3431cf0f64cb1cb8587643e073bfdfaccb802203a446e8105ebd64e98b9293f060f140495fa01d79a7a6646bfc7143cf2a4be3d012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff2c91d0d2bc668f1152b9ecc2fc959bb3c0606ee60a55d280ea6e423706c06c1f000000006a47304402205cfca6dd09911465c83b9830a5bab662ae6257b4fa1273accc489ab1e1c285fa022036c5e07f94551d38a21040eb7353a9eb64630843a8ac95179bdba4c89de24146012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffffad0381e205ee62bb7e0629d0cb14f1183062d742569c3df9b52cd0ae4081af34000000006a473044022012d97bc5f20fa86b1eaae3337d9dba989a44f6e7f711f36540ec00f331571017022030051cc662dac5d9f5db80957a9e34351b3d6729db0514ef6714e21d74d94531012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff7b2525c7f6f9b98469ff26d78ad66e8b9a4526e8028da33e3187e43c05ad5167000000006a473044022031a9aedaba61580a23ead331357cb0efec9280440a65eb9d14be11a79c3fbf0b022000a6fdcb628eddecf23a874784dfd87d606af78d21fb2e5f8340b24e30a1df7b012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff7745c2d3f43f1cbfaff7dac504747c703971576e3113abaeb02b2cb407fab5fe000000006b483045022100943aff312dad43040f86f94be243415d7ae7b66a4ae29736dd233e1e5ed4e36d0220578dc1bdeabaf2e3e739dfe0c18936560947c1b79976f9eabee606ace407c0a4012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff584f7a61c0c934e0bceb113eae1542435315d321d9f84765c6b05f0cec265ba2000000006a4730440220244a44d80d6987a92ee25079cc307a19392f12b479ac7e4ce76539b112b687c702203de745c7fa3d4eb732d18b85fae45ee921c9bd578a3ca5d1387f50e583f99008012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffefffffffb0277bfedf3fc59301862ba85577ff37eb81383be0b2ac7e8613deb306586aa000000006a473044022003074e8767e92745925a3a69a3380862b53691c57369c0f6e6578d8e7bfc1e590220098adad09259f1fb4772356880486f3384f8a2e3c55aeb6b748f38f948d617ac012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff484bf9b606d7495790b68ae1ac5434362160dfb9c1b05d770c87330b7d2a7e0a000000006b483045022100e2ca3664593ff35fe18bf69754a67a8889c8c0cec7362735a1629eca72f8ddae0220072e2dedc53bfbf7c670eb5ed26233c8dc3304e90d160b3203aff6e9148a9dfc012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff5ee08e20a49f5aff8fbb52767bae566901203e647154b1bf8c5cd87fea4586f3000000006a473044022058478766245fc41efb02a683026c94d6a1981fa2c4b686ea79d7e85977d2299d02200383c0223718dca0a65957b1eeb3639307b1891aef0a45f9736b33c7d062cd21012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff6d9d5ca8afe4ca075917b4e4af0e10d66665738172b9c5330c2a6d7236ed627f000000006b483045022100f4b1fb23a149772a818e15ef882f9781be63ca77265a739efe00e9df6d3b3ec8022033d512392d2aade591730d60e82707fe34886da1159ef21d848cb75d8fd595a1012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff1e59c3c9b1919efbdb36bbad2a99764a02960fca9b7dc294ee132dd7005a56ec000000006a47304402205c64972d5bd614eb9e8976e47a1762d0701a3ff8e85c35e4f191eee5b06b4d9b022011a54d504e3f219dfdf73f1de7b91844d8583b1310b73a667d97fb81c9477824012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff0a59dff0484d5ba8aae87d0f86c6e96f58d6457d0d8f7ac7c6b5b72021dc9841000000006b483045022100a7a50f069ac6563fd94c570d9b89e6e1d0bef4aef6e6a74a4c2d831940b42544022032576272576eae8861259b3641b0dcf3e0b64916cab3c87870539087305d7302012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffffea8ebbc93abbce09c2b4df4bda9545b4ea63f9d43168534b859017d5d833f998000000006b4830450221009cc1cd6fbd39854c1ce14c6d8f1e49ee404f0ffe9e5ff19580ddd454ca3b92b9022016428a6b04ba369823c42606d5c2cfcf478eae1eb3b85812f88c8144f69f6309012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffffb6c346a10dc78ec468744019947793b16f9dc0a96ae8c81d9346f646171db728000000006b483045022100fd18a9c2c4b829cf507918c0ffdffaf62e488d3657d34274e20afb5fa36e7d2b02206d69470f063dd3dda1ee28327326ee9cd94044542b3663f711db300c87962f5c012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffffbc98761352464c9d74f630da1117811c6c52702ffe3ccf24324a2a08042123e9000000006a473044022035ae8a975df97dca58fe157d613a277d3289388a5bbf677f776889b347448b7a02205d32b2d6ef40c34a6ae8033dbea91512834a3c9b9fa03de88ce1d0706e763d4b012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffffdf63ecb87f1a527654370ae062790b543c913b7e4b72c81d0e00332e5110996b000000006a47304402202062b0b941c5039e2b09db90a4090ddc888ef17fcf09e691aa6eae03ef7b9aff0220027e045a53ff81a411ee7647d014995cb3d04f526670f99fdd4cca93d42d68a1012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff2915d4e190a3d65ad63b2de0aa3cfd81c164fa7510fd76d539ce8e191ed36481000000006a47304402205eb363a834574c6a9411044bab081e1286833f2145e5d6ce4dbeb7830646af00022024e1e7e049fea1aba8d2bb5600f047b232c2cfb6b72ee8f8d032cb13fb7dcc3d012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffffdd22086ed25014be004fe0b4156c4d30df3e9be3a3297fd524a9b194b8307f9e000000006b483045022100ee95a6c13dfb77260c176fa9f67e52cc039a5858f33de334fac0afa3cacda5c0022021edbb5fd97e0b161d9432e20cf7386f821ce74e412b9298ff71c936389690f7012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff950e17966063ad4db305b0d24e2a1f5057448d7f98ce9d1a210e158da1313894000000006a473044022040a4976a61e6887201a3d0e760a4ff5dcbe29fe5e6ac12e09c2e12046bd09228022035554bb470aee6999cadb8d83c1496fe30e5fa636eda04b302e439f6f291fbad012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff4eb88bf49334ff8a7fa86cbdad77a58cc7904e4b50a27663cf591da78edbb963000000006a473044022018929f0bb75922b9d28ded2db9a8210092e6bdf3624b41927e2945f7052e9bfd022055816afbe3a31710fd829e1faa3892a5c9d30688cd6fe58ea52a8be0bd088e97012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff0a51f14d33b0d62a7a0d6f1b7874b8054b6ae1e08dbc7f29a3d7479c8b9de2b1000000006a473044022055b1245435e7d6f971947b1d881c51d61c16c9908931c78c4664393ca0de24460220048c7532da898a38c4bdb054abfee0065c26460192d7eb21c78801504eb70473012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffefffffffd6d7d8c34023b8147f9e3a3e8f3da22cf673842425c3ea64d365503805ec0e0000000006a473044022020d47c6070b3ccb55e2dc989dd22a5a7dba48bdf118ba146001abbab773152090220447b0443fb08939cb528dbf5d336407c8b515367330ce6946cf453359ac7c9fa012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff7777b0b286b3fd831cd289ef8617d8ce30e1405321164f08ffc2fd828cd5231c000000006b483045022100aa303a127a8efd557288fbe6d6e6def9fc414cb6beedb1155fc5611d2a2c15d602206836a3de3696a4aa5ff5657aa66eb37a7c000778aea2f6a860a9ea9a77e5ddbf012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff8a02b85b964ed9559fa66c85a7a57304f3dc8bd1c068017ac2f33d5e408f4fca000000006a47304402200eba15d43c29ce35c1844b919516ef60967c2e55d32561249ddcb5a0c7393e4c02206ed051275bee0d783ed589b6e52f7e96ed8a195d0c3999825c98db8e029618b1012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffffbba90f2a4dc7a56c943958aaaea20dcbbaef0466ec8ea43958114e7dd6e87ef7000000006a47304402206670717c4fc41e76f294ed101a1aa21e623e9f019ee5a88a509f12289a6aa761022039de0208ac3373fe88b7321d2a18813478bbadae934f6b4132da15d907d56d67012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffffadb7d71bd4e1c603212086492ce504063d45fa6d0c9b62eb55637edeefd4526b000000006a473044022011a753521a0ebd65879eb15f011043bfd47afd9b3c944c4bec1c1d27bfd5416202203da397e749a71917e0d8150ad424c593783bd1a58fafa8570de3885ca75f1e66012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffffd40224ee0e1d08618350d5d01c6ef863e4f975bfe261137f5b7b25e6f567f395000000006b483045022100b156d95f064e51fc62e475230cce546450f09d6a647c70c1904c37c0681fd7200220765fac6554ec2e8c27c04c1769fbd762bf1be966fa3b95cb9daca0d3d4b1b817012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff35d57f8e1f2905d01ad4a43998b1f93fc841f3b5b667bfc1740df804c393d4b2000000006a473044022059855a3f0da72db43f0d8ff1e30324e4a020ad93ec7abcefc1f0592c1c87b5d3022052b31b3dca159c4866a9d7050d520721ba722c2b93701f692b97930927fa9720012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffffdb5f4bbd618b93e537860d1147ebeafbfcb6dda64f439767f54cc4ae3ea62002000000006b483045022100b0df30ecaa78599b1ef52199e76f935a65f0c13acfdfd4854c1f755a44d3bd8f02200c229cd700ffa83ef4a2e6da537ec973862c8b05076795a19669f22e6a3228bf012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffffec1f7379dfb659bd88d30b4ec38689f80ec96958cee3739fb6cc8698c8bfb3a1000000006a4730440220519f2809b45139d9dd352f2cfc162eed77ad82fc1eb32737acf8fc683bbf642602204b7b065e709eb7e917915fd72679ee9a7df9531d29f53ebcc7921cb2aacbf2c3012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff773eb88ef08c444da4cad09eebb067ac1cbaeb58d409daed582786585b288065000000006b483045022100934ea1c94e4c4d828671eeacea35f7ff1777df312797b5f3628dfb6cd53a9c1802200ebe3e4ae193dd7d356fb3ce109a5d11cfce3ec551d585e3adcaf74fe29ae7e3012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffefffffffbb3cb9aa0d3ccf8459b7ed52541a2b79b68f636f7c29e32c3135643e9c5e17c000000006b483045022100adbb54a8d02e6460a97da087ba7edd93668ed386eaeb5c13644a14ddedf6176702202c69cfbb8243ce308aba359b061fd76d359632c4d08d90b76a9a490ef1c18a6a012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff22f0cd121f8311a6cd479818b50f83a7a153c43b4ca0ec776d2806f9f621d9cc000000006b483045022100d53b234828f9923ce03bdc6abb17e576cb43e203fd54e533a9490567ca888f1d022076e3e3d854a7105c53bb3a51ccbf3fbcbd8abdf76b80a15060bb007f156d160c012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffffcf385d69aaa00ff746cae66b4b90dbbd4f1c3ed87607706df4d6f2bb3868bee3000000006a473044022051cc2c638628328b25bf9dd7630204696106727d3343bd3ac505dd6649bfa9ed0220417d8f46c2dec0b6f90a79348f3b4fe290783aa35ee5c8be65ad5addc3f29a4c012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff599e4a03a6f6425c23afb5a31f530c9ea13d654dab45783a92bef04a707e6ba9000000006a47304402204557fa5f46fde81f08b24749799ebb2c87f7d9cf3aa58f257d38212e6df4fbbb02203423866b582404c66afca5e2b7d96aa7a2a9143940f55459d7bfe3e35fdb18e4012103cbe54819c6acf93d0fe91719b1b510922a000529aa132edef81a51a1322e3e7ffeffffff0179badc01000000003c76a9148290fad678a7ee43e7b7782eae23c4c8ebc64b1a88ac20bb1acf2c1fc1228967a611c7db30632098f0c641855180b5fe23793b72eea50d00b4010a00000000902f5009000000f8d6a2f8db1e7f3cbba1f94c96da8dc3873da20b9b46260a063fb01291ee3ba0c10ed74aa4afda5ffb358ba4906d0a5429f9840805e1fcc9ea71fca62afb5e97d779d0d2d3dd1bd9a3563166eff9d12b9ab9b6f11baf5639606689c72e16e2577ee338229e015697c8d174782b4caa04af9902eca2f3c384c6f558cf685b11010084a8436bbb18f7ccd039c249afa69f868c79939923ee3fc3ec437b998246db5b4907881702641ec6b41fdc6de644087713115fa2548121280fe8ac85fe31387aee6465767d8ba2189fab2ee8bf702beda6af018b4d68f890176bf2ab599e00000060b1acb36cdc03885d0f8ebeff5f1b7c21e3719f875a733ed58170621852d45dcd51b96d38e2dbb2002b43c44742d02d1c348280112fa2fe282f01a6a2615d0d33d19b03a0f5337c8ef41c2d84e2db25f56eb88bcf2ed76a094801d2fc831601005e7b462cc84ae0faaa5884bd5c4a5a5edf13db210599aeeb4d273c0f5f32967b7071ce2b4d490b9f08f6ce66a8405735c79197cd6773d1c5aeb2a38da1c102df07b05879c77198e5aafa7feed25d4137e86b3d98d9edd9547a460f1615b10000ee9570fbffedd44170477b37500a0a1cb3f94b6361f10f8a68c4075fbc17542d7174b3d95e12ddb8aea5d6b6c53c1df6c8f60010cd2e69902ba5e89e86747569463a23254730fc8d2aabf39648a505df9dcce461443b181ef3eda46074070000550836db2c97820971db6b1421e348d946ed4d3f255295abea46556615e3123de33ec56f784f70302901a4bc10c79c6a8b1e32477aeff9fba75876592981b678fc5a2703ac0b3055e567a6cb1ebab578fc4f9121fd968680250696cb85790000078fcfb60bdfc79aa1e377cb120480538e0236156f23129a88824ca5a1d77e371e5e98a16e6f32087c91aa02a4f5e00e412e515c3b678f6535141203c6886c637b626a2ada4062d037503359a680979091c68941a307db6e4ed8bc49d21b00002f0e6f88fb69309873fdefb015569e5511fb5399295204876543d065d177bf36ab79183a7c5e504b50691bc5b4ed0293324cfe2555d3fc8e39485822a90a91afcd4ef79ec3aefbd4cbe25cbccd802d8334ce1dce238c3f7505330a14615500001f89fbe1922ab3aa31a28fd29e19673714a7e48050dee59859d68345bb7bee7d5e888d8b798a58d7c650f9138304c05a92b668294c6114185ccb2c67ce0bbbb7e1dcbb6d76f5cacd7c9732a33b21d69bd7a28c9cca68b5735d50413862bc0100308bb0dd0bd53f3d1134966702dd3c7cc8b58b270a6996a646493250b0d5f3978d0c971f8fa7a0c958f3efe2fa5269244973fafb701c2eb66dd25901f93d677ab6c538c1ed11f115e52d3f2c7087ea40c3e8cd089376baa38842e9429b5f0000d19a8d874d791f952f13d3c8ecd92e44009c09815e5ae6a8e5def7ea52fe3de4accfb5ba2aa401fbcec14b069cd0dc0f66ab025b45ef9831a26acf58673db7487043654e7980fcb2b6c1bd7593a4dfff810436f653e309121c7ccf2df70b010000732254ec6df184be360cd9ed383ed7c8c236d7761cfc0ce4e7f0cac5a06f4edab9cfc75a7dc1449c0e18ed9564c974c2e1b6847c637f74e5d391cbc80fc6e672ffd66b5ce4fb73bda8359ab8a0ea1e855df1e07d82f93c935c7e1a9a55c5000065efdbb7c3e82291a482b2f24cbd46f4dd02c370cf6dcfe8fb3c00b8b004b5ad51369b1f1b134a824d1f16d72ca6a27ba2d6190150329139cf2c6d9e5a14722f8d39b96b882c1f60a7b230e929819e2abe1cd9d7f3e8c726b1a94d20c8010100732c396eca6ffa1bf851cef449f2f087edd93e4f641b4bd93a482d9f129e675aedb688993d4e2cee824d2803301364ba10fbb66895927adb53bad8aefe8a1caab6f4ccb45883e414a1223ac7f90a89087cd752dfa0c7b3e19bbae000edd5000028d1d23c627d1252d2a2a20a246af2280f50e3fde667873aadd9893ba6833118358398e7428e717128f764714a8d52b090c1f554f58e25ea815338d7bc7326c949567e74f2f2ab3c88f5075fea75594608b8937c9059a42d712ffbd1bd980100000000000250c1a474689e375a309446e5cdd3a0c26cecdcff5c7b8cdc0728868983f1a35a49e3a1bae6f969c3d47356c08d3d169d2c0a2be908d82cd35f41a23d8c2924a9f790ab3a00d53061d440a176670d6a32de2ecd19cf8a9774729c09a6ea4d0100d8838bf55d95521291da12294b302c66042eda0dc2acc79360a1fdd8c9a366fa790c52bf926c2d96b5ba88a3a443487c5235f7c476f350c2101cfbe3bd0361dd291ebc5e42c097a158704b71006886a3662ca6db7d816b4ad12444835d89000000795ce2b34aef921ccb3d9b9695f5d3fe0a03743c955cfcf01f8a1815a7c8b03de85fe15201d4b4b6f401cb334a6988ea5bde8986a468c47c3c6a5ae96a3160ff15e06699ea82bd40c0d5547fe1be77af7817861bbfcca3f4232f05a9cec800006c216565cee4d57b32d2d70bb3cb8d4a967c0eb5d7137b2ec58466f3d4d3b5375e4baa823bcc29c6ad877d9708cd5dc1c31fa3883a80710431110c4aa22e97b67fa639f54e86cfab87187011270139df7873bed12f6fb8cd9ab48f38933801000000d200000000″, “secret”: “00531e40d4036d808d2101756debc7fd2365cd76da1176f5bf2ed09603d01f711ca03bee9112b03f060a26469b0ba23d87c38dda964cf9a1bb3c7f1edbf8a2d6f8”, “vrfSecret”: “0300000060b218f4c543504110af4dd02a72a764d5c1c59beb1e6dc3ea0dd85f86685eade90f567f9937b3a4fc36bb5adfe480ac381ccdbb91f11c269e2a41d71d829fc312cdef48bf75818447405bb86202a1d39f0503491207eab329bb77047805f800000ed74aa4afda5ffb358ba4906d0a5429f9840805e1fcc9ea71fca62afb5e97d779d0d2d3dd1bd9a3563166eff9d12b9ab9b6f11baf5639606689c72e16e2577ee338229e015697c8d174782b4caa04af9902eca2f3c384c6f558cf685b11010084a8436bbb18f7ccd039c249afa69f868c79939923ee3fc3ec437b998246db5b4907881702641ec6b41fdc6de644087713115fa2548121280fe8ac85fe31387aee6465767d8ba2189fab2ee8bf702beda6af018b4d68f890176bf2ab599e000000”}
This command returns a structure to be reused later. I’ll put it aside:
{
“scId”:”d40188abb42d6ba6302464a847ace23e52b0c7edcf433cd17c10ca008b5e8783″,
“scGenesisBlockHex”:”010000000000000000000000000000000000000000000000000000000000000000cca1c1f10ba204e933f41dc86ca654a03bee9112b03f060a26469b0ba23d87c38dda964cf9a1bb3c7f1edbf8a2d6f800000009502f9000a03bee9112b03f060a26469b0ba23d87c38dda964cf9a1bb3c7f1edbf8a2d6f80ed74aa4afda5ffb358ba4906d0a5429f9840805e1fcc9ea71fca62afb5e97d779d0d2d3dd1bd9a3563166eff9d12b9ab9b6f11baf5639606689c72e16e2577ee338229e015697c8d174782b4caa04af9902eca2f3c384c6f558cf685b11010084a8436bbb18f7ccd039c249afa69f868c79939923ee3fc3ec437b998246db5b4907881702641ec6b41fdc6de644087713115fa2548121280fe8ac85fe31387aee6465767d8ba2189fab2ee8bf702beda6af018b4d68f890176bf2ab599e0000000800000000dcc662d4348c35e93abd86d54e73d3f89de9011e217345c1576a535919c7625c216a0d2942dda7d257d38ea93197127756c1630ef63efc6d967ea02e620952d382d2a4c32f323a85c2bae120e2c1e5add29bbb5a1d0b2c9da18bbbd583d50000fc45b48a89b591177675dfedaec458c7a552556e968fccd9012bba7315807435187426124dcaf81a6f3b6503e78c0254328607a2538be94388708527a637234bdc9c4c26350bb3720d0c90dd0ea0cd5349e519b4e6b2e8585256b8688364010000508457c4bdc88baa74cedfe4e35f7937f14d3093f9202ac116f4c7f4fdfff7da657088e70371a6c474ddf3b0bc40475c75e6c4104d0344b32d1bd458a5185b063c6e27de5ef992bfc7f2852b80dc47c0e4200821b0a1ae27ebbff6cf8fc90000ef55c7566071fdb85b08027632f50b6f443fb64f83ce3aa83960770550855ff95e0f98af05ea16532e364c877b616ae5bc4f6fc3b40359fe79e7e20cd6fa701204ddba0ae615887d84cd26264b8824fe27e07e9ea0501493dd9588d19ba3000000000000000000000000000000000000000000000000000000000000000000005f10d71366010e474d9ed8c1f055396495b51d561bac632c4e353871614422ff00000000000000000000000000000000000000000000000000000000000000000080016f16a558e106b6d367cfe82497d7bc95955aa570a2c6811cbf6ae4504b4e9252ef1586ec4e70d63374fbe67d591d1bad3102351a0750492e2f7f7b5d379762010002f21e04852dabaace286308c2ff9a8ba4968d2e3cf17b7079594b8dff756eb0e0f7f69e1e000000005f18bff70000078302801e03000007570a00000000902f5009000000f8d6a2f8db1e7f3cbba1f94c96da8dc3873da20b9b46260a063fb01291ee3ba0c10ed74aa4afda5ffb358ba4906d0a5429f9840805e1fcc9ea71fca62afb5e97d779d0d2d3dd1bd9a3563166eff9d12b9ab9b6f11baf5639606689c72e16e2577ee338229e015697c8d174782b4caa04af9902eca2f3c384c6f558cf685b11010084a8436bbb18f7ccd039c249afa69f868c79939923ee3fc3ec437b998246db5b4907881702641ec6b41fdc6de644087713115fa2548121280fe8ac85fe31387aee6465767d8ba2189fab2ee8bf702beda6af018b4d68f890176bf2ab599e00000060b1acb36cdc03885d0f8ebeff5f1b7c21e3719f875a733ed58170621852d45dcd51b96d38e2dbb2002b43c44742d02d1c348280112fa2fe282f01a6a2615d0d33d19b03a0f5337c8ef41c2d84e2db25f56eb88bcf2ed76a094801d2fc831601005e7b462cc84ae0faaa5884bd5c4a5a5edf13db210599aeeb4d273c0f5f32967b7071ce2b4d490b9f08f6ce66a8405735c79197cd6773d1c5aeb2a38da1c102df07b05879c77198e5aafa7feed25d4137e86b3d98d9edd9547a460f1615b10000ee9570fbffedd44170477b37500a0a1cb3f94b6361f10f8a68c4075fbc17542d7174b3d95e12ddb8aea5d6b6c53c1df6c8f60010cd2e69902ba5e89e86747569463a23254730fc8d2aabf39648a505df9dcce461443b181ef3eda46074070000550836db2c97820971db6b1421e348d946ed4d3f255295abea46556615e3123de33ec56f784f70302901a4bc10c79c6a8b1e32477aeff9fba75876592981b678fc5a2703ac0b3055e567a6cb1ebab578fc4f9121fd968680250696cb85790000078fcfb60bdfc79aa1e377cb120480538e0236156f23129a88824ca5a1d77e371e5e98a16e6f32087c91aa02a4f5e00e412e515c3b678f6535141203c6886c637b626a2ada4062d037503359a680979091c68941a307db6e4ed8bc49d21b00002f0e6f88fb69309873fdefb015569e5511fb5399295204876543d065d177bf36ab79183a7c5e504b50691bc5b4ed0293324cfe2555d3fc8e39485822a90a91afcd4ef79ec3aefbd4cbe25cbccd802d8334ce1dce238c3f7505330a14615500001f89fbe1922ab3aa31a28fd29e19673714a7e48050dee59859d68345bb7bee7d5e888d8b798a58d7c650f9138304c05a92b668294c6114185ccb2c67ce0bbbb7e1dcbb6d76f5cacd7c9732a33b21d69bd7a28c9cca68b5735d50413862bc0100308bb0dd0bd53f3d1134966702dd3c7cc8b58b270a6996a646493250b0d5f3978d0c971f8fa7a0c958f3efe2fa5269244973fafb701c2eb66dd25901f93d677ab6c538c1ed11f115e52d3f2c7087ea40c3e8cd089376baa38842e9429b5f0000d19a8d874d791f952f13d3c8ecd92e44009c09815e5ae6a8e5def7ea52fe3de4accfb5ba2aa401fbcec14b069cd0dc0f66ab025b45ef9831a26acf58673db7487043654e7980fcb2b6c1bd7593a4dfff810436f653e309121c7ccf2df70b010000732254ec6df184be360cd9ed383ed7c8c236d7761cfc0ce4e7f0cac5a06f4edab9cfc75a7dc1449c0e18ed9564c974c2e1b6847c637f74e5d391cbc80fc6e672ffd66b5ce4fb73bda8359ab8a0ea1e855df1e07d82f93c935c7e1a9a55c5000065efdbb7c3e82291a482b2f24cbd46f4dd02c370cf6dcfe8fb3c00b8b004b5ad51369b1f1b134a824d1f16d72ca6a27ba2d6190150329139cf2c6d9e5a14722f8d39b96b882c1f60a7b230e929819e2abe1cd9d7f3e8c726b1a94d20c8010100732c396eca6ffa1bf851cef449f2f087edd93e4f641b4bd93a482d9f129e675aedb688993d4e2cee824d2803301364ba10fbb66895927adb53bad8aefe8a1caab6f4ccb45883e414a1223ac7f90a89087cd752dfa0c7b3e19bbae000edd5000028d1d23c627d1252d2a2a20a246af2280f50e3fde667873aadd9893ba6833118358398e7428e717128f764714a8d52b090c1f554f58e25ea815338d7bc7326c949567e74f2f2ab3c88f5075fea75594608b8937c9059a42d712ffbd1bd980100000000000250c1a474689e375a309446e5cdd3a0c26cecdcff5c7b8cdc0728868983f1a35a49e3a1bae6f969c3d47356c08d3d169d2c0a2be908d82cd35f41a23d8c2924a9f790ab3a00d53061d440a176670d6a32de2ecd19cf8a9774729c09a6ea4d0100d8838bf55d95521291da12294b302c66042eda0dc2acc79360a1fdd8c9a366fa790c52bf926c2d96b5ba88a3a443487c5235f7c476f350c2101cfbe3bd0361dd291ebc5e42c097a158704b71006886a3662ca6db7d816b4ad12444835d89000000795ce2b34aef921ccb3d9b9695f5d3fe0a03743c955cfcf01f8a1815a7c8b03de85fe15201d4b4b6f401cb334a6988ea5bde8986a468c47c3c6a5ae96a3160ff15e06699ea82bd40c0d5547fe1be77af7817861bbfcca3f4232f05a9cec800006c216565cee4d57b32d2d70bb3cb8d4a967c0eb5d7137b2ec58466f3d4d3b5375e4baa823bcc29c6ad877d9708cd5dc1c31fa3883a80710431110c4aa22e97b67fa639f54e86cfab87187011270139df7873bed12f6fb8cd9ab48f3893380100008ae0b7db6c1ff877ce8f89482f70e64851a04fccb1312eee94fbba8140e29a8200000000080000000000000002e2020300000079750aa1b2c4975c1af05c6c405141742fd2222a9efd09c82f54935c31a9cc05ab2e662ee04884b048ff9a28c82067bae975d747a419b53a457a169e33404874b26211dd7cf132ec396a2f87e9c5d5fd7e7b1cd059157d60648d4b002668d715f7bf185f030f0f20430061b484fe0f8426b41a4f42154007dce74945d1fa26c576c57dfb00480000240896e4f621d95725df0e2057d007ac4b49d60b24bcdee4c7bf3db910ebaebb22b185231800″,
“powData”:”d3bd185f030f0f20d3bd185f030f0f20d3bd185f030f0f20d2bd185f030f0f20d2bd185f030f0f20d2bd185f030f0f20d2bd185f030f0f20d2bd185f030f0f20d2bd185f030f0f20d1bd185f030f0f20d1bd185f030f0f20d1bd185f030f0f20d1bd185f030f0f20d1bd185f030f0f20d1bd185f030f0f20d0bd185f030f0f20d0bd185f040f0f20d0bd185f040f0f20d0bd185f040f0f20d0bd185f040f0f20d0bd185f040f0f20cfbd185f040f0f20cfbd185f040f0f20cfbd185f040f0f20cfbd185f040f0f20cfbd185f040f0f20cfbd185f040f0f20cebd185f040f0f20″,
“mcBlockHeight”:221,
“mcNetwork”:”regtest”,
“withdrawalEpochLength”:10
}
I have everything I need to write the configuration file that will launch a management node for my sidechain. I use the template provided in the Sidechain SDK located here from the root of the SDK: examples/simpleapp/src/main/resources/settings_basic.conf. Which looks like:
scorex {
dataDir = /tmp/scorex/data/blockchain
logDir = /tmp/scorex/data/log
restApi {
bindAddress = “127.0.0.1:9085”
api-key-hash = “”
}
network {
nodeName = “testNode1”
bindAddress = “127.0.0.1:9084”
knownPeers = []
agentName = “2-Hop”
}
websocket {
address = “ws://localhost:8888”
connectionTimeout = 100 milliseconds
reconnectionDelay = 1 seconds
reconnectionMaxAttempts = 1
}
withdrawalEpochCertificate {
submitterIsEnabled =
signersPublicKeys =
signersThreshold =
signersSecrets =
provingKeyFilePath = “../../sdk/src/test/resources/sample_proving_key_7_keys_with_threshold_5”
verificationKeyFilePath = “../../sdk/src/test/resources/sample_vk_7_keys_with_threshold_5”
}
wallet {
seed = “seed1”
genesisSecrets =
}
}
I make a copy called ma-sidechain.conf in the same directory and add the elements specific to my sidechain.
$ cp examples/simpleapp/src/main/resources/settings_basic.conf examples/simpleapp/src/main/resources/ma-sidechain.conf
I add two configuration lines to the websocket structure, the template file was not up to date at the time of writing this article and an attempt to launch the sidechain resulted in the following error: “Exception in thread “main” com.typesafe.config.ConfigException$Missing: No configuration setting found for key ‘scorex.websocket.zencliCommandLine'”.
zencliCommandLine = “”
zencliCommandLineArguments = []
So, I had to adapt the structure for withdrawalEpochCertificate:
- submitterIsEnabled to enable transfers from the sidechain to the mainchain
- signersPublicKeys: This is an array containing the list of schnorrPublicKeys generated by the generateProofInfo command. It is important to respect the order of the keys
- signersThreshold: The threshold parameter used in the generateProofInfo command
- signersSecrets: This is an array containing the list of secret schnorrSecrets generated by the generateProofInfo command. It is important to respect the order of the keys
- provingKeyFilePath and verificationKeyFilePath the paths to the two files provided in the SDK. You must modify the default value and delete the ../../ part before sdk/… to match the relative path from where you launch the node
Then comes the wallet setting in the structure of the same name. This initialization of the wallet is essential to find the funds sent from the mainchain when creating the sidechain. The 400 ZEN initially sent will then be available in this wallet on the sidechain.
- Seed – a random seed. We’ll use “q7yYYI80978LJF04r501n8Mv58222O2s”
- genesisSecrets – an array containing the secret and vrfSecret keys of the calls to generateKey and generateVrfKey.
Finally, I have to add a structure named genesis inside the Scorex structure. The genesis structure must contain the return of the genesisinfo command seen above. Be sure to place the genesis structure after the wallet but before closing the last brace.
The rest of the values remain at the default value and the finished file should look like this:
scorex {
dataDir = /tmp/scorex/data/blockchain
logDir = /tmp/scorex/data/log
restApi {
bindAddress = “127.0.0.1:9085”
api-key-hash = “”
}
network {
nodeName = “testNode1”
bindAddress = “127.0.0.1:9084”
knownPeers = []
agentName = “2-Hop”
}
websocket {
address = “ws://localhost:8888”
connectionTimeout = 100 milliseconds
reconnectionDelay = 1 seconds
reconnectionMaxAttempts = 1
zencliCommandLine = “”
zencliCommandLineArguments = []
}
withdrawalEpochCertificate {
submitterIsEnabled = true
signersPublicKeys = [“328f42588d9df851c2c2a2b11336a5737ba913c0f92177c9d0a854c7564b48da761e53205d30d7f60e21ac382b452cabb7f9274e199a59976b0bd6aaf8f59ac171f6444b9bc594473a20c5a3c89e0d1335ffc8d0ee821c60ebcb1239601d0100dae9144ae4bd8d56638befec496d97eadc590acc2a04b9a210ec475b2505cd6774b1be10353b060c31ae1142b90f436fb5e4e1905814eec8a3e86e0cc5fcff36b686bb92d2f6200ebfc714cfd48db5c1ab3fa77b4747fb60a4f7ae6bd56e000000”
“a3c8f596cec2583278fcb7b460d0ae3b99283d26a22b599b1bfc41a5bc1a1328540eb64362f688437c553c114291853b2ab752fb6baf172f9a7cbdf7fbdb382445cd4672f313426fa92b071ce840103c6ee1463ff0c94a467bec754829a30000815e97336edbccb9523e80699f5c9ef893b5d51e41a50e757f86fc8aa13751b0f13041814140a98a4768f31917d59dd6af87e66a92a57beb25109bed3a12a6b4a9286746d778da486bec3e5bde2381187f243005011b6ccf05fd7568bf94000000”
“c76abd8288ec3b05e947adcf66a4fd91b8bbeae23d07cfe0196abffdc5d187f7c7cda485c00789f10d8c1650569a6fd4485cfa36e6247268e2aba1563beb3e2c8be87eae0df4a85f5057fddfd1f0bceef7998d20a9efcabc9e0a06e2fd7e010042c0738a904595ed5e3d7f29fb46b1e3918a597361824c7f7c2e9adb6c6ad947db05a36828aa3bb4355942fee130e2f3d5ed3eb35b7093c1cd31c8b8784e7f39c95c9a9b821b7eb867dcd4aa1dbf11410054e3ea1bd2759c479558604cb2000000”
“49e31139f382f266ecca749f54fcdf6bb4c48c2ccab895cb3971d9281ce7b3e3b5993728200867308547b6bc70fa04184e3b2d92732e463f763c0b91d3cc982272c875500d2a6c88b180ee59fad260853e37cbddf1ab9f268c31df00f73f01004a175a663b9a32586f36666b025bc8fa52c275cb8aadcf746825c834c4a5968ec5e083d55a6832bebee8c16adbb564ca3211bdc007e9c0be82b05230f3340525b2459f0acf24ad05eb9c5ab8c20432c289e735db90dcec3ef4b323dc4ef4000000”
“bb30f74e03b1448cc555d296849be13095e4ff7752ae5441fc68c61f2488cd36837abb8f95657e55ebbf20d8fccdc32673fd5f7c9db7355285f0d01ed707b273c78e85056e564dc613b7c7980611ec0b17fbe608e5c8135a233ed7e425540100bef6f0bb5e21dc446202a63a4892868ae5ef382d84dee1e2f46f6e33cf9c4bb7bdae5aeeec4e58e32ef113a70ff545dcfbaf80eb39907b11d76571dc1c913d07937297e20da6042e1d95b5e8642f10ab8dddc484c48722d140cd237392a5000000”
“4f85443c89b5550569451310b320ce03d6ea117aebe492aac4510945f67e20ffdd308e52415f8b89508144fa1d66997d82090fcc55e1969e055ac8ca26e6fefcdd0c8930e76f94df70b0701769e6664adda248298002068c4188357f952001001ceb9119562ff4904eb01a807439a4cd5f8e226f10ade178ce081d6345f12576d988a6e80f0bf54ec9ca8548c264485deb522f8e57cf8f7184d9fb01f805f430df7150595a75e6553c1ff868ff992584f3a52327b3d822236c9214ed53c9000000”
“30949730d160baec1bf4fcc743f2a533dbd9f6e853960bad9adf1390294f58387c0af553117368aa8c5d7769a0b39279b0fc92001d36323878c9e7ed2bfa1048496049f1d6d147ab949f1f76b0719bd4fc542a8840469291069116e06f0701000c227ab8d2b235d5eab4866451ad850ab2634d20bafd3da8c0b697d919fab2937e9bec3d39e41c7bf028575bcf4acb5c9f9977cd97b190e110f7cd0deae72adeae2e33974e56a0929a36db8245d9784ba44f0f071aa3937ad0257c4c5248010000”
]
signersThreshold = 5
signersSecrets = [“04000000600bbacac1017bb3a249a07409a83829df212bc3774069f9f3d758496bf8048d356799c7bd9fdf76369616ffc405c5844ee464ad628345a753a35bc6dfd3839ea7519896e45b2f1b610cc34aea072b5d523fd0e1a95f357d90261783c073f40000328f42588d9df851c2c2a2b11336a5737ba913c0f92177c9d0a854c7564b48da761e53205d30d7f60e21ac382b452cabb7f9274e199a59976b0bd6aaf8f59ac171f6444b9bc594473a20c5a3c89e0d1335ffc8d0ee821c60ebcb1239601d0100dae9144ae4bd8d56638befec496d97eadc590acc2a04b9a210ec475b2505cd6774b1be10353b060c31ae1142b90f436fb5e4e1905814eec8a3e86e0cc5fcff36b686bb92d2f6200ebfc714cfd48db5c1ab3fa77b4747fb60a4f7ae6bd56e000000”,
“0400000060798dd23ca90d7ea6d85353c2a7d094cf75146ffa099a5c6b6de9a8bdcc0e4fd4edb271f6000a26cfb80b9cffe990d1dd6193e1031fe1b419e47653596aa7289a005eb19d0407783b0d70a3035c3de537c95be19b7d4b5b6b63cdd2b369d90000a3c8f596cec2583278fcb7b460d0ae3b99283d26a22b599b1bfc41a5bc1a1328540eb64362f688437c553c114291853b2ab752fb6baf172f9a7cbdf7fbdb382445cd4672f313426fa92b071ce840103c6ee1463ff0c94a467bec754829a30000815e97336edbccb9523e80699f5c9ef893b5d51e41a50e757f86fc8aa13751b0f13041814140a98a4768f31917d59dd6af87e66a92a57beb25109bed3a12a6b4a9286746d778da486bec3e5bde2381187f243005011b6ccf05fd7568bf94000000”,
“04000000602d2b8008350f48fa073f4ac9129b8f4a7a7036b30f482cc5b3681cef02dfd3b713c2b08b0d989a5bd48656fe6995439cc6fdf99235b092343b13e1a7f43b937a9d488cfefe4d8f68afda8ebedec5a78cd5e7d77816223a7e88ac575d5c900100c76abd8288ec3b05e947adcf66a4fd91b8bbeae23d07cfe0196abffdc5d187f7c7cda485c00789f10d8c1650569a6fd4485cfa36e6247268e2aba1563beb3e2c8be87eae0df4a85f5057fddfd1f0bceef7998d20a9efcabc9e0a06e2fd7e010042c0738a904595ed5e3d7f29fb46b1e3918a597361824c7f7c2e9adb6c6ad947db05a36828aa3bb4355942fee130e2f3d5ed3eb35b7093c1cd31c8b8784e7f39c95c9a9b821b7eb867dcd4aa1dbf11410054e3ea1bd2759c479558604cb2000000”,
“0400000060e6d06e813f23b4229a1a9723e511ca08bf65219149b7adfa0ba97e3104a40a41a21a40916de846788f596d08b90005db6124b1d872b0a3dc472142046a8e7f4b7784917b4029b85a16c41bf964283d6b92743d240140460c0037783e396c010049e31139f382f266ecca749f54fcdf6bb4c48c2ccab895cb3971d9281ce7b3e3b5993728200867308547b6bc70fa04184e3b2d92732e463f763c0b91d3cc982272c875500d2a6c88b180ee59fad260853e37cbddf1ab9f268c31df00f73f01004a175a663b9a32586f36666b025bc8fa52c275cb8aadcf746825c834c4a5968ec5e083d55a6832bebee8c16adbb564ca3211bdc007e9c0be82b05230f3340525b2459f0acf24ad05eb9c5ab8c20432c289e735db90dcec3ef4b323dc4ef4000000”,
“0400000060d563c1a1cec8e162db0df8d2c0f24adf292431e29fef77fe68977e106216d398f036fc605797583b5f0bcc427230188f32ebc9427b73468cda9385b380b7351bf3434afcda85725beb178efa40718b16ddadfa6bff47ee3edc17455456bd0000bb30f74e03b1448cc555d296849be13095e4ff7752ae5441fc68c61f2488cd36837abb8f95657e55ebbf20d8fccdc32673fd5f7c9db7355285f0d01ed707b273c78e85056e564dc613b7c7980611ec0b17fbe608e5c8135a233ed7e425540100bef6f0bb5e21dc446202a63a4892868ae5ef382d84dee1e2f46f6e33cf9c4bb7bdae5aeeec4e58e32ef113a70ff545dcfbaf80eb39907b11d76571dc1c913d07937297e20da6042e1d95b5e8642f10ab8dddc484c48722d140cd237392a5000000”,
“0400000060d4616f5ccab62713ff2ffb02353e14f13fc34a9ce0b3608a3d3833e8ca7abc54ebe6e981f5c80a2c758f5107d254b14fbff37cb51ad69fcfb5dcfa5bda71d048fe4e439b42a360894736f295681526800ce753800d778e733a20766270a100004f85443c89b5550569451310b320ce03d6ea117aebe492aac4510945f67e20ffdd308e52415f8b89508144fa1d66997d82090fcc55e1969e055ac8ca26e6fefcdd0c8930e76f94df70b0701769e6664adda248298002068c4188357f952001001ceb9119562ff4904eb01a807439a4cd5f8e226f10ade178ce081d6345f12576d988a6e80f0bf54ec9ca8548c264485deb522f8e57cf8f7184d9fb01f805f430df7150595a75e6553c1ff868ff992584f3a52327b3d822236c9214ed53c9000000”,
“04000000603bdb5bb43e1adffb93265eccb0526f5ad1f7e671f30721da46abef1a3322ab5ab1a06b9bc89a2a7b9afd19295ad55fd9c2d775997883f51dc14b23e6a42721a710e3f7bdc7fce07ad74fd3fcb403c2eb61169bf8299eb8b43d726800492d010030949730d160baec1bf4fcc743f2a533dbd9f6e853960bad9adf1390294f58387c0af553117368aa8c5d7769a0b39279b0fc92001d36323878c9e7ed2bfa1048496049f1d6d147ab949f1f76b0719bd4fc542a8840469291069116e06f0701000c227ab8d2b235d5eab4866451ad850ab2634d20bafd3da8c0b697d919fab2937e9bec3d39e41c7bf028575bcf4acb5c9f9977cd97b190e110f7cd0deae72adeae2e33974e56a0929a36db8245d9784ba44f0f071aa3937ad0257c4c5248010000”
]
provingKeyFilePath = “sdk/src/test/resources/sample_proving_key_7_keys_with_threshold_5”
verificationKeyFilePath = “sdk/src/test/resources/sample_vk_7_keys_with_threshold_5”
}
wallet {
seed = “q7yYYI80978LJF04r501n8Mv58222O2s”
genesisSecrets = [“00531e40d4036d808d2101756debc7fd2365cd76da1176f5bf2ed09603d01f711ca03bee9112b03f060a26469b0ba23d87c38dda964cf9a1bb3c7f1edbf8a2d6f8”
“0300000060b218f4c543504110af4dd02a72a764d5c1c59beb1e6dc3ea0dd85f86685eade90f567f9937b3a4fc36bb5adfe480ac381ccdbb91f11c269e2a41d71d829fc312cdef48bf75818447405bb86202a1d39f0503491207eab329bb77047805f800000ed74aa4afda5ffb358ba4906d0a5429f9840805e1fcc9ea71fca62afb5e97d779d0d2d3dd1bd9a3563166eff9d12b9ab9b6f11baf5639606689c72e16e2577ee338229e015697c8d174782b4caa04af9902eca2f3c384c6f558cf685b11010084a8436bbb18f7ccd039c249afa69f868c79939923ee3fc3ec437b998246db5b4907881702641ec6b41fdc6de644087713115fa2548121280fe8ac85fe31387aee6465767d8ba2189fab2ee8bf702beda6af018b4d68f890176bf2ab599e000000”
]
}
genesis {
“scId”:”d40188abb42d6ba6302464a847ace23e52b0c7edcf433cd17c10ca008b5e8783″,
“scGenesisBlockHex”:”010000000000000000000000000000000000000000000000000000000000000000cca1c1f10ba204e933f41dc86ca654a03bee9112b03f060a26469b0ba23d87c38dda964cf9a1bb3c7f1edbf8a2d6f800000009502f9000a03bee9112b03f060a26469b0ba23d87c38dda964cf9a1bb3c7f1edbf8a2d6f80ed74aa4afda5ffb358ba4906d0a5429f9840805e1fcc9ea71fca62afb5e97d779d0d2d3dd1bd9a3563166eff9d12b9ab9b6f11baf5639606689c72e16e2577ee338229e015697c8d174782b4caa04af9902eca2f3c384c6f558cf685b11010084a8436bbb18f7ccd039c249afa69f868c79939923ee3fc3ec437b998246db5b4907881702641ec6b41fdc6de644087713115fa2548121280fe8ac85fe31387aee6465767d8ba2189fab2ee8bf702beda6af018b4d68f890176bf2ab599e0000000800000000dcc662d4348c35e93abd86d54e73d3f89de9011e217345c1576a535919c7625c216a0d2942dda7d257d38ea93197127756c1630ef63efc6d967ea02e620952d382d2a4c32f323a85c2bae120e2c1e5add29bbb5a1d0b2c9da18bbbd583d50000fc45b48a89b591177675dfedaec458c7a552556e968fccd9012bba7315807435187426124dcaf81a6f3b6503e78c0254328607a2538be94388708527a637234bdc9c4c26350bb3720d0c90dd0ea0cd5349e519b4e6b2e8585256b8688364010000508457c4bdc88baa74cedfe4e35f7937f14d3093f9202ac116f4c7f4fdfff7da657088e70371a6c474ddf3b0bc40475c75e6c4104d0344b32d1bd458a5185b063c6e27de5ef992bfc7f2852b80dc47c0e4200821b0a1ae27ebbff6cf8fc90000ef55c7566071fdb85b08027632f50b6f443fb64f83ce3aa83960770550855ff95e0f98af05ea16532e364c877b616ae5bc4f6fc3b40359fe79e7e20cd6fa701204ddba0ae615887d84cd26264b8824fe27e07e9ea0501493dd9588d19ba3000000000000000000000000000000000000000000000000000000000000000000005f10d71366010e474d9ed8c1f055396495b51d561bac632c4e353871614422ff00000000000000000000000000000000000000000000000000000000000000000080016f16a558e106b6d367cfe82497d7bc95955aa570a2c6811cbf6ae4504b4e9252ef1586ec4e70d63374fbe67d591d1bad3102351a0750492e2f7f7b5d379762010002f21e04852dabaace286308c2ff9a8ba4968d2e3cf17b7079594b8dff756eb0e0f7f69e1e000000005f18bff70000078302801e03000007570a00000000902f5009000000f8d6a2f8db1e7f3cbba1f94c96da8dc3873da20b9b46260a063fb01291ee3ba0c10ed74aa4afda5ffb358ba4906d0a5429f9840805e1fcc9ea71fca62afb5e97d779d0d2d3dd1bd9a3563166eff9d12b9ab9b6f11baf5639606689c72e16e2577ee338229e015697c8d174782b4caa04af9902eca2f3c384c6f558cf685b11010084a8436bbb18f7ccd039c249afa69f868c79939923ee3fc3ec437b998246db5b4907881702641ec6b41fdc6de644087713115fa2548121280fe8ac85fe31387aee6465767d8ba2189fab2ee8bf702beda6af018b4d68f890176bf2ab599e00000060b1acb36cdc03885d0f8ebeff5f1b7c21e3719f875a733ed58170621852d45dcd51b96d38e2dbb2002b43c44742d02d1c348280112fa2fe282f01a6a2615d0d33d19b03a0f5337c8ef41c2d84e2db25f56eb88bcf2ed76a094801d2fc831601005e7b462cc84ae0faaa5884bd5c4a5a5edf13db210599aeeb4d273c0f5f32967b7071ce2b4d490b9f08f6ce66a8405735c79197cd6773d1c5aeb2a38da1c102df07b05879c77198e5aafa7feed25d4137e86b3d98d9edd9547a460f1615b10000ee9570fbffedd44170477b37500a0a1cb3f94b6361f10f8a68c4075fbc17542d7174b3d95e12ddb8aea5d6b6c53c1df6c8f60010cd2e69902ba5e89e86747569463a23254730fc8d2aabf39648a505df9dcce461443b181ef3eda46074070000550836db2c97820971db6b1421e348d946ed4d3f255295abea46556615e3123de33ec56f784f70302901a4bc10c79c6a8b1e32477aeff9fba75876592981b678fc5a2703ac0b3055e567a6cb1ebab578fc4f9121fd968680250696cb85790000078fcfb60bdfc79aa1e377cb120480538e0236156f23129a88824ca5a1d77e371e5e98a16e6f32087c91aa02a4f5e00e412e515c3b678f6535141203c6886c637b626a2ada4062d037503359a680979091c68941a307db6e4ed8bc49d21b00002f0e6f88fb69309873fdefb015569e5511fb5399295204876543d065d177bf36ab79183a7c5e504b50691bc5b4ed0293324cfe2555d3fc8e39485822a90a91afcd4ef79ec3aefbd4cbe25cbccd802d8334ce1dce238c3f7505330a14615500001f89fbe1922ab3aa31a28fd29e19673714a7e48050dee59859d68345bb7bee7d5e888d8b798a58d7c650f9138304c05a92b668294c6114185ccb2c67ce0bbbb7e1dcbb6d76f5cacd7c9732a33b21d69bd7a28c9cca68b5735d50413862bc0100308bb0dd0bd53f3d1134966702dd3c7cc8b58b270a6996a646493250b0d5f3978d0c971f8fa7a0c958f3efe2fa5269244973fafb701c2eb66dd25901f93d677ab6c538c1ed11f115e52d3f2c7087ea40c3e8cd089376baa38842e9429b5f0000d19a8d874d791f952f13d3c8ecd92e44009c09815e5ae6a8e5def7ea52fe3de4accfb5ba2aa401fbcec14b069cd0dc0f66ab025b45ef9831a26acf58673db7487043654e7980fcb2b6c1bd7593a4dfff810436f653e309121c7ccf2df70b010000732254ec6df184be360cd9ed383ed7c8c236d7761cfc0ce4e7f0cac5a06f4edab9cfc75a7dc1449c0e18ed9564c974c2e1b6847c637f74e5d391cbc80fc6e672ffd66b5ce4fb73bda8359ab8a0ea1e855df1e07d82f93c935c7e1a9a55c5000065efdbb7c3e82291a482b2f24cbd46f4dd02c370cf6dcfe8fb3c00b8b004b5ad51369b1f1b134a824d1f16d72ca6a27ba2d6190150329139cf2c6d9e5a14722f8d39b96b882c1f60a7b230e929819e2abe1cd9d7f3e8c726b1a94d20c8010100732c396eca6ffa1bf851cef449f2f087edd93e4f641b4bd93a482d9f129e675aedb688993d4e2cee824d2803301364ba10fbb66895927adb53bad8aefe8a1caab6f4ccb45883e414a1223ac7f90a89087cd752dfa0c7b3e19bbae000edd5000028d1d23c627d1252d2a2a20a246af2280f50e3fde667873aadd9893ba6833118358398e7428e717128f764714a8d52b090c1f554f58e25ea815338d7bc7326c949567e74f2f2ab3c88f5075fea75594608b8937c9059a42d712ffbd1bd980100000000000250c1a474689e375a309446e5cdd3a0c26cecdcff5c7b8cdc0728868983f1a35a49e3a1bae6f969c3d47356c08d3d169d2c0a2be908d82cd35f41a23d8c2924a9f790ab3a00d53061d440a176670d6a32de2ecd19cf8a9774729c09a6ea4d0100d8838bf55d95521291da12294b302c66042eda0dc2acc79360a1fdd8c9a366fa790c52bf926c2d96b5ba88a3a443487c5235f7c476f350c2101cfbe3bd0361dd291ebc5e42c097a158704b71006886a3662ca6db7d816b4ad12444835d89000000795ce2b34aef921ccb3d9b9695f5d3fe0a03743c955cfcf01f8a1815a7c8b03de85fe15201d4b4b6f401cb334a6988ea5bde8986a468c47c3c6a5ae96a3160ff15e06699ea82bd40c0d5547fe1be77af7817861bbfcca3f4232f05a9cec800006c216565cee4d57b32d2d70bb3cb8d4a967c0eb5d7137b2ec58466f3d4d3b5375e4baa823bcc29c6ad877d9708cd5dc1c31fa3883a80710431110c4aa22e97b67fa639f54e86cfab87187011270139df7873bed12f6fb8cd9ab48f3893380100008ae0b7db6c1ff877ce8f89482f70e64851a04fccb1312eee94fbba8140e29a8200000000080000000000000002e2020300000079750aa1b2c4975c1af05c6c405141742fd2222a9efd09c82f54935c31a9cc05ab2e662ee04884b048ff9a28c82067bae975d747a419b53a457a169e33404874b26211dd7cf132ec396a2f87e9c5d5fd7e7b1cd059157d60648d4b002668d715f7bf185f030f0f20430061b484fe0f8426b41a4f42154007dce74945d1fa26c576c57dfb00480000240896e4f621d95725df0e2057d007ac4b49d60b24bcdee4c7bf3db910ebaebb22b185231800″,
“powData”:”d3bd185f030f0f20d3bd185f030f0f20d3bd185f030f0f20d2bd185f030f0f20d2bd185f030f0f20d2bd185f030f0f20d2bd185f030f0f20d2bd185f030f0f20d2bd185f030f0f20d1bd185f030f0f20d1bd185f030f0f20d1bd185f030f0f20d1bd185f030f0f20d1bd185f030f0f20d1bd185f030f0f20d0bd185f030f0f20d0bd185f040f0f20d0bd185f040f0f20d0bd185f040f0f20d0bd185f040f0f20d0bd185f040f0f20cfbd185f040f0f20cfbd185f040f0f20cfbd185f040f0f20cfbd185f040f0f20cfbd185f040f0f20cfbd185f040f0f20cebd185f040f0f20″,
“mcBlockHeight”:221,
“mcNetwork”:”regtest”,
“withdrawalEpochLength”:10
}
}
NOTE: Concerning dataDir and logDir, it might be a good idea to store them in a tmp subdirectory of the user directory, rather than leaving them in the /tmp/ global directory. I have left them as-is for now.
I can then finally launch my sidechain. This must be done in the main directory of the Sidechain SDK:
$ pwd
/home/zendoo/Sidechains-SDK
$ java -cp ./examples/simpleapp/target/Sidechains-SDK-simpleapp-0.2.1.jar:./examples/simpleapp/target/lib/* com.horizen.examples.SimpleApp ./examples/simpleapp/src/main/resources/ma-sidechain.conf
[2-Hop-akka.actor.default-dispatcher-3] INFO scorex.core.network.NetworkController – Declared address: None
[main] INFO com.horizen.SidechainApp – Starting application with settings
SidechainSettings(ScorexSettings(/tmp/scorex/data/blockchain,/tmp/scorex/data/log,NetworkSettings(testNode1,None,false,Vector(),/127.0.0.1:9084,20,1 second,false,None,None,None,30 seconds,2 seconds,2,0.0.1,2-Hop,1048576,8096,512,512,5 seconds,2 minutes,20 seconds,4 minutes,Some(5 seconds),Some(5 seconds),1024,[B@2a640157,2 minutes,64,1 hour,5 minutes,100),RESTApiSettings(/127.0.0.1:9085,None,Some(*),5 seconds),NetworkTimeProviderSettings(pool.ntp.org,30 minutes,30 seconds)),GenesisDataSettings(010000000000000000000000000000000000000000000000000000000000000000cca1c1f10ba204e933f41dc86ca654a03bee9112b03f060a26469b0ba23d87c38dda964cf9a1bb3c7f1edbf8a2d6f800000009502f9000a03bee9112b03f060a26469b0ba23d87c38dda964cf9a1bb3c7f1edbf8a2d6f80ed74aa4afda5ffb358ba4906d0a5429f9840805e1fcc9ea71fca62afb5e97d779d0d2d3dd1bd9a3563166eff9d12b9ab9b6f11baf5639606689c72e16e2577ee338229e015697c8d174782b4caa04af9902eca2f3c384c6f558cf685b11010084a8436bbb18f7ccd039c249afa69f868c79939923ee3fc3ec437b998246db5b4907881702641ec6b41fdc6de644087713115fa2548121280fe8ac85fe31387aee6465767d8ba2189fab2ee8bf702beda6af018b4d68f890176bf2ab599e0000000800000000dcc662d4348c35e93abd86d54e73d3f89de9011e217345c1576a535919c7625c216a0d2942dda7d257d38ea93197127756c1630ef63efc6d967ea02e620952d382d2a4c32f323a85c2bae120e2c1e5add29bbb5a1d0b2c9da18bbbd583d50000fc45b48a89b591177675dfedaec458c7a552556e968fccd9012bba7315807435187426124dcaf81a6f3b6503e78c0254328607a2538be94388708527a637234bdc9c4c26350bb3720d0c90dd0ea0cd5349e519b4e6b2e8585256b8688364010000508457c4bdc88baa74cedfe4e35f7937f14d3093f9202ac116f4c7f4fdfff7da657088e70371a6c474ddf3b0bc40475c75e6c4104d0344b32d1bd458a5185b063c6e27de5ef992bfc7f2852b80dc47c0e4200821b0a1ae27ebbff6cf8fc90000ef55c7566071fdb85b08027632f50b6f443fb64f83ce3aa83960770550855ff95e0f98af05ea16532e364c877b616ae5bc4f6fc3b40359fe79e7e20cd6fa701204ddba0ae615887d84cd26264b8824fe27e07e9ea0501493dd9588d19ba3000000000000000000000000000000000000000000000000000000000000000000005f10d71366010e474d9ed8c1f055396495b51d561bac632c4e353871614422ff00000000000000000000000000000000000000000000000000000000000000000080016f16a558e106b6d367cfe82497d7bc95955aa570a2c6811cbf6ae4504b4e9252ef1586ec4e70d63374fbe67d591d1bad3102351a0750492e2f7f7b5d379762010002f21e04852dabaace286308c2ff9a8ba4968d2e3cf17b7079594b8dff756eb0e0f7f69e1e000000005f18bff70000078302801e03000007570a00000000902f5009000000f8d6a2f8db1e7f3cbba1f94c96da8dc3873da20b9b46260a063fb01291ee3ba0c10ed74aa4afda5ffb358ba4906d0a5429f9840805e1fcc9ea71fca62afb5e97d779d0d2d3dd1bd9a3563166eff9d12b9ab9b6f11baf5639606689c72e16e2577ee338229e015697c8d174782b4caa04af9902eca2f3c384c6f558cf685b11010084a8436bbb18f7ccd039c249afa69f868c79939923ee3fc3ec437b998246db5b4907881702641ec6b41fdc6de644087713115fa2548121280fe8ac85fe31387aee6465767d8ba2189fab2ee8bf702beda6af018b4d68f890176bf2ab599e00000060b1acb36cdc03885d0f8ebeff5f1b7c21e3719f875a733ed58170621852d45dcd51b96d38e2dbb2002b43c44742d02d1c348280112fa2fe282f01a6a2615d0d33d19b03a0f5337c8ef41c2d84e2db25f56eb88bcf2ed76a094801d2fc831601005e7b462cc84ae0faaa5884bd5c4a5a5edf13db210599aeeb4d273c0f5f32967b7071ce2b4d490b9f08f6ce66a8405735c79197cd6773d1c5aeb2a38da1c102df07b05879c77198e5aafa7feed25d4137e86b3d98d9edd9547a460f1615b10000ee9570fbffedd44170477b37500a0a1cb3f94b6361f10f8a68c4075fbc17542d7174b3d95e12ddb8aea5d6b6c53c1df6c8f60010cd2e69902ba5e89e86747569463a23254730fc8d2aabf39648a505df9dcce461443b181ef3eda46074070000550836db2c97820971db6b1421e348d946ed4d3f255295abea46556615e3123de33ec56f784f70302901a4bc10c79c6a8b1e32477aeff9fba75876592981b678fc5a2703ac0b3055e567a6cb1ebab578fc4f9121fd968680250696cb85790000078fcfb60bdfc79aa1e377cb120480538e0236156f23129a88824ca5a1d77e371e5e98a16e6f32087c91aa02a4f5e00e412e515c3b678f6535141203c6886c637b626a2ada4062d037503359a680979091c68941a307db6e4ed8bc49d21b00002f0e6f88fb69309873fdefb015569e5511fb5399295204876543d065d177bf36ab79183a7c5e504b50691bc5b4ed0293324cfe2555d3fc8e39485822a90a91afcd4ef79ec3aefbd4cbe25cbccd802d8334ce1dce238c3f7505330a14615500001f89fbe1922ab3aa31a28fd29e19673714a7e48050dee59859d68345bb7bee7d5e888d8b798a58d7c650f9138304c05a92b668294c6114185ccb2c67ce0bbbb7e1dcbb6d76f5cacd7c9732a33b21d69bd7a28c9cca68b5735d50413862bc0100308bb0dd0bd53f3d1134966702dd3c7cc8b58b270a6996a646493250b0d5f3978d0c971f8fa7a0c958f3efe2fa5269244973fafb701c2eb66dd25901f93d677ab6c538c1ed11f115e52d3f2c7087ea40c3e8cd089376baa38842e9429b5f0000d19a8d874d791f952f13d3c8ecd92e44009c09815e5ae6a8e5def7ea52fe3de4accfb5ba2aa401fbcec14b069cd0dc0f66ab025b45ef9831a26acf58673db7487043654e7980fcb2b6c1bd7593a4dfff810436f653e309121c7ccf2df70b010000732254ec6df184be360cd9ed383ed7c8c236d7761cfc0ce4e7f0cac5a06f4edab9cfc75a7dc1449c0e18ed9564c974c2e1b6847c637f74e5d391cbc80fc6e672ffd66b5ce4fb73bda8359ab8a0ea1e855df1e07d82f93c935c7e1a9a55c5000065efdbb7c3e82291a482b2f24cbd46f4dd02c370cf6dcfe8fb3c00b8b004b5ad51369b1f1b134a824d1f16d72ca6a27ba2d6190150329139cf2c6d9e5a14722f8d39b96b882c1f60a7b230e929819e2abe1cd9d7f3e8c726b1a94d20c8010100732c396eca6ffa1bf851cef449f2f087edd93e4f641b4bd93a482d9f129e675aedb688993d4e2cee824d2803301364ba10fbb66895927adb53bad8aefe8a1caab6f4ccb45883e414a1223ac7f90a89087cd752dfa0c7b3e19bbae000edd5000028d1d23c627d1252d2a2a20a246af2280f50e3fde667873aadd9893ba6833118358398e7428e717128f764714a8d52b090c1f554f58e25ea815338d7bc7326c949567e74f2f2ab3c88f5075fea75594608b8937c9059a42d712ffbd1bd980100000000000250c1a474689e375a309446e5cdd3a0c26cecdcff5c7b8cdc0728868983f1a35a49e3a1bae6f969c3d47356c08d3d169d2c0a2be908d82cd35f41a23d8c2924a9f790ab3a00d53061d440a176670d6a32de2ecd19cf8a9774729c09a6ea4d0100d8838bf55d95521291da12294b302c66042eda0dc2acc79360a1fdd8c9a366fa790c52bf926c2d96b5ba88a3a443487c5235f7c476f350c2101cfbe3bd0361dd291ebc5e42c097a158704b71006886a3662ca6db7d816b4ad12444835d89000000795ce2b34aef921ccb3d9b9695f5d3fe0a03743c955cfcf01f8a1815a7c8b03de85fe15201d4b4b6f401cb334a6988ea5bde8986a468c47c3c6a5ae96a3160ff15e06699ea82bd40c0d5547fe1be77af7817861bbfcca3f4232f05a9cec800006c216565cee4d57b32d2d70bb3cb8d4a967c0eb5d7137b2ec58466f3d4d3b5375e4baa823bcc29c6ad877d9708cd5dc1c31fa3883a80710431110c4aa22e97b67fa639f54e86cfab87187011270139df7873bed12f6fb8cd9ab48f3893380100008ae0b7db6c1ff877ce8f89482f70e64851a04fccb1312eee94fbba8140e29a8200000000080000000000000002e2020300000079750aa1b2c4975c1af05c6c405141742fd2222a9efd09c82f54935c31a9cc05ab2e662ee04884b048ff9a28c82067bae975d747a419b53a457a169e33404874b26211dd7cf132ec396a2f87e9c5d5fd7e7b1cd059157d60648d4b002668d715f7bf185f030f0f20430061b484fe0f8426b41a4f42154007dce74945d1fa26c576c57dfb00480000240896e4f621d95725df0e2057d007ac4b49d60b24bcdee4c7bf3db910ebaebb22b185231800,d40188abb42d6ba6302464a847ace23e52b0c7edcf433cd17c10ca008b5e8783,221,d3bd185f030f0f20d3bd185f030f0f20d3bd185f030f0f20d2bd185f030f0f20d2bd185f030f0f20d2bd185f030f0f20d2bd185f030f0f20d2bd185f030f0f20d2bd185f030f0f20d1bd185f030f0f20d1bd185f030f0f20d1bd185f030f0f20d1bd185f030f0f20d1bd185f030f0f20d1bd185f030f0f20d0bd185f030f0f20d0bd185f040f0f20d0bd185f040f0f20d0bd185f040f0f20d0bd185f040f0f20d0bd185f040f0f20cfbd185f040f0f20cfbd185f040f0f20cfbd185f040f0f20cfbd185f040f0f20cfbd185f040f0f20cfbd185f040f0f20cebd185f040f0f20,regtest,10),WebSocketSettings(ws://localhost:8888,100 milliseconds,1 second,1,,Some(Vector()),true),withdrawalEpochCertificateSettings(true,Vector(328f42588d9df851c2c2a2b11336a5737ba913c0f92177c9d0a854c7564b48da761e53205d30d7f60e21ac382b452cabb7f9274e199a59976b0bd6aaf8f59ac171f6444b9bc594473a20c5a3c89e0d1335ffc8d0ee821c60ebcb1239601d0100dae9144ae4bd8d56638befec496d97eadc590acc2a04b9a210ec475b2505cd6774b1be10353b060c31ae1142b90f436fb5e4e1905814eec8a3e86e0cc5fcff36b686bb92d2f6200ebfc714cfd48db5c1ab3fa77b4747fb60a4f7ae6bd56e000000, a3c8f596cec2583278fcb7b460d0ae3b99283d26a22b599b1bfc41a5bc1a1328540eb64362f688437c553c114291853b2ab752fb6baf172f9a7cbdf7fbdb382445cd4672f313426fa92b071ce840103c6ee1463ff0c94a467bec754829a30000815e97336edbccb9523e80699f5c9ef893b5d51e41a50e757f86fc8aa13751b0f13041814140a98a4768f31917d59dd6af87e66a92a57beb25109bed3a12a6b4a9286746d778da486bec3e5bde2381187f243005011b6ccf05fd7568bf94000000, c76abd8288ec3b05e947adcf66a4fd91b8bbeae23d07cfe0196abffdc5d187f7c7cda485c00789f10d8c1650569a6fd4485cfa36e6247268e2aba1563beb3e2c8be87eae0df4a85f5057fddfd1f0bceef7998d20a9efcabc9e0a06e2fd7e010042c0738a904595ed5e3d7f29fb46b1e3918a597361824c7f7c2e9adb6c6ad947db05a36828aa3bb4355942fee130e2f3d5ed3eb35b7093c1cd31c8b8784e7f39c95c9a9b821b7eb867dcd4aa1dbf11410054e3ea1bd2759c479558604cb2000000, 49e31139f382f266ecca749f54fcdf6bb4c48c2ccab895cb3971d9281ce7b3e3b5993728200867308547b6bc70fa04184e3b2d92732e463f763c0b91d3cc982272c875500d2a6c88b180ee59fad260853e37cbddf1ab9f268c31df00f73f01004a175a663b9a32586f36666b025bc8fa52c275cb8aadcf746825c834c4a5968ec5e083d55a6832bebee8c16adbb564ca3211bdc007e9c0be82b05230f3340525b2459f0acf24ad05eb9c5ab8c20432c289e735db90dcec3ef4b323dc4ef4000000, bb30f74e03b1448cc555d296849be13095e4ff7752ae5441fc68c61f2488cd36837abb8f95657e55ebbf20d8fccdc32673fd5f7c9db7355285f0d01ed707b273c78e85056e564dc613b7c7980611ec0b17fbe608e5c8135a233ed7e425540100bef6f0bb5e21dc446202a63a4892868ae5ef382d84dee1e2f46f6e33cf9c4bb7bdae5aeeec4e58e32ef113a70ff545dcfbaf80eb39907b11d76571dc1c913d07937297e20da6042e1d95b5e8642f10ab8dddc484c48722d140cd237392a5000000, 4f85443c89b5550569451310b320ce03d6ea117aebe492aac4510945f67e20ffdd308e52415f8b89508144fa1d66997d82090fcc55e1969e055ac8ca26e6fefcdd0c8930e76f94df70b0701769e6664adda248298002068c4188357f952001001ceb9119562ff4904eb01a807439a4cd5f8e226f10ade178ce081d6345f12576d988a6e80f0bf54ec9ca8548c264485deb522f8e57cf8f7184d9fb01f805f430df7150595a75e6553c1ff868ff992584f3a52327b3d822236c9214ed53c9000000, 30949730d160baec1bf4fcc743f2a533dbd9f6e853960bad9adf1390294f58387c0af553117368aa8c5d7769a0b39279b0fc92001d36323878c9e7ed2bfa1048496049f1d6d147ab949f1f76b0719bd4fc542a8840469291069116e06f0701000c227ab8d2b235d5eab4866451ad850ab2634d20bafd3da8c0b697d919fab2937e9bec3d39e41c7bf028575bcf4acb5c9f9977cd97b190e110f7cd0deae72adeae2e33974e56a0929a36db8245d9784ba44f0f071aa3937ad0257c4c5248010000),5,Vector(04000000600bbacac1017bb3a249a07409a83829df212bc3774069f9f3d758496bf8048d356799c7bd9fdf76369616ffc405c5844ee464ad628345a753a35bc6dfd3839ea7519896e45b2f1b610cc34aea072b5d523fd0e1a95f357d90261783c073f40000328f42588d9df851c2c2a2b11336a5737ba913c0f92177c9d0a854c7564b48da761e53205d30d7f60e21ac382b452cabb7f9274e199a59976b0bd6aaf8f59ac171f6444b9bc594473a20c5a3c89e0d1335ffc8d0ee821c60ebcb1239601d0100dae9144ae4bd8d56638befec496d97eadc590acc2a04b9a210ec475b2505cd6774b1be10353b060c31ae1142b90f436fb5e4e1905814eec8a3e86e0cc5fcff36b686bb92d2f6200ebfc714cfd48db5c1ab3fa77b4747fb60a4f7ae6bd56e000000, 0400000060798dd23ca90d7ea6d85353c2a7d094cf75146ffa099a5c6b6de9a8bdcc0e4fd4edb271f6000a26cfb80b9cffe990d1dd6193e1031fe1b419e47653596aa7289a005eb19d0407783b0d70a3035c3de537c95be19b7d4b5b6b63cdd2b369d90000a3c8f596cec2583278fcb7b460d0ae3b99283d26a22b599b1bfc41a5bc1a1328540eb64362f688437c553c114291853b2ab752fb6baf172f9a7cbdf7fbdb382445cd4672f313426fa92b071ce840103c6ee1463ff0c94a467bec754829a30000815e97336edbccb9523e80699f5c9ef893b5d51e41a50e757f86fc8aa13751b0f13041814140a98a4768f31917d59dd6af87e66a92a57beb25109bed3a12a6b4a9286746d778da486bec3e5bde2381187f243005011b6ccf05fd7568bf94000000, 04000000602d2b8008350f48fa073f4ac9129b8f4a7a7036b30f482cc5b3681cef02dfd3b713c2b08b0d989a5bd48656fe6995439cc6fdf99235b092343b13e1a7f43b937a9d488cfefe4d8f68afda8ebedec5a78cd5e7d77816223a7e88ac575d5c900100c76abd8288ec3b05e947adcf66a4fd91b8bbeae23d07cfe0196abffdc5d187f7c7cda485c00789f10d8c1650569a6fd4485cfa36e6247268e2aba1563beb3e2c8be87eae0df4a85f5057fddfd1f0bceef7998d20a9efcabc9e0a06e2fd7e010042c0738a904595ed5e3d7f29fb46b1e3918a597361824c7f7c2e9adb6c6ad947db05a36828aa3bb4355942fee130e2f3d5ed3eb35b7093c1cd31c8b8784e7f39c95c9a9b821b7eb867dcd4aa1dbf11410054e3ea1bd2759c479558604cb2000000, 0400000060e6d06e813f23b4229a1a9723e511ca08bf65219149b7adfa0ba97e3104a40a41a21a40916de846788f596d08b90005db6124b1d872b0a3dc472142046a8e7f4b7784917b4029b85a16c41bf964283d6b92743d240140460c0037783e396c010049e31139f382f266ecca749f54fcdf6bb4c48c2ccab895cb3971d9281ce7b3e3b5993728200867308547b6bc70fa04184e3b2d92732e463f763c0b91d3cc982272c875500d2a6c88b180ee59fad260853e37cbddf1ab9f268c31df00f73f01004a175a663b9a32586f36666b025bc8fa52c275cb8aadcf746825c834c4a5968ec5e083d55a6832bebee8c16adbb564ca3211bdc007e9c0be82b05230f3340525b2459f0acf24ad05eb9c5ab8c20432c289e735db90dcec3ef4b323dc4ef4000000, 0400000060d563c1a1cec8e162db0df8d2c0f24adf292431e29fef77fe68977e106216d398f036fc605797583b5f0bcc427230188f32ebc9427b73468cda9385b380b7351bf3434afcda85725beb178efa40718b16ddadfa6bff47ee3edc17455456bd0000bb30f74e03b1448cc555d296849be13095e4ff7752ae5441fc68c61f2488cd36837abb8f95657e55ebbf20d8fccdc32673fd5f7c9db7355285f0d01ed707b273c78e85056e564dc613b7c7980611ec0b17fbe608e5c8135a233ed7e425540100bef6f0bb5e21dc446202a63a4892868ae5ef382d84dee1e2f46f6e33cf9c4bb7bdae5aeeec4e58e32ef113a70ff545dcfbaf80eb39907b11d76571dc1c913d07937297e20da6042e1d95b5e8642f10ab8dddc484c48722d140cd237392a5000000, 0400000060d4616f5ccab62713ff2ffb02353e14f13fc34a9ce0b3608a3d3833e8ca7abc54ebe6e981f5c80a2c758f5107d254b14fbff37cb51ad69fcfb5dcfa5bda71d048fe4e439b42a360894736f295681526800ce753800d778e733a20766270a100004f85443c89b5550569451310b320ce03d6ea117aebe492aac4510945f67e20ffdd308e52415f8b89508144fa1d66997d82090fcc55e1969e055ac8ca26e6fefcdd0c8930e76f94df70b0701769e6664adda248298002068c4188357f952001001ceb9119562ff4904eb01a807439a4cd5f8e226f10ade178ce081d6345f12576d988a6e80f0bf54ec9ca8548c264485deb522f8e57cf8f7184d9fb01f805f430df7150595a75e6553c1ff868ff992584f3a52327b3d822236c9214ed53c9000000, 04000000603bdb5bb43e1adffb93265eccb0526f5ad1f7e671f30721da46abef1a3322ab5ab1a06b9bc89a2a7b9afd19295ad55fd9c2d775997883f51dc14b23e6a42721a710e3f7bdc7fce07ad74fd3fcb403c2eb61169bf8299eb8b43d726800492d010030949730d160baec1bf4fcc743f2a533dbd9f6e853960bad9adf1390294f58387c0af553117368aa8c5d7769a0b39279b0fc92001d36323878c9e7ed2bfa1048496049f1d6d147ab949f1f76b0719bd4fc542a8840469291069116e06f0701000c227ab8d2b235d5eab4866451ad850ab2634d20bafd3da8c0b697d919fab2937e9bec3d39e41c7bf028575bcf4acb5c9f9977cd97b190e110f7cd0deae72adeae2e33974e56a0929a36db8245d9784ba44f0f071aa3937ad0257c4c5248010000),sdk/src/test/resources/sample_proving_key_7_keys_with_threshold_5,sdk/src/test/resources/sample_vk_7_keys_with_threshold_5),WalletSettings(q7yYYI80978LJF04r501n8Mv58222O2s,Vector(00531e40d4036d808d2101756debc7fd2365cd76da1176f5bf2ed09603d01f711ca03bee9112b03f060a26469b0ba23d87c38dda964cf9a1bb3c7f1edbf8a2d6f8, 0300000060b218f4c543504110af4dd02a72a764d5c1c59beb1e6dc3ea0dd85f86685eade90f567f9937b3a4fc36bb5adfe480ac381ccdbb91f11c269e2a41d71d829fc312cdef48bf75818447405bb86202a1d39f0503491207eab329bb77047805f800000ed74aa4afda5ffb358ba4906d0a5429f9840805e1fcc9ea71fca62afb5e97d779d0d2d3dd1bd9a3563166eff9d12b9ab9b6f11baf5639606689c72e16e2577ee338229e015697c8d174782b4caa04af9902eca2f3c384c6f558cf685b11010084a8436bbb18f7ccd039c249afa69f868c79939923ee3fc3ec437b998246db5b4907881702641ec6b41fdc6de644087713115fa2548121280fe8ac85fe31387aee6465767d8ba2189fab2ee8bf702beda6af018b4d68f890176bf2ab599e000000)))
[2-Hop-akka.actor.default-dispatcher-3] INFO scorex.core.network.NetworkController – Registering handlers for List((1,GetPeers message), (2,Peers message))
[2-Hop-akka.actor.default-dispatcher-2] INFO scorex.core.network.NetworkController – Successfully bound to the port 9084
[main] INFO com.horizen.SidechainApp – calculated sysDataConstant is: b1acb36cdc03885d0f8ebeff5f1b7c21e3719f875a733ed58170621852d45dcd51b96d38e2dbb2002b43c44742d02d1c348280112fa2fe282f01a6a2615d0d33d19b03a0f5337c8ef41c2d84e2db25f56eb88bcf2ed76a094801d2fc83160100
[2-Hop-akka.actor.default-dispatcher-2] INFO scorex.core.network.NetworkController – Registering handlers for List((55,Inv), (22,RequestModifier), (33,Modifier), (65,Sync))
[2-Hop-akka.actor.default-dispatcher-3] INFO com.horizen.consensus.ConsensusDataStorage – Storage with id:1878272466 — Add stake to consensus data storage: for epochId 8bbc8219cab8b9b1f68513f89d3489bf950635a2ee90192237c9da6ca5fb9c8f stake info: StakeConsensusEpochInfo(rootHash=7006b227eaa723e4afffb404383fd07166959275ec9c8f7e6665314c85ff1b03, totalStake=40000000000)
[2-Hop-akka.actor.default-dispatcher-3] INFO com.horizen.consensus.ConsensusDataStorage – Storage with id:1878272466 — Add nonce to consensus data storage: for epochId 8bbc8219cab8b9b1f68513f89d3489bf950635a2ee90192237c9da6ca5fb9c8f nonce info: NonceConsensusEpochInfo(consensusNonce=000000005f182866
[main] INFO com.horizen.websocket.WebSocketConnectorImpl – Starting web socket connector…
[main] INFO com.horizen.websocket.WebSocketConnectorImpl – Web socket connector started.
[2-Hop-akka.actor.default-dispatcher-2] INFO com.horizen.certificatesubmitter.CertificateSubmitter – sysDataConstant in Certificate submitter is: b1acb36cdc03885d0f8ebeff5f1b7c21e3719f875a733ed58170621852d45dcd51b96d38e2dbb2002b43c44742d02d1c348280112fa2fe282f01a6a2615d0d33d19b03a0f5337c8ef41c2d84e2db25f56eb88bcf2ed76a094801d2fc83160100
[2-Hop-akka.actor.default-dispatcher-2] INFO com.horizen.certificatesubmitter.CertificateSubmitter – Found proving key file at location: /home/zendoo/Sidechains-SDK/sdk/src/test/resources/sample_proving_key_7_keys_with_threshold_5
[2-Hop-scorex.executionContext-11] INFO com.horizen.certificatesubmitter.CertificateSubmitter – Backward transfer certificate submitter was successfully started.
Simple Sidechain application successfully started…
It is possible to check that the node is listening on ports 9084 (sidechain) and 9085 (API):
$ netstat -plnt
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
[…]
tcp6 0 0 127.0.0.1:9084 :::* LISTEN 4834/java
tcp6 0 0 127.0.0.1:9085 :::* LISTEN 4834/java
It is possible to interact with SimpleApp via an API available on port 9085. For example, I check if I can find in the sidechain the Genesis Block:
$ curl -X POST “http://127.0.0.1:9085/mainchain/genesisBlockReferenceInfo” -H “accept: application/json”
{
“result” : {
“blockReferenceInfo” : {
“mainchainHeaderSidechainBlockId” : “8bbc8219cab8b9b1f68513f89d3489bf950635a2ee90192237c9da6ca5fb9c8f”,
“mainchainReferenceDataSidechainBlockId” : “8bbc8219cab8b9b1f68513f89d3489bf950635a2ee90192237c9da6ca5fb9c8f”,
“hash” : “04852dabaace286308c2ff9a8ba4968d2e3cf17b7079594b8dff756eb0e0f7f6”,
“parentHash” : “05cca9315c93542fc809fd9e2a22d22f744151406c5cf01a5c97c4b2a10a7579”,
“height” : 221
}
}
}
There! I have my sidechain declared in the mainchain. It’s functional and responds via an RPC interface on port 9085.
It is possible to connect to the doc of the API on this URL: http://127.0.0.1:9085/swagger
To make remote connections possible, you can edit the REST API structure of the sidechain configuration as follows:
restApi {
bindAddress = “0.0.0.0:9085”
api-key-hash = “”
}
It is then possible to filter clients by IP using the firewall, but this is beyond the scope of this already lengthy article.
See you soon for new adventures! In the next article, we will transfer ZEN in all directions.
Read the other articles in this series!
MrWaled hegazy
August 6, 2020 @ 7:31 pm
Good
Alain Nossereau
February 23, 2021 @ 11:15 am
Very good
tie
May 14, 2023 @ 7:30 am
这个教程已经不适用了,有新得教程吗